OSDN Git Service

536ef54396bb657860ce1754e657f4aa0932ca9d
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-10-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
2
3         PR target/33133
4         
5         * haifa-sched.c (process_insn_forw_deps_be_in_spec): Check if
6         speculation type of insn can be changed before trying to do that.
7
8 2007-10-15  Eric Botcazou  <ebotcazou@libertysurf.fr>
9
10         * dse.c (struct insn_info): Add 'frame_read' field.
11         (scan_insn): For the call to a const function, set frame_read if
12         reload has been run.
13         If the insn reads the frame, kill the frame related stores.
14         (scan_reads_nospill): Likewise.
15
16 2007-10-14  Jason Merrill  <jason@redhat.com>
17
18         * tree-eh.c (optimize_double_finally): Don't assume that the
19         cleanup we're duplicating is only one statement.
20
21 2007-10-14  Kazu Hirata  <kazu@codesourcery.com>
22
23         * config/fixed-bit.c, config/i386/cpuid.h, config/i386/i386.c,
24         config/i386/i386.md, config/i386/sse.md, function.c, jump.c,
25         modulo-sched.c, ra-conflict.c, toplev.c, tree-eh.c, tree-sra.c,
26         tree-ssa-dse.c, tree-vect-analyze.c, tree-vect-patterns.c,
27         tree-vect-transform.c: Fix comment typos.
28         * doc/extend.texi: Fix a typo.
29
30         * c-common.h: Remove the prototype for c_expand_body.
31         * c-tree.h: Remove the prototype for c_disregard_inline_limits.
32         * tree.h: Remove the prototype for fold_build_call_expr.
33
34         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN):
35         Remove.
36         * c-tree.h: Remove the prototype for c_cannot_inline_tree_fn.
37
38 2007-10-13  David Edelsohn  <edelsohn@gnu.org>
39
40         * config/rs6000/aix53.h: New file.
41         * config/rs6000/aix{41,43,51,52}.h (TARGET_ALTIVEC): Define to 0.
42         (TARGET_ALTIVEC_ABI): Same.
43         * config/rs6000/aix.h (TARGET_ALTIVEC): Delete.
44         (TARGET_ALTIVEC_ABI): Delete.
45         * config.gcc (powerpc-ibm-aix5*): Rename to aix5.2.  Add new
46         stanza defaulting to aix5.3.
47
48 2007-10-12  Nathan Froyd  <froydnj@codesourcery.com>
49
50         * config/i386/i386.md (SI_REG, DI_REG): New constants.
51         (strmov): Use defined constants.
52         (cmpstrnsi): Likewise.
53         * config/i386/i386.c (decide_alg): Use defined constants.
54         (ix86_expand_strlen): Likewise.
55
56 2007-10-12  Richard Sandiford  <rsandifo@nildram.co.uk>
57
58         * dse.c (find_shift_sequence): Reinstate "<= UNITS_PER_WORD" condition.
59         * var-tracking.c (micro_operation_def): Update comment on u.loc.
60         (mode_for_reg_attrs, var_lowpart): New functions.
61         (add_uses): Consider recording a lowpart of LOC for MO_USE.
62         (add_stores): Likewise MO_SET and MO_COPY.  If the source of a set
63         or copy is known, set LOC to the SET that performs the set, instead
64         of the destination.
65         (find_src_status, find_src_set_src): Remove LOC parameter.
66         Replace INSN with the source value.
67         (compute_bb_dataflow, emit_notes_in_bb): Check for a SET u.loc when
68         handling MO_SET and MO_COPY.  Update the calls to find_src_status
69         and find_src_set_src.
70
71 2007-10-12  Nathan Froyd  <froydnj@codesourcery.com>
72
73         PR 11001
74         * config/i386/i386.md (strmov): Check for esi and edi usage.
75         * config/i386/i386.c (decide_alg): Check whether we can use a
76         rep prefix and adjust algorithm choice accordingly.
77         (ix86_expand_strlen): Check for eax, ecx, and edi usage.
78
79 2007-10-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
80
81         * config/c4x/c4x.md (mulqi3, mulhi3): Use optab_libfunc.
82
83 2007-10-12  Kenneth Zadeck <zadeck@naturalbridge.com>
84
85         * global.c (build_insn_chain): Formatting fixes.
86
87 2007-10-12  Richard Guenther <rguenther@suse.de>
88
89         * tree-ssa-forwprop.c (forward_propagate_into_cond): For
90         combining both operands require either both have single uses
91         or combining to a constant.
92
93 2007-10-12  Richard Guenther  <rguenther@suse.de>
94
95         PR middle-end/26198
96         * tree-ssa-forwprop.c (can_propagate_from): Do not propagate from
97         a rhs with side-effects or which is a load.
98         (forward_propagate_into_cond): Also try combining both operands.
99
100 2007-10-12  Uros Bizjak  <ubizjak@gmail.com>
101
102         PR tree-optimization/33742
103         * tree-vect-transform.c (vectorizable_operation): Return false
104         if get_vectype_for_scalar_type for scalar_dest can't be determined.
105         (vectorizable_call): Same for rhs_type and lhs_type.
106
107 2007-10-12  Jakub Jelinek  <jakub@redhat.com>
108
109         PR tree-optimization/33645
110         * tree-ssa-live.c (mark_all_vars_used): Add data argument,
111         pass it to walk_tree.
112         (mark_all_vars_used_1): Pass data through to mark_all_vars_used.
113         When calling set_is_used on a VAR_DECL, if data is not NULL and
114         its DECL_UID is in the bitmap, call mark_all_vars_used on its
115         DECL_INITIAL after clearing the bit in bitmap.
116         (remove_unused_locals): Adjust mark_all_vars_used callers.
117         Instead of removing unused global vars from unexpanded_var_list
118         immediately record them in bitmap, call mark_all_vars_used on
119         all used global vars from unexpanded_var_list and only purge
120         global vars that weren't found used even during that step.
121  
122 2007-10-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
123
124         * gthr-posix.h (__gthread_active_init): Create detached instead of
125         joinable thread when testing whether threads are active on hppa-hpux.
126         * gthr-posix95.h (__gthread_active_init): Likewise.
127
128 2007-10-11  Kenneth Zadeck <zadeck@naturalbridge.com>
129
130         PR middle-end/33676
131         * global.c (build_insn_chain): Include insn that occur between
132         basic blocks.
133         
134 2007-10-11  Tom Tromey  <tromey@redhat.com>
135
136         * gengtype-yacc.y: Delete.
137
138 2007-10-11  Uros Bizjak  <ubizjak@gmail.com>
139
140         * config/i386/i386.md (AX_REG, DX_REG, CX_REG): New constants.
141         * config/i386/i386.c (ix86_function_arg_regno_p, function_arg_32,
142         function_value_32, function_value_64, function_value_ms_64,
143         setup_incoming_varargs_64, ix86_expand_prologue, ix86_expand_call,
144         legitimize_tls_address, x86_this_parameter, x86_output_mi_thunk):
145         Use new constants.
146
147 2007-10-11  Richard Guenther  <rguenther@suse.de>
148
149         * gcse.c (hash_scan_set): If the next nonnote insn is in
150         a different basic block insert the set.
151
152 2007-10-11  Richard Guenther  <rguenther@suse.de>
153
154         PR middle-end/33724
155         * tree-cfg.c (one_pointer_to_useless_type_conversion_p): New function.
156         (verify_gimple_expr): Use it to verify pointer-to types for
157         ADDR_EXPRs.
158
159 2007-10-11  Richard Guenther  <rguenther@suse.de>
160
161         PR c/33726
162         * c-typeck.c (build_array_ref): Do not strip qualifiers from
163         the array element type.
164
165 2007-10-11  Eric Botcazou  <ebotcazou@libertysurf.fr>
166
167         PR rtl-optimization/33638
168         * dse.c (struct insn_info): Remove 'stack_read' field,
169         add 'stack_pointer_based' field.
170         (record_store): For a store with non-constant base, record
171         whether it is stack pointer based.
172         (scan_insn): For the call to a const function, remove stack
173         pointer based stores from the list of local active stores.
174         (scan_reads_nospill): Delete code dealing with const functions.
175
176 2007-10-10  Peter Bergner  <bergner@vnet.ibm.com>
177
178         * ra-conflict.c (partial_bitnum, max_bitnum): Change type of variables
179         to HOST_WIDE_INT.
180         (conflict_p, set_conflict, set_conflicts): Likewise.
181         * global.c (global_alloc): Likewise.
182         * ra.h: Update prototypes.
183
184 2007-10-10  Wolfgang Gellerich  <gellerich@de.ibm.com>
185
186         * opth-gen.awk: Fixed generation of comment stating the origin
187           of options.h
188
189 2007-10-10  Kazu Hirata  <kazu@codesourcery.com>
190
191         Revert:
192         2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
193         * longlong.h (count_leading_zeros): Replace '{' and '}' with '%{'
194         and '%}', respectively.
195
196         Revert:
197         2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
198         * config/m68k/m68k.c (print_operand): Handle '{' and '}'.
199         * config/m68k/m68k.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '{'
200         and '}'.
201         * config/m68k/m68k.md: Replace '{' with '%{' where '{' is
202         meant to be output.
203
204         Revert:
205         2007-10-07  Kazu Hirata  <kazu@codesourcery.com>
206         * config/m68k/m68k.c, config/m68k/m68k.md: Use the assembly
207         syntax for ASSEMBLER_DIALECT.
208         * config/m68k/m68k.h (ASSEMBLER_DIALECT): New.
209
210 2007-10-10  Revital Eres  <eres@il.ibm.com>
211
212         * modulo-sched.c (check_nodes_order): Dump the final order of
213         the nodes.
214         (get_sched_window): Add dump info.
215         (calculate_order_params): Dump order params of the nodes.
216
217 2007-10-09  Kenneth Zadeck <zadeck@naturalbridge.com>
218
219         PR middle-end/33669
220         * ra-conflict.c (record_one_conflict_between_regnos, 
221         set_conflicts_for_earlyclobber, global_conflicts): Improved logging.
222         (global_conflicts): Enhanced incorrect check.
223         
224 2007-10-09  Geoffrey Keating  <geoffk@apple.com>
225
226         * dwarf2out.c (output_call_frame_info): FDEs are always emitted
227         if flag_exceptions is not set.
228         * config/darwin.c (darwin_emit_unwind_label): Rewrite to use
229         assemble_name rather than incorrectly emulating it.
230
231         * doc/extend.texi (Deprecated Features): Mention that <? and >? and
232         friends are removed from G++.
233
234 2007-10-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
235
236         * c-opts.c (c_common_handle_option): -Wnontemplate-friend,
237         -Wwrite-strings and -Wmultichar are enabled by default, so Wall
238         enabling them is redundant. Don't check two times for
239         c_dialect_cxx.
240         
241 2007-10-09  H.J. Lu  <hongjiu.lu@intel.com>
242
243         * ra-conflict.c (record_one_conflict_between_regnos): Revert
244         the last change.
245         (set_conflicts_for_earlyclobber): Likewise.
246         (global_conflicts): Likewise.
247
248 2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
249
250         * longlong.h (count_leading_zeros): Replace '{' and '}' with '%{'
251         and '%}', respectively.
252
253 2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
254
255         * config/m68k/m68k.c (print_operand): Handle '{' and '}'.
256         * config/m68k/m68k.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '{'
257         and '}'.
258         * config/m68k/m68k.md: Replace '{' with '%{' where '{' is
259         meant to be output.
260
261 2007-10-09  Richard Guenther  <rguenther@suse.de>
262
263         PR middle-end/33692
264         * gimplify.c (canonicalize_component_ref): Honor qualifiers
265         of referenced structure and component.
266
267 2007-10-09  Kenneth Zadeck <zadeck@naturalbridge.com>
268
269         PR middle-end/33669
270         * ra-conflict.c (record_one_conflict_between_regnos,
271         set_conflicts_for_earlyclobber, global_conflicts): Improved
272         logging.
273         (global_conflicts): Removed incorrect check.
274
275 2007-10-09  Richard Sandiford  <rsandifo@nildram.co.uk>
276
277         PR tree-optimization/33615
278         * tree-ssa-pre.c (compute_avail): Don't call make_values_for_stmt
279         if the statement might throw.  Fix formatting.
280
281 2007-10-09  Richard Sandiford  <rsandifo@nildram.co.uk>
282
283         PR tree-optimization/33615
284         * tree-ssa-loop-im.c (movement_possibility): Return MOVE_IMPOSSIBLE
285         if the rhs might throw.
286
287 2007-10-09  Jan Hubicka  <jh@suse.cz>
288
289         * invoke.texi (align-threshold, align-loop-iterations): Document.
290         * final.c: Include cfgloop.h, params.h
291         (compute_alignments): Dump decisions and compare them with loop
292         structure; honor given parameters.
293         (pass_compute_alignments): New dump file.
294         * params.def (PARAM_ALIGN_THRESHOLD, PARAM_ALIGN_LOOP_ITERATIONS): New.
295         * Makefile.in (final.o): Add dependency on cfgloop.h and params.h
296
297 2007-10-09  James E. Wilson  <wilson@specifix.com>
298
299         PR tree-optimization/33655
300         PR middle-end/22156
301         * tree-sra.c (bitfield_overlaps_p): When fld->element is INTEGER_CST,
302         convert it to bitsizetype before size_binop call.
303
304 2007-10-09  Alexandre Oliva  <aoliva@redhat.com>
305
306         PR tree-optimization/33572
307         * tree-inline.c (update_ssa_across_abnormal_edges): Tolerate
308         the absence of a corresponding edge from the exit block.
309
310 2007-10-09  Alexandre Oliva  <aoliva@redhat.com>
311
312         PR middle-end/22156
313         * tree-sra.c (instantiate_element): Use BYTES_BIG_ENDIAN for
314         bit-field layout.
315         (sra_build_assignment): Likewise.  Set up mask depending on
316         precision, not type.
317         (sra_build_bf_assignment): Use BYTES_BIG_ENDIAN.  Don't overflow
318         computing bit masks.
319         (sra_build_elt_assignment): Don't view-convert from signed to
320         unsigned.
321         (sra_explode_bitfield_assignment): Use bit-field type if
322         possible.  Use BYTES_BIG_ENDIAN.
323
324 2007-10-08  Alexandre Oliva  <aoliva@redhat.com>
325
326         PR middle-end/22156
327         * tree-sra.c (scalarize_lsdt): Fix thinko in testing whether
328         the original stmt can throw.
329         (sra_build_bf_assignment): Fix type mismatch when applying negated
330         mask.
331
332 2007-10-08  Geoffrey Keating  <geoffk@apple.com>
333
334         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Register
335         '#pragma mark' to be executed at preprocessing time.
336
337 2007-10-08  Ollie Wild  <aaw@google.com>
338
339         * varasm.c (compare_constant): Removed call to
340         lang_hooks.expand_constant.
341         (copy_constants): Removed call to lang_hooks.expand_constant.
342         (compute_reloc_for_constant): Removed call to
343         lang_hooks.expand_constant.
344         (output_addressed_constants): Removed call to
345         lang_hooks.expand_constant.
346         (constructor_static_from_elts_p): Removed call to
347         lang_hooks.expand_constant.
348         (output_constant): Removed calls to lang_hooks.expand_constant.
349         * langhooks.h (struct lang_hooks): Removed field expand_constant.
350         * langhooks-def.h (lhd_return_tree): Removed.
351         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
352         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
353         * langhooks.c (lhd_return_tree): Removed.
354
355 2007-10-08  Mark Shinwell  <shinwell@codesourcery.com>
356
357         * combine.c (setup_incoming_promotions): Ensure that
358         arguments that have not undergone mode promotions do not
359         incorrectly get marked as being sign- or zero-extended.
360
361 2007-10-08  Richard Guenther  <rguenther@suse.de>
362
363         PR middle-end/33693
364         PR middle-end/33695
365         PR middle-end/33697
366         * fold-const.c (fold_binary): Use correct types in folding
367         of a * (1 << b) to (a << b).  Likewise for ~A & ~B to ~(A | B)
368         and building of RROTATE_EXPR.
369
370 2007-10-08  Richard Guenther  <rguenther@suse.de>
371
372         PR middle-end/33691
373         PR middle-end/33694
374         PR middle-end/33696
375         * fold-const.c (fold_binary): Use the correct types when
376         folding (A | CST1) & CST2 to (A & CST2) | (CST1 & CST2).
377         (fold_binary): Use the correct types when folding
378         (-A) - B to (-B) - A.
379         (fold_unary): Use the correct types when folding ~(X).
380
381 2007-10-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
382
383         * doc/invoke.texi (Wall): fix formatting issues.
384         
385 2007-10-07  Richard Sandiford  <rsandifo@nildram.co.uk>
386
387         * simplify-rtx.c (simplify_binary_operation_1): Canonicalize
388         truncated shift counts.
389
390 2007-10-07  Kazu Hirata  <kazu@codesourcery.com>
391
392         * config/m68k/m68k.c, config/m68k/m68k.md: Use the assembly
393         syntax for ASSEMBLER_DIALECT.
394         * config/m68k/m68k.h (ASSEMBLER_DIALECT): New.
395
396 2007-10-06  Eric Botcazou  <ebotcazou@adacore.com>
397             Nathan Froyd  <froydnj@codesourcery.com>
398
399         * dwarf2out.c (dwarf2out_frame_init): Check for DWARF2_FRAME_INFO
400         when determining whether to record INCOMING_RETURN_ADDR_RTX.
401
402 2007-10-06  Eric Botcazou  <ebotcazou@adacore.com>
403
404         Revert:
405         2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
406
407         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
408         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
409         the function, temporarily point the debug interface to the null one.
410
411 2007-10-06  Alexandre Oliva  <aoliva@redhat.com>
412
413         PR tree-optimization/33655
414         PR middle-end/22156
415         * tree-sra.c (bitfield_overlaps_p): Handle array and complex
416         elements.
417
418 2007-10-06  Alexandre Oliva  <aoliva@redhat.com>
419
420         PR tree-optimization/33572
421         * tree-cfg.c (verify_stmts): Check for missing PHI defs.
422         * tree-inline.c (update_ssa_across_eh_edges): Renamed to...
423         (update_ssa_across_abnormal_edges): ... this.  Set slots in the
424         return PHI node.
425         (copy_edges_for_bb): Handle nonlocal label edges.
426         (make_nonlocal_label_edges): Deleted.
427         (optimize_inline_calls): Don't call it.
428
429 2007-10-05  Hans-Peter Nilsson  <hp@axis.com>
430
431         * gthr-single.h: Revert last change.
432
433 2007-10-05  Michael Matz  <matz@suse.de>
434
435         PR middle-end/33667
436         * lower-subreg.c (decompose_multiword_subregs): Use
437         validate_unshare_change().
438
439 2007-10-05  Peter Bergner  <bergner@vnet.ibm.com>
440
441         * ra-conflict.c: Include "sparseset.h".
442         (conflicts): Change to HOST_WIDEST_FAST_INT.
443         (allocnos_live): Redefine variable as a sparseset.
444         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE, GET_ALLOCNO_LIVE): Delete macros.
445         (allocno_row_words): Removed global variable.
446         (partial_bitnum, max_bitnum, adjacency_pool, adjacency): New variables.
447         (CONFLICT_BITNUM, CONFLICT_BITNUM_FAST): New defines.
448         (conflict_p, set_conflict_p, set_conflicts_p): New functions.
449         (record_one_conflict_between_regnos): Cache allocno values and reuse.
450         Use set_conflict_p.
451         (record_one_conflict): Update uses of allocnos_live to use
452         the sparseset routines.  Use set_conflicts_p.
453         (mark_reg_store): Likewise.
454         (set_reg_in_live): Likewise.
455         (global_conflicts): Update uses of allocnos_live.
456         Use the new adjacency list to visit an allocno's neighbors
457         rather than iterating over all possible allocnos.
458         Call set_conflicts_p to setup conflicts rather than adding
459         them manually.
460         * global.c: Comments updated.  
461         (CONFLICTP): Delete define.
462         (regno_compare): New function.  Add prototype.
463         (global_alloc): Sort the allocno to regno mapping according to
464         which basic blocks the regnos are referenced in.  Modify the
465         conflict bit matrix to a compressed triangular bitmatrix.
466         Only allocate the conflict bit matrix and adjacency lists if
467         we are actually going to allocate something.
468         (expand_preferences): Use conflict_p.  Update uses of allocnos_live.
469         (prune_preferences): Use the FOR_EACH_CONFLICT macro to visit an
470         allocno's neighbors rather than iterating over all possible allocnos.
471         (mirror_conflicts): Removed function.
472         (dump_conflicts): Iterate over regnos rather than allocnos so
473         that all dump output will be sorted by regno number.
474         Use the FOR_EACH_CONFLICT macro.
475         * ra.h: Comments updated.
476         (conflicts): Update prototype to HOST_WIDEST_FAST_INT.
477         (partial_bitnum, max_bitnum, adjacency, adjacency_pool): Add prototypes.
478         (ADJACENCY_VEC_LENGTH, FOR_EACH_CONFLICT): New defines.
479         (adjacency_list_d, adjacency_iterator_d): New types.
480         (add_neighbor, adjacency_iter_init, adjacency_iter_done,
481         adjacency_iter_next, regno_basic_block): New static inline functions.
482         (EXECUTE_IF_SET_IN_ALLOCNO_SET): Removed define.
483         (conflict_p): Add function prototype.
484         * sparseset.h, sparseset.c: New files.
485         * Makefile.in (OBJS-common): Add sparseset.o.
486         (sparseset.o): New rule.
487
488 2007-10-05  Richard Guenther  <rguenther@suse.de>
489
490         PR middle-end/33666
491         * fold-const.c (fold_unary): Do not fold (long long)(int)ptr
492         to (long long)ptr.
493
494 2007-10-05  Michael Matz  <matz@suse.de>
495
496         PR inline-asm/33600
497         * function.c (match_asm_constraints_1): Check for input
498         being used in the outputs.
499
500 2007-10-05  Richard Guenther  <rguenther@suse.de>
501
502         * tree-cfg.c (verify_gimple_expr): Accept OBJ_TYPE_REF.
503
504 2007-10-05  Richard Sandiford  <rsandifo@nildram.co.uk>
505
506         PR target/33635
507         * config/mips/mips.c (mips_register_move_cost): Rewrite to use
508         subset checks.  Make the cost of FPR -> FPR moves depend on
509         mips_mode_ok_for_mov_fmt_p.
510
511 2007-10-04  Doug Kwan  <dougkwan@google.com>
512
513         * gthr-posix.h (__gthread_cond_broadcast, __gthread_cond_wait,
514         __gthread_cond_wait_recursive): Add to extend interface for POSIX
515         conditional variables. (__GTHREAD_HAS_COND): Macro defined to signify
516         support of conditional variables.
517         * gthr-posix95.h (__gthread_cond_broadcast, __gthread_cond_wait,
518         __gthread_cond_wait_recursive): Add to extend interface for POSIX
519         conditional variables. (__GTHREAD_HAS_COND): Macro defined to signify
520         support of conditional variables.
521         * gthr-single.h (__gthread_cond_broadcast, __gthread_cond_wait,
522         __gthread_cond_wait_recursive): Add to extend interface for POSIX
523         conditional variables.
524         * gthr.h: Update comments to document new interface.
525
526 2007-10-04  Geoffrey Keating  <geoffk@apple.com>
527
528         * cgraphunit.c (cgraph_build_static_cdtor): Don't set
529         DECL_IGNORED_P.
530
531 2007-10-04  Anatoly Sokolov <aesok@post.ru>
532
533         * config/avr/avr.c (expand_epilogue): Don't set RTX_FRAME_RELATED_P.
534
535 2007-10-04  Richard Guenther  <rguenther@suse.de>
536
537         PR middle-end/33641
538         * tree-cfg.c (verify_gimple_expr): Operand one of POINTER_PLUS_EXPR
539         does not need to be of INTEGER_TYPE.
540         (verify_gimple_2): New function split out from ...
541         (verify_gimple_1): ... here.  ICE if there was an error during
542         verification.
543
544 2007-10-04  Michael Matz  <matz@suse.de>
545
546         PR rtl-optimization/33653
547         * dce.c (deletable_insn_p_1): Use volatile_refs_p().
548         * dse.c (scan_insn): Same.
549
550 2007-10-04  Kazu Hirata  <kazu@codesourcery.com>
551
552         * config.gcc: Remove USE_GAS for m68k targets.
553
554 2007-10-04  Richard Guenther  <rguenther@suse.de>
555
556         PR tree-optimization/33627
557         * tree-gimple.h (canonicalize_cond_expr_cond): Declare.
558         * tree-gimple.c (canonicalize_cond_expr_cond): New function,
559         split out from ...
560         * tree-ssa-forwprop.c (combine_cond_expr_cond): ... here.
561         * tree-ssa-ifcombine.c (ifcombine_iforif): Use it.
562
563 2007-10-04  Anatoly Sokolov <aesok@post.ru>
564
565         * config/avr/avr.c (commands_in_file, commands_in_prologues, 
566         commands_in_epilogues): Remove variables.
567         (avr_file_start): Remove unneded initializations of commands_in_file,
568         commands_in_prologues and commands_in_epilogues variables.
569         (avr_file_end): Remove dead code.
570
571 2007-10-04  Kazu Hirata  <kazu@codesourcery.com>
572
573         * config/m68k/m68k.c (m68k_output_movem): Use the MOTOROLA if
574         MOTOROLA is to true.
575
576 2007-10-03  Richard Sandiford  <rsandifo@nildram.co.uk>
577
578         PR target/33635
579         * config/mips/mips-protos.h (mips_split_64bit_move): Rename to...
580         (mips_split_doubleword_move): ...this.
581         * config/mips/mips.c (mips_subword): Extend to handle 64-bit words;
582         use natural endianness for multi-format FPR values.
583         (mips_split_64bit_move): Rename to...
584         (mips_split_doubleword_move): ...this and extend to 64-bit words.
585         Use move_doubleword_fpr* patterns for moves involving FPRs.
586         (mips_save_reg): Update the call to mips_split_64bit_move.
587         (mips_secondary_reload_class): Return NO_REGS for any reload of a
588         nonzero constant into an FPR if the constant can be forced to memory.
589         * config/mips/mips.md: Update the splitter calls to
590         mips_split_64bit_move.
591         (UNSPEC_LOAD_DF_LOW): Rename to...
592         (UNSPEC_LOAD_LOW): ...this.
593         (UNSPEC_LOAD_DF_HIGH): Rename to...
594         (UNSPEC_LOAD_HIGH): ...this.
595         (UNSPEC_STORE_DF_HIGH): Rename to...
596         (UNSPEC_STORE_WORD): ...this.
597         (SPLITF): New mode iterator.
598         (HALFMODE): New mode attribute.
599         (movtf): New expander.
600         (*movtf_internal): New define_insn_and_split.
601         (move_doubleword_fpr<mode>): New expander.
602         (load_df_low, load_df_high, store_df_high, mthc1, mfhc1): Replace
603         with...
604         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
605         (mfhc1<mode>): ...these more general patterns.
606
607 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
608
609         * cfgrtl.c (rtl_block_ends_with_call_p): Skip notes at the end.
610
611 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
612
613         * gcse.c (hash_scan_set): Insert set in insn before note at
614         the end of basic block.
615
616 2007-10-03  Sebastian Pop  <sebastian.pop@amd.com>
617
618         PR tree-optimization/33576
619         * testsuite/gcc.dg/tree-ssa/pr33576.c: New.
620         * tree-loop-linear.c (linear_transform_loops): Call remove_iv.
621         * lambda.h (lambda_loopnest_to_gcc_loopnest): New parameter.
622         (remove_iv): Declared.
623         * lambda-code.c (remove_iv): Not static.
624         (lambda_loopnest_to_gcc_loopnest): New parameter remove_ivs.
625         Don't remove ivs there, save ivs in the buffer.
626
627 2007-10-03  Jason Merrill  <jason@redhat.com>
628
629         PR c++/15764
630         * tree-eh.c (same_handler_p): New fn.
631         (optimize_double_finally): New fn.
632         (refactor_eh_r): New fn.
633         (refactor_eh): New fn.
634         (pass_refactor_eh): New pass.
635         * tree-pass.h: Declare it.
636         * passes.c (init_optimization_passes): Add it.
637
638 2007-10-03  Doug Kwan  <dougkwan@google.com>
639         Richard Guenther  <rguenther@suse.de>
640
641         PR debug/31899
642         * dwarf2out.c (reference_to_unused): Disable sanity checking,
643         be conservative instead.
644
645 2007-10-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
646
647         PR fortran/26682
648         * doc/invoke.texi (-fwhole-program): Document that Fortran
649         doesn't support this option.
650
651 2007-10-02  Richard Sandiford  <rsandifo@nildram.co.uk>
652
653         PR middle-end/33617
654         * expr.c (expand_expr_addr_expr_1): Pass CONSTRUCTORs to
655         expand_expr.
656
657 2007-10-02  David Daney  <ddaney@avtrex.com>
658
659         * config/mips/mips.md (sync_compare_and_swap<mode>): Handle compare
660         against constant zero.
661         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP):  Handle constant zero
662         operand.
663
664 2007-09-02  Kenneth Zadeck <zadeck@naturalbridge.com>
665
666         * ra-conflict.c: New file.
667         * ra.h: New file.
668         * reload.c (push_reload, find_dummy_reload): Change DF_RA_LIVE
669         usage to DF_LIVE usage.
670         (reload): Remove reference to df_get_live_top.
671         * rtlanal.c (subreg_nregs_with_regno): New function.  
672         * df-scan.c (df_def_record_1, df_uses_record): Add code to set
673         DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, and DF_REF_SUBREG flags.
674         (df_has_eh_preds): Removed.
675         (df_bb_refs_collect, df_bb_refs_collect, df_bb_refs_collect,
676         df_exit_block_uses_collect): Changed call from df_has_eh_preds to
677         bb_has_eh_pred.
678         * global.c (allocno, max_allocno, conflicts, allocno_row_words,
679         reg_allocno, EXECUTE_IF_SET_IN_ALLOCNO_SET): Moved to ra.h
680         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE): Moved to ra-conflicts.c.
681         (regs_set, record_one_conflict, record_conflicts, mark_reg_store,
682         mark_reg_clobber, mark_reg_conflicts, mark_reg_death): Deleted.
683         (global_alloc): Turn off rescanning insns after call to
684         global_conflicts and added call to set_preferences.
685         (global_conflicts): Moved to ra-alloc.c.
686         (set_preferences_1, set_preferences): New function.
687         (mirror_conflicts): Changed types for various variables.
688         (mark_elimination): Change DF_RA_LIVE
689         usage to DF_LIVE usage.
690         (build_insn_chain): Rewritten from scratch and made local.
691         (print_insn_chain, print_insn_chains): New functions.
692         (dump_conflicts): Do not print conflicts for fixed_regs.
693         (rest_of_handle_global_alloc): Turn off insn rescanning.
694         * hard-reg-set.h: Fixed comment.
695         * local-alloc.c (update_equiv_regs): Change DF_RA_LIVE
696         usage to DF_LIVE usage and delete refs to TOP sets.
697         (block_alloc): Mark regs as live if they are in the artificial
698         defs at top of block.
699         (find_stack_regs): New function.
700         (rest_of_handle_local_alloc): Changed urec problem to live
701         problem and do not turn off df rescanning.
702         * df.h (DF_UREC, DF_UREC_BB_INFO, DF_LIVE_TOP, DF_RA_LIVE_IN,
703         DF_RA_LIVE_TOP, DF_RA_LIVE_OUT, df_urec_bb_info, df_urec,
704         df_urec_add_problem, df_urec_get_bb_info, df_has_eh_preds): Removed.
705         (DF_CHAIN, DF_NOTE, DF_CHAIN): Renumbered.
706         (DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, DF_REF_SUBREG): New
707         fields in df_ref_flags.  The rest have been renumbered.  
708         * init-regs.c (initialize_uninitialized_regs): Enhanced debugging
709         at -O1.
710         * rtl.h (subreg_nregs_with_regno): New function.
711         * df-problems.c: (df_get_live_out, df_get_live_in,
712         df_get_live_top): Removed reference to DF_RA_LIVE.
713         (df_lr_reset, df_lr_transfer_function, df_live_free_bb_info,
714         df_live_alloc, df_live_reset, df_live_local_finalize,
715         df_live_free): Make top set only if different from in set.
716         (df_lr_top_dump, df_live_top_dump): Only print top set if
717         different from in set.
718         (df_lr_bb_local_compute): Removed unnecessary check.
719         (df_urec_problem_data, df_urec_set_bb_info, df_urec_free_bb_info, 
720         df_urec_alloc, df_urec_mark_reg_change, earlyclobber_regclass, 
721         df_urec_check_earlyclobber, df_urec_mark_reg_use_for_earlyclobber,
722         df_urec_mark_reg_use_for_earlyclobber_1, df_urec_bb_local_compute,
723         df_urec_local_compute, df_urec_init, df_urec_local_finalize, 
724         df_urec_confluence_n, df_urec_transfer_function, df_urec_free, 
725         df_urec_top_dump, df_urec_bottom_dump, problem_UREC,
726         df_urec_add_problem): Removed.
727         (df_simulate_fixup_sets): Changed call from df_has_eh_preds to
728         bb_has_eh_pred. 
729         * Makefile.in (ra-conflict.o, ra.h): New dependencies.
730         * basic_block.h (bb_has_abnormal_pred): New function.
731         * reload1.c (compute_use_by_pseudos): Change DF_RA_LIVE
732         usage to DF_LIVE usage.
733         
734 2007-10-02  Revital Eres  <eres@il.ibm.com>
735
736         * config/rs6000/predicates.md (easy_vector_constant): Return false
737         for 750CL paired vectors.
738         * config/rs6000/paired.md (movv2sf_paired): Fix move of easy
739         vector constant.
740         (vec_initv2sf): Add new description.
741         (vconcatsf): Likewise.
742         * config/rs6000/rs6000-protos.h: Declare paired_expand_vector_init.
743         * config/rs6000/rs6000.c (paired_expand_vector_init): New function.
744
745 2007-10-01  Alexandre Oliva  <aoliva@redhat.com>
746
747         * tree-ssa-sink.c (sink_code_in_bb): Don't stop sinking after
748         sinking the last stmt in a BB.
749
750 2007-10-01  Alexandre Oliva  <aoliva@redhat.com>
751
752         PR middle-end/22156
753         * tree-sra.c (struct sra_elt): Add in_bitfld_block.
754         (sra_hash_tree): Handle BIT_FIELD_REFs.
755         (sra_elt_hash): Don't hash bitfld blocks.
756         (sra_elt_eq): Skip them in parent compares as well.  Handle
757         BIT_FIELD_REFs.
758         (build_element_name_1): Handle BIT_FIELD_REFs.
759         (instantiate_element): Propagate nowarn from parents.  Create
760         BIT_FIELD_REF for variables that are widened by scalarization.
761         Gimple-zero-initialize all bit-field variables that are not
762         part of parameters that are going to be scalarized on entry.
763         (instantiate_missing_elements_1): Return the sra_elt.
764         (canon_type_for_field): New.
765         (try_instantiate_multiple_fields): New.  Infer widest possible
766         access mode from decl or member type, but clip it at word
767         size, and only widen it if a field crosses an alignment
768         boundary.
769         (instantiate_missing_elements): Use them.
770         (generate_one_element_ref): Handle BIT_FIELD_REFs.
771         (scalar_bitfield_p): New.
772         (sra_build_assignment): Optimize assignments from scalarizable
773         BIT_FIELD_REFs.  Use BITS_BIG_ENDIAN to determine shift
774         counts.
775         (REPLDUP): New.
776         (sra_build_bf_assignment): New.  Optimize assignments to
777         scalarizable BIT_FIELD_REFs.
778         (sra_build_elt_assignment): New.  Optimize BIT_FIELD_REF
779         assignments to full variables.
780         (generate_copy_inout): Use the new macros and functions.
781         (generate_element_copy): Likewise.  Handle bitfld differences.
782         (generate_element_zero): Don't recurse for blocks.  Use
783         sra_build_elt_assignment.
784         (generate_one_element_init): Take elt instead of var.  Use
785         sra_build_elt_assignment.
786         (generate_element_init_1): Adjust.
787         (bitfield_overlap_info): New struct.
788         (bitfield_overlaps_p): New.
789         (sra_explode_bitfield_assignment): New.  Adjust widened
790         variables to account for endianness.
791         (sra_sync_for_bitfield_assignment): New.
792         (scalarize_use): Re-expand assignment to/from scalarized
793         BIT_FIELD_REFs.  Explode or sync needed members for
794         BIT_FIELD_REFs accesses or assignments.  Use REPLDUP.
795         (scalarize_copy): Use REPLDUP.
796         (scalarize_ldst): Move assert before dereference.  Adjust EH
797         handling.
798         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
799
800 2007-10-01  Paolo Bonzini  <bonzini@gnu.org>
801
802         * simplify-rtx.c (comparison_result, simplify_relational_operation_1):
803         Rename CR_* constants to CMP_*.  Fix spacing.
804
805 2007-10-01  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
806
807         PR other/33585
808         * Makefile.in (build_html_dir/gccinstall): gccinstall.texi needs
809         to be processed with the special script doc/install.texi2html.
810         
811 2007-09-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
812
813         * doc/invoke.texi (Wall): List the options enabled by Wall.
814         (Wstrict-aliasing): Add missing @option.
815         
816 2007-09-30  Richard Sandiford  <rsandifo@nildram.co.uk>
817
818         * config/mips/mips.c (mips_split_64bit_move): Use gen_rtx_REG_offset
819         rather than gen_lowpart to change a register from DImode to DFmode.
820         (mips_cannot_change_mode_class): Only allow FPRs to change mode if
821         both FROM and TO are integer modes that are no bigger than 4 bytes.
822         (mips_mode_ok_for_mov_fmt_p): New function.
823         (mips_preferred_reload_class): Use it instead of FLOAT_MODE_P.
824         (mips_secondary_reload_class): Tweak formatting and comments.
825         Use reg_class_subset_p instead of direct comparisons with
826         classes.  Only allow direct FPR<->FPR moves for modes that
827         satisfy mips_mode_ok_for_mov_fmt_p.  Only allow loads and stores
828         for 4- and 8-byte types.  Handle reloads in which X is an FPR.
829         * config/mips/mips.md (*movdi_gp32_fp64): Remove f<-f alternative.
830         (*movdi_64bit): Likewise.
831         (*movsi_internal): Likewise.
832         (*movhi_internal): Likewise.
833         (*movqi_internal): Likewise.
834
835 2007-09-30  Diego Novillo  <dnovillo@google.com>
836
837         PR 33593
838         * tree-ssa-ter.c (is_replaceable_p): Return false if STMT may
839         throw an exception.
840
841 2007-09-30  Uros Bizjak  <ubizjak@gmail.com>
842
843         PR tree-optimization/33597
844         * tree-vect-analyze.c (vect_build_slp_tree): Check if optab handler
845         for LSHIFT_EXPR and RSHIFT_EXPR is available for vec_mode.
846
847 2007-09-28  Uros Bizjak  <ubizjak@gmail.com>
848
849         * config/i386/i386.c (ix86_expand_move): Use can_create_pseudo_p ()
850         instead of variants of (!reload_in_progress && !reload_completed).
851         (x86_expand_vector_move): Ditto.
852
853 2007-09-28  Ollie Wild  <aaw@google.com>
854
855         Revert
856         2007-09-27  Ollie Wild  <aaw@google.com>
857
858         * varasm.c (compare_constant): Removed call to
859         lang_hooks.expand_constant.
860         (copy_constants): Removed call to lang_hooks.expand_constant.
861         (compute_reloc_for_constant): Removed call to
862         lang_hooks.expand_constant.
863         (output_addressed_constants): Removed call to
864         lang_hooks.expand_constant.
865         (constructor_static_from_elts_p): Removed call to
866         lang_hooks.expand_constant.
867         (output_constant): Removed calls to lang_hooks.expand_constant.
868         * langhooks.h (struct lang_hooks): Removed field expand_constant.
869         * langhooks-def.h (lhd_return_tree): Removed.
870         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
871         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
872         * langhooks.c (lhd_return_tree): Removed.
873
874 2007-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
875
876         PR target/33347
877         * config/spu/spu.c (spu_expand_insv): Call copy_rtx on the second
878         argument to gen_selb.
879
880 2007-09-28  Chao-ying Fu  <fu@mips.com>
881
882         * libgcc-std.ver: Add fixed-point routines to GCC_4.3.0 section.
883         * doc/libgcc.texi (Fixed-point fractional library routines):
884         Fix typos for neg and cmp functions.
885
886 2007-09-28  Michael Matz  <matz@suse.de>
887
888         PR rtl-optimization/33552
889         * function.c (match_asm_constraints_1): Check for overlap in
890         inputs and replace all occurences.
891
892 2007-09-28  Richard Sandiford  <rsandifo@nildram.co.uk>
893
894         * config/mips/mips.c (override_options): Fix comment typo.
895
896 2007-09-28  Jie Zhang  <jie.zhang@analog.com>
897
898         * config.gcc (bfin*-linux-uclibc*): Set extra_parts
899         to "crtbegin.o crtbeginS.o crtend.o crtendS.o".
900         * config/bfin/t-bfin-linux (crti.o): Don't build.
901         (crtn.o): Likewise.
902         (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
903         * config/bfin/t-bfin-uclinux (crti.o): Don't build.
904         (crtn.o): Likewise.
905         (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
906
907 2007-09-27  Ollie Wild  <aaw@google.com>
908
909         * varasm.c (compare_constant): Removed call to
910         lang_hooks.expand_constant.
911         (copy_constants): Removed call to lang_hooks.expand_constant.
912         (compute_reloc_for_constant): Removed call to
913         lang_hooks.expand_constant.
914         (output_addressed_constants): Removed call to
915         lang_hooks.expand_constant.
916         (constructor_static_from_elts_p): Removed call to
917         lang_hooks.expand_constant.
918         (output_constant): Removed calls to lang_hooks.expand_constant.
919         * langhooks.h (struct lang_hooks): Removed field expand_constant.
920         * langhooks-def.h (lhd_return_tree): Removed.
921         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
922         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
923         * langhooks.c (lhd_return_tree): Removed.
924
925 2007-09-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
926
927         PR middle-end/33436
928         * expr.c (emit_group_load_1): Split constant double when destination
929         length is half source length.
930
931 2007-09-27  Richard Sandiford  <rsandifo@nildram.co.uk>
932
933         * config/mips/mips.h (PTF_AVOID_BRANCHLIKELY): New macro.
934         (mips_cpu_info): Add tune_flags.
935         (GENERATE_BRANCHLIKELY): Remove TARGET_SR71K check.
936         * config/mips/mips.c (mips_cpu_info_table): Add tune_flags fields.
937         Remove end marker.
938         (override_options): Remove deprecation code.  Use branch-likely
939         instructions for optimize_size or if the tuning flags do not
940         suggest otherwise.  Tweak warning.
941         (mips_matching_cpu_name_p, mips_parse_cpu): Use ARRAY_SIZE.
942
943 2007-09-27  Matthias Klose  <doko@ubuntu.com>
944
945         * config/i386/t-linux64 (MULTILIB_OSDIRNAMES): Use ../lib32 as the
946         multilib osdirname if it exists.
947         * config/rs6000/t-linux64 (MULTILIB_OSDIRNAMES): Likewise.
948
949 2007-09-27  Ian Lance Taylor  <iant@google.com>
950
951         PR tree-optimization/33565
952         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING on
953         assignments of comparisons.
954         * tree-ssa-sccvn.c (simplify_binary_expression): Add stmt
955         parameter.  Change caller.  Defer overflow warnings around call to
956         fold_binary.
957         * fold-const.c (fold_undefer_overflow_warnings): Don't warn if
958         TREE_NO_WARNING is set on the statement.
959         * tree-ssa-forwprop.c
960         (tree_ssa_forward_propagate_single_use_vars): Don't test
961         TREE_NO_WARNING when calling fold_undefer_overflow_warnings.
962         * tree-cfg.c (fold_cond_expr_cond): Likewise.
963
964 2007-09-27  Joseph Myers  <joseph@codesourcery.com>
965
966         * config/rs6000/rs6000.c (rs6000_legitimize_address): Do not
967         reduce offset by units of 0x10000 for SPE vector modes or modes
968         used with E500 double instructions.
969
970 2007-09-04  Paolo Bonzini  <bonzini@gnu.org>
971
972         * simplify-rtx.c (comparison_result): New.
973         (simplify_const_relational_operation): Use it instead of the five
974         "equal|op[01]ltu?" variables; consequently remove redundant "else"s.
975         Improve bounds-checking optimizations; remove subsumed POPCOUNT
976         optimizations.  Extract nonzero_address_p optimizations into a
977         separate "if" together with optimizations where op1 is const0_rtx.
978         Optimize comparing an IOR with zero.  Simplify op0 RELOP op0 for
979         floating-point arguments too when appropriate.  Hoist test for ABS
980         outside the final switch statement.
981         * cse.c (fold_rtx): Don't look for an IOR equivalent of
982         folded_arg0 if we found a constant equivalent.  Remove
983         transformations done in simplify-rtx.c for "op0 RELOP op0".
984
985 2007-09-27  Jakub Jelinek  <jakub@redhat.com>
986
987         * builtins.c (expand_builtin, expand_builtin_object_size,
988         expand_builtin_memory_chk, maybe_emit_chk_warning,
989         maybe_emit_sprintf_chk_warning): Use new %K format string specifier
990         for diagnostics.
991         * expr.c (expand_expr_real_1): Likewise.
992         * langhooks-def.h (struct diagnostic_info): Add forward decl.
993         (lhd_print_error_function): Add third argument.
994         * langhooks.h (struct diagnostic_info): Add forward decl.
995         (struct lang_hooks): Add third argument to print_error_function.
996         * diagnostic.h (diagnostic_info): Add abstract_origin field.
997         (diagnostic_last_function_changed, diagnostic_set_last_function): Add
998         second argument.
999         (diagnostic_report_current_function): Likewise.
1000         * toplev.c (announce_function): Pass NULL as second argument to
1001         diagnostic_set_last_function.
1002         * diagnostic.c (diagnostic_report_current_function): Add second
1003         argument, pass it as third argument to lang_hooks.print_error_function.
1004         (default_diagnostic_starter): Pass DIAGNOSTIC as second argument
1005         to diagnostic_report_current_function.
1006         (diagnostic_report_diagnostic): Initialize diagnostic->abstract_origin
1007         and message.abstract_origin.
1008         (verbatim): Initialize abstract_origin.
1009         * pretty-print.h (text_info): Add abstract_origin field.
1010         * pretty-print.c (pp_base_format): Handle %K.
1011         * langhooks.c (lhd_print_error_function): Add third argument.  If
1012         diagnostic->abstract_origin, print virtual backtrace.
1013         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
1014         gcc_cdiag_char_table, gcc_cxxdiag_char_table): Support %K.
1015         (init_dynamic_diag_info): Likewise.
1016
1017 2007-09-26  David Daney  <ddaney@avtrex.com>
1018
1019         PR target/33479
1020         * config/mips/mips.md (sync_compare_and_swap<mode>, sync_old_add<mode>,
1021         sync_new_add<mode>, sync_old_<optab><mode>, sync_new_<optab><mode>,
1022         sync_old_nand<mode>, sync_new_nand<mode>,
1023         sync_lock_test_and_set<mode>): Fix '&' constraint modifiers.
1024         Update length attributes.
1025         (sync_add<mode>, sync_sub<mode>, sync_old_sub<mode>,
1026         sync_new_sub<mode>, sync_<optab><mode>, sync_nand<mode>): Update
1027         length attributes.
1028         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP,
1029         MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND,
1030         MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Add
1031         post-loop sync.
1032
1033 2007-09-26  Richard Guenther  <rguenther@suse.de>
1034
1035         PR tree-optimization/33563
1036         * tree-ssa-dse.c (get_use_of_stmt_lhs): Rename to ...
1037         (get_kill_of_stmt_lhs): ... this.  Re-structure.  Handle
1038         aggregate stores.
1039         (dse_optimize_stmt): Call get_kill_of_stmt_lhs instead of
1040         get_use_of_stmt_lhs.
1041
1042 2007-09-26  Joseph Myers  <joseph@codesourcery.com>
1043
1044         PR c/25309
1045         * c-common.c (complete_array_type): Diagnose too-large arrays and
1046         set type to error_mark_node.
1047
1048 2007-09-26  Richard Guenther  <rguenther@suse.de>
1049
1050         PR tree-optimization/30375
1051         PR tree-optimization/33560
1052         * tree-ssa-dse.c (get_use_of_stmt_lhs): Give up on uses
1053         with calls.
1054
1055         Revert
1056         2006-05-22  Aldy Hernandez  <aldyh@redhat.com>
1057
1058         * tree-ssa-dse.c (aggregate_vardecl_d): New.
1059         (dse_global_data): Add aggregate_vardecl field.
1060         (dse_possible_dead_store_p): New.
1061         Add prev_defvar variable.
1062         Allow immediate uses and previous immediate uses to differ
1063         if they are setting different parts of the whole.
1064         (get_aggregate_vardecl): New.
1065         (dse_record_partial_aggregate_store): New.
1066         (dse_whole_aggregate_clobbered_p): New.
1067         (dse_partial_kill_p): New.
1068         Call dse_maybe_record_aggregate_store().
1069         When checking whether a STMT and its USE_STMT refer to the
1070         same memory address, check also for partial kills that clobber
1071         the whole.
1072         Move some variable definitions to the block where they are used.
1073         (aggregate_vardecl_hash): New.
1074         (aggregate_vardecl_eq): New.
1075         (aggregate_vardecl_free): New.
1076         (aggregate_whole_store_p): New.
1077         (tree_ssa_dse): Initialize and free aggregate_vardecl.
1078         Mark which aggregate stores we care about.
1079
1080 2007-09-25  DJ Delorie  <dj@redhat.com>
1081
1082         PR target/33551
1083         * config/m32c/m32c.c (m32c_immd_dbl_mov): Use INTVAL instead of
1084         XINT.
1085
1086 2007-09-25  Michael Meissner  <michael.meissner@amd.com>
1087
1088         PR target/33524
1089         * config/i386/i386.c (ix86_expand_sse5_unpack): Change to call
1090         gen_sse5_pperm_sign_v4si_v2di and gen_sse5_pperm_zero_v4si_v2di
1091         for vector int32 -> int64 conversions.  Don't write beyond the end
1092         of the allocated vector for int32 -> int64 conversions.
1093
1094 2007-09-25  Revital Eres  <eres@il.ibm.com>
1095
1096         * config/rs6000/paired.h (paired_sel): New.
1097         * config/rs6000/rs6000.c (bdesc_3arg): Add selv2sf4.
1098         (rs6000_expand_ternop_builtin): Pass zero const_double operand
1099         when expanding selv2sf.
1100         * config/rs6000/rs6000.h (rs6000_builtins): Add
1101         PAIRED_BUILTIN_SELV2SF4.
1102
1103 2007-09-25  Joseph Myers  <joseph@codesourcery.com>
1104
1105         PR c/32295
1106         * c-typeck.c (default_conversion): Call require_complete_type
1107         before perform_integral_promotions.
1108         (build_unary_op): Call require_complete_type except for ADDR_EXPR.
1109         (build_c_cast): Call require_complete_type except for casts to
1110         void types.
1111         (convert_for_assignment): Call require_complete_type.
1112
1113 2007-09-25  Revital Eres  <eres@il.ibm.com>
1114
1115         * config/spu/spu.md: Fix doloop pattern.
1116
1117 2007-09-25  Bernd Schmidt  <bernd.schmidt@analog.com>
1118
1119         * config/bfin/bfin.c (expand_prologue_reg_save,
1120         expand_epilogue_reg_restore): Code to save and restore I/M/B/L regs and
1121         ASTAT moved here...
1122         (expand_interrupt_handler_prologue, expand_interrupt_handler_epilogue):
1123         ... from here.  New argument ALL; callers changed.
1124         (n_regs_saved_by_prologue): Count ASTAT for plain saveall functions.
1125         (bfin_expand_prologue, bfin_expand_epilogue): Deal with functions that
1126         have the "saveall" attribute.
1127
1128 2007-09-25  Hans-Peter Nilsson  <hp@bitrange.com>
1129
1130         * config/mmix/mmix.h (FUNCTION_INCOMING_ARG_REGNO_P): Don't define
1131         bogus target macro.
1132         (INCOMING_REGNO, OUTGOING_REGNO): Define.
1133         * config/mmix/mmix.c (mmix_opposite_regno): New function.
1134         * config/mmix/mmix-protos.h (mmix_opposite_regno): Prototype.
1135
1136         * config/mmix/mmix.md ("*cmpcc_folded"): In condition, gate
1137         with REG_P tests before REGNO access.
1138
1139 2007-09-24  DJ Delorie  <dj@redhat.com>
1140
1141         PR target/31482
1142         * config/m32c/cond.md (stzx_reversed_<mode>): Add an output
1143         constraint.
1144         (movqicc_<code>_<mode>): Likewise.
1145         (movhicc_<code>_<mode>): Likewise.
1146
1147 2007-09-24  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1148
1149         PR target/33184
1150         * config/m32c/m32c.c (m32c_eh_return_data_regno): Leave an address
1151         register for reload.
1152
1153 2007-09-24  Danny Smith  <dannysmith@user.sourceforge.net>
1154
1155         PR c++/14688
1156         * config/i386/i386.c (ix86_comp_type_attributes): Check
1157         METHOD_TYPE too.
1158
1159 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
1160
1161         * config/m68k/m68k.h (ASM_OUTPUT_ALIGN_WITH_NOP): New, use
1162         "move.l %a4,%a4" to produce nops.
1163         * config/m68k/m68k.c (override_options): Reset align options,
1164         if neccessary align macro isn't avaible.
1165
1166 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
1167
1168         config/m68k/linux.h (PREFERRED_STACK_BOUNDARY): New.
1169
1170 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
1171
1172         * config/m68k/m68k.c (strict_low_part_peephole_ok): Don't leave
1173         the basic block.
1174         * config/m68k/m68k.md (movsi_m68k): Allow certain constant when
1175         reload is completed.
1176         (peephole pattern): Convert most of them to RTL peephole pattern.
1177
1178 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
1179
1180         * config/m68k/m68k.c (notice_update_cc): Recognize fp compare
1181         (moved from fp compare patterns).
1182         * config/m68k/m68k.md (cmp<mode>, cmp<mode>_68881, cmp<mode>_cf):
1183         Cleanup predicates to relieve reload.
1184         (conditional_trap): Reject conditional trap with fp condition.
1185         * gcc/config/m68k/predicates.md (fp_src_operand): New, reject
1186         certain constants early.
1187
1188 2007-09-24  Roman Zippel <zippel@linux-m68k.org>
1189
1190         * gcc/final.c (final_scan_insn): Remove accidentally duplicated code.
1191
1192 2007-09-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1193
1194         * config.gcc (powerpc*-*-*): --with-cpu=cell is a 64bit CPU.
1195         Allow --with-tune=cell and --with-cpu=cell.
1196
1197 2007-09-24  David Edelsohn  <edelsohn@gnu.org>
1198
1199         * config/rs6000/rs6000-protos.h (rs6000_emit_swrsqrtsf): Declare.
1200         * config/rs6000/rs6000.opt (swdiv): Change option to ...
1201         (recip): this.
1202         * config/rs6000/rs6000.c (rs6000_builtin_reciprocal): New
1203         function.
1204         (TARGET_BUILTIN_RECIPROCAL): Use it.
1205         (rs6000_builtin_expand): Expand recip, recipf, and rsqrtf.
1206         (rs6000_init_builtins): Initialize recip, recipf, and rsqrtf.
1207         (rs6000_emit_swrsqrtsf): New.
1208         * config/rs6000/rs6000.h (rs6000_builtins): Add recip, recipf, and
1209         rsqrtf. 
1210         * config/rs6000/rs6000.md (UNSPEC_RSQRT): Define.
1211         (divsf3): Remove swdiv support.
1212         (recipsf3): New.
1213         (rsqrtsf2): New.
1214         (rsqrt_internal1): New.
1215         (divdf3): Remove swdiv support.
1216         (reciptdf3): New.
1217
1218 2007-09-24  Jakub Jelinek  <jakub@redhat.com>
1219
1220         PR c++/33506
1221         * langhooks.h (struct lang_hooks_for_types): Add type_hash_eq
1222         field.
1223         * langhooks-def.h (LANG_HOOKS_TYPE_HASH_EQ): Define.
1224         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_TYPE_HASH_EQ.
1225         * tree.c (type_hash_eq): For FUNCTION_TYPE use
1226         lang_hooks.type.type_hash_eq in addition to generic tests.
1227
1228 2007-09-24  Pranav Bhandarkar  <pranav.bhandarkar@celunite.com>
1229         Ramana Radhakrishnan  <ramana@hercules.pun.celunite.com>
1230
1231         * tree-inline.h (eni_weights): Add field target_builtin_cost to
1232         reflect the cost per call to a target specific builtin.
1233         * tree-inline.c (estimate_num_insns_1): If it is a CALL_EXPR for a
1234         call to a target specific builtin, then use target_builtin_call_cost.
1235         (init_inline_once): Initialize target_builtin_call_cost field.
1236
1237 2007-09-24  Kai Tietz  <kai.tietz@onevision.com>
1238
1239         PR middle-end/33472
1240         * config/i386/i386.c (return_in_memory_ms_64): Handle return types for
1241         complex types.
1242
1243 2007-09-23  H.J. Lu  <hongjiu.lu@intel.com>
1244
1245         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
1246         * configure: Regenerated.
1247
1248 2007-09-23  Ollie Wild  <aaw@google.com>
1249
1250         * fold-const.c (fold_binary): Fold BIT_AND_EXPR's with a pointer
1251         operand.
1252         (get_pointer_modulus_and_residue): New function.
1253
1254 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
1255
1256         * config/mips/mips.c (build_mips16_call_stub): On 64-bit targets,
1257         combine an SC return value into a single register.
1258
1259 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
1260
1261         * opth-gen.awk (target_flags_explicit): Declare.
1262         * toplev.h (target_flags_explicit): Delete declaration.
1263         * toplev.c (target_flags): Likewise.
1264         * config/mips/mips.h (mips_llsc_setting, mips_llsc): Delete.
1265         (GENERATE_SYNC, GENERATE_LL_SC): Redefine using target_explicit_flags.
1266         Never return true for TARGET_MIPS16.
1267         * config/mips/mips.c (mips_llsc): Delete.
1268         (mips_handle_option): Remove -mllsc handling.
1269         (mips_strip_unspec_address): Tweak comment.
1270         * config/mips/mips.opt (mllsc): Use a target mask.
1271
1272 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
1273
1274         * doc/tm.texi (POINTERS_EXTEND_UNSIGNED): Document extensions to
1275         word_mode as well as Pmode.
1276
1277 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
1278
1279         * function.c (assign_parm_setup_block): Explicitly convert BLKmode
1280         parameters from word_mode to the subword type if such a truncation
1281         is not a no-op.
1282
1283 2007-09-23  Jakub Jelinek  <jakub@redhat.com>
1284
1285         * configure.ac (MAKEINFO): Handle makeinfo version 4.10 and above.
1286         * configure: Regenerated.
1287
1288 2007-09-23  Jan Hubicka  <jh@suse.cz>
1289
1290         * params.def (INLINE_CALL_COST): Set to 12.
1291         * invoke.texi (inline-call-cost): Update default value.
1292
1293 2007-09-23  Eric Botcazou  <ebotcazou@adacore.com>
1294
1295         * config/alpha/alpha.md (movti): Use operand_subword for the split.
1296
1297 2007-09-23  Ayal Zaks  <zaks@il.ibm.com>
1298             Revital Eres  <eres@il.ibm.com>
1299
1300         * modulo-sched.c (doloop_register_get): Rewrite the loop which
1301         checks whether the count_reg is found outside the control part.
1302
1303 2007-09-23  Jakub Jelinek  <jakub@redhat.com>
1304
1305         * expr.c (expand_expr_real_1) <case CALL_EXPR>: Use get_callee_fndecl
1306         instead of checking CALL_EXPR_FN directly to test for builtins.
1307         If error or warning attributes are present, print
1308         error resp. warning.
1309         * c-common.c (handle_error_attribute): New function.
1310         (c_common_attribute_table): Add error and warning
1311         attributes.
1312         * doc/extend.texi: Document error and warning attributes.
1313
1314         * tree.h (block_nonartificial_location): New prototype.
1315         * tree.c (block_nonartificial_location): New function.
1316         * dwarf2out.c (gen_subprogram_die): Add DW_AT_artificial
1317         if artificial attribute is present on abstract inline decl.
1318         * c-common.c (handle_artificial_attribute): New function.
1319         (c_common_attribute_table): Add artificial attribute.
1320         * final.c (override_filename, override_linenum): New variables.
1321         (final_scan_insn): For DBX_DEBUG or SDB_DEBUG, set override_filename
1322         and override_linenum if inside of a block inlined from
1323         __attribute__((__artificial__)) function.
1324         (notice_source_line): Honor override_filename and override_linenum.
1325         * doc/extend.texi: Document __attribute__((__artificial__)).
1326         * config/i386/emmintrin.h: Add __artificial__ attribute to
1327         all __always_inline__ functions.
1328         * config/i386/mmintrin.h: Likewise.
1329         * config/i386/tmmintrin.h: Likewise.
1330         * config/i386/mm3dnow.h: Likewise.
1331         * config/i386/pmmintrin.h: Likewise.
1332         * config/i386/ammintrin.h: Likewise.
1333         * config/i386/xmmintrin.h: Likewise.
1334         * config/i386/smmintrin.h: Likewise.
1335         * config/i386/bmmintrin.h: Likewise.
1336         * config/i386/mmintrin-common.h: Likewise.
1337
1338         PR middle-end/28755
1339         * expr.c (expand_constructor): New function.
1340         (expand_expr_real_1) <case CONSTRUCTOR>: Call it.
1341         (expand_expr_real_1) <case ARRAY_REF>: Call it if VALUE is
1342         CONSTRUCTOR.
1343
1344 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
1345
1346         * config/mips/mips.c (dump_constants_1): Generalize to include
1347         fractional and accumulator modes.
1348
1349 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
1350
1351         * config/mips/mips.h (ISA_HAS_DSP, ISA_HAS_DSPR2): New macros.
1352         * config/mips/mips.c (mips_set_mips16_mode): Don't clear the DSP
1353         flags for MIPS16.
1354         (override_options): Check TARGET_HARD_FLOAT_ABI instead of
1355         TARGET_HARD_FLOAT when testing whether -mpaired-single is
1356         supported.
1357         (mips_conditional_register_usage): Check ISA_HAS_DSP instead of
1358         TARGET_DSP.
1359         * config/mips/constraints.md (ka): Check ISA_HAS_DSPR2 instead of
1360         TARGET_DSPR2.
1361         * config/mips/mips.md (ANYF): Require TARGET_HARD_FLOAT for V2SF.
1362         (mulv2sf3, movv2sf, movv2sf_hardfloat_64bit): Require
1363         TARGET_HARD_FLOAT.
1364         (<u>mulsidi3_32bit_internal, <u>msubsidi4, <u>maddsidi4): Check
1365         ISA_HAS_DSPR2 instead of TARGET_HAS_DSPR2.
1366         * config/mips/mips-dsp.md: Use ISA_HAS_DSP instead of TARGET_HAS_DSP
1367         throughout.
1368         * config/mips/mips-dspr2.md: Likewise ISA_HAS_DSPR2 and
1369         TARGET_HAS_DSPR2.
1370         * config/mips/mips-fixed.md: Use ISA_HAS_DSP and ISA_HAS_DSPR2
1371         instead of TARGET_HAS_DSP and TARGET_HAS_DSPR2.
1372         * config/mips/mips-ps-3d.md: Add TARGET_HARD_FLOAT to V2SF patterns.
1373
1374 2007-09-22  Jason Merrill  <jason@redhat.com>
1375
1376         PR c++/19407
1377         * attribs.c (lookup_attribute_spec): Split out...
1378         (decl_attributes): From here.
1379         * tree.h: Declare it.
1380
1381 2007-09-22  Richard Sandiford  <rsandifo@nildram.co.uk>
1382
1383         * doc/sourcebuild.texi: Document dg-add-options mips16_attribute.
1384
1385 2007-09-22  Eric Botcazou  <ebotcazou@adacore.com>
1386
1387         * tree-inline.c (remap_type_1): Correctly chain variants.
1388
1389 2007-09-22  Richard Guenther  <rguenther@suse.de>
1390
1391         PR tree-optimization/33146
1392         * fold-const.c (fold_binary): Use the original tree
1393         for negating.
1394         * tree.h (STRIP_SIGN_NOPS): Converting from or to pointer
1395         also changes "sign".
1396
1397 2007-09-22  Eric Botcazou  <ebotcazou@adacore.com>
1398
1399         PR target/32325
1400         * except.c (finish_eh_generation): Call commit_edge_insertions if
1401         there are insns queued on the entry edge.
1402         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns on
1403         the entry edge.
1404
1405 2007-09-22  Richard Sandiford  <rsandifo@nildram.co.uk>
1406
1407         * doc/sourcebuild.texi (dg-add-c99-runtime-options): Document.
1408
1409 2007-09-19  Michael Meissner  <michael.meissner@amd.com>
1410
1411         * gcc/config/i386/i386.c: Delete trailing whitespace.
1412         * gcc/config/i386/i386.h: Ditto.
1413         * gcc/config/i386/bmmintrin.h: Ditto.
1414         * gcc/config/i386/sync.md: Ditto.
1415         * gcc/config/i386/ppro.md: Ditto.
1416         * gcc/config/i386/mmx.md: Ditto.
1417         * gcc/config/i386/constraints.md: Ditto.
1418         * gcc/config/i386/sse.md: Ditto.
1419         * gcc/config/i386/athlon.md: Ditto.
1420         * gcc/config/i386/i386.md: Ditto.
1421
1422 2007-09-21  Richard Guenther  <rguenther@suse.de>
1423
1424         PR tree-optimization/33508
1425         * tree-ssa-alias.c (mark_aliases_call_clobbered): Avoid
1426         quadratic loop by keeping a bitmap of variables we have
1427         to clobber all subvariables for.
1428         (set_initial_properties): Likewise.
1429
1430 2007-09-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1431
1432         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Delete.
1433
1434 2007-09-20  Nigel Stephens  <nigel@mips.com>
1435             Chao-ying Fu  <fu@mips.com>
1436
1437         * c-decl.c (finish_declspecs): When _Sat is used without
1438         _Fract or _Accum, set the default type to cts_fract.
1439         This avoids a warning of "type defaults to int".
1440
1441 2007-09-20  Joseph Myers  <joseph@codesourcery.com>
1442
1443         * c-decl.c (check_bitfield_type_and_width): Don't allow _Bool
1444         bit-fields wider than one bit.
1445
1446 2007-09-20  Jakub Jelinek  <jakub@redhat.com>
1447
1448         PR debug/33316
1449         * dwarf2out.c (modified_type_die): Handle TYPE_DECL with NULL
1450         DECL_NAME.
1451         * dbxout.c (dbxout_type): Likewise.
1452
1453         PR c/33238
1454         PR c/27301
1455         * gimplify.c (gimplify_vla_decl): New function.
1456         (gimplify_decl_expr): Move VLA decl handling to gimplify_vla_decl.
1457         Call it.
1458         (gimplify_target_expr): Handle variable length TARGET_EXPRs.
1459
1460 2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
1461
1462         * doc/invoke.texi (-minterlink-mips16): Document.
1463         * config/mips/mips.opt (minterlink-mips16): New option.
1464         * config/mips/mips.c (mips_function_ok_for_sibcall): Handle
1465         -minterlink-mips16
1466
1467 2007-09-20  Joseph Myers  <joseph@codesourcery.com>
1468
1469         * doc/extend.texi (Attribute Syntax): Remove old speculative
1470         future direction.
1471
1472 2007-09-20  Mark Shinwell  <shinwell@codesourcery.com>
1473
1474         * combine.c: Include cgraph.h.
1475         (setup_incoming_promotions): Rework to allow more aggressive
1476         elimination of sign extensions when all call sites of the
1477         current function are known to lie within the current unit.
1478
1479 2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
1480
1481         * dse.c (find_shift_sequence): No-op rework of control flow.
1482
1483 2007-09-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1484
1485         * config/mips/mips.c (build_mips16_call_stub): Tidy.  Fix second
1486         GPR for DCmode on 64-bit targets.  Remove redundant fallback.
1487
1488 2007-09-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1489
1490         * cfgexpand.c (dump_stack_var_partition): Use the correct
1491         index for the offset.
1492
1493 2007-09-19  Joseph Myers  <joseph@codesourcery.com>
1494
1495         * config/mips/sde.h: Switch to GPLv3.
1496
1497 2007-09-19  Eric Botcazou  <ebotcazou@adacore.com>
1498
1499         * tree-sra.c (decide_block_copy): Decide if there are groups.
1500
1501 2007-09-19  Roman Zippel <zippel@linux-m68k.org>
1502
1503         * config/m68k/m68k.c (output_move_himode): Remove jump table
1504         recognition.
1505         config/m68k/m68k.md (lea): Likewise.
1506         * config/m68k/m68k.c (print_operand_address): Use simple pc
1507         relative addressing.
1508
1509 2007-09-19  Bernd Schmidt  <bernd.schmidt@analog.com>
1510
1511         * doc/tm.texi (IS_ASM_LOGICAL_LINE_SEPARATOR): Document new argument.
1512         * final.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Provide two-argument
1513         default definition.
1514         (asm_insn_count): Pass template as second argument to it.
1515         * config/avr/avr.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
1516         * config/pa/pa.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
1517         * config/stormy16/stormy16.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
1518         * config/cris/cris.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
1519         * config/sh/sh.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
1520         (sh_insn_length_adjustment): Pass template as second argument to it.
1521         * config/bfin/bfin.h (IS_ASM_LOGICAL_LINE_SEPARATOR): New macro.
1522
1523         * config/bfin/bfin.md (define_asm_attributes): New.
1524
1525 2007-09-19  Jie Zhang  <jie.zhang@analog.com>
1526
1527         * config.gcc (bfin*-linux-uclibc*): Add ./linux-sysroot-suffix.h
1528         to tm_file.
1529         * config/bfin/print-sysroot-suffix.sh: New.
1530         * config/bfin/t-bfin-elf (EXTRA_PARTS): Remove.
1531         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
1532         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
1533         * config/bfin/t-bfin-uclinux (EXTRA_PARTS): Remove.
1534         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
1535         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
1536         * config/bfin/t-bfin-linux (EXTRA_PARTS): Remove.
1537         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
1538         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
1539         (linux-sysroot-suffix.h): New target.
1540         * config/bfin/bfin.opt (mcsync-anomaly): Use Var instead of Mask.
1541         (mspecld-anomaly): Likewise.
1542         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Renamed from
1543         (enum bfin_cpu): ... this. Add BFIN_CPU_BF522, BFIN_CPU_BF525,
1544         BFIN_CPU_BF527, BFIN_CPU_BF538, BFIN_CPU_BF539, BFIN_CPU_BF542,
1545         BFIN_CPU_BF544, BFIN_CPU_BF548, and BFIN_CPU_BF549.
1546         (bfin_si_revision): Declare.
1547         (bfin_workarounds): Declare.
1548         (WA_SPECULATIVE_LOADS): Define.
1549         (ENABLE_WA_SPECULATIVE_LOADS): Define.
1550         (WA_SPECULATIVE_SYNCS): Define.
1551         (ENABLE_WA_SPECULATIVE_SYNCS): Define.
1552         * config/bfin/elf.h (STARTFILE_SPEC): Rename crt532.o to basiccrt.o.
1553         (LIB_SPEC): Add %s to the linker scripts.
1554         Use proper linker script for bf522, bf525, bf527,
1555         bf538, bf539, bf542, bf544, bf548, and bf549.
1556         * config/bfin/bfin.c (bfin_si_revision): Define.
1557         (bfin_workarounds): Define.
1558         (struct bfin_cpu): New.
1559         (bfin_cpus): New.
1560         (bfin_handle_option): Handle silicon revision part of -mcpu option.
1561         (override_options): Set bfin_workarounds.
1562         (length_for_loop): Replace TARGET_CSYNC_ANOMALY with
1563         ENABLE_WA_SPECULATIVE_SYNCS, TARGET_SPECLD_ANOMALY with
1564         ENABLE_WA_SPECULATIVE_LOADS.
1565         (bfin_reorg): Likewise.
1566         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
1567         macros for bf522, bf525, bf527, bf538, bf539,
1568         bf542, bf544, bf548, and bf549.
1569         Define __SILICON_REVISION__ and __WORKAROUND_* macros if needed.
1570         Don't define __ID_SHARED_LIB__ when -msep-data.
1571         (TARGET_DEFAULT): Define as 0.
1572         (DRIVER_SELF_SPECS): Add -mcpu=bf532 if no -mcpu option.
1573         * doc/invoke.texi (Blackfin Options): Document silicon
1574         revision part of -mcpu option and it now accepts bf522, bf525,
1575         bf527, bf538, bf539, bf542, bf544, bf548, and bf549.
1576
1577 2007-09-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1578
1579         * alias.c (memory_modified_1): Deconstify.
1580         (memory_modified_in_insn_p): Don't use const_note_stores.
1581         * rtl.h (const_note_stores): Delete.
1582         * rtlanal.c (const_note_stores): Likewise.
1583
1584 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1585
1586         * dse.c (find_shift_sequence): Temporarily revert to forbidding
1587         word shifts.
1588
1589 2007-09-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1590
1591         PR target/33388
1592         PR target/33397
1593         * config/fr30/fr30.md (addsi3): Check REG_P() before calling REGNO().
1594         (addsi_small_int): Likewise.
1595         (addsi_big_int): Use rtx_equal_p() instead of REGNO() comparison.
1596         (one_cmplsi2): Likewise.
1597         (negsi2): Delete.
1598         (enter_func): Expand insn using hard_frame_pointer_rtx and
1599         stack_pointer_rtx.
1600         (*enter_func): New.
1601         * config/fr30/fr30.c (fr30_expand_prologue): Check for
1602         hard_frame_pointer_rtx instead of using REGNO() check.
1603         Properly sign extend GEN_INT() argument.
1604
1605 2007-09-18  Roman Zippel <zippel@linux-m68k.org>
1606
1607         * config/m68k/m68k.c (override_options): Remove USE_GAS,
1608         use %. syntax.
1609         (output_dbcc_and_branch, output_scc_di): Replace all jbcc
1610         alternatives with just jcc.
1611         * config/m68k/m68k.md (addsi_lshrsi_31, beq0_di, bne0_di,
1612         bge0_di, blt0_di, bgtu, bltu, bgeu, bleu, bgtu_rev,
1613         bltu_rev, bgeu_rev, bleu_rev, jump, dbne_hi, dbne_si,
1614         dbge_hi, dbge_si): Likewise.
1615
1616 2007-09-18  Roman Zippel <zippel@linux-m68k.org>
1617
1618         * config/m68k/m68k.md (beq, bne, bgt, blt, bge, ble, bordered,
1619         bunordered, buneq, bunge, bungt, bunle, bunlt, bltgt, beq_rev,
1620         bne_rev, bgt_rev, blt_rev, bge_rev, ble_rev, bordered_rev,
1621         bunordered_rev, buneq_rev, bunge_rev, bungt_rev, bunle_rev,
1622         bunlt_rev, bltgt_rev): Replace all fbcc with fjcc.
1623
1624 2007-09-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
1625
1626         * config/m68k/m68k-devices.def (51qe): New device.
1627         * config/m68k/m68k.c (FL_FOR_isa_c): Remove division unit.  Add it
1628         to all uses of FL_FOR_isa_c for compatibility.
1629         (all_microarchs): Add cfv1 microarchitecture.
1630         (m68k_handle_option): Handle m51qe option.
1631         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Handle 51QE.
1632         (TUNE_CFV1): New macro.
1633         (enum uarch_type): Add ucfv1.
1634         * doc/invoke.texi: Document 51qe device and cfv1 microarchitecture.
1635         
1636 2007-09-18  Richard Guenther  <rguenther@suse.de>
1637
1638         PR tree-optimization/31863
1639         * tree-ssa-structalias.c (create_variable_info_for): Always
1640         free the fieldstack.
1641
1642 2007-09-18  Dorit Nuzman  <dorit@il.ibm.com>
1643
1644         * opts.c (decode_options): Enable vectorization under -O3.
1645
1646 2007-09-18  Richard Guenther  <rguenther@suse.de>
1647
1648         PR tree-optimization/33340
1649         * tree-ssa-sccvn.c (set_ssa_val_to): Do not set values to
1650         SSA_NAMEs that occur in abnormal PHI nodes.
1651
1652 2007-09-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1653
1654         * tree-cfg.c (is_ctrl_altering_stmt, tree_block_ends_with_call_p):
1655         Don't use const_get_call_expr_in.
1656         * tree-gimple.c (const_get_call_expr_in): Delete.
1657         * tree-gimple.h (const_get_call_expr_in): Likewise.
1658
1659 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1660
1661         * df-scan.c (df_notes_rescan): Do nothing if the instruction does
1662         not yet have a basic block.
1663         * dse.c (find_shift_sequence): Don't set DF_NO_INSN_RESCAN.
1664
1665 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1666
1667         * config/mips/mips.c (mips_file_start): Add ".previous" directives
1668         to both ".section"s.
1669
1670 2007-09-17  Richard Sandiford  <rsandifo@nildram.co.uk>
1671
1672         * config/mips/mips.c (mips_output_mi_thunk): Use
1673         mips_function_ok_for_sibcall and const_call_insn_operand
1674         to determine if a direct sibcall is allowed.  Use
1675         mips_classify_symbol to determine a global pointer is needed.
1676
1677 2007-09-17  Richard Sandiford  <rsandifo@nildram.co.uk>
1678
1679         * config/mips/mips.md (*clear_upper32): Use "W" as the memory operand.
1680
1681 2007-09-17  Chao-ying Fu  <fu@mips.com>
1682             Nigel Stephens  <nigel@mips.com>
1683
1684         * config/fixed-bit.h: New file.
1685         * config/fixed-bit.c: New file.
1686         * doc/libgcc.texi (Fixed-point fractional library routines): New node.
1687
1688 2007-09-18  Jakub Jelinek  <jakub@redhat.com>
1689
1690         * c-format.h (format_kind_info): Add alloc_char field.
1691         * c-format.c (scanf_flag_specs): Add 'm'.
1692         (scanf_flag_pairs): Add 'a', 'm' pair.
1693         (scan_char_table): Allow 'm' modifier for c, s, [, C and S.
1694         (format_types_orig): Add alloc_char fields.
1695         (check_format_info_main): Rename aflag to alloc_flag.
1696         Handle fki->alloc_char. modifier after width and before length
1697         modifiers.  Move FMT_FLAG_SCANF_A_KLUDGE handling before
1698         length modifiers as well.
1699         * config/sol2-c.c (solaris_format_types): Add alloc_char field.
1700
1701         PR middle-end/33423
1702         * builtins.c (expand_builtin_memory_chk): Handle COMPOUND_EXPRs
1703         returned by build_call_expr.
1704
1705 2007-09-17  Eric Botcazou  <ebotcazou@adacore.com>
1706
1707         * tree-sra.c (maybe_lookup_element_for_expr) <COMPONENT_REF>: Return
1708         NULL for variable-sized records too.
1709         (sra_walk_expr) <COMPONENT_REF>: Stop at variable-sized records too.
1710
1711 2007-09-17  Tom Tromey  <tromey@redhat.com>
1712
1713         * c-decl.c (pushdecl): Don't set DECL_LANG_SPECIFIC.
1714         (c_builtin_function): Likewise.
1715         (grokdeclarator): Likewise.
1716
1717 2007-09-17  Zdenek Dvorak  <ook@ucw.cz>
1718
1719         PR rtl-optimization/26449
1720         * loop-invariant.c (move_invariant_reg): Do not use force_operand.
1721         (seq_insns_valid_p): Removed.
1722
1723 2007-09-17  Eric Botcazou  <ebotcazou@adacore.com>
1724
1725         * tree-nomudflap.c (gate_mudflap): New static function.
1726         (pass_mudflap_1): Use it as gate function.
1727         (pass_mudflap_2): Likewise.
1728
1729 2007-09-17  Jan Hubicka  <jh@suse.cz>
1730
1731         PR middle-end/33348
1732         PR target/33406
1733         * loop-invariant.c (move_invariant_reg): Unshare sequence.
1734
1735 2007-09-17  Victor Kaplansky  <victork@il.ibm.com>
1736
1737         PR tree-optimization/33319
1738         * tree-vect-analyze.c (vect_same_range_drs): New.
1739         (vect_vfa_range_equal): New.
1740         (vect_is_duplicate_ddr): Removed.
1741         (vect_mark_for_runtime_alias_test): Do not perform marking when
1742         optimizing for size or max_param for alias checking is zero.
1743         Move the function before vect_analyze_data_ref_dependence.
1744         (vect_analyze_data_ref_dependence): Add call to
1745         vect_mark_for_runtime_alias_test in two cases when dependence
1746         is not clear.
1747         (vect_analyze_data_ref_dependences): Do not call to
1748         vect_mark_for_runtime_alias_test.
1749         (vect_prune_runtime_alias_test_list): New.
1750         (vect_analyze_loop): Add call to vect_prune_runtime_alias_test_list.
1751         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
1752         Update vec_outside_cost.
1753         (vect_vfa_segment_size): More compact code, use TYPE_SIZE_UNIT.
1754         (vect_create_cond_for_alias_checks): Build the base address of data
1755         reference from DR_GROUP_FIRST_DR.
1756         (vect_loop_versioning): New.
1757         (vect_transform_loop): Add a call to vect_loop_versioning.
1758         Remove factored out code.
1759
1760 2007-09-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1761
1762         PR middle-end/33273
1763         * expr.c (store_expr): Call adjust_address to change mode of dest_mem
1764         to BLKmode.
1765
1766 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
1767
1768         * dse.c (find_shift_sequence): Allow word as well as subword shifts.
1769         Do the tentative shift expansion with the DF_NO_INSN_RESCAN flag set.
1770         Fix the call to insn_rtx_cost.  Skip access sizes that require a
1771         real truncation of the store register.  Use convert_move instead
1772         of gen_lowpart when narrowing the result.
1773         (replace_read): Use convert_move instead of gen_lowpart when
1774         narrowing the store rhs.
1775
1776 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
1777
1778         * config/mips/mips.md (SHORT): Fix long line.
1779         (SUBDI): New mode iterator.  Extend the shift-and-truncate insns
1780         to QImode and HImode.
1781
1782 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
1783
1784         * config/mips/mips.h (POINTERS_EXTEND_UNSIGNED): Define.
1785
1786 2007-09-15  Zdenek Dvorak  <ook@ucw.cz>
1787
1788         * tree-parloops.c: New file.
1789         * tree-ssa-operands.h (free_stmt_operands): Declare.
1790         * tree-ssa-loop-manip.c (split_loop_exit_edge): Return the new basic
1791         block.
1792         * tree-pass.h (pass_parallelize_loops): Declare.
1793         * omp-low.c (expand_omp_parallel, expand_omp_for): Update SSA form for
1794         virtual operands.
1795         (build_omp_regions_1): Allow analysing just a single OMP region and
1796         its subregions.
1797         ( build_omp_regions_root, omp_expand_local): New functions.
1798         (build_omp_regions): Add argument to build_omp_regions_1 call.
1799         * builtins.def (DEF_GOMP_BUILTIN): Initialize OMP builtins when
1800         autoparallelization is run.
1801         * timevar.def (TV_TREE_PARALLELIZE_LOOPS): New.
1802         * tree-ssa-loop.c (gate_tree_parallelize_loops, tree_parallelize_loops,
1803         pass_parallelize_loops): New.
1804         * common.opt (ftree-parallelize-loops): New.
1805         * tree-flow.h (omp_expand_local, tree_duplicate_sese_tail,
1806         parallelize_loops): Declare.
1807         (add_phi_args_after_copy, split_loop_exit_edge): Declaration changed.
1808         * Makefile.in (tree-parloops.o): Added.
1809         * tree-cfg.c (add_phi_args_after_copy_edge, tree_duplicate_sese_tail):
1810         New functions.
1811         (add_phi_args_after_copy_bb): Use add_phi_args_after_copy_edge.
1812         (add_phi_args_after_copy): Call add_phi_args_after_copy_edge for
1813         one extra edge as well.
1814         (tree_duplicate_sese_region): Add argument to add_phi_args_after_copy.
1815         Use VEC_free to free doms vector.
1816         (move_block_to_fn): Update loop info. Remove phi nodes for virtual
1817         operands.  Recompute operand caches in the new function.
1818         (move_sese_region_to_fn): Update loop info.
1819         * passes.c (init_optimization_passes): Add pass_parallelize_loops.
1820         * tree-ssa-operands.c (free_stmt_operands): New function.
1821
1822         * doc/passes.texi: Document autoparallelization.
1823         * doc/invoke.texi (-ftree-parallelize-loops): New option.
1824
1825 2007-09-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1826
1827         PR target/33062
1828         * pa.c (function_value): Use GET_MODE_BITSIZE instead of
1829         TYPE_PRECISION.
1830
1831 2007-09-15  Dorit Nuzman  <dorit@il.ibm.com>
1832
1833         * tree-vect-transform.c (vect_get_vec_defs_for_stmt_copy): check if 
1834         the VEC is not NULL.
1835         (vectorizable_type_demotion, vectorizable_type_promotion): Check that 
1836         get_vectype_for_scalar_type succeeded.
1837         (vectorizable_conversion): Likewise.
1838
1839 2007-09-14  Jan Hubicka  <jh@suse.cz>
1840
1841         * config/i386/i386.md (*floatdi<mode>2_i387): Guard against
1842         TARGET_64BIT.
1843
1844 2007-09-14  Uros Bizjak  <ubizjak@gmail.com>
1845
1846         PR target/33438
1847         * config/i386/i386.md (fmodxf3): Copy operands[2] to temporary
1848         register when operands[2] equals operands[1].
1849         (remainderxf3): Ditto.
1850
1851 2007-09-14  Sandra Loosemore  <sandra@codesourcery.com>
1852             Nigel Stephens  <nigel@mips.com>
1853
1854         * doc/tm.texi (LIBGCC2_UNWIND_ATTRIBUTE): Document.
1855         * unwind-generic.h (LIBGCC2_UNWIND_ATTRIBUTE): Define.
1856         (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE to
1857         declaration.
1858         (_Unwind_ForcedUnwind): Likewise.
1859         (_Unwind_Resume): Likewise.
1860         (_Unwind_Resume_or_Rethrow): Likewise.
1861         (_Unwind_Backtrace): Likewise.
1862         (_Unwind_SjLj_RaiseException): Likewise.
1863         (_Unwind_SjLj_ForcedUnwind): Likewise.
1864         (_Unwind_SjLj_Resume): Likewise.
1865         (_Unwind_SjLj_Resume_or_Rethrow): Likewise.
1866         * unwind.inc (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE
1867         to definition.
1868         (_Unwind_ForcedUnwind): Likewise.
1869         (_Unwind_Resume): Likewise.
1870         (_Unwind_Resume_or_Rethrow): Likewise.
1871         (_Unwind_Backtrace): Likewise.
1872         * unwind-compat.c (_Unwind_Backtrace): Likewise.
1873         (_Unwind_ForcedUnwind): Likewise.
1874         (_Unwind_RaiseException): Likewise.
1875         (_Unwind_Resume): Likewise.
1876         (_Unwind_Resume_or_Rethrow): Likewise.
1877
1878         * config/mips/mips.h (LIBGCC2_UNWIND_ATTRIBUTE): Define to force
1879         nomips16 mode when IN_LIBGCC2 with hard float.
1880
1881 2007-09-14  Richard Sandiford  <rsandifo@nildram.co.uk>
1882
1883         * config/mips/sdemtk.opt: Update to GPLv3.
1884         * config/mips/sdemtk.h: Likewise.
1885
1886 2007-09-14  Nigel Stephens  <nigel@mips.com>
1887
1888         * config.gcc (mips*-*-linux*): Recognise mipsisa32r2 and set
1889         MIPS_ISA_DEFAULT appropriately.  Don't make soft-float the default
1890         for mipsisa32-*-linux*.
1891
1892 2007-09-14  Nigel Stephens  <nigel@mips.com>
1893             David Ung  <davidu@mips.com>
1894             Thiemo Seufer  <ths@mips.com>
1895             Richard Sandiford  <richard@codesourcery.com>
1896
1897         * config.gcc (mips*-sde-elf*): Add support for the SDE C libraries.
1898         * configure.ac: Add a mipssde threading type.
1899         * configure: Regenerate.
1900         * config/mips/sdemtk.h: New file.
1901         * config/mips/t-sdemtk: Likewise.
1902         * config/mips/sdemtk.opt: Likewise.
1903         * gthr-mipssde.h: Likewise.
1904         * config/mips/sde.h (FUNCTION_PROFILER): Move to config/mips/sdemtk.h.
1905         * config/mips/mips.h (MIPS_SAVE_REG_FOR_PROFILING_P): New macro.
1906         (MIPS_ICACHE_SYNC): New macro, split from ...
1907         * config/mips/mips.md (clear_cache): ...here.
1908         * config/mips/mips.c (mips_save_reg_p): Check
1909         MIPS_SAVE_REG_FOR_PROFILING_P on profiled functions.
1910         (build_mips16_function_stub): Use targetm.strip_name_encoding.
1911         (build_mips16_call_stub): Likewise.
1912
1913 2007-09-14  Richard Sandiford  <richard@codesourcery.com>
1914
1915         * Makefile.in (stmp-int-hdrs): Depend on fixinc_list.
1916
1917 2007-09-14  Jakub Jelinek  <jakub@redhat.com>
1918
1919         PR target/32337
1920         * config/ia64/ia64.c (find_gr_spill): Don't decrement
1921         current_frame_info.n_local_regs.  Don't return emitted local
1922         regs.
1923         (ia64_compute_frame_size): Improve unwind hack to put
1924         RP, PFS, FP in that order by allowing some of the registers
1925         been already emitted, as long as they are emitted to the
1926         desired register.
1927
1928 2007-09-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1929
1930         * config/spu/vmx2spu.h (vec_extract, vec_insert, vec_lvlx,
1931         vec_lvlxl, vec_lvrx, vec_lvrxl, vec_promote, vec_splats,
1932         vec_stvlx, vec_stvlxl, vec_stvrx, vec_stvrxl): New intrinsics.
1933
1934 2007-09-13  Eric Christopher  <echristo@apple.com>
1935             Kenneth Zadeck <zadeck@naturalbridge.com>
1936
1937         * dse.c (find_shift_sequence): New function.
1938         (replace_read): Add case to remove read if it requires shift.
1939         * config/i386/i386.c (ix86_expand_prologue): Fixed typo in comment.
1940         
1941 2007-09-13  Tom Tromey  <tromey@redhat.com>
1942
1943         * c-common.c (fname_as_string): Update.
1944         * c-parser.c (c_parser) <lex_untranslated_string>: New field.
1945         (c_lex_one_token): Update.  Add 'parser' argument.
1946         (c_parser_simple_asm_expr): Update.
1947         (c_parser_attributes): Update.
1948         (c_parser_asm_statement): Update.
1949         (c_parser_asm_operands): Update.
1950         (c_parser_peek_token): Update.
1951         (c_parser_peek_2nd_token): Update.
1952         * c-lex.c (c_lex_string_translate): Remove.
1953         (c_lex_return_raw_strings): Likewise.
1954         (c_lex_with_flags): Added 'lex_flags' argument.
1955         (lex_string): Added 'translate' argument.
1956         * c-pragma.h (c_lex_with_flags): Update.
1957         (c_lex_string_translate, c_lex_return_raw_strings): Remove.
1958         (C_LEX_STRING_NO_TRANSLATE): New define.
1959         (C_LEX_RAW_STRINGS): Likewise.
1960
1961 2007-09-13  Bernd Schmidt  <bernd.schmidt@analog.com>
1962
1963         From Jie Zhang:
1964         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_ONES,
1965         BFIN_BUILTIN_CPLX_MUL_16_S40, BFIN_BUILTIN_CPLX_MAC_16_S40,
1966         BFIN_BUILTIN_CPLX_MSU_16_S40, and BFIN_BUILTIN_CPLX_SQU.
1967         (bfin_init_builtins): Initialize __builtin_bfin_ones,
1968         __builtin_bfin_min_fr1x16, __builtin_bfin_max_fr1x16,
1969         __builtin_bfin_min_fr1x32, __builtin_bfin_max_fr1x32,
1970         __builtin_bfin_cmplx_add, __builtin_bfin_cmplx_sub,
1971         __builtin_bfin_cmplx_mul_s40, __builtin_bfin_cmplx_mac_s40,
1972         __builtin_bfin_cmplx_msu_s40 and __builtin_bfin_csqu_fr16.
1973         (bdesc_1arg): Add __builtin_bfin_ones.
1974         (bfin_expand_builtin): Expand __builtin_bfin_cmplx_mul_s40,
1975         __builtin_bfin_cmplx_mac_s40, __builtin_bfin_cmplx_msu_s40,
1976         and __builtin_bfin_csqu_fr16.
1977         * config/bfin/bfin.md (UNSPEC_ONES): New constant.
1978         (ones): New define_insn.
1979         (ssaddhi3_parts): New define_insn.
1980         (sssubhi3_parts): New define_insn.
1981         (flag_mulhi_parts): New define_insn.
1982
1983 2007-09-13  Seongbae Park <seongbae.park@gmail.com>
1984
1985         * common.opt (femit-class-debug-always): Turn off by default.
1986
1987 2007-09-13  Bernd Schmidt  <bernd.schmidt@analog.com>
1988
1989         * config/bfin/bfin.md (reload_outpdi, reload_inpdi): New patterns.
1990         * config/bfin/bfin.c (bfin_secondary_reload): Make sure we use them.
1991
1992 2007-09-13  James E. Wilson  <wilson@specifix.com>
1993
1994         PR tree-optimization/33389
1995         * tree-ssa-operands.c (append_vuse): If ann->in_vdef_list true,
1996         then set build_loads before returning.
1997
1998 2007-09-13  Sandra Loosemore  <sandra@codesourcery.com>
1999             David Ung  <davidu@mips.com>
2000
2001         * config/mips/mips.h (ASM_OUTPUT_REG_PUSH): Replace {d}subu with
2002         {d}addiu and a negative immediate such that it works with MIPS16
2003         instructions.
2004         
2005 2007-09-13  H.J. Lu  <hongjiu.lu@intel.com>
2006
2007         PR bootstrap/33418
2008         * configure.ac (ld_vers): Support Linux linker.
2009         * configure: Regenerated.
2010
2011 2007-09-13  Richard Sandiford  <richard@codesourcery.com>
2012             Sandra Loosemore <sandra@codesourcery.com>
2013
2014         * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Delete.
2015         (SYMBOL_REF_MIPS16_FUNC_P): Delete.
2016         * config/mips/mips.c (mips_attribute_table): Turn mips16 and
2017         nomips16 into decl attributes.
2018         (TARGET_INSERT_ATTRIBUTES): Override.
2019         (TARGET_MERGE_DECL_ATTRIBUTES): Likewise.
2020         (TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P): Always return true.
2021         (mips_mips16_type_p, mips_nomips16_type_p): Delete in favor of...
2022         (mips_mips16_decl_p, mips_nomips16_decl_p): ...these new functions.
2023         (mips_comp_type_attributes): Remove mips16 and nomips16 handling.
2024         (mips_use_mips16_mode_p): Reimplement as a function that takes
2025         a decl and considers only decl attributes.  If the decl is nested
2026         function, use its parent attributes.
2027         (mips_function_ok_for_sibcall): Use mips_use_mips16_mode_p
2028         instead of SYMBOL_REF_MIPS16_FUNC_P.
2029         (mips_set_mips16_mode): Move call to sorry here from old
2030         mips_use_mips16_mode_p.
2031         (mflip_mips16_entry): New structure.
2032         (mflip_mips16_htab): New variable.
2033         (mflip_mips16_htab_hash, mflip_mips16_htab_eq): New functions.
2034         (mflip_mips16_use_mips16_p, mips_insert_attributes): Likewise.
2035         (mips_merge_decl_attributes): New function.
2036         (mips_set_current_function): Reinstate call to mips_set_mips16_mode.
2037         Use mips_use_mips16_mode_p.
2038         (mips_output_mi_thunk): Use mips_use_mips16_mode_p instead of
2039         SYMBOL_REF_MIPS16_FUNC_P.
2040         (mips_encode_section_info): Don't set SYMBOL_FLAG_MIPS16_FUNC.
2041
2042 2007-09-13  Richard Sandiford  <richard@codesourcery.com>
2043
2044         * c-parser.c (c_parser_struct_declaration): Check for a null return.
2045
2046 2007-09-13  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2047
2048         PR driver/33309
2049         * gcc.c (xputenv): Make argument const, and use CONST_CAST.
2050
2051 2007-09-12  Michael Meissner  <michael.meissner@amd.com>
2052             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
2053             Tony Linthicum  <tony.linthicum@amd.com>
2054
2055         * tree.h (function_args_iterator): New type to iterate over
2056         function arguments.
2057         (FOREACH_FUNCTION_ARGS_PTR): Iterator macros for iterating over
2058         function arguments providing a pointer to the argument.
2059         (FOREACH_FUNCTION_ARGS): Iterator macros for iterating over
2060         function arguments providing the argument.
2061         (function_args_iter_init): Inline function to initialize
2062         function_args_iterator.
2063         (function_args_iter_cond_ptr): Inline function to return the next
2064         pointer to hold the argument.
2065         (function_args_iter_cond): Inline function to return the next
2066         argument.
2067         (function_args_iter_cond_next): Advance the function args
2068         iterator.
2069         (stdarg_p): New function, return true if variable argument
2070         function.
2071         (prototype_p): New function, return true if function is
2072         prototyped.
2073         (function_args_count): New function, count the number of arguments
2074         of a function.
2075
2076         * tree.c (stdarg_p): New function, return true if variable
2077         argument function.
2078         (prototype_p): New function, return true if function is
2079         prototyped.
2080
2081         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
2082         (TARGET_ROUND): New macro for the round/ptest instructions which
2083         are shared between SSE4.1 and SSE5.
2084         (OPTION_MASK_ISA_ROUND): Ditto.
2085         (OPTION_ISA_ROUND): Ditto.
2086         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
2087         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
2088
2089         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
2090         (-mfused-madd): New switch to give users control over whether the
2091         compiler optimizes to use the multiply/add SSE5 instructions.
2092
2093         * config/i386/i386.c (m_AMD_MULTIPLE): Rename from
2094         m_ATHLON_K8_AMDFAM10, and change all uses.
2095         (enum pta_flags): Add PTA_SSE5.
2096         (ix86_handle_option): Turn off 3dnow if -msse5.
2097         (override_options): Add SSE5 support.
2098         (print_operand): %Y prints comparison codes for SSE5 com/pcom
2099         instructions.
2100         (ix86_expand_sse_movcc): Add SSE5 support.
2101         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
2102         vector type to the next largest size.
2103         (ix86_expand_sse5_pack): New function to use pperm to pack a
2104         vector type to the next smallest size.
2105         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
2106         (IX86_BUILTIN_FMADDSD): Ditto.
2107         (IX86_BUILTIN_FMADDPS): Ditto.
2108         (IX86_BUILTIN_FMADDPD): Ditto.
2109         (IX86_BUILTIN_FMSUBSS): Ditto.
2110         (IX86_BUILTIN_FMSUBSD): Ditto.
2111         (IX86_BUILTIN_FMSUBPS): Ditto.
2112         (IX86_BUILTIN_FMSUBPD): Ditto.
2113         (IX86_BUILTIN_FNMADDSS): Ditto.
2114         (IX86_BUILTIN_FNMADDSD): Ditto.
2115         (IX86_BUILTIN_FNMADDPS): Ditto.
2116         (IX86_BUILTIN_FNMADDPD): Ditto.
2117         (IX86_BUILTIN_FNMSUBSS): Ditto.
2118         (IX86_BUILTIN_FNMSUBSD): Ditto.
2119         (IX86_BUILTIN_FNMSUBPS): Ditto.
2120         (IX86_BUILTIN_FNMSUBPD): Ditto.
2121         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
2122         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
2123         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
2124         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
2125         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
2126         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
2127         (IX86_BUILTIN_PPERM): Ditto.
2128         (IX86_BUILTIN_PERMPS): Ditto.
2129         (IX86_BUILTIN_PERMPD): Ditto.
2130         (IX86_BUILTIN_PMACSSWW): Ditto.
2131         (IX86_BUILTIN_PMACSWW): Ditto.
2132         (IX86_BUILTIN_PMACSSWD): Ditto.
2133         (IX86_BUILTIN_PMACSWD): Ditto.
2134         (IX86_BUILTIN_PMACSSDD): Ditto.
2135         (IX86_BUILTIN_PMACSDD): Ditto.
2136         (IX86_BUILTIN_PMACSSDQL): Ditto.
2137         (IX86_BUILTIN_PMACSSDQH): Ditto.
2138         (IX86_BUILTIN_PMACSDQL): Ditto.
2139         (IX86_BUILTIN_PMACSDQH): Ditto.
2140         (IX86_BUILTIN_PMADCSSWD): Ditto.
2141         (IX86_BUILTIN_PMADCSWD): Ditto.
2142         (IX86_BUILTIN_PHADDBW): Ditto.
2143         (IX86_BUILTIN_PHADDBD): Ditto.
2144         (IX86_BUILTIN_PHADDBQ): Ditto.
2145         (IX86_BUILTIN_PHADDWD): Ditto.
2146         (IX86_BUILTIN_PHADDWQ): Ditto.
2147         (IX86_BUILTIN_PHADDDQ): Ditto.
2148         (IX86_BUILTIN_PHADDUBW): Ditto.
2149         (IX86_BUILTIN_PHADDUBD): Ditto.
2150         (IX86_BUILTIN_PHADDUBQ): Ditto.
2151         (IX86_BUILTIN_PHADDUWD): Ditto.
2152         (IX86_BUILTIN_PHADDUWQ): Ditto.
2153         (IX86_BUILTIN_PHADDUDQ): Ditto.
2154         (IX86_BUILTIN_PHSUBBW): Ditto.
2155         (IX86_BUILTIN_PHSUBWD): Ditto.
2156         (IX86_BUILTIN_PHSUBDQ): Ditto.
2157         (IX86_BUILTIN_PROTB): Ditto.
2158         (IX86_BUILTIN_PROTW): Ditto.
2159         (IX86_BUILTIN_PROTD): Ditto.
2160         (IX86_BUILTIN_PROTQ): Ditto.
2161         (IX86_BUILTIN_PROTB_IMM): Ditto.
2162         (IX86_BUILTIN_PROTW_IMM): Ditto.
2163         (IX86_BUILTIN_PROTD_IMM): Ditto.
2164         (IX86_BUILTIN_PROTQ_IMM): Ditto.
2165         (IX86_BUILTIN_PSHLB): Ditto.
2166         (IX86_BUILTIN_PSHLW): Ditto.
2167         (IX86_BUILTIN_PSHLD): Ditto.
2168         (IX86_BUILTIN_PSHLQ): Ditto.
2169         (IX86_BUILTIN_PSHAB): Ditto.
2170         (IX86_BUILTIN_PSHAW): Ditto.
2171         (IX86_BUILTIN_PSHAD): Ditto.
2172         (IX86_BUILTIN_PSHAQ): Ditto.
2173         (IX86_BUILTIN_FRCZSS): Ditto.
2174         (IX86_BUILTIN_FRCZSD): Ditto.
2175         (IX86_BUILTIN_FRCZPS): Ditto.
2176         (IX86_BUILTIN_FRCZPD): Ditto.
2177         (IX86_BUILTIN_CVTPH2PS): Ditto.
2178         (IX86_BUILTIN_CVTPS2PH): Ditto.
2179         (IX86_BUILTIN_COMEQSS): Ditto.
2180         (IX86_BUILTIN_COMNESS): Ditto.
2181         (IX86_BUILTIN_COMLTSS): Ditto.
2182         (IX86_BUILTIN_COMLESS): Ditto.
2183         (IX86_BUILTIN_COMGTSS): Ditto.
2184         (IX86_BUILTIN_COMGESS): Ditto.
2185         (IX86_BUILTIN_COMUEQSS): Ditto.
2186         (IX86_BUILTIN_COMUNESS): Ditto.
2187         (IX86_BUILTIN_COMULTSS): Ditto.
2188         (IX86_BUILTIN_COMULESS): Ditto.
2189         (IX86_BUILTIN_COMUGTSS): Ditto.
2190         (IX86_BUILTIN_COMUGESS): Ditto.
2191         (IX86_BUILTIN_COMORDSS): Ditto.
2192         (IX86_BUILTIN_COMUNORDSS): Ditto.
2193         (IX86_BUILTIN_COMFALSESS): Ditto.
2194         (IX86_BUILTIN_COMTRUESS): Ditto.
2195         (IX86_BUILTIN_COMEQSD): Ditto.
2196         (IX86_BUILTIN_COMNESD): Ditto.
2197         (IX86_BUILTIN_COMLTSD): Ditto.
2198         (IX86_BUILTIN_COMLESD): Ditto.
2199         (IX86_BUILTIN_COMGTSD): Ditto.
2200         (IX86_BUILTIN_COMGESD): Ditto.
2201         (IX86_BUILTIN_COMUEQSD): Ditto.
2202         (IX86_BUILTIN_COMUNESD): Ditto.
2203         (IX86_BUILTIN_COMULTSD): Ditto.
2204         (IX86_BUILTIN_COMULESD): Ditto.
2205         (IX86_BUILTIN_COMUGTSD): Ditto.
2206         (IX86_BUILTIN_COMUGESD): Ditto.
2207         (IX86_BUILTIN_COMORDSD): Ditto.
2208         (IX86_BUILTIN_COMUNORDSD): Ditto.
2209         (IX86_BUILTIN_COMFALSESD): Ditto.
2210         (IX86_BUILTIN_COMTRUESD): Ditto.
2211         (IX86_BUILTIN_COMEQPS): Ditto.
2212         (IX86_BUILTIN_COMNEPS): Ditto.
2213         (IX86_BUILTIN_COMLTPS): Ditto.
2214         (IX86_BUILTIN_COMLEPS): Ditto.
2215         (IX86_BUILTIN_COMGTPS): Ditto.
2216         (IX86_BUILTIN_COMGEPS): Ditto.
2217         (IX86_BUILTIN_COMUEQPS): Ditto.
2218         (IX86_BUILTIN_COMUNEPS): Ditto.
2219         (IX86_BUILTIN_COMULTPS): Ditto.
2220         (IX86_BUILTIN_COMULEPS): Ditto.
2221         (IX86_BUILTIN_COMUGTPS): Ditto.
2222         (IX86_BUILTIN_COMUGEPS): Ditto.
2223         (IX86_BUILTIN_COMORDPS): Ditto.
2224         (IX86_BUILTIN_COMUNORDPS): Ditto.
2225         (IX86_BUILTIN_COMFALSEPS): Ditto.
2226         (IX86_BUILTIN_COMTRUEPS): Ditto.
2227         (IX86_BUILTIN_COMEQPD): Ditto.
2228         (IX86_BUILTIN_COMNEPD): Ditto.
2229         (IX86_BUILTIN_COMLTPD): Ditto.
2230         (IX86_BUILTIN_COMLEPD): Ditto.
2231         (IX86_BUILTIN_COMGTPD): Ditto.
2232         (IX86_BUILTIN_COMGEPD): Ditto.
2233         (IX86_BUILTIN_COMUEQPD): Ditto.
2234         (IX86_BUILTIN_COMUNEPD): Ditto.
2235         (IX86_BUILTIN_COMULTPD): Ditto.
2236         (IX86_BUILTIN_COMULEPD): Ditto.
2237         (IX86_BUILTIN_COMUGTPD): Ditto.
2238         (IX86_BUILTIN_COMUGEPD): Ditto.
2239         (IX86_BUILTIN_COMORDPD): Ditto.
2240         (IX86_BUILTIN_COMUNORDPD): Ditto.
2241         (IX86_BUILTIN_COMFALSEPD): Ditto.
2242         (IX86_BUILTIN_COMTRUEPD): Ditto.
2243         (IX86_BUILTIN_PCOMEQUB): Ditto.
2244         (IX86_BUILTIN_PCOMNEUB): Ditto.
2245         (IX86_BUILTIN_PCOMLTUB): Ditto.
2246         (IX86_BUILTIN_PCOMLEUB): Ditto.
2247         (IX86_BUILTIN_PCOMGTUB): Ditto.
2248         (IX86_BUILTIN_PCOMGEUB): Ditto.
2249         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
2250         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
2251         (IX86_BUILTIN_PCOMEQUW): Ditto.
2252         (IX86_BUILTIN_PCOMNEUW): Ditto.
2253         (IX86_BUILTIN_PCOMLTUW): Ditto.
2254         (IX86_BUILTIN_PCOMLEUW): Ditto.
2255         (IX86_BUILTIN_PCOMGTUW): Ditto.
2256         (IX86_BUILTIN_PCOMGEUW): Ditto.
2257         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
2258         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
2259         (IX86_BUILTIN_PCOMEQUD): Ditto.
2260         (IX86_BUILTIN_PCOMNEUD): Ditto.
2261         (IX86_BUILTIN_PCOMLTUD): Ditto.
2262         (IX86_BUILTIN_PCOMLEUD): Ditto.
2263         (IX86_BUILTIN_PCOMGTUD): Ditto.
2264         (IX86_BUILTIN_PCOMGEUD): Ditto.
2265         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
2266         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
2267         (IX86_BUILTIN_PCOMEQUQ): Ditto.
2268         (IX86_BUILTIN_PCOMNEUQ): Ditto.
2269         (IX86_BUILTIN_PCOMLTUQ): Ditto.
2270         (IX86_BUILTIN_PCOMLEUQ): Ditto.
2271         (IX86_BUILTIN_PCOMGTUQ): Ditto.
2272         (IX86_BUILTIN_PCOMGEUQ): Ditto.
2273         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
2274         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
2275         (IX86_BUILTIN_PCOMEQB): Ditto.
2276         (IX86_BUILTIN_PCOMNEB): Ditto.
2277         (IX86_BUILTIN_PCOMLTB): Ditto.
2278         (IX86_BUILTIN_PCOMLEB): Ditto.
2279         (IX86_BUILTIN_PCOMGTB): Ditto.
2280         (IX86_BUILTIN_PCOMGEB): Ditto.
2281         (IX86_BUILTIN_PCOMFALSEB): Ditto.
2282         (IX86_BUILTIN_PCOMTRUEB): Ditto.
2283         (IX86_BUILTIN_PCOMEQW): Ditto.
2284         (IX86_BUILTIN_PCOMNEW): Ditto.
2285         (IX86_BUILTIN_PCOMLTW): Ditto.
2286         (IX86_BUILTIN_PCOMLEW): Ditto.
2287         (IX86_BUILTIN_PCOMGTW): Ditto.
2288         (IX86_BUILTIN_PCOMGEW): Ditto.
2289         (IX86_BUILTIN_PCOMFALSEW): Ditto.
2290         (IX86_BUILTIN_PCOMTRUEW): Ditto.
2291         (IX86_BUILTIN_PCOMEQD): Ditto.
2292         (IX86_BUILTIN_PCOMNED): Ditto.
2293         (IX86_BUILTIN_PCOMLTD): Ditto.
2294         (IX86_BUILTIN_PCOMLED): Ditto.
2295         (IX86_BUILTIN_PCOMGTD): Ditto.
2296         (IX86_BUILTIN_PCOMGED): Ditto.
2297         (IX86_BUILTIN_PCOMFALSED): Ditto.
2298         (IX86_BUILTIN_PCOMTRUED): Ditto.
2299         (IX86_BUILTIN_PCOMEQQ): Ditto.
2300         (IX86_BUILTIN_PCOMNEQ): Ditto.
2301         (IX86_BUILTIN_PCOMLTQ): Ditto.
2302         (IX86_BUILTIN_PCOMLEQ): Ditto.
2303         (IX86_BUILTIN_PCOMGTQ): Ditto.
2304         (IX86_BUILTIN_PCOMGEQ): Ditto.
2305         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
2306         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
2307         (bdesc_ptest): Change OPTION_MASK_ISA_SSE4_1 to
2308         OPTION_MASK_ISA_ROUND for instructions that are shared between
2309         SSE4.1 and SSE5.
2310         (bdesc_2arg): Ditto.
2311         (bdesc_sse_3arg): Ditto.
2312         (enum multi_arg_type): New enum for describing the various SSE5
2313         intrinsic argument types.
2314         (bdesc_multi_arg): New table for SSE5 intrinsics.
2315         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
2316         (ix86_expand_multi_arg_builtin): New function for creating SSE5
2317         intrinsics.
2318         (ix86_expand_builtin): Add SSE5 intrinsic support.
2319         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
2320         operand instructions.
2321         (ix86_expand_sse5_multiple_memory): New function to split the
2322         second memory reference from SSE5 instructions.
2323         (type_has_variadic_args_p): Delete in favor of stdarg_p.
2324         (ix86_return_pops_args): Use stdarg_p to determine if the function
2325         has variable arguments.
2326         (ix86_setup_incoming_varargs): Ditto.
2327         (x86_this_parameter): Ditto.
2328
2329         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
2330         declaration.
2331         (ix86_expand_sse5_pack): Ditto.
2332         (ix86_sse5_valid_op_p): Ditto.
2333         (ix86_expand_sse5_multiple_memory): Ditto.
2334
2335         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
2336         constant for SSE5 support.
2337         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
2338         (UNSPEC_SSE5_TRUEFALSE): Ditto.
2339         (UNSPEC_SSE5_PERMUTE): Ditto.
2340         (UNSPEC_SSE5_ASHIFT): Ditto.
2341         (UNSPEC_SSE5_LSHIFT): Ditto.
2342         (UNSPEC_FRCZ): Ditto.
2343         (UNSPEC_CVTPH2PS): Ditto.
2344         (UNSPEC_CVTPS2PH): Ditto.
2345         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
2346         (PCOM_TRUE): Ditto.
2347         (COM_FALSE_S): Ditto.
2348         (COM_FALSE_P): Ditto.
2349         (COM_TRUE_S): Ditto.
2350         (COM_TRUE_P): Ditto.
2351         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
2352         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
2353         types.
2354         (memory attribute): Ditto.
2355         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
2356         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
2357         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
2358         (floor<mode>2): Ditto.
2359         (ceil<mode>2): Ditto.
2360         (btrunc<mode>2): Ditto.
2361         (nearbyintdf2): Ditto.
2362         (nearbyintsf2): Ditto.
2363         (sse_setccsf): Disable if SSE5.
2364         (sse_setccdf): Ditto.
2365         (sse5_setcc<mode>): New support for SSE5 conditional move.
2366         (sse5_pcmov_<mode>): Ditto.
2367
2368         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
2369         (SSEMODEF4): Ditto.
2370         (SSEMODEF2P): Ditto.
2371         (ssemodesuffixf4): New mode attribute for SSE5.
2372         (ssemodesuffixf2s): Ditto.
2373         (ssemodesuffixf2c): Ditto.
2374         (sserotatemax): Ditto.
2375         (ssescalarmode): Ditto.
2376         (sse_maskcmpv4sf3): Disable if SSE5.
2377         (sse_maskcmpv2df3): Ditto.
2378         (sse_vmmaskcmpv4sf3): Ditto.
2379         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add
2380         instructions.
2381         (sse5_vmfmadd<mode>4): Ditto.
2382         (sse5_fmsub<mode>4): Ditto.
2383         (sse5_vmfmsub<mode>4): Ditto.
2384         (sse5_fnmadd<mode>4): Ditto.
2385         (sse5_vmfnmadd<mode>4): Ditto.
2386         (sse5_fnmsub<mode>4): Ditto.
2387         (sse5_vmfnmsub<mode>4): Ditto.
2388         (sse5i_fmadd<mode>4): Ditto.
2389         (sse5i_fmsub<mode>4): Ditto.
2390         (sse5i_fnmadd<mode>4): Ditto.
2391         (sse5i_fnmsub<mode>4): Ditto.
2392         (sse5i_vmfmadd<mode>4): Ditto.
2393         (sse5i_vmfmsub<mode>4): Ditto.
2394         (sse5i_vmfnmadd<mode>4): Ditto.
2395         (sse5i_vmfnmsub<mode>4): Ditto.
2396         (mulv16qi3): Add SSE5 support.
2397         (mulv4si3): Ditto.
2398         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
2399         (sse2_mulv4si3): Disable if SSE5.
2400         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
2401         (sse4_1_roundps): Ditto.
2402         (sse4_1_roundsd): Ditto.
2403         (sse4_1_roundss): Ditto.
2404         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
2405         be generated.
2406         (sse_maskcmpsf3): Ditto.
2407         (sse_vmmaskcmpv4sf3): Ditto.
2408         (sse2_maskcmpv2df3): Ditto.
2409         (sse2_maskcmpdf3): Ditto.
2410         (sse2_vmmaskcmpv2df3): Ditto.
2411         (sse2_eq<mode>3): Ditto.
2412         (sse2_gt<mode>3): Ditto.
2413         (sse5_pcmov_<mode>): Add SSE5 support.
2414         (vec_unpacku_hi_v16qi): Ditto.
2415         (vec_unpacks_hi_v16qi): Ditto.
2416         (vec_unpacku_lo_v16qi): Ditto.
2417         (vec_unpacks_lo_v16qi): Ditto.
2418         (vec_unpacku_hi_v8hi): Ditto.
2419         (vec_unpacks_hi_v8hi): Ditto.
2420         (vec_unpacku_lo_v8hi): Ditto.
2421         (vec_unpacks_lo_v8hi): Ditto.
2422         (vec_unpacku_hi_v4si): Ditto.
2423         (vec_unpacks_hi_v4si): Ditto.
2424         (vec_unpacku_lo_v4si): Ditto.
2425         (vec_unpacks_lo_v4si): Ditto.
2426         (sse5_pmacsww): New SSE5 intrinsic insn.
2427         (sse5_pmacssww): Ditto.
2428         (sse5_pmacsdd): Ditto.
2429         (sse5_pmacssdd): Ditto.
2430         (sse5_pmacssdql): Ditto.
2431         (sse5_pmacssdqh): Ditto.
2432         (sse5_pmacsdqh): Ditto.
2433         (sse5_pmacsswd): Ditto.
2434         (sse5_pmacswd): Ditto.
2435         (sse5_pmadcsswd): Ditto.
2436         (sse5_pmadcswd): Ditto.
2437         (sse5_pcmov_<move>): Conditional move support on SSE5.
2438         (sse5_phaddbw): New SSE5 intrinsic insn.
2439         (sse5_phaddbd): Ditto.
2440         (sse5_phaddbq): Ditto.
2441         (sse5_phaddwd): Ditto.
2442         (sse5_phaddwq): Ditto.
2443         (sse5_phadddq): Ditto.
2444         (sse5_phaddubw): Ditto.
2445         (sse5_phaddubd): Ditto.
2446         (sse5_phaddubq): Ditto.
2447         (sse5_phadduwd): Ditto.
2448         (sse5_phadduwq): Ditto.
2449         (sse5_phaddudq): Ditto.
2450         (sse5_phsubbw): Ditto.
2451         (sse5_phsubwd): Ditto.
2452         (sse5_phsubdq): Ditto.
2453         (sse5_pperm): Ditto.
2454         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
2455         (sse5_pperm_zero_v16qi_v8hi): Ditto.
2456         (sse5_pperm_sign_v8hi_v4si): Ditto.
2457         (sse5_pperm_zero_v8hi_v4si): Ditto.
2458         (sse5_pperm_sign_v4si_v2di): Ditto.
2459         (sse5_pperm_sign_v4si_v2di): Ditto.
2460         (sse5_pperm_pack_v2di_v4si): Ditto.
2461         (sse5_pperm_pack_v4si_v8hi): Ditto.
2462         (sse5_pperm_pack_v8hi_v16qi): Ditto.
2463         (sse5_perm<mode>): New SSE5 intrinsic insn.
2464         (rotl<mode>3): Ditto.
2465         (sse5_rotl<mode>3): Ditto.
2466         (sse5_ashl<mode>3): Ditto.
2467         (sse5_lshl<mode>3): Ditto.
2468         (sse5_frcz<mode>2): Ditto.
2469         (sse5s_frcz<mode>2): Ditto.
2470         (sse5_cvtph2ps): Ditto.
2471         (sse5_cvtps2ph): Ditto.
2472         (sse5_vmmaskcmp<mode>3): Ditto.
2473         (sse5_com_tf<mode>3): Ditto.
2474         (sse5_maskcmp<mode>3): Ditto.
2475         (sse5_maskcmp_uns<mode>3): Ditto.
2476         (sse5_maskcmp_uns2<mode>3): Ditto.
2477         (sse5_pcom_tf<mode>3): Ditto.
2478         
2479         * config/i386/predicates.md (const_0_to_31_operand): New predicate
2480         to match 0..31.
2481         (sse5_comparison_float_operator): New predicate to match the
2482         comparison operators supported by the SSE5 com instruction.
2483         (ix86_comparison_int_operator): New predicate to match just the
2484         signed int comparisons.
2485         (ix86_comparison_uns_operator): New predicate to match just the
2486         unsigned int comparisons.
2487
2488         * doc/invoke.texi (-msse5): Add documentation.
2489         (-mfused-madd): Ditto.
2490
2491         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
2492
2493         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
2494         mmintrin-common.h.
2495         (x86_64-*-*): Ditto.
2496
2497         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
2498
2499         * config/i386/bmmintrin.h: New file, provide common x86 compiler
2500         intrinisics for SSE5.
2501
2502         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
2503         mmintrin-common.h.
2504
2505         * config/i386/mmintrin-common.h: New file, to contain common
2506         instructions between SSE4.1 and SSE5.
2507
2508         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
2509         FOREACH_FUNCTION_ARGS to iterate over the argument list.
2510         (gen_regparm_prefix): Ditto.
2511
2512         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
2513         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
2514         prototype_p to determine if a function is prototyped.
2515
2516 2007-09-12  Janis Johnson  <janis187@us.ibm.com>
2517
2518         * config/dfp-bit.c (dfp_conversion_exception): New function.
2519         (DFP_TO_DFP) Add new variants to use direct conversions in decNumber.
2520         (DFP_TO_INT): Ditto.
2521         (INT_TO_DFP): Ditto.
2522         * config/dfp-bit.h (DEC_FLOAT_FROM_INT, DEC_FLOAT_TO_INT): New.
2523
2524 2007-09-12  Jakub Jelinek  <jakub@redhat.com>
2525
2526         PR target/32338
2527         * config/ia64/ia64.c (ia64_expand_epilogue): Emit blockage
2528         before sp restoration even when total_size is 0, but
2529         frame_pointer_needed.
2530
2531 2007-09-12  Bob Wilson  <bob.wilson@acm.org>
2532
2533         * config/xtensa/xtensa.c (machine_function): Add vararg_a7_copy.
2534         (xtensa_copy_incoming_a7): Use start_sequence instead of
2535         push_to_sequence.  Stash insns in vararg_a7_copy for builtin_saveregs.
2536         (xtensa_builtin_saveregs): Place code from vararg_a7_copy at the start
2537         of the saveregs sequence.
2538
2539 2007-09-12  Richard Sandiford  <richard@codesourcery.com>
2540
2541         * c-tree.h (grokfield): Add a "tree *" argument.
2542         * c-decl.c (grokdeclarator): Take a pointer to the decl's attributes.
2543         Chain nested decl attributes to it.  Don't call decl_attributes here.
2544         (groktypename): Pass grokdeclarator a pointer to the attribute list.
2545         (start_decl, grokparm, push_parm_decl, start_function): Likewise.
2546         (grokfield): Take a pointer to the decl's attributes and pass
2547         it to grokdeclarator.
2548         * c-parser.c (c_parser_struct_declaration): Update the calls to
2549         grokfield.  Call decl_attributes for anonymous struct and union
2550         fields.
2551
2552 2007-09-12  Jan Hubicka  <jh@suse.cz>
2553
2554         * c-objc-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
2555
2556 2007-09-12  Ira Rosen  <irar@il.ibm.com>
2557
2558         PR tree-optimization/32377
2559         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Distinguish
2560         between positive and negative dependence distance using DDR_REVERSED_P.
2561
2562 2007-09-12  Dorit Nuzman  <dorit@il.ibm.com>
2563
2564         PR tree-optimization/33373
2565         * tree-vect-analyze (vect_determine_vectorization_factor): Call 
2566         TREE_INT_CST_LOW when comparing TYPE_SIZE_UNIT. 
2567
2568 2007-09-12  Jan Hubicka  <jh@suse.cz>
2569
2570         PR target/33393
2571         * i386.md (floatsisf2_mixed_memory, floatsisf2_sse_memory): Disable
2572         for !SSE_MATH
2573
2574 2007-09-12  Christian Bruel  <christian.bruel@st.com>
2575
2576         * sh.h (SH_DBX_REGISTER_NUMBER): Added fpscr, fixed sr/gbr regs.
2577         * linux-unwind.h (SH_DWARF_FRAME_GBR): fixed. 
2578         
2579 2007-09-12  Ira Rosen  <irar@il.ibm.com>
2580
2581         * tree-vect-transform.c (vect_get_slp_defs): Don't build a vector
2582         for oprnd1 if not required.
2583         (vectorizable_operation): Use scalar operand in SLP in case of 
2584         shift with scalar argument.
2585
2586 2007-09-12  Ira Rosen  <irar@il.ibm.com>
2587
2588         * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change default and minimum 
2589         to 1.
2590
2591 2007-09-11  James E. Wilson  <wilson@specifix.com>
2592
2593         * defaults.h (DWARF2_UNWIND_INFO): Don't define if
2594         TARGET_UNWIND_INFO is defined.
2595         * config/ia64/ia64.h (INCOMING_RETURN_ADDR_RTX): Delete undef
2596         after definition.
2597
2598 2007-09-12  Kaz Kojima  <kkojima@gcc.gnu.org>
2599
2600         * config/sh/sh.c (calc_live_regs): Use
2601         current_function_saves_all_registers instead of
2602         current_function_has_nonlocal_label.
2603         (sh_allocate_initial_value): Likewise.
2604         (sh_get_pr_initial_val): Likewise.
2605         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Likewise.
2606         * config/sh/sh.md (load_ra): Likewise.
2607
2608 2007-09-12  Hans-Peter Nilsson  <hp@axis.com>
2609
2610         * config/cris/t-linux (LIMITS_H_TEST): Only define if not inhibit_libc.
2611
2612         PR target/33360
2613         * config/cris/cris.c (cris_expand_pic_call_address): Fix typo in
2614         GET_CODE (x) == CONST_INT to CONST_INT_P (x) transformation.
2615
2616 2007-09-12  Sa Liu  <saliu@de.ibm.com>
2617
2618         * config/spu/spu.c (spu_emit_branch_or_set): Handle NaN values as
2619         operands to DFmode GE or LE compares.
2620
2621 2007-09-12  Bernd Schmidt  <bernd.schmidt@analog.com>
2622
2623         * config/bfin/bfin.h (enum reg_class, REG_CLASS_CONTENTS,
2624         REG_CLASS_NAMES): Add P0REGS.
2625         (REGNO_REG_CLASS): Return it where appropriate.
2626         (REG_CLASS_FROM_CONSTRAINT): Add 'qA'.
2627         (CLASS_LIKELY_SPILLED_P): P0REGS is likely_spilled.
2628         * doc/md.texi (Blackfin family): Document 'q' constraints.
2629
2630 2007-09-11  Steve Kenton  <skenton@ou.edu>
2631
2632         * pa/linux-unwind.h: Guard with inhibit_libc.
2633         * pa/hpux-unwind.h: Likewise.
2634
2635 2007-09-11  David Daney  <ddaney@avtrex.com>
2636
2637         * doc/invoke.texi: Document new MIPS -mllsc and -mno-llsc options.
2638         * doc/install.texi: Document new --with-llsc and --without-llsc
2639         options.
2640         * config.gcc: Handle --with-llsc and --without-llsc configure options.
2641         * config/mips/mips.md (sync, memory_barrier): Wrap sync instrunction
2642         in %| and %- operand codes.  Depend on GENERATE_SYNC instead of
2643         ISA_HAS_SYNC.
2644         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
2645         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
2646         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
2647         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
2648         sync_new_nand<mode>, sync_lock_test_and_set<mode>): Depend on
2649         GENERATE_LL_SC instead of ISA_HAS_LL_SC.
2650         * config/mips/mips.opt (mllsc): New option.
2651         * config/mips/mips.c (mips_llsc): Define variable.
2652         (mips_handle_option): Handle mllsc option.
2653         (override_options): Set mips_print_operand_punct for '|' and '-'.
2654         (print_operand): Add new %| and %- operand codes.
2655         * config/mips/mips.h (mips_llsc_setting): New enum type.
2656         (mips_llsc): Declare.
2657         (OPTION_DEFAULT_SPECS): Add llsc handling.
2658         (GENERATE_SYNC): New macro.
2659         (GENERATE_LL_SC): New macro.
2660         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
2661         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
2662         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Wrap instructions
2663         in %| and %- operand codes.
2664
2665 2007-09-11  Eric Botcazou  <ebotcazou@adacore.com>
2666
2667         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Deal with
2668         TYPE_NONALIASED_COMPONENT like with DECL_NONADDRESSABLE_P.
2669
2670 2007-09-11  Jason Merrill  <jason@redhat.com>
2671
2672         PR middle-end/27945
2673         * stor-layout.c (layout_decl): Do pack variable size fields.    
2674
2675 2007-09-11  Maxim Kuvyrkov  <maxim@codesourcery.com>
2676
2677         * config/m68k/predicates.md (movsi_const0_operand,
2678         non_symbolic_call_operand): New predicates.
2679
2680         * config/m68k/constraints.md (Cs, Ci, C0, Cj, CQ, CW, CZ, CS, Ap, Ac):
2681         New constraints.
2682         * doc/md.texi (Constraints for Particular Machines: Motorola 680x0):
2683         Document constraints N, O, P, R, S, T, Q, U, W, Cs, Ci, C0, Cj, CQ,
2684         CW, CZ, CS, Ap and Ac.
2685
2686         * config/m68k/m68k.md (UNSPEC_IB): New constant.
2687         (constraints.md): New include.
2688         (cpu, type, type1, opx, opy, opx_type, opy_type, size, opx_access,
2689         opx_mem, opy_mem, op_mem, guess, split): New attributes.
2690         (movdf_internal): Name pattern.  Fix to use alternatives.  Add split.
2691         Specify attributes.
2692         (pushdi): Add split.
2693         (tstsi_internal): Name pattern.  Fix to use alternatives.  Specify
2694         attributes.  Split tstsi_internal_68020_cf from it.
2695         (tstsi_internal_68020_cf): New pattern.
2696         (tsthi_internal, tstqi_internal): Name pattern.  Specify attributes.
2697         (tst<mode>_cf): Specify attributea.
2698         (cmpsi_cf): Name pattern.  Specify attributes.
2699         (cmp<mode>_68881, cmp<mode>_cf): Specify type attribute.
2700         (pushexthisi_const): Fix to use alternatives.  Specify
2701         attributes.
2702         (movsi_const0): Split movsi_const0_68000_10 and movsi_const0_68040_60
2703         from it.  Fix to use alternatives.  Specify attributes.
2704         (movsi_const0_68040_10, movsi_const0_68040_60): New patterns.
2705         (movsi_cf, movstrictqi_cf): Fix to use alternatives.  Specify
2706         attributes.
2707         (movsf_cf_soft): Specify attributes.
2708         (movdf_cf_soft): Add split.
2709         (pushasi, zero_extendhisi2_cf, zero_extendqisi2_cfv4,
2710         cfv4_extendhisi2, 68k_extendhisi2, extendqihi2, cfv4_extendqisi2,
2711         68k_extendqisi2, truncdfsf2_cf): Specify attributes.
2712         (truncdfsf2_68881): Name pattern.  Specify attributes.
2713         (floatsi<mode>2_cf, floathi<mode>2_68881, floathi<mode>2_cf,
2714         floatqi<mode>2_68881, floatqi<mode>2_cf, ftrunc<mode>2_cf,
2715         fix<mode>qi2_cf, fix<mode>hi2_cf, fix<mode>si2_cf, adddi_dishl32):
2716         Specify attributes.
2717         (addsi3_5200): Fix to use alternatives.  Specify attributes.
2718         Add splits.
2719         (add<mode>3_cf, subdi_dishl32): Specify attributes.
2720         (subsi3): Add alternative for subq.l.  Specify attributes.
2721         (sub<mode>3_cf, mulhi3, mulhisi3): Specify attributes.
2722         (mulhisisi3_s, mulsi3_68020, mulsi3_cf): Name pattern.  Specify
2723         attributes.
2724         (umulhisi3): Specify attributes.
2725         (mulhisisi3_z): Name pattern.  Specify attributes.
2726         (fmul<mode>3_cf, div<mode>3_cf, negsi2_internal, negsi2_5200,
2727         sqrt<mode>2_68881, clzsi2, one_cmplsi2_5200, subreghi1ashrdi_const32,
2728         subregsi1ashrdi_const32, ashrsi3, subreg1lshrdi_const32, lshrsi3,
2729         bsetmemqi): Specify attributes.
2730         (bsetmemqi_ext): Name pattern.  Specify attributes.
2731         (bclrmemqi): Specify attributes.
2732         (bclrmemqi_ext, scc, sls): Name pattern.  Specify attributes.
2733         (beq, bne, bgt, bgtu, blt, bltu, bge, bgeu, ble, bleu): Specify
2734         attributes.
2735         (beq2, bne2, bgt2, bgtu2, blt2, bltu2, bge2, bgeu2, ble2, bleu2): Name
2736         pattern.  Specify attributes.
2737         (jump): Specify attributes.
2738         (tablejump_internal): Name pattern.  Specify attributes.
2739         (call_value): Split into non_symbolic_call_value,
2740         symbolic_call_value_jsr, symbolic_call_value_bsr.  Fix to use
2741         alternatives.  Specify attributes.
2742         (non_symbolic_call_value, symbolic_call_value_jsr,
2743         symbolic_call_value_bsr): New patterns.
2744         (nop, return, unlink, indirect_jump): Specify attributes.
2745         (trap): Fix condition.  Specify attributes.
2746         (ib): New pattern.
2747
2748         * config/m68k/m68k.c (m68k_symbolic_call_var): New variable.
2749         (override_options): Initialize it.  Initialize m68k_sched_cpu.
2750         (CONST_METHOD): Rename to M68K_CONST_METHOD, move to m68k.h.
2751         (const_method): Make global, rename to m68k_const_method.
2752         (const_int_cost, output_move_const_into_data_reg): Update.
2753         (output_move_double): Parametrize to emit rtl code, rename to
2754         handle_move_double.
2755         (output_reg_adjust, emit_reg_adjust, output_compadr, output_movsi,
2756         emit_movsi): New static functions.
2757         (output_move_double): New function with semantics of old
2758         output_move_double.
2759         (m68k_emit_move_double): New function.
2760         (m68k_sched_cpu): New variable.
2761         (attr_op_type): New enum.
2762         (sched_guess_p): New variable.
2763         (sched_address_type, sched_operand_type, sched_attr_op_type):
2764         New static functions.
2765         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
2766         m68k_sched_attr_size, m68k_sched_attr_op_mem): New functions.
2767         (sched_branch_type): New static variable.
2768         (m68k_sched_branch_type): New function.
2769         * config/m68k/m68k.h (M68K_SYMBOLIC_CALL): New enum.
2770         (m68k_symbolic_call_var): Declare.
2771         (M68K_CONST_METHOD): Rename from CONST_METHOD.  Move here from m68k.c.
2772         (m68k_const_method, m68k_emit_move_double, m68k_sched_cpu,
2773         m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
2774         m68k_sched_attr_size, m68k_sched_attr_op_mem, m68k_sched_branch_type):
2775         Declare.
2776
2777 2007-09-11  Jakub Jelinek  <jakub@redhat.com>
2778
2779         * builtins.def (BUILT_IN_VA_ARG_PACK_LEN): New builtin.
2780         * builtins.c (expand_builtin) <case BUILT_IN_VA_ARG_PACK_LEN>: Issue
2781         error if __builtin_va_arg_pack_len () wasn't optimized out during
2782         inlining.
2783         * tree-inline.c (copy_bb): Replace __builtin_va_arg_pack_len ()
2784         with the number of inline's anonymous arguments.
2785         * doc/extend.texi: Document __builtin_va_arg_pack_len ().
2786
2787 2007-09-11  Zdenek Dvorak  <ook@ucw.cz>
2788
2789         * fold-const.c (extract_muldiv_1): Do not simplify
2790         var * c * c to var.
2791
2792 2007-09-11  Jan Hubicka <jh@suse.cz>
2793
2794         * i386.h (ix86_tune_indices): Add X86_TUNE_INTER_UNIT_CONVERSIONS.
2795         (TARGET_INTER_UNIT_CONVERSIONS): New.
2796         * i386.md (floatsi expanders): Remove redundant check for SImode
2797         source; offload to memory when asked for.
2798         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse
2799         floatdisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
2800         Update conditions;
2801         (floatsisf2_mixed_memory, floatsisf2_sse_memory,
2802         floatsidf2_mixed_memory, floatsidf2_sse_memory
2803         floatdisf2_mixed_memory, floatsisf2_sse_memory,
2804         floatsidf2_mixed_memory, floatsidf2_sse_memory): New.
2805
2806 2007-09-11  Jan Hubicka <jh@suse.cz>
2807
2808         * toplev.c (process_options): all frontends now do unit-at-a-time.
2809         * cgraphunit.c: update comments.
2810         (cgraph_expand_function): call passmanager dirrectly; emit thunks.
2811         * c-decl.c (finish_function): use cgraph_add_new_function.
2812         * function.c (expand_function_end): We are always unit-at-a-time.
2813
2814 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
2815
2816         * config/mips/mips.c (mips_set_mips16_mode): Use separate anchor
2817         settings for MIPS16.
2818         (mips_use_anchors_for_symbol_p): Use default_use_anchors_for_symbol_p.
2819
2820 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
2821
2822         * config/mips/mips.c (mips_symbol_insns_1): Allow LEAs of
2823         SYMBOL_FORCE_TO_MEM constants.
2824         (mips_rtx_costs): Give a cost of 1 to force_to_mem_operands.
2825         (mips16_rewrite_pool_refs_info): New structure.
2826         (mips16_rewrite_pool_constant): New function, split out from...
2827         (mips16_rewrite_pool_refs): ...here.  Take a pointer to a
2828         mips16_rewrite_pool_refs_info structure rather than a pointer
2829         to a constant pool.  Force force_to_mem_operands into memory.
2830         (mips16_lay_out_constants): Update call to mips16_rewrite_pool_refs.
2831         * config/mips/predicates.md (force_to_mem_operand): New predicate.
2832         * config/mips/constraints.md (kf): New constraint.
2833         * config/mips/mips.md (*movdi_64bit_mips16): Add a d <- kf alternative.
2834         (*movsi_mips16): Likewise.
2835
2836 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
2837             Nigel Stephens  <nigel@mips.com>
2838             David Ung  <davidu@mips.com>
2839
2840         * config/mips/mips.h (CONSTANT_POOL_COST): Move to...
2841         * config/mips/mips.c: ...here and set to 4 for TARGET_MIPS16.
2842         (mips16_constant_cost, mips_immediate_operand_p, mips_binary_cost)
2843         (mips_fp_mult_cost, mips_fp_div_cost, mips_sign_extend_cost)
2844         (mips_zero_extend_cost): New functions.
2845         (mips_rtx_costs): Treat COMPARE constants as having zero cost.
2846         Use the new functions.  Tweak many cost estimates, both here
2847         and in the new subroutines.  Return false when the cost of the
2848         operands has not been calculated.  Check for *clear_upper32.
2849         Check for floating-point multiply-add, reciprocal and rsqrt
2850         patterns.  Handle comparison and rotation codes.
2851
2852 2007-09-11  Danny Smith  <dannysmith@users.sourceforge.net>
2853
2854         * config/i386/cygming.h (TARGET_STRIP_NAME_ENCODING): Don't
2855         override default.
2856         * config/i386/i386.c (get_dllimport_decl): Don't strip
2857         FASTCALL_PREFIX.
2858
2859 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
2860
2861         PR c/30013
2862         * config/dfp-bit.c: Don't skip TFmode conversions; move strto*
2863         declarations to top.
2864         (DFP_TO_BFP): Use for either XFmode or TFmode.
2865         (BFP_TO_DFP): Use for either XFmode or TFmode; always use cast
2866         of BFP_VIA_TYPE.
2867         * config/dfp-bit.h: Include float.h.
2868         (LONG_DOUBLE_HAS_XF_MODE, LONG_DOUBLE_HAS_TF_MODE): Define if long
2869         double is one of these modes, rather than using LIBGCC_HAS_*F_MODE
2870         which doesn't mean the same thing.
2871         (BFP_KIND): Use 4 to mean TFmode.
2872         (BFP_FMT): Specify the number of decimal digits based on the
2873         number of mantissa digits.
2874         (BFP_VIA_TYPE): Binary float type to use as cast for sprintf.
2875         (BFP_TO_DFP, DFP_TO_BFP): Define names for TFmode variants.
2876         (STR_TO_BFP): Use strtold for XFmode or TFmode.
2877         (TFtype): Define if TFmode is supported.
2878         * doc/libgcc.texi (Decimal float library routines): Document
2879         TF conversion functions.
2880
2881 2007-09-10  Chao-ying Fu  <fu@mips.com>
2882
2883         * config/mips/mips.c (mips_scalar_mode_supported_p): Declare.
2884         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
2885         (mips_emit_compare): Process fixed-point modes.
2886         (mips_pad_arg_upward): Support fixed-point types.
2887         (override_options): Allow fixed-point modes in accumulators.
2888         (mips_pass_by_reference): Pass DQ, UDQ, DA, and UDA modes in registers.
2889         (mips_vector_mode_supported_p): Support V2HQmode, V2UHQmode, V2HAmode,
2890         V2UHAmode, V4QQmode, and V4UQQmode when TARGET_DSP.
2891         (mips_scalar_mode_supported_p): New function to accept fixed-point
2892         modes if the width is not greater than two BITS_PER_WORD.
2893         * config/mips/mips.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
2894         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
2895         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
2896         LONG_LONG_ACCUM_TYPE_SIZE): Define.
2897         * config/mips/mips.md ("d"): Update mode attribute for fixed-point
2898         modes.
2899         ("IMODE"): New mode attribute.
2900         (mips-fixed.md): Include.
2901         * config/mips/mips-modes.def: Create VECTOR_MODES for FRACT, UFRACT,
2902         ACCUM, UACCUM.
2903         * config/mips/mips-fixed.md: New file.
2904
2905 2007-09-11  Ben Elliston  <bje@au.ibm.com>
2906
2907         * config/spu/spu.md: Formatting fixes.
2908
2909 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
2910
2911         * config/dfp-bit.c (dfp_unary_func): Delete.
2912         (dfp_unary_op): Delete.
2913         (dfp_binary_op): Use decFloat functions instead of decNumber
2914         functions for binary operations.
2915         (d32_binary_op): Convert 32-bit operands to 64 bits for evaluation.
2916         (dnn_binary_op): Call dfp_binary_op with decFloat rather than
2917         DFP_C_TYPE.
2918         (dfp_compare_op): Use decFloat functions insteadof decNumber
2919         functions for comparisons.
2920         (d32_compare_op): Convert 32-bit operands to 64 bits for evaluation.
2921         (dnn_binary_op): Call dfp_compare_op with decFloat rather than
2922         DFP_C_TYPE.
2923         (DFP_ADD, DFP_SUB, DFP_MULTIPLE, DFP_DIVIDE): Use macros for
2924         call to dxx_binary_op and decFloat function.
2925         (DFP_EQ, DFP_NE, DFP_LT, DFP_GT, DFP_LE, DFP_GE): Use macros for
2926         calls to dxx_binary_op and decFloat function.
2927         * config/dfp-bit.h: Include decFloat header files.
2928         (decFloat, DFP_BINARY_OP, DFP_COMPARE_OP, DEC_FLOAT_ADD,
2929         DEC_FLOAT_SUBTRACT, DEC_FLOAT_MULTIPLY, DEC_FLOAT_DIVIDE,
2930         DEC_FLOAT_COMPARE, DEC_FLOAT_IS_ZERO, DEC_FLOAT_IS_NAN,
2931         DEC_FLOAT_IS_SIGNED: Define for each of 3 operand widths.
2932
2933 2007-09-10  Harsha Jagasia <harsha.jagasia@amd.com>
2934             Jan Sjodin <jan.sjodin@amd.com>
2935
2936         * tree-vect-analyze.c (vect_analyze_operations): Change
2937         comparison of loop iterations with threshold to less than
2938         or equal to instead of less than. Reduce
2939         min_scalar_loop_bound by one.
2940         * tree-vect-transform.c (vect_estimate_min_profitable_iters): 
2941         Change prologue and epilogue iterations estimate to vf/2,
2942         when unknown at compile-time. Change versioning guard
2943         cost to taken_branch_cost. If peeling for alignment is
2944         unknown at compile-time, change peel guard costs to one
2945         taken branch and one not-taken branch per peeled loop.
2946         If peeling for alignment is known but number of scalar loop
2947         iterations is unknown at compile-time, change peel guard
2948         costs to one taken branch per peeled loop. Change the cost
2949         model equation to consider vector iterations as the loop
2950         iterations less the prologue and epilogue iterations.
2951         Change outside vector cost check to less than or equal to
2952         zero instead of equal to zero.
2953         (vect_do_peeling_for_loop_bound): Reduce
2954         min_scalar_loop_bound by one.
2955         * tree-vectorizer.h: Add TARG_COND_TAKEN_BRANCH_COST and
2956         TARG_COND_NOT_TAKEN_BRANCH_COST.        
2957         * config/i386/i386.h (processor_costs): Add
2958         scalar_stmt_cost, scalar_load_cost, scalar_store_cost,
2959         vec_stmt_cost, vec_to_scalar_cost, scalar_to_vec_cost,
2960         vec_align_load_cost, vect_unalign_load_cost,
2961         vec_store_cost, cond_taken_branch_cost,
2962         cond_not_taken_branch_cost.
2963         Define macros for x86 costs.
2964         * config/i386/i386.c:
2965         (size_cost): Set scalar_stmt_cost, scalar_load_cost,
2966         scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost,
2967         scalar_to_vec_cost, vec_align_load_cost, 
2968         vect_unalign_load_cost, vec_store_cost,
2969         cond_taken_branch_cost, cond_not_taken_branch_cost to one. 
2970         (i386_cost, i486_cost, pentium_cost, pentiumpro_cost,
2971         geode_cost, k6_cost, athlon_cost, pentium4_cost, nocona_cost, 
2972         core2_cost, generic64_cost, generic32_cost): Set to default
2973         untuned costs.
2974         (k8_cost, amdfam10_cost): Costs for vectorization tuned.
2975         (x86_builtin_vectorization_cost): New.
2976
2977 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
2978             Ben Elliston  <bje@au.ibm.com>
2979
2980         * dfp.c: Include decimal128Local.h; 
2981         (dfp_byte_swap): Remove.
2982         (encode_decimal32, decode_decimal32): Don't handle endianness.
2983         (encode_decimal64, decode_decimal64): Ditto.
2984         (encode_decimal128, decode_decimal128): Ditto.
2985         * config/dfp-bit.c (host_to_ieee32, ieee_to_host_32): Ditto.
2986         (__swap64): Remove.
2987         (host_to_ieee_64, ieee_to_host_64): Don't handle endianness.
2988         (__swap128): Remove
2989         (host_to_ieee_128, ieee_to_host_128): Don't handle endianness.
2990         * Makefile.in (DECNUM_H): Add decimal128Local.h.
2991
2992 2007-09-10  David Daney  <ddaney@avtrex.com>
2993
2994         * config/mips/mips.md (UNSPEC_MEMORY_BARRIER): New entry in
2995         define_constants.
2996         (memory_barrier): Rewrote as an insn that clobbers memory.
2997
2998 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
2999
3000         * config/mips/mips.c (mips_global_pointer): Check
3001         call_really_used_regs instead of call_used_regs.
3002         (mips_save_reg_p): Likewise.  Save all call-saved registers
3003         if current_function_saves_all_registers.  Fix indentation.
3004         No longer treat $18 as a special case.
3005         (compute_frame_size): Guard FPR loop with TARGET_HARD_FLOAT.
3006
3007 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
3008
3009         * config/mips/mips.h (MIPS_ARCH_FLOAT_SPEC): New macro.
3010         * config/mips/mips.c (mips_cpu_info_table): Mention it in the
3011         the introductory comment.
3012         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
3013         (override_options): Don't test for it.
3014         * config/mips/sde.h (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
3015         (DRIVER_SELF_SPECS): Add MIPS_ARCH_FLOAT_SPEC.
3016         * config/mips/vr.h: As for config/mips/sde.h.
3017
3018 2007-09-10  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
3019             Revital Eres  <eres@il.ibm.com>
3020
3021         * target.h (struct gcc_target.sched): New field: sms_res_mii.
3022         (struct ddg): Define.
3023         * target-def.h (TARGET_SCHED_SMS_RES_MII): Define.
3024         (TARGET_SCHED): Add TARGET_SCHED_SMS_RES_MII.
3025         * config/spu/spu.c: Include ddg.h.
3026         (TARGET_SCHED_SMS_RES_MII): Define.
3027         (spu_sms_res_mii): New function to calculate mii.
3028         * modulo-sched (res_MII): Use it.
3029         * doc/tm.texi: Document TARGET_SCHED_SMS_RES_MII.
3030
3031 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
3032
3033         * config/s390/s390.c (s390_dump_pool): Create copy of constant
3034         pool entries since they might hold values that must not be shared.
3035
3036 2007-09-10  Uros Bizjak  <ubizjak@gmail.com>
3037
3038         PR target/33369
3039         * gcc/config/i386/sse.md (ashr<mode>3): Change op2 mode to SImode.
3040         Use 'N' operand constraint for op2.
3041         (lshr<mode>3): Ditto.
3042         (ashl<mode>3): Ditto.
3043         (vec_shl_<mode>): Use const_0_to_255_mul_8_operand predicate for op2.
3044         (vec_shr_<mode>): Ditto.
3045         * gcc/config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLL?128,
3046         IX86_BUILTIN_PSRA*?128, IX86_BUILTIN_PSRL?128]: Convert op1 to SImode.
3047
3048 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
3049
3050         * config/s390/s390.md ("fixuns_trunc<BFP:mode><GPR:mode>2"):
3051         Change mode macro in the last real_2expN parameter to uppercase.
3052
3053 2007-09-10  Michael Matz  <matz@suse.de>
3054
3055         * tree-pass.h (pass_cselim): Declare new pass.
3056         * passes.c (init_optimization_passes): Link in pass_cselim.
3057         * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Renamed from
3058         tree_ssa_phiopt; add do_store_elim parameter, handle it by calling
3059         cond_store_replacement.
3060         (condstoretemp): New static variable.
3061         (cond_store_replacement): New function.
3062         (tree_ssa_phiopt, tree_ssa_cs_elim): New wrappers around
3063         tree_ssa_phiopt_worker.
3064         (struct name_to_bb): New.
3065         (get_non_trapping, name_to_bb_hash, name_to_bb_eq, add_or_mark_expr,
3066         nt_init_block, nt_fini_block): New static functions.
3067         (seen_ssa_names, nontrap_set): New static variables.
3068         (gate_cselim, pass_cselim): Define new pass.
3069         * common.opt (ftree-cselim): New flag.
3070         * toplev.c (process_options): Set flag_tree_cselim if required.
3071
3072 2007-09-10  Hans-Peter Nilsson  <hp@axis.com>
3073
3074         * simplify-rtx.c (simplify_relational_operation_1): For recent
3075         canonicalization, don't recurse if op1 equals both PLUS arguments.
3076
3077 2007-09-09  David Daney  <ddaney@avtrex.com>
3078
3079         * optabs.c (expand_sync_operation):  Use plus insn if minus
3080         CONST_INT_P(val).
3081         (expand_sync_fetch_operation):  Ditto.
3082
3083 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
3084
3085         * i386.md (*floatsisf2_mixed_vector): Use cvtdq2ps instead
3086         of cvtpq2ps.
3087         (*floatsisf2_sse_vector): Likewise.
3088
3089 2007-09-09  Krister Walfridsson  <cato@df.lth.se>
3090
3091         * config/netbsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
3092
3093 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
3094
3095         * config/i386/i386.h (ix86_tune_indices): Rename
3096         X86_USE_VECTOR_CONVERTS to X86_TUNE_USE_VECTOR_CONVERTS.
3097         (TARGET_USE_VECTOR_CONVERTS): Updated.
3098         * config/i386/i386.c: Likewise.
3099
3100 2007-09-09  Sandra Loosemore  <sandra@codesourcery.com>
3101             Nigel Stephens <nigel@mips.com>
3102
3103         * doc/invoke.texi (Overall Options):  Add .sx file extension
3104         as a synonym for .S.
3105         * cppspec.c (known_suffixes): Likewise.
3106         * gcc.c (default_compilers): Likewise.
3107
3108 2007-09-09  Rask Ingemann Lambertsen  <rask@sygehus.dk>
3109
3110         PR target/30315
3111         * config/i386/i386.h (CANONICALIZE_COMPARISON): Delete.
3112         * simplify-rtx.c (simplify_relational_operation_1): Add the
3113         canonicalization from i386.h.
3114         * doc/md.texi (Canonicalization of Instructions): Document it.
3115
3116 2007-09-09  Jan Hubicka  <jh@suse.cz>
3117             Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
3118
3119         * i386.h (ix86_tune_indices): Add X86_USE_VECTOR_CONVERTS.
3120         (TARGET_USE_VECTOR_CONVERTS): New.
3121         * i386.md: New post-reload splitters for converting SF to DF and DF to
3122         SF.
3123         (floatsi* expander): Special case vector conversions.
3124         (floatsisf2_mixed_vector, floatsisf2_sse_vector_nointernunit,
3125         floatsisf2_sse_vector_internunit, floatsisf2_sse_vector,
3126         floatsidf2_mixed_vector, floatsidf2_sse_vector): New.
3127         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
3128         Disable when doing vector converts.
3129         (floatsi<mode>2_i387): Disable when
3130         * sse.md (vec_dupv2df): Export.
3131         * i386.c (ix86_tune_features): Enable SSE conversions.
3132
3133 2007-09-09  Richard Guenther  <rguenther@suse.de>
3134
3135         * tree-ssa-operands.c (add_virtual_operand): Only mark
3136         stores as has_volatile_ops if alias information is not available.
3137
3138 2007-09-09  Revital Eres  <eres@il.ibm.com>
3139
3140         * doc/contrib.texi: Add myself.
3141
3142 2007-09-09  Ira Rosen  <irar@il.ibm.com>
3143
3144         * tree-vectorizer.h (stmt_vinfo_set_inside_of_loop_cost,
3145         stmt_vinfo_set_outside_of_loop_cost): New functions.
3146         * tree-vect-transform.c (vect_get_cost_fields): Remove.
3147         (vect_model_simple_cost): Call
3148         stmt_vinfo_set_inside/outside_of_loop_cost to set the relevant cost
3149         field instead of calling vect_get_cost_fields.
3150         (vect_model_store_cost, vect_model_load_cost): Likewise.
3151
3152 2007-09-09  Revital Eres  <eres@il.ibm.com>
3153
3154         * config/rs6000/rs6000.c (paired_init_builtins): Add const
3155         declaration to bdesc_paired_preds variable.
3156         (paired_expand_builtin): Likewise.
3157
3158 2007-09-09  Revital Eres  <eres@il.ibm.com>
3159
3160         * dbgcnt.def (sms_sched_loop): New counter.
3161         * modulo-sched.c: Use sms_sched_loop instead of
3162         MAX_SMS_LOOP_NUMBER to determine the maximum number of loops to
3163         perform swing modulo scheduling on.  Include dbgcnt.h.
3164         * Makefile.in: Add DBGCNT_H to modulo-sched.o.
3165         * params.def: Remove PARAM_MAX_SMS_LOOP_NUMBER.
3166
3167 2007-09-09  Uros Bizjak  <ubizjak@gmail.com>
3168
3169         * config/i386/i386.md (X87MODEF12, SSEMODEF): Remove mode iterators.
3170         Substitute all uses with ...
3171         (MODEF): New mode iterator.
3172
3173         (fix_trunc<mode>_fisttp_i387_1): Remove operand constraints
3174         from pre-regalloc define_insn_and_split splitter pattern.
3175         (*fix_trunc<mode>_i387_1): Ditto.
3176         (*fistdi2_1): Ditto.
3177         (*fist<mode>2_1): Ditto.
3178         (frndintxf2_floor): Ditto.
3179         (*fist<mode>2_floor_1): Ditto.
3180         (frndintxf2_ceil): Ditto.
3181         (*fist<mode>2_ceil_1): Ditto.
3182         (frndintxf2_trunc): Ditto.
3183         (frndintxf2_mask_pm): Ditto.
3184
3185         (prologue): Use (const_int 0) as never generated filler insn.
3186         (epilogue): Ditto.
3187         (sibcall_epilogue): Ditto.
3188         (eh_return_si): Ditto.
3189         (eh_return_di): Ditto.
3190
3191         (add<mode>3): Rename from adddf3 and addsf3.  Macroize expander
3192         using MODEF mode iterator.
3193         (sub<mode>3): Rename from subdf3 and subsf3.  Macroize expander
3194         using MODEF mode iterator.
3195         (mul<mode>3): Rename from muldf3 and mulsf3.  Macroize expander
3196         using MODEF mode iterator.
3197         (nearbyint<mode>2): Rename from nearbyintdf2 and nearbyintsf2.
3198         Macroize expander using MODEF mode iterator.
3199
3200         (zero_extendsidi2): Remove operand constraints from expander.
3201         (smuldi3_highpart): Ditto.
3202         (indirect_jump): Ditto.
3203         (tablejump): Ditto.
3204         (rsqrtsf2): Ditto.
3205         * config/i386/sse.md (storentv4sf): Ditto.
3206         (storentv2df): Ditto.
3207         (storentv2di): Ditto.
3208         (storentsi): Ditto.
3209         (sse2_cvtpd2ps): Ditto.
3210         (vec_interleave_highv16qi): Ditto.
3211         (vec_interleave_lowv16qi): Ditto.
3212         (vec_interleave_highv8hi): Ditto.
3213         (vec_interleave_lowv8hi): Ditto.
3214         (vec_interleave_highv4si): Ditto.
3215         (vec_interleave_lowv4si): Ditto.
3216         (vec_interleave_highv2di): Ditto.
3217         (vec_interleave_lowv2di): Ditto.
3218         (sse2_maskmovdqu): Ditto.
3219         * config/i386/mmx.md (mmx_maskmovq): Ditto.
3220
3221 2007-09-09  Ira Rosen  <irar@il.ibm.com>
3222
3223         * tree-vectorizer.h (enum vect_def_type): Start enumeration from 1.
3224         (struct _slp_tree, struct _slp_instance): Define new data structures
3225         along macros for their access.
3226         (struct _loop_vec_info): Define new fields: strided_stores,
3227         slp_instances, and slp_unrolling_factor along macros for their access.
3228         (enum slp_vect_type): New.
3229         (struct _stmt_vec_info): Define new field, slp_type, and macros for
3230         its access.
3231         (STMT_VINFO_STRIDED_ACCESS): New macro.
3232         (vect_free_slp_tree): Declare.
3233         (vectorizable_load): Add an argument of type slp_tree.
3234         (vectorizable_store, vectorizable_operation, vectorizable_conversion,
3235         vectorizable_assignment): Likewise.
3236         (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
3237         Declare (make extern).
3238         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
3239         (new_loop_vec_info): Likewise.
3240         (destroy_loop_vec_info): Free memory allocated for SLP structures.
3241         * tree-vect-analyze.c: Include recog.h.
3242         (vect_update_slp_costs_according_to_vf): New.
3243         (vect_analyze_operations): Add argument for calls to vectorizable_ ()
3244         functions. For not pure SLP stmts with strided access check that the
3245         group size is power of 2. Update the vectorization factor according to
3246         SLP. Call vect_update_slp_costs_according_to_vf.
3247         (vect_analyze_group_access): New.
3248         (vect_analyze_data_ref_access): Call vect_analyze_group_access.
3249         (vect_free_slp_tree): New functions.
3250         (vect_get_and_check_slp_defs, vect_build_slp_tree, vect_print_slp_tree,
3251         vect_mark_slp_stmts, vect_analyze_slp_instance, vect_analyze_slp,
3252         vect_make_slp_decision, vect_detect_hybrid_slp_stmts,
3253         vect_detect_hybrid_slp): Likewise.
3254         (vect_analyze_loop): Call vect_analyze_slp, vect_make_slp_decision
3255         and vect_detect_hybrid_slp.
3256         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Take
3257         SLP costs into account.
3258         (vect_get_cost_fields): New function.
3259         (vect_model_simple_cost): Make extern, add SLP parameter and handle
3260         SLP.
3261         (vect_model_store_cost, vect_model_load_cost): Likewise.
3262         (vect_get_constant_vectors): New function.
3263         (vect_get_slp_vect_defs, vect_get_slp_defs,
3264         vect_get_vec_defs_for_stmt_copy, vect_get_vec_defs_for_stmt_copy,
3265         vect_get_vec_defs): Likewise.
3266         (vectorizable_reduction): Don't handle SLP for now.
3267         (vectorizable_call): Don't handle SLP for now. Add argument to
3268         vect_model_simple_cost.
3269         (vectorizable_conversion): Handle SLP (call vect_get_vec_defs to
3270         get SLPed and vectorized defs). Fix indentation and spacing.
3271         (vectorizable_assignment): Handle SLP.
3272         (vectorizable_induction): Don't handle SLP for now.
3273         (vectorizable_operation): Likewise.
3274         (vectorizable_type_demotion): Add argument to
3275         vect_model_simple_cost.
3276         (vectorizable_type_promotion): Likewise.
3277         (vectorizable_store, vectorizable_load): Handle SLP.
3278         (vectorizable_condition): Don't handle SLP for now.
3279         (vect_transform_stmt): Add a new argument for SLP. Check that there is
3280         no SLP transformation required for unsupported cases. Add SLP
3281         argument for supported cases.
3282         (vect_remove_stores): New function.
3283         (vect_schedule_slp_instance, vect_schedule_slp): Likewise.
3284         (vect_transform_loop): Schedule SLP instances.
3285         * Makefile.in: (tree-vect-analyze.o): Depend on recog.h.
3286
3287 2007-09-09  Andrew Haley  <aph@redhat.com>
3288
3289         * optabs.c (sign_expand_binop): Set libcall_gen = NULL in the fake
3290         signed optab.
3291
3292 2007-09-09  Hans-Peter Nilsson  <hp@axis.com>
3293
3294         Divide REG_LABEL notes into REG_LABEL_OPERAND and REG_LABEL_TARGET.
3295         * doc/rtl.texi (Insns): Specify when a label_ref makes a jump_insn.
3296         Similar for what label_refs can go in the JUMP_TARGET field.  Split
3297         REG_LABEL documentation into REG_LABEL_TARGET and REG_LABEL_OPERAND.
3298         * reload.c (find_reloads): Generate REG_LABEL_OPERAND, not
3299         REG_LABEL when replacing an operand with a LABEL_REF for a
3300         non-jump insn.
3301         (subst_reloads): When replacing a LABEL_REG with a register,
3302         instead of generating a REG_LABEL note, assert that there already
3303         is one or that the label is a known target for the insn.
3304         * rtlanal.c (computed_jump_p): Instead of looking for a REG_LABEL
3305         note, check the JUMP_LABEL field.  Remove "else" after return.
3306         * reorg.c (emit_delay_sequence): Replace case for REG_LABEL with
3307         cases for REG_LABEL_OPERAND and REG_LABEL_TARGET.
3308         (fill_slots_from_thread): Handle both REG_LABEL_OPERAND and
3309         REG_LABEL_TARGET notes, including the JUMP_TARGET field on JUMP_P
3310         insns.  Iterate over all notes; don't assume there's only one.
3311         * cse.c (recorded_label_ref): Adjust comment to refer to
3312         REG_LABEL_OPERAND.
3313         (cse_extended_basic_block): Do LABEL_REF check for all INSN_P
3314         insns, not just NONJUMP_INSN_P.
3315         (check_for_label_ref): For JUMP_P insns, check that the LABEL_REF
3316         isn't a jump target.
3317         * jump.c (rebuild_jump_labels): Adjust head comment.
3318         (init_label_info): Ditto.  Remove REG_LABEL_OPERAND notes only;
3319         don't reset REG_LABEL_TARGET notes, including the JUMP_LABEL field.
3320         (mark_all_labels): For JUMP_P insns without a target, check if the
3321         the target is noted on the previous nonjump insn.
3322         (mark_jump_label_1): New function, guts from mark_jump_label.
3323         <case IF_THEN_ELSE>: Handle first operand as a non-target when
3324         marking jump target labels.
3325         <case LABEL_REF>: Adjust for whether to generate a
3326         REG_LABEL_TARGET or a REG_LABEL_OPERAND note.
3327         For 'E' format rtl, iterate in descending element order.
3328         (delete_related_insns): Handle both REG_LABEL_TARGET and
3329         REG_LABEL_OPERAND notes.  For JUMP_P insns with labels with zero
3330         reference count, delete and fallthrough.  Move finding-next-
3331         non-deleted insn last in the function.  Look at all INSN_P insns
3332         for REG_LABEL_OPERAND notes.
3333         (redirect_jump_2): Assert that OLABEL equals the old JUMP_LABEL of
3334         JUMP.
3335         * print-rtl.c (print_rtx): For JUMP_P insns and a non-NULL
3336         JUMP_LABEL, output the INSN_UID of it.
3337         * gcse.c: Adjust comments as appropriate to say REG_LABEL_OPERAND
3338         and/or REG_LABEL_TARGET.
3339         (add_label_notes): Only add REG_LABEL_OPERAND notes.  Put in line
3340         with jump.c copy by only adding notes for labels actually
3341         referenced in the insn.
3342         * emit-rtl.c (try_split): Don't assume only NONJUMP_INSN_P need
3343         usage count increment; handle all INSN_P trial insns.
3344         (emit_copy_of_insn_after): Change to not copy REG_LABEL_OPERAND
3345         notes.
3346         * rtl.h (struct rtx_def) <volatil>: Adjust to mention
3347         REG_LABEL_TARGET and REG_LABEL_OPERAND.
3348         (LABEL_REF_NONLOCAL_P): Allow REG_LABEL_TARGET and
3349         REG_LABEL_OPERAND.
3350         * combine.c (distribute_notes): Adjust for REG_LABEL_TARGET on
3351         JUMP_P insns and REG_LABEL_OPERAND everywhere.
3352         * sched-rgn.c (is_cfg_nonregular): Check for REG_LABEL_OPERANDS
3353         on all INSN_P insns.
3354         * reg-notes.def (LABEL_TARGET, LABEL_OPERAND): Split from LABEL.
3355         * cfgrtl.c (delete_insn): Adjust to handle REG_LABEL_TARGET and
3356         REG_LABEL_OPERAND notes.
3357         * reload1.c (calculate_needs_all_insns): Adjust comments.
3358         (set_label_offsets): Adjust to look for REG_LABEL_OPERAND notes.
3359         * config/alpha/alpha.md (split for load of an address into a
3360         four-insn sequence on Unicos/Mk): Adjust to use
3361         REG_LABEL_OPERAND.
3362         * config/sh/sh.md (sh_reorg, final_prescan_insn): Ditto.
3363
3364 2007-09-09  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
3365
3366         Revert:
3367         2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
3368         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
3369         FOR_BB_INSNS_SAFE instead of for loop.
3370         * cse.c (cse_extended_basic_block): Likewise.
3371         * postreload.c (reload_cse_regs_1): New variable next. Make sure
3372         that the for loop does not invoke NEXT_INSN on a deleted insn.
3373         * function.c (instantiate_virtual_regs): Likewise.
3374         * lower-subreg.c (remove_retval_note): Likewise.
3375         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
3376         FOR_BB_INSNS.
3377         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
3378         a deleted insn.
3379         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
3380         insn, if it's a jump.
3381         (try_redirect_by_replacing_jump): New variable jump_p. Call
3382         tablejump_p before delete_insn_chain.
3383         * reload1.c (reload): New variable next. Make sure that the for
3384         loop does not invoke NEXT_INSN on a deleted insn.
3385         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
3386         (delete_output_reload): New variable prev. Make sure the the for
3387         loops do not invoke PREV_INSN on a deleted insn.
3388
3389 2007-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3390
3391         * pa/constraints.md: Remove 'X' from unused letters comment.
3392
3393 2007-09-08  Richard Guenther  <rguenther@suse.de>
3394
3395         * tree-tailcall.c (find_tail_calls): If we don't have aliases
3396         computed check stmt_ann->references_memory instead of counting
3397         virtual operands.
3398  
3399 2007-09-08  Segher Boessenkool  <segher@kernel.crashing.org>
3400
3401         * cse.c (fold_rtx): Use validate_unshare_change() instead of
3402         validate_change() in one more case.
3403
3404 2007-09-08  Zdenek Dvorak  <ook@ucw.cz>
3405
3406         PR tree-optimization/32283
3407         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Use
3408         estimated_loop_iterations.
3409         (determine_use_iv_cost_condition): Decrease cost of expressions
3410         used in iv elimination.
3411
3412 2007-09-08  Richard Guenther  <rguenther@suse.de>
3413
3414         * tree-cfg.c (verify_gimple_expr): Avoid building new
3415         pointer types, use TYPE_POINTER_TO if available instead.
3416
3417 2007-09-08  Uros Bizjak  <ubizjak@gmail.com>
3418
3419         PR target/33329
3420         PR rtl-optimization/26449
3421         * config/i386/sse.md (mulv4si3): Do not expand sse2 sequence.
3422         (*sse2_mulv4si3): New define_insn_and_split pattern. Split insn in
3423         split1 pass.
3424         (mulv16qi3): Implement as define_insn_and_split pattern instead of
3425         define_expand.  Split insn in split1 pass.
3426         (mulv2di3): Ditto.
3427
3428 2007-09-08  Dorit Nuzman  <dorit@il.ibm.com>
3429
3430         PR tree-optimization/33301
3431         * tree-vect-analyze (analyze_operations): Look at the type of the rhs
3432         when relevant.
3433
3434 2007-09-07  Zdenek Dvorak  <ook@ucw.cz>
3435
3436         PR tree-optimization/32183
3437         * Makefile.in (tree-ssa-reassoc.o): Also depend on $(CFGLOOP_H).
3438
3439         * tree-ssa-reassoc.c: Include cfgloop.h.
3440         (is_reassociable_op): Add a loop argument and return true only
3441         for inside loop.
3442         (linearize_expr): Updated.
3443         (should_break_up_subtract): Likewise.
3444         (linearize_expr_tree): Likewise.
3445         (init_reassoc): Call loop_optimizer_init with
3446         AVOID_CFG_MODIFICATIONS.  Remove calculate_dominance_info call
3447         with CDI_DOMINATORS.
3448         (fini_reassoc): Call loop_optimizer_finalize.
3449
3450 2007-09-07  Sterling Augustine  <sterling@tensilica.com>
3451
3452         * config/xtensa/lib2funcs.S (__xtensa_sync_caches): Use an ISYNC even
3453         if there is no i-cache.
3454
3455 2007-09-07  Richard Guenther  <rguenther@suse.de>
3456
3457         Reapply
3458         2007-09-06  Richard Guenther  <rguenther@suse.de>
3459
3460         PR tree-optimization/32586
3461         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
3462         folding if nothing changed.
3463         (simplify_unary_expression): New function.  Do tree combining
3464         on conversion like codes.
3465         (try_to_simplify): Call it.
3466
3467 2007-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3468
3469         PR target/33286
3470         * gthr-posix.h (__gthread_active_p): Add implementation for hppa-hpux.
3471         (__gthread_active,__gthread_start, __gthread_active_init): New.
3472         * gthr-posix95.h: Likewise.
3473
3474 2007-09-07  Roman Zippel <zippel@linux-m68k.org>
3475
3476         * function.h (struct function): Rename calls_unwind_init
3477         to saves_all_registers.
3478         (current_function_saves_all_registers): Renamed from
3479         current_function_calls_unwind_init.
3480         * reload1.c (reload): Set current_function_saves_all_registers.
3481         * except.c (expand_builtin_unwind_init): Likewise.
3482         * config/m68k/m68k.c (m68k_save_reg): Use
3483         current_function_saves_all_registers to save pic register.
3484
3485 2007-09-07  Janis Johnson  <janis187@us.ibm.com>
3486
3487         config/m68k/m68k.c (floating_exact_log2): Update call to real_2expN.
3488         config/s390/s390.md (fixuns_trunc<BFP:mode><GPR:mode>2): Ditto.
3489
3490         Reapply reverted changes:
3491
3492         2007-09-06  Jan Hubicka  <jh@suse.cz>
3493  
3494         * config/i386.c (ix86_expand_lround, ix86_expand_round): Update call
3495         of real_2expN.
3496
3497         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
3498
3499         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
3500         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
3501
3502         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
3503
3504         * optabs.c (expand_float): Convert unsigned integer as signed only
3505         if it provides sufficient accuracy; add mode argument to real_2expN.
3506         (expand_fix): Fix comment typos; extend binary float into mode
3507         wider than destination for converion to unsigned integer; add mode
3508         argument to real_2expN.
3509         * real.c (real_2expN): Add mode argument to special-case decimal
3510         float values.
3511         * real.h (real_2expN): Ditto.
3512         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
3513         real_2expN.
3514         (fixed_from_string): Ditto.
3515         (fixed_to_decimal): Ditto.
3516         (fixed_convert_from_real): Ditto.
3517         (real_convert_from_fixed): Ditto.
3518         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
3519         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
3520         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
3521         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
3522
3523 2007-09-07  Diego Novillo  <dnovillo@google.com>
3524
3525         * tree-flow.h (const_block_stmt_iterator): Remove.
3526         Update all users to use block_stmt_iterator.
3527         * tree-iterator.h (const_tree_stmt_iterator): Remove.
3528         Update all users to use tree_stmt_iterator.
3529
3530 2007-09-07  Sandra Loosemore  <sandra@codesourcery.com>
3531
3532         * config/mips/mips.c (mips_set_current_function): Temporarily
3533         make this a no-op to fix bootstrap errors, pending rewrite.
3534
3535 2007-09-07  Jan Hubicka  <jh@suse.cz>
3536
3537         * reorg.c (dbr_schedule): Move code removing placeholder USEs later
3538         in the pass.
3539
3540 2007-09-07  Dorit Nuzman  <dorit@il.ibm.com>
3541
3542         PR tree-optimization/33299
3543         * tree-vect-transform.c (vect_create_epilog_for_reduction): Update
3544         uses for all relevant loop-exit phis, not just the first.
3545
3546 2007-09-07  Richard Guenther  <rguenther@suse.de>
3547
3548         PR middle-end/33330
3549         * tree-ssa-operands.c (access_can_touch_variable): An access
3550         of the form (*p)[0] can touch a variable of same size.
3551
3552 2007-09-07  Jan Hubicka  <jh@suse.cz>
3553
3554         * passes.c (init_optimization_passes): Add simple dce and addressable
3555         passes.
3556         * tree-ssa.c (execute_update_addresses_taken): New function.
3557         (pass_update_address_taken): New.
3558         * tree-ssa-dse.c (execute_simple_dse): New function.
3559         (pass_simple_dse): New.
3560         * tree-pass.h (pass_simple_dse, pass_update_address_taken): Declare.
3561
3562 2007-09-07  Tobias Burnus  <burnus@net-b.de>
3563
3564         PR middle-end/33321
3565         * doc/invoke.texi: Fix -Wstrict-overflow= table.
3566
3567 2007-09-07  Richard Guenther  <rguenther@suse.de>
3568
3569         Revert
3570         2007-09-06  Richard Guenther  <rguenther@suse.de>
3571
3572         PR tree-optimization/32586
3573         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
3574         folding if nothing changed.
3575         (simplify_unary_expression): New function.  Do tree combining
3576         on conversion like codes.
3577         (try_to_simplify): Call it.
3578
3579 2007-09-07  Richard Guenther  <rguenther@suse.de>
3580             Uros Bizjak  <ubizjak@gmail.com>
3581
3582         PR tree-optimization/32821
3583         * tree_if_conv.c (combine_blocks): Use alloc_stmt_list instead of
3584         NULL in the call to set_bb_stmt_list.
3585
3586 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
3587
3588         * config/mips/mips.c (build_mips16_call_stub): Emit all direct
3589         float calls here, rather than leaving some to the caller.
3590         Use call_internal_direct and call_value_internal_direct.
3591         * config/mips/mips.md (call_internal_direct): New pattern.
3592         (call_value_internal_direct): Likewise.
3593
3594 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
3595
3596         * config/mips/mips.c (mips_base_move_loop_invariants): New variable.
3597         (mips_set_mips16_mode): Restore flag_move_loop_invariants, then set
3598         to 0 for MIPS16.
3599         (override_options): Set mips_base_move_loop_invariants.
3600
3601 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
3602
3603         * config/mips/mips.opt (mcode-readable=): Move to keep list
3604         alphabetical.
3605
3606 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
3607
3608         * doc/invoke.texi: Document the MIPS -mlocal-sdata, -mextern-sdata
3609         and -mgpopt options.  Adjust the -G documentation to match.
3610         * config/mips/mips.opt (mextern-data, mgpopt, mlocal-data): New.
3611         * config/mips/mips.c (mips_rtx_constant_in_small_data_p): New
3612         function, split out from mips_classify_symbol.  Return false for
3613         !TARGET_LOCAL_SDATA.
3614         (mips_classify_symbol): Call mips_rtx_constant_in_small_data_p.
3615         Only use GP-relative accesses for non-pool symbols if TARGET_GPOPT.
3616         (override_options): Check whether the -mgpopt setting is consistent
3617         with the other flags.
3618         (symbolic_expression_p): Delete.
3619         (mips_select_rtx_section): Use mips_rtx_constant_in_small_data_p
3620         and default_elf_select_rtx_section.
3621         (mips_in_small_data_p): Honor section attributes for MIPS16 too.
3622         Return false for local data unless TARGET_LOCAL_SDATA.  Likewise
3623         external data and TARGET_EXTERN_SDATA.
3624
3625 2007-09-07  Tobias Burnus  <burnus@net-b.de>
3626
3627         PR fortran/33303
3628         * doc/cpp.texi (Common Predefined Macros): Add __GFORTRAN__.
3629
3630 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
3631
3632         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
3633         FOR_BB_INSNS_SAFE instead of for loop.
3634         * cse.c (cse_extended_basic_block): Likewise.
3635         * postreload.c (reload_cse_regs_1): New variable next. Make sure
3636         that the for loop does not invoke NEXT_INSN on a deleted insn.
3637         * function.c (instantiate_virtual_regs): Likewise.
3638         * lower-subreg.c (remove_retval_note): Likewise.
3639         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
3640         FOR_BB_INSNS.
3641         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
3642         a deleted insn.
3643         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
3644         insn, if it's a jump.
3645         (try_redirect_by_replacing_jump): New variable jump_p. Call
3646         tablejump_p before delete_insn_chain.
3647         * reload1.c (reload): New variable next. Make sure that the for
3648         loop does not invoke NEXT_INSN on a deleted insn.
3649         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
3650         (delete_output_reload): New variable prev. Make sure the the for
3651         loops do not invoke PREV_INSN on a deleted insn.
3652
3653 2007-09-06  Zdenek Dvorak  <ook@ucw.cz>
3654
3655         * cgraphbuild.c (rebuild_cgraph_edges): Export.
3656         * cgraph.h (rebuild_cgraph_edges): Declare.
3657         * tree-pass.h (pass_expand_omp_ssa): New.
3658         * omp-low.c (find_omp_clause): Export.
3659         (copy_var_decl): Split from omp_copy_decl_2.
3660         (build_omp_barrier): Return the call to emit instead of emitting
3661         it directly.
3662         (lower_rec_input_clauses, expand_omp_single): Gimplify the result of
3663         build_omp_barrier.
3664         (extract_omp_for_data, expand_parallel_call, expand_omp_parallel,
3665         expand_omp_for_generic, expand_omp_for_static_nochunk,
3666         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
3667         Adapted to work on SSA form.
3668         (execute_expand_omp): Do not invalidate dominance information.
3669         (gate_expand_omp): Do not run with -fopenmp-ssa flag.
3670         (gate_expand_omp_ssa, pass_expand_omp_ssa): New.
3671         * gimplify.c (gimplify_omp_for): Ensure that the control variable is
3672         a gimple_reg.
3673         (force_gimple_operand): Allow gimplifying code expressions without
3674         value.
3675         * tree-predcom.c (mark_virtual_ops_for_renaming): Handle phi nodes.
3676         * common.opt (fopenmp-ssa): New.
3677         * tree-flow.h (find_omp_clause, copy_var_decl): Declare.
3678         * Makefile.in (tree-cfg.o): Add TREE_INLINE_H dependency.
3679         * tree-cfg.c: Include tree-inline.h.
3680         (struct move_stmt_d): Replace vars_to_remove by vars_map field.
3681         (replace_by_duplicate_decl, replace_ssa_name,
3682         mark_virtual_ops_in_region): New functions.
3683         (move_stmt_r, move_block_to_fn, move_sese_region_to_fn): Adapted
3684         to work on SSA form.
3685         * passes.c (init_optimization_passes): Add pass_expand_omp_ssa pass.
3686         * tree-ssa-operands.c (get_expr_operands): Handle operands of OMP
3687         constructs.
3688
3689 2007-09-06  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
3690
3691         * tree-loop-linear.c: Include obstack.h.
3692         (linear_transform_loops): New obstack lambda_obstack.
3693         Initialize it, pass it to gcc_loopnest_to_lambda_loopnest,
3694         lambda_loopnest_transform, lambda_loopnest_to_gcc_loopnest calls
3695         and free afterwards.
3696         * lambda.h (struct obstack): New forward declaration.
3697         (lambda_linear_expression_new): New parameter of type struct
3698         obstack *.
3699         (lambda_loopnest_new): Likewise.
3700         (lambda_loopnest_transform): Likewise.
3701         (lambda_body_vector_new): Likewise.
3702         (lambda_body_vector_compute_new): Likewise.
3703         (gcc_loopnest_to_lambda_loopnest): Likewise.
3704         (lambda_loopnest_to_gcc_loopnest): Likewise.
3705         * lambda-code.c: Include obstack.h.
3706         (lambda_lattice_new): New parameter lambda_obstack.  Use it for
3707         allocation of ret.
3708         (lambda_body_vector_new): Likewise.
3709         (lambda_linear_expression_new): Likewise.
3710         (lambda_lattice_new): Likewise.
3711         (lambda_loopnest_new): Likewise.  Additionally use obstack to
3712         allocate LN_LOOPS(ret).
3713         (lambda_lattice_compute_base): New parameter lambda_obstack.  Pass
3714         it to lambda_lattice_new.
3715         (lambda_body_vector_compute_new): New parameter lambda_obstack.
3716         Pass it to lambda_body_vector_new.
3717         (lambda_lattice_compute_base): New paramater lambda_obstack.  Pass
3718         it to lambda_lattice_new.
3719         (compute_nest_using_fourier_motzkin): New parameter lambda_obstack.
3720         Pass it to lambda_loopnest_new, lambda_linear_expression_new.
3721         (lambda_compute_target_space): Likewise.
3722         (lambda_compute_auxillary_space): New parameter lambda_obstack.
3723         Pass it to lambda_lattice_compute_base and
3724         compute_nest_using_fourieer_motzkin.
3725         (lambda_loopnest_transform): New parameter lambda_obstack.  Pass
3726         it to lambda_lattice_compute_base, lambda_lattice_auxillary_space
3727         and lambda_lattice_compute_target_space.
3728         (gcc_tree_to_linear_expression): Nex parameter lambda_obstack.
3729         Pass it to lambda_linear_expression_new.
3730         (gcc_loop_to_lambda_loop): New parameter lambda_obstack.  Pass it
3731         to gcc_tree_to_linear_expression.
3732         (gcc_loopnest_to_lambda_loopnest): New parameter lambda_obstack.
3733         Pass it to gcc_loop_to_lambda_loop and lambda_loopnest_new.
3734         (lambda_loopnest_to_gcc_loopnest): New parameter lambda_obstack.
3735         Pass it to lambda_body_vector_new and
3736         lambda_body_vector_compute_new.
3737         * Makefile.in (tree-loop-linear.o): Add $(OBSTACK_H) dependency.
3738         (lambda-code.o): Likewise.
3739
3740 2007-09-06  Chao-ying Fu  <fu@mips.com>
3741
3742         * ginclude/stdfix.h: New file.
3743         * Makefile.in (USER_H): Add $(srcdir)/ginclude/stdfix.h.
3744         (convert.o): Add dependence on fixed-value.h.
3745         * c-convert.c (convert): Support FIXED_POINT_TYPE.
3746         * c-cppbuiltin.c (builtin_define_fixed_point_constants): New function
3747         to define fixed-point constants.
3748         (c_cpp_builtins): Define fixed-point constants.
3749         * convert.c (fixed-value.h): New include.
3750         (convert_to_real): Update comment to include fixed-point.
3751         Support FIXED_POINT_TYPE.
3752         (convert_to_integer): Update comment to include fixed-point.
3753         Support FIXED_POINT_TYPE.
3754         (convert_to_complex): Support FIXED_POINT_TYPE.
3755         (convert_to_fixed): New function.
3756         * convert.h (convert_to_fixed): Declare.
3757         * genopinit.c: Add comment about $Q for only fixed-point modes.
3758         (optabs): Add fract_optab, fractuns_optab, satfract_optab,
3759         satfractuns_optab, add_optab, ssadd_optab, usadd_optab, sub_optab,
3760         sssub_optab, ussub_optab, smul_optab, ssmul_optab, usmul_optab,
3761         ssmadd_widen_optab, usmadd_widen_optab, ssdiv_optab, udiv_optab,
3762         usdiv_optab, ssashl_optab, usashl_optab, neg_optab, ssneg_optab,
3763         usneg_optab for fixed-point modes.
3764         (gen_insn): Add force_fixed to track the $Q format for all fixed-point
3765         modes.
3766         * optabs.c (optab_for_tree_code): For *DIV_EXPR, LSHIFT_EXPR,
3767         PLUS_EXPR, MINUS_EXPR, MULT_EXPR, NEGATE_EXPR, return signed or
3768         unsigned saturation optabs, when type is saturating.
3769         (shift_optab_p): Return true for SS_ASHIFT or US_ASHIFT.
3770         (expand_fixed_convert): New function.
3771         (gen_fixed_libfunc, gen_signed_fixed_libfunc,
3772         gen_unsigned_fixed_libfunc, gen_int_fp_fixed_libfunc,
3773         gen_int_fp_signed_fixed_libfunc, gen_int_fixed_libfunc,
3774         gen_int_signed_fixed_libfunc, gen_int_unsigned_fixed_libfunc,
3775         gen_fract_conv_libfunc, gen_fractuns_conv_libfunc,
3776         gen_satfract_conv_libfunc, gen_satfractuns_conv_libfunc): New
3777         functions.
3778         (init_optabs): Initialize ssadd_optab, usadd_optab, sssub_optab,
3779         ussub_optab, ssmul_optab, usmul_optab, ssmadd_widen_optab,
3780         usmadd_widen_optab, ssmsub_widen_optab, usmsub_widen_optab,
3781         ssdiv_optab, usdiv_optab, ssashl_optab, usashl_optab, ssneg_optab,
3782         usneg_optab, fract_optab, fractuns_optab, satfract_optab,
3783         satfractuns_optab.
3784         Initialize fixed-point libraries, including add, ssadd, usadd, sub,
3785         sssub, ussub, mul, ssmul, usmul, div, ssdiv, udiv, usdiv, ashl,
3786         ssashl, usashl, ashr, lshr, neg, ssneg, usneg, cmp, fract, satfract,
3787         fractuns, satfractuns.
3788         * optabs.h (enum optab_index): Add OTI_ssadd, OTI_usadd, OTI_sssub,
3789         OTI_ussub, OTI_ssmul, OTI_usmul, OTI_ssdiv, OTI_usdiv, OTI_ssneg,
3790         OTI_usneg, OTI_ssashl, OTI_usashl, OTI_ssmadd_widen, OTI_usmadd_widen,
3791         OTI_ssmsub_widen,  OTI_usmsub_widen.
3792         (ssadd_optab, usadd_optab, sssub_optab, ussub_optab, ssmul_optab,
3793         usmul_optab, ssdiv_optab, usdiv_optab, ssneg_optab, usneg_optab,
3794         ssashl_optab, usashl_optab, ssmadd_widen_optab, usmadd_widen_optab,
3795         umsub_widen_optab, usmsub_widen_optab): Define.
3796         (enum convert_optab_index): Add COI_fract, COI_fractuns, COI_satfract,
3797         COI_satfractuns.
3798         (fract_optab, fractuns_optab, satfract_optab, satfractuns_optab):
3799         Define.
3800         (expand_fixed_convert): Declare.
3801         * expr.c (convert_move): Support the move of fixed-point modes.
3802         (emit_move_insn_1): Handle fixed-point mode to move via integer.
3803         (categorize_ctor_elements_1): Handle FIXED_CST.
3804         (count_type_elements): Handle FIXED_POINT_TYPE.
3805         (expand_expr_real_1): For VECTOR_CST, check MODE_VECTOR_FRACT,
3806         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
3807         Support FIXED_CST.
3808         For PLUS_EXPR and MINUS_EXPR, support saturating and non-saturating
3809         multiply and add/subtract for fixed-point types.
3810         For MULT_EXPR, *DIV_EXPR, *SHIFT_EXPR, if the mode if a fixed-point
3811         mode, we jump to binop directly.
3812         Support FIXED_CONVERT_EXPR.
3813         (do_store_flag): Check FIXED_CST to put a constant second.
3814         (vector_mode_valid_p): Handle MODE_VECTOR_FRACT,
3815         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
3816         (const_vector_from_tree): Support FIXED_CST.
3817         * doc/extend.texi (Fixed-Point): New node.
3818         * doc/md.texi (ssadd, usadd, sssub, ussub, ssmul, usmul, ssdiv, usdiv,
3819         ssmadd, usmadd, ssmsub, usmsub, ssashl, usashl, ssneg, usneg, fract,
3820         satfract, fractuns, satfractuns): Document them.
3821
3822 2007-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
3823
3824         * config/bfin/bfin.h (PREFERRED_RELOAD_CLASS): Don't reload autoinc
3825         addresses into I registers.
3826
3827 2007-09-06  Jan Hubicka  <jh@suse.cz>
3828             Andreas Tobler  <a.tobler@schweiz.org>
3829
3830         * config/darwin.c (machopic_indirect_data_reference): Avoid invalid
3831         sharing.
3832         (machopic_legitimize_pic_address): Likewise.
3833
3834 2007-09-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3835             Jan Hubicka  <jh@suse.cz>
3836
3837         * config/spu/spu.md (floatsidf2): Use convert_optab_libfunc
3838         instead of ufloat_optab->handlers directly.
3839         (floatdidf2): Likewise.
3840
3841 2007-09-06  Sandra Loosemore  <sandra@codesourcery.com>
3842
3843         * config/mips/mips.c:  Include diagnostic.h.
3844         (mips_set_current_function): Check errorcount and sorrycount 
3845         before generating RTL.
3846
3847 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
3848
3849         PR target/33256
3850         * config/mips/mips.c (mips_classify_symbolic_expression): New function.
3851         (mips_classify_address): Use it instead of mips_symbolic_constant_p.
3852         (print_operand_reloc): Likewise.
3853
3854 2007-09-06  Janis Johnson  <janis187@us.ibm.com>
3855
3856         Revert:
3857
3858         2007-09-06  Jan Hubicka  <jh@suse.cz>
3859  
3860         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
3861         real_2expN.
3862
3863         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
3864
3865         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
3866         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
3867
3868         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
3869
3870         * optabs.c (expand_float): Convert unsigned integer as signed only
3871         if it provides sufficient accuracy; add mode argument to real_2expN.
3872         (expand_fix): Fix comment typos; extend binary float into mode
3873         wider than destination for converion to unsigned integer; add mode
3874         argument to real_2expN.
3875         * real.c (real_2expN): Add mode argument to special-case decimal
3876         float values.
3877         * real.h (real_2expN): Ditto.
3878         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
3879         real_2expN.
3880         (fixed_from_string): Ditto.
3881         (fixed_to_decimal): Ditto.
3882         (fixed_convert_from_real): Ditto.
3883         (real_convert_from_fixed): Ditto.
3884         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
3885         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
3886         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
3887         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
3888
3889 2007-09-06  Tom Tromey  <tromey@redhat.com>
3890
3891         * tree-cfg.c (remove_bb): Only warn if line is non-zero.
3892         * c-pch.c (c_common_read_pch): Restore current location after
3893         reading PCH file.
3894         * tree.c (expand_location): Update.
3895         (expr_filename): Changed return type.  Unified the two cases.
3896         (expr_lineno): Likewise.
3897         (annotate_with_file_line): Don't use EXPR_LINENO and EXPR_FILENAME
3898         as lvalues.
3899         * toplev.c (line_table): Changed type.
3900         (general_init): Update.
3901         (realloc_for_line_map): New function.
3902         (general_init): Allocate line_table using GC.
3903         * fix-header.c (line_table): Changed type.
3904         (read_scan_file): Update.
3905         (read_scan_file): Update.
3906         * c-ppoutput.c (maybe_print_line): Update.
3907         (print_line): Update.
3908         (cb_line_change): Update.
3909         (cb_define): Update.
3910         (pp_file_change): Update.
3911         * c-opts.c (c_common_init_options): Update.
3912         (finish_options): Update.
3913         (push_command_line_include): Update.
3914         * c-lex.c (cb_line_change): Update.
3915         (cb_def_pragma): Update.
3916         (cb_define): Update.
3917         (cb_undef): Update.
3918         (c_lex_with_flags): Use cpp_get_token_with_location.
3919         * input.h (line_table): Changed type.
3920         (location_from_locus): New macro.
3921         * tree.h (EXPR_FILENAME): No longer an lvalue.
3922         (EXPR_LINENO): Likewise.
3923         (expr_locus, set_expr_locus): Declare separately for
3924         USE_MAPPED_LOCATION.
3925         (expr_filename, expr_lineno): Changed return type.
3926         * gimplify.c (tree_to_gimple_tuple): Use SET_EXPR_LOCUS.
3927         * cfgexpand.c (expand_gimple_cond_expr): Use location_from_locus.
3928         (expand_gimple_basic_block): Likewise.
3929         * final.c (final_scan_insn): Use expanded_location.
3930
3931 2007-09-06  Richard Guenther  <rguenther@suse.de>
3932
3933         PR tree-optimization/32586
3934         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
3935         folding if nothing changed.
3936         (simplify_unary_expression): New function.  Do tree combining
3937         on conversion like codes.
3938         (try_to_simplify): Call it.
3939         * builtins.c (fold_builtin_cexp): Fold the built expressions.
3940         * fold-const.c (fold_unary): Test result of get_callee_fndecl().
3941
3942 2007-09-06  Jan Hubicka  <jh@suse.cz>
3943
3944         PR target/33318
3945         * cse.c (fold_rtx): Avoid invalid sharing.
3946
3947 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
3948
3949         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
3950         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
3951
3952 2007-09-06  Revital Eres  <eres@il.ibm.com>
3953
3954         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
3955         Fix offsettable memory reference for 750CL.
3956
3957 2007-09-06  Pat Haugen  <pthaugen@us.ibm.com>
3958
3959         * reload.c (find_reloads_address_1): Try to preserve original
3960         base/index regclass of operands.
3961         * regrename.c (scan_rtx_address): Likewise.
3962         (replace_oldest_value_addr): Likewise.
3963
3964 2007-09-06  Richard Guenther  <rguenther@suse.de>
3965
3966         PR tree-optimization/33302
3967         * domwalk.c (walk_dominator_tree): The exit block is
3968         interesting even if it is not reachable.
3969
3970 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
3971
3972         PR middle-end/33306
3973         * optabs.c (avoid_expensive_constant): Do nothing if MODE is VOIDmode.
3974
3975 2007-09-06  Basile Starynkevitch  <basile@starynkevitch.net>
3976
3977         * cfg.c (dump_bb_info, dump_edge_info): Added cfun test for 
3978         robustness.
3979
3980 2007-09-05  Ian Lance Taylor  <iant@google.com>
3981
3982         * tree-pretty-print.c (dump_decl_name): Cast LABEL_DECL_UID to int
3983         when printing.
3984         (dump_generic_node): Likewise.
3985         * print-rtl.c (print_decl_name): Likewise.
3986         * print-tree.c (print_node_brief): Likewise.
3987         (print_node): Likewise.
3988         * Makefile.in (RTL_BASE_H): Add alias.h.
3989         (TREE_H): Likewise.
3990
3991 2007-09-06  Jesper Nilsson  <jesper.nilsson@axis.com>
3992
3993         * longlong.h [__CRIS_arch_version >= 8] (count_trailing_zeros):
3994         Defined.
3995         * config/cris/cris.md (ctzsi2, cris_swap_bits): Implemented.
3996         * config/cris/cris.h (CTZ_DEFINED_VALUE_AT_ZERO): Defined.
3997
3998 2007-09-06  Jie Zhang  <jie.zhang@analog.com>
3999
4000         * config.gcc (tm_file): Add linux.h for bfin*-uclinux*.
4001         (tm_defines): Define UCLIBC_DEFAULT to 1.
4002         (extra_options): Add linux.opt.
4003         * config/bfin/linux.h (CPLUSPLUS_CPP_SPEC): Don't define.
4004         (CRT_CALL_STATIC_FUNCTION): Likewise.
4005         (NO_IMPLICIT_EXTERN_C): Likewise.
4006         (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
4007         * config/bfin/elf.h (OBJECT_FORMAT_ELF): Don't define.
4008         * config/bfin/uclinux.h (CPLUSPLUS_CPP_SPEC): Don't define.
4009         (ENDFILE_SPEC): Don't define.
4010         (LIB_SPEC): Likewise.
4011         (CRT_CALL_STATIC_FUNCTION): Likewise.
4012         (NO_IMPLICIT_EXTERN_C): Likewise.
4013         (LINUX_TARGET_OS_CPP_BUILTINS): Likewise.
4014         (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
4015
4016 2007-09-06  Jan Hubicka  <jh@suse.cz>
4017
4018         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
4019         real_2expN.
4020
4021 2007-09-06  Jan Hubicka  <jh@suse.cz>
4022
4023         * opts.c (common_handle_option): Enable inlining functions for
4024         -fprofile-generate.
4025
4026 2007-09-06  Jakub Jelinek  <jakub@redhat.com>
4027
4028         * builtin-attrs.def (ATTR_NONNULL_3): New.
4029         (DEF_FORMAT_ATTRIBUTE): Use just ATTR_NONNULL_##FA instead of
4030         ATTR_NOTHROW_NONNULL_##FA.
4031         (DEF_FORMAT_ATTRIBUTE_NOTHROW, DEF_FORMAT_ATTRIBUTE_BOTH): New macros.
4032         (ATTR_FORMAT_PRINTF_NOTHROW_2_0, ATTR_PRINTF_NOTHROW_2_3,
4033         ATTR_FORMAT_PRINTF_NOTHROW_3_0, ATTR_FORMAT_PRINTF_NOTHROW_3_4,
4034         ATTR_FORMAT_PRINTF_NOTHROW_4_0, ATTR_PRINTF_NOTHROW_4_5,
4035         ATTR_FORMAT_PRINTF_NOTHROW_5_0, ATTR_FORMAT_PRINTF_NOTHROW_5_6,
4036         ATTR_FORMAT_SCANF_NOTHROW_2_0, ATTR_FORMAT_SCANF_NOTHROW_2_3,
4037         ATTR_FORMAT_STRFTIME_NOTHROW_3_0, ATTR_FORMAT_STRFMON_NOTHROW_3_4):
4038         New.
4039         (ATTR_FORMAT_PRINTF_4_0, ATTR_PRINTF_4_5, ATTR_FORMAT_PRINTF_5_0,
4040         ATTR_FORMAT_PRINTF_5_6, ATTR_FORMAT_STRFTIME_3_0,
4041         ATTR_FORMAT_NOTHROW_3_4): Remove.
4042         * builtins.def (snprintf, sprintf, sscanf, vsnprintf, vsprintf,
4043         vsscanf, strfmon, strftime, __snprintf_chk, __sprintf_chk,
4044         __vsnprintf_chk, __vsprintf_chk): Use ATTR_FORMAT_*_NOTHROW_*
4045         instead of ATTR_FORMAT_*_*.
4046
4047 2007-09-06  Hans-Peter Nilsson  <hp@axis.com>
4048
4049         * config/cris/cris.c (cris_emit_movem_store): Call copy_rtx on
4050         parts re-used for REG_FRAME_RELATED_EXPR.
4051
4052 2007-09-05  Janis Johnson  <janis187@us.ibm.com>
4053
4054         * optabs.c (expand_float): Convert unsigned integer as signed only
4055         if it provides sufficient accuracy; add mode argument to real_2expN.
4056         (expand_fix): Fix comment typos; extend binary float into mode
4057         wider than destination for converion to unsigned integer; add mode
4058         argument to real_2expN.
4059         * real.c (real_2expN): Add mode argument to special-case decimal
4060         float values.
4061         * real.h (real_2expN): Ditto.
4062         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
4063         real_2expN.
4064         (fixed_from_string): Ditto.
4065         (fixed_to_decimal): Ditto.
4066         (fixed_convert_from_real): Ditto.
4067         (real_convert_from_fixed): Ditto.
4068         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
4069         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
4070         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
4071         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
4072
4073 2007-09-05  Ian Lance Taylor  <iant@google.com>
4074
4075         * init-regs.c (initialize_uninitialized_regs): Call
4076         emit_insn_before rather than add_insn_before.
4077
4078 2007-09-05  Jakub Jelinek  <jakub@redhat.com>
4079
4080         * builtins.def (BUILT_IN_VA_ARG_PACK): New built-in.
4081         * tree.h (CALL_EXPR_VA_ARG_PACK): Define.
4082         * tree-inline.h (copy_body_data): Add call_expr field.
4083         * tree-inline.c (expand_call_inline): Initialize call_expr.
4084         (copy_bb): Append anonymous inline fn arguments to arguments
4085         when inlining a CALL_EXPR_VA_ARG_PACK call.
4086         * builtins.c (expand_builtin): Issue an error if
4087         BUILT_IN_VA_ARG_PACK is seen during expand.
4088         (fold_call_expr, fold_builtin_call_array): Don't fold
4089         CALL_EXPR_VA_ARG_PACK CALL_EXPRs or calls with
4090         __builtin_va_arg_pack () call as last argument.
4091         * gimplify.c (gimplify_call_expr): If last argument to a vararg
4092         function is __builtin_va_arg_pack (), decrease number of call
4093         arguments and instead set CALL_EXPR_VA_ARG_PACK on the CALL_EXPR.
4094         * expr.c (expand_expr_real_1): Issue an error if
4095         CALL_EXPR_VA_ARG_PACK CALL_EXPR is seen during expand.
4096         * tree-pretty-print.c (dump_generic_node): Handle printing
4097         CALL_EXPR_VA_ARG_PACK bit on CALL_EXPRs.
4098         * doc/extend.texi (__builtin_va_arg_pack): Document.
4099
4100 2007-09-05  Adam Nemet  <anemet@caviumnetworks.com>
4101
4102         PR tree-optimization/21513
4103         * builtins.c (build_builtin_expect_predicate): New function.
4104         (fold_builtin_expect): Add argument for expected value.
4105         Distribute __builtin_expect over short-circuiting operations.
4106         Fold nested builtin_expects.
4107         (fold_builtin_2): Adjust call to fold_builtin_expect.
4108
4109 2007-09-05  Rask Ingemann Lambertsen  <rask@sygehus.dk>
4110
4111         PR web/32965
4112         PR tree-optimization/13756
4113         * doc/invoke.texi (Options That Control Optimization): Document
4114         -ftree-dse.
4115
4116 2007-09-05  Uros Bizjak  <ubizjak@gmail.com>
4117
4118         * gcc/config/i386/cpuid.h: New file.
4119         * gcc/config/i386/driver-i386.c: Include cpuid.h.
4120         (describe_cache): Shrink size and line strings to 100 bytes.
4121         (detect_caches_amd): Return "" for unsupported max_ext_level.
4122         Use __cpuid function.
4123         (detect_caches_intel): Return "" for unsupported max_level.
4124         Use __cpuid function.
4125         (host_detect_local_cpu): Change feature flag variables to
4126         unsigned int.  Initialize only extended feature flag variables.
4127         Use __get_cpuid_max to determine max supported cpuid level.
4128         Use __cpuid function to determine supported features.  Fix
4129         calculation of family id.  Remove is_amd and check signature
4130         directly.  Check for Geode signature.  Handle family 4 id.
4131         [PROCESSOR_GENERIC32]: New default for unknown family id.  Move
4132         cpu discovery code to lower part of the function.
4133         [PROCESSOR_PENTIUM, PROCESSOR_K6, PROCESSOR_ATHLON]: Do not tune
4134         for sub-architecture.
4135         [PROCESSOR_PENTIUMPRO]: Simplify cpu discovery code.
4136         [PROCESSOR_K8]: Add k8-sse3 architecture.
4137         [PROCESSOR_NOCONA]: Remove.
4138         [PROCESSOR_GENERIC64]: Ditto.
4139         * gcc/config/i386/x-i386 (driver-i386.o): Depend on cpuid.h.
4140         * gcc/config/i386/crtfastmath.c: Include cpuid.h.  Use __get_cpuid
4141         to check for SSE and FXSAVE support.
4142         * gcc/config/i386/t-crtfm (crtfastmath.o): Depend on cpuid.h.
4143         Add -minline-all-stringops.
4144         * gcc/config.gcc (i[34567]86-*-*): Add cpuid.h to extra_headers.
4145         (x86_64-*-*): Ditto.
4146
4147 2007-09-05  Jie Zhang  <jie.zhang@analog.com>
4148
4149         * config/bfin/linux-unwind.h: New file.
4150         * config/bfin/linux.h (MD_UNWIND_SUPPORT): Define.
4151         * config/bfin/uclinux.h (MD_UNWIND_SUPPORT): Define.
4152
4153 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
4154
4155         * Makefile.in (stmt.o): Add alloc-pool.h dependency.
4156         * stmt.c: Include alloc-pool.h.
4157         (struct case_node): Remove GTY marker.
4158         (add_case_node): New parameter case_node_pool.  Use it for
4159         allocation of r.
4160         (expand_case): New allocation pool case_node_pool.  Initialize it,
4161         pass to add_case_node and free it.
4162
4163 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
4164             David Ung  <davidu@mips.com>
4165             Nigel Stephens <nigel@mips.com>
4166
4167         Add mips16/nomips16 function attributes and -mflip-mips16 option
4168         for testing mixed-mode compilation.
4169
4170         * config/mips/mips.opt (mflip-mips16): New.
4171
4172         * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Define.
4173         (SYMBOL_FLAG_MIPS16_FUNC_P): Define.
4174
4175         * config/mips/mips.c (mips_base_target_flags): New.
4176         (mips_base_mips16): New.
4177         (mips_base_schedule_insns): New.
4178         (mips_base_reorder_blocks_and_partition): New.
4179         (mips_base_align_loops): New.
4180         (mips_base_align_jumps): New.
4181         (mips_base_align_functions): New.
4182         (mips16_flipper): New.
4183         (mips_attribute_table): Add "mips16" and "nomips16" entries.
4184         (TARGET_SET_CURRENT_FUNCTION): Define.
4185         (mips_mips16_type_p, mips_nomips16_type_p): New.
4186         (mips_comp_type_attributes): Check mips16/nomips16 attributes.
4187         (mips_function_ok_for_sibcall): Make it deal with functions with
4188         mips16 attributes.
4189         (mips_init_split_addresses): New, split out from override_options.
4190         (mips_init_relocs): New, split out from override_options.
4191         (was_mips16_p): New.
4192         (mips_set_mips16_mode): New, split out from override_options.
4193         (mips_set_current_function): New.
4194         (override_options): Add sorry for unsupported mips16/pic
4195         combination.  Remove error for mips16/dsp combination.  Save
4196         base option settings.  
4197         (mips_file_start): Move mips16 mode setting output from here....
4198         (mips_output_function_prologue): ....to here.
4199         (mips_output_mi_thunk): Check for mips16 function.
4200         (build_mips16_function_stub): Don't set .mips16 here.
4201         (build_mips16_call_stub): Likewise.
4202         (mips_expand_builtin): Error in mips16 mode.
4203         (mips_use_mips16_mode_p): New.
4204         (mips_encode_section_info): Check for mips16 function, and set
4205         SYMBOL_REF_FLAGS accordingly.
4206
4207         * doc/extend.texi (Function Attributes): Document new
4208         mips16/nomips16 attributes.
4209         * doc/invoke.texi (Option Summary): Add -mflip-mips16.
4210         (MIPS Options): Document -mflip-mips16.
4211
4212 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
4213
4214         * config/mips/mips.c (mips_legitimize_tls_address): Call sorry
4215         if we encounter TLS address in MIPS16 mode.
4216         (mips_legitimize_const_move): Check cannot_force_const_mem for
4217         the (const (plus symbol offset)) case; this forces invalid TLS
4218         address in MIPS16 mode to be caught by the above call to sorry.
4219         (override_options): Don't reset targetm.have_tls in MIPS16 mode,
4220         because that now enables emutls, which is not ABI compatible
4221         with native TLS in non-MIPS16 mode.
4222
4223 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
4224
4225         Add target hook invoked when cfun changes.
4226
4227         * doc/tm.texi (TARGET_SET_CURRENT_FUNCTION): Document.
4228         * target.h (struct gcc_target): Add set_current_function.
4229         * target-def.h (TARGET_SET_CURRENT_FUNCTION): Define.
4230         (TARGET_INITIALIZER): Add initializer for set_current_function.
4231         * tree.h (push_struct_function): New.
4232         * tree-inline.h (push_cfun, pop_cfun): Move declarations to...
4233         * function.h: Here.
4234         (set_cfun): Declare.
4235         * tree-inline.c (cfun_stack, push_cfun, pop_cfun): Moved to...
4236         * function.c: Here.
4237         (push_function_context_to): Use allocate_struct_function
4238         to create null context, not init_dummy_function_start.  Use set_cfun.
4239         (pop_function_context_from): Use set_cfun.
4240         (in_dummy_function): New.
4241         (invoke_set_current_function_hook): New.
4242         (set_cfun): New.
4243         (push_cfun, pop_cfun): Use set_cfun.
4244         (push_struct_function): New.
4245         (allocate_struct_function): Call invoke_set_current_function_hook
4246         before returning.
4247         (prepare_function_start): Don't set cfun here.  Remove unused
4248         argument; fix all callers.
4249         (init_dummy_function_start): Fiddle with in_dummy_function.  Call
4250         push_struct_function.
4251         (init_function_start): Set cfun here.
4252         (expand_dummy_function_end): Fiddle with in_dummy_function.  Pop cfun.
4253         * omp-low.c (create_omp_child_function): Use push_struct_function
4254         and pop_cfun to save/restore state.
4255         (expand_omp_parallel): Remove unused saved_cfun variable.
4256         * cgraphunit.c (ipa_passes): Use set_cfun.
4257         * gimple-low.c (record_vars_into): Use push_cfun/pop_cfun here.
4258         * dwarf2out.c (dwarf2out_abstract_function): Likewise.
4259         * matrix-reorg.c (transform_allocation_sites): Likewise.
4260         (matrix_reorg): Use set_cfun.
4261         * gimplify.c (gimplify_function_tree): Use push_cfun/pop_cfun here.
4262         * tree-optimize.c (tree_rest_of_compilation): Remove one redundant
4263         assignment to cfun; use set_cfun for the other.
4264         * tree-cfg.c (move_sese_region_to_fn): Use set_cfun.
4265         (dump_function_to_file): Use push_cfun/pop_cfun here.
4266         * c-decl.c (finish_function): Use set_cfun.
4267
4268 2007-09-05  Kenneth Zadeck <zadeck@naturalbridge.com>
4269
4270         * regrename.c (rerename_optimize): Use deferred rescanning and
4271         insert explicit calls to rescan insns when changed.
4272         
4273 2007-09-05  Jan Hubicka  <jh@suse.cz>
4274
4275         * optabs.c (libfunc_entry): Change optab to integer.
4276         (hash_libfunc, convert_optab_libfunc, optab_libfunc,
4277         set_optab_libfunc, set_conv_libfunc): Use optable indexes instead
4278         of pointers for hashing.
4279
4280 2007-09-05  Jan Hubicka  <jh@suse.cz>
4281
4282         * regrename.c (pass_regrename, pass_cprop_hardreg): Add RTL sharing
4283         verifier.
4284         * fwprop.c (pass_rtl_fwprop, pass_rtl_fwprop_add): Likewise.
4285         * see.c (pass_see): Likewise.
4286         * tracer.c (pass_tracer): Likewise.
4287         * postreload-gcse.c (pass_gcse2): Likewise.
4288         * postreload.c (pass_postreload_cse): Likewise.
4289         * mode-switching.c (pass_mode_switching): Likewise.
4290         * modulo-sched.c (pass_sms): Likewise.
4291         * cse.c (cse_insn): Likewise.
4292         * web.c (pass_web): Likweise.
4293         * combine-stack-adj.c (pass_stack_adjustments): Likewise.
4294         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Likewise.
4295         * loop-init.c (pass_rtl_loop_init): Likewise.
4296         (pass_rtl_loop_done, pass_rtl_move_loop_, pass_rtl_unswitch,
4297         pass_rtl_unroll_and, pass_rtl_doloop): Likewise.
4298         * global.c (pass_global_alloc): Likewise.
4299         * ifcvt.c (pass_rtl_ifcvt, pass_if_after_combine,
4300         pass_if_after_reload): Likewise.
4301         * reload.c (pass_peephole2, pass_split_for_shoren_branches): Likewise.
4302         * dse.c (pass_rtl_dse1, pass_rtl_dse2): Likewise.
4303         * regmove.c (pass_regmove): Likewise.
4304         * function.c (pass_thread_prologugues_epilogues): Likewise.
4305         * gcse.c (pass_gcse): Likewise.
4306         * rtl-factoring.c (pass_rtl_seqabstr): Likewise.
4307         * lower-subreg.c (pass_lower_subreg2): Likewise.
4308         * bt-load.c (pass_branch_target_load): Likewise.
4309         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
4310         * cfgcleanup.c (pass_jump, pass_jump2): Likewise.
4311         * combine.c (pass_combine): Likewise.
4312         * bb-reorder.c (pass_duplicate_comp, pass_reorder_blocks): Likewise.
4313         (pass_partition_blocks): Likewise.
4314         * var-tracking.c (pass_variable_track): Likewise.
4315         * reg-stack.c (pass_stack_regs_run): Likewise.
4316         * sched-rgn.c (pass_sched, pass_sched2): Likewise.
4317         * passes.c (pass_postreload): Likewise.
4318         (execute_function_todo): Add TODO_verify_rtl_sharing handling code.
4319         * tree-pass.h (TODO_verify_rtl_sharing): New.
4320         (TODO_update_ssa, TODO_update_ssa_no_phi, TODO_update_ssa_full_phi,
4321         TODO_update_ssa_only_virtuals, TODO_remove_unused_locals,
4322         TODO_set_props, TODO_df_finish, TODO_df_verify,
4323         TODO_mark_first_instance, TODO_rebuild_alias): Renumber.
4324
4325 2007-09-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4326
4327         * fold-const.c (all_ones_mask_p, sign_bit_p, simple_operand_p,
4328         fold_real_zero_addition_p, reorder_operands_p,
4329         div_if_zero_remainder, fold_undefer_overflow_warnings,
4330         int_binop_types_match_p, fold_convert_const_int_from_int,
4331         fold_convert_const_int_from_real,
4332         fold_convert_const_int_from_fixed,
4333         fold_convert_const_real_from_real,
4334         fold_convert_const_real_from_fixed,
4335         fold_convert_const_fixed_from_fixed,
4336         fold_convert_const_fixed_from_int,
4337         fold_convert_const_fixed_from_real, maybe_lvalue_p,
4338         fold_checksum_tree, fold_check_failed, print_fold_checksum,
4339         debug_fold_checksum, multiple_of_p): Constify.
4340         * tree-flow-inline.h (get_lineno): Likewise.
4341         * tree-flow.h (get_lineno): Likewise.
4342         * tree-object-size.c (compute_object_offset, addr_object_size,
4343         alloc_object_size, pass_through_call): Likewise.
4344         * tree-pretty-print.c (op_symbol, print_call_name,
4345         print_struct_decl, do_niy): Likewise.
4346         * tree.h (fold_undefer_overflow_warnings, multiple_of_p,
4347         debug_fold_checksum): Likewise.
4348
4349 2007-09-04  Steven Bosscher  <steven@gcc.gnu.org>
4350
4351         PR middle-end/33029
4352         * lower-subreg.c (resolve_clobber): If we remove a REG_LIBCALL
4353         note, remove the associated REG_RETVAL note.
4354
4355 2007-09-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4356
4357         * config.gcc (powerpc*-*-*): Install
4358         spu2vmx.h, vec_types.h, and si2vmx.h headers.
4359         * config/rs6000/spu2vmx.h: New header.
4360         * config/rs6000/si2vmx.h: New header.
4361         * config/rs6000/vec_types.h: New header.
4362
4363 2007-09-05  Ben Elliston  <bje@au.ibm.com>
4364
4365         * varasm.c (initializer_constant_valid_p): Fix comment typo.
4366
4367 2007-09-05  Ben Elliston  <bje@au.ibm.com>
4368
4369         * config/rs6000/ppu_intrinsics.h (__ldarx): Use `Z' constraint,
4370         not `m' for *ptrp.
4371         (__stdcx): Make asm volatile.
4372         (__stwcx, __stdcx): Return only 0 or 1.
4373
4374 2007-09-05  Jan Hubicka  <jh@suse.cz>
4375
4376         Revert:
4377
4378         2007-09-04  Jan Hubicka  <jh@suse.cz>
4379         * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
4380
4381         2007-09-04  Richard Guenther  <rguenther@suse.de>
4382         * tree-ssa-operands.c (add_virtual_operand): Only mark
4383         stores as has_volatile_ops if alias information is not available.
4384
4385 2007-09-05  Jakub Jelinek  <jakub@redhat.com>
4386
4387         * config/rs6000/tramp.asm: Include config.h.
4388         Check __PIC__ or __pic__ macro instead of SHARED.
4389
4390         PR rtl-optimization/32300
4391         * see.c (see_copy_insn): New function.
4392         (see_def_extension_not_merged, see_merge_one_use_extension,
4393         see_merge_one_def_extension): Use it.  Avoid changing
4394         PREV_INSN/NEXT_INSN chains directly, insted emit insns
4395         into sequences.  Call df_insn_delete on temporary insns
4396         that won't be emitted into the insn stream.
4397         (rest_of_handle_see): Turn off DF_DEFER_INSN_RESCAN
4398         and run df_process_deferred_rescans () before run_fast_dce.
4399
4400         PR tree-optimization/33017
4401         * tree-data-ref.c (split_constant_offset) <case SSA_NAME>: Don't
4402         recurse for pure or const function calls.
4403
4404 2007-09-04  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
4405
4406         * c-format.c: Include alloc-pool.h.
4407         (check_format_info_main): New argument fwt_alloc.  Use allocation
4408         pool instead of GC.  Remove GC deallocation code.
4409         (check_format_arg): Create allocation pool, pass it to
4410         check_format_info_main and free it afterwards.
4411         * Makefile.in (c-format.o): Add alloc-pool.h dependency.
4412
4413 2007-09-05  Ben Elliston  <bje@au.ibm.com>
4414
4415         * config/rs6000/ppu_intrinsics.h (__protected_stream_count):
4416         Rename count macro arugment for clarity.
4417         (__protected_unlimited_stream_set): Pass UG=1 to __dcbt_TH1000.
4418         (__protected_stream_set): Likewise, pass 0.
4419
4420 2007-09-04  Jan Hubicka  <jh@suse.cz>
4421
4422         * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
4423
4424 2007-09-04  Jan Hubicka  <jh@suse.cz>
4425
4426         * invoke.texi (-finline-small-functions): Document.
4427         * ipa-inline.c (cgraph_default_inline_p): Do not use DECL_INLINE
4428         when deciding what is inlinable.
4429         (cgraph_decide_recursive_inlining): Handle flag_inline_functions.
4430         (cgraph_decide_inlining_of_small_function): Handle new flags.
4431         (cgraph_decide_inlining_incrementally): Likewise.
4432         * opts.c (decode_options): Enable flag_inline_small_functions at -O2
4433         * common.opt (finline-small-functions): New.
4434         * Makefile.in (build/gengtype.o-warn): Work around PR29478
4435
4436 2007-09-04  Richard Guenther  <rguenther@suse.de>
4437
4438         * tree-ssa-operands.c (add_virtual_operand): Only mark
4439         stores as has_volatile_ops if alias information is not available.
4440
4441 2007-09-04  Andrew Haley  <aph@redhat.com>
4442
4443         * config/arm/libgcc-bpabi.ver: Add _Unwind_Backtrace as GCC_4.3.0.
4444
4445 2007-09-04  Andrew Haley  <aph@redhat.com>
4446
4447         * config/arm/libunwind.S (UNWIND_WRAPPER _Unwind_Backtrace): New.
4448         * config/arm/unwind-arm.h (__gnu_Unwind_Backtrace): New.
4449         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): New.
4450
4451 2007-09-04  Emmanuel Thome  <Emmanuel.Thome@inria.fr>
4452
4453         PR c++/14178
4454         * common.opt: Mention ABI version 2 in comment.
4455
4456 2007-09-04  Jan Hubicka  <jh@suse.cz>
4457
4458         * optabs.c (debug_optab_libfunc): Update; make available to gdb.
4459         (libfunc_entry): New structure.
4460         (libfunc_hash): New hashtable.
4461         (hash_libfunc): New function.
4462         (eq_libfunc): New function.
4463         (convert_optab_libfunc): New function.
4464         (optab_libfunc): New function.
4465         (expand_binop, sign_expand_binop, expand_twoval_binop_libfunc,
4466         expand_unop, prepare_cmp_insn, prepare_float_insn, gen_add2_insn,
4467         expand_float, expand_fix, new_optab, new_convert_optab):
4468          Update for new libfunc API.
4469         (init_libfunc, init_integral_libfuncs,
4470         init_floating_libfuncs, init_interclass_conv_libfuncs
4471         init_intraclass_conv_libfuncs): Remove; reorganize all logic to:
4472         (gen_libfunc, gen_int_libfunc, gen_fp_libfunc, gen_int_fp_libfunc,
4473         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
4474         gen_int_to_fp_conv_libfunc, gen_ufloat_conv_libfunc,
4475         gen_int_to_fp_nondecimal_conv_libfunc, gen_fp_to_int_conv_libfunc,
4476         gen_intraclass_conv_libfunc, gen_trunc_conv_libfunc,
4477         gen_extend_conv_libfunc): New.
4478         (init_one_libfunc): Revamp for hashtables.
4479         (set_conv_libfunc): Likewise.
4480         (init_optabs): Initialize hashtable; use lazy initialization where
4481         possible.
4482         * optabs.h (optab_handlers): Move out of GGC.
4483         (optab, convert_optab): Move out of GGC; add lazy gen info.
4484         (code_to_optab, convert_optab_table, optab_table): Move out of GGC.
4485         (optab_libfunc, convert_optab_libfunc): New.
4486         * builtins.c (expand_builtin_powi): Update for new API.
4487         * expr.c (convert_move): Likewise.
4488         * expmed.c (expand_divmod): Likewise.
4489
4490 2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
4491
4492         * config/rs6000/rs6000.c (rs6000_stack_info): Allocate space for the
4493         GOT pointer only if there is a constant pool.  Use the allocated space
4494         for SPE also.
4495
4496 2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
4497
4498         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Correct
4499         typo for AltiVec.
4500
4501 2007-09-04  Revital Eres  <eres@il.ibm.com>
4502             Richard Guenther  <rguenther@suse.de>
4503             R. Clint Whaley  <whaley@cs.utsa.edu>
4504
4505         * doc/invoke.texi (-fassociative-math, -freciprocal-math):
4506         Document new flags.
4507         * tree-tailcall.c (process_assignment): Use -fassociative-math
4508         when reodering operands of floating-point type.
4509         * fold-const.c (fold_comparison, fold_binary): Use
4510         -fassociative-math and -freciprocal-math instead of
4511         -funsafe-math-optimization flag.
4512         * toplev.h (set_unsafe_math_optimizations_flags): Declare function.
4513         * tree-ssa-math-opts.c (gate_cse_reciprocals): Use
4514         -freciprocal-math instead of -funsafe-math-optimizations.
4515         * opts.c (set_fast_math_flags): Set -freciprocal-math and
4516         -fassociative-math when -ffast-math is set.
4517         (set_unsafe_math_optimizations_flags): New Function
4518         to set -freciprocal-math and -fassociative-math when
4519         -funsafe-math-optimizations is set.
4520         (common_handle_option): Call it.
4521         * tree-vectorizer.c (vect_is_simple_reduction): Use
4522         -fassociative-math when doing reduction on floats.
4523         * loop-unroll.c (analyze_insn_to_expand_var): Use
4524         -fassociative-math when expanding an accumulator of type float.
4525         * simplify-rtx.c (simplify_binary_operation_1): Use
4526         -fassociative-math and -freciprocal-math when reordeing operands
4527         of floating-point type.
4528         * combine.c (combine_simplify_rtx): Likewise.
4529         * tree-ssa-reassoc.c (break_up_subtract_bb, reassociate_bb):
4530         Likewise.
4531         * common.opt (-fassociative-math, -freciprocal-math): New flags.
4532
4533 2007-09-04  Paolo Carlini  <pcarlini@suse.de>
4534
4535         PR c++/18608
4536         * doc/install.texi (--enable-__cxa_atexit): Fix typo.
4537
4538 2007-09-04  Jan Hubicka  <jh@suse.cz>
4539
4540         * regrename.c(copyprop_hardreg_forward_1): Unshare when doing copyprop.
4541
4542 2007-09-04  Jan Hubicka  <jh@suse.cz>
4543
4544         * regrename.c (build_def_use): Don't share RTL between MATCH_OPERATOR
4545         and corresponding MATCH_DUP.
4546
4547 2007-09-04  Uros Bizjak  <ubizjak@gmail.com>
4548
4549         PR middle-end/33187
4550         * combine.c (subst): Do not try to simplify X if it represents load
4551         of FP constant from the constant pool via float extension.
4552
4553 2007-09-04  Ben Elliston  <bje@au.ibm.com>
4554
4555         * c-opts.c: Include "tm_p.h".
4556         * Makefile.in (c-opts.o): Add $(TM_P_H) as a dependency.
4557
4558 2007-09-04  Richard Guenther  <rguenther@suse.de>
4559
4560         PR tree-optimization/33291
4561         * tree-pretty-print.c (dump_generic_node): Dump all
4562         qualifiers for pointer types, not only first.  Dump
4563         qualifiers for aggregate types as well.
4564         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Always
4565         use the canonical type for building ARRAY_REFs.
4566         * gimplify.c (canonicalize_addr_expr): Clean up.  The
4567         correct validness check is compatibility of the pointer
4568         types.  Always use the canonical type for building
4569         ARRAY_REFs and ADDR_EXPRs.
4570         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Revert
4571         change that disabled propagation of ADDR_EXPRs into statements
4572         with volatile ops.
4573
4574 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
4575
4576         * config/arm/arm.md (mulsidi3, umulsidi3, mulsi3_highpart)
4577         (umulsi3_highpart): Make into expanders; existing insns are
4578         now named *[insn]_nov6.  Add stars to existing [insn]_v6
4579         counterparts' names.
4580
4581 2007-09-03  Daniel Jacobowitz  <dan@codesourcery.com>
4582
4583         * Makefile.in (DRIVER_DEFINES, gcc.o, gccspec.o, protoize.o)
4584         (unprotoize.o): Remove SHLIB_MULTILIB.
4585
4586 2007-09-03  Eric Weddington  <eweddington@cso.atmel.com>
4587
4588         * doc/extend.texi: Document progmem attribute for AVR.
4589
4590 2007-09-03  Anatoly Sokolov <aesok@post.ru>
4591
4592         PR target/28902
4593         * config/avr/avr.h (TARGET_VTABLE_ENTRY_ALIGN): Define.
4594
4595 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
4596
4597         * optabs.c (expand_ffs): Initialize val and defined_at_zero
4598         to avoid warnings.
4599
4600         * optabs.c: Remove unnecessary forward declarations.
4601         (expand_unop_direct): New, broken out of expand_unop.
4602         (expand_doubleword_clz): New.
4603         (expand_ctz): Move above expand_ffs.  Use
4604         start_sequence, end_sequence, add_equal_note, and
4605         expand_unop_direct.  Add more commentary.
4606         (expand_ffs): Try both ctz optab and expand_ctz.
4607         Generate a test and branch if the hardware doesn't give us
4608         a useful value for input zero.  Style improvements similar to
4609         expand_ctz.
4610
4611         * config/arm/arm.md (ffssi2, ctzsi2): Delete.
4612
4613 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
4614
4615         * config.gcc: Delete stanza for arm-semi-aof and
4616         armel-semi-aof targets.
4617         * config/arm/arm-protos.h
4618         * config/arm/arm.c
4619         * config/arm/arm.h: Delete all #ifdef AOF_ASSEMBLER blocks;
4620         make all #ifndef AOF_ASSEMBLER blocks unconditional.  Also
4621         delete aof_pic_label and remove mention of AOF in comments.
4622         * config/arm/arm.md: Delete patterns used only for AOF assembly.
4623         * config/arm/aof.h
4624         * config/arm/semiaof.h
4625         * config/arm/t-semi: Delete file.
4626
4627 2007-09-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4628
4629         * system.h (CONST_CAST2, CONST_CAST_TREE, CONST_CAST_RTX,
4630         CONST_CAST_BB): New macros for type-specific casts.
4631         (CONST_CAST): Add a TYPE parameter and define it in terms of
4632         CONST_CAST2.
4633
4634         * c-decl.c (c_make_fname_decl): Supply a TYPE for CONST_CAST.
4635         * c-lex.c (cb_ident, lex_string): Likewise,
4636         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise,
4637         * config/i386/i386.c (ix86_function_regparm,
4638         ix86_function_sseregparm): Use CONST_CAST_TREE.
4639         * config/mmix/mmix.c (mmix_encode_section_info): Supply a TYPE for
4640         CONST_CAST.
4641         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
4642         give_switch, set_multilib_dir): Likewise,
4643         * gengtype-parse.c (string_seq, typedef_name): Likewise,
4644         * gimple-low.c (block_may_fallthru): Use CONST_CAST_TREE.
4645         * jump.c (reversed_comparison_code_parts): Use CONST_CAST_RTX.
4646         * passes.c (execute_one_pass): Supply a TYPE for CONST_CAST.
4647         * prefix.c (update_path): Likewise,
4648         * pretty-print.c (pp_base_destroy_prefix): Likewise,
4649         * rtlanal.c (keep_with_call_p): Use CONST_CAST_RTX.
4650         * tree-cfg.c (tree_can_merge_blocks_p,
4651         tree_block_ends_with_condjump_p): Use CONST_CAST_BB.
4652         * tree-eh.c (lookup_stmt_eh_region_fn): USe CONST_CAST_TREE.
4653         * tree.c (build_string): Supply a TYPE for CONST_CAST.
4654         (attribute_list_contained): Use CONST_CAST_TREE.
4655
4656 2007-09-03  Krister Walfridsson  <cato@df.lth.se>
4657
4658         * config/netbsd-elf.h (USE_LD_AS_NEEDED): Define.
4659
4660 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
4661
4662         PR middle-end/33290
4663         * optabs.c (avoid_expensive_constant): Canonicalize CONST_INTs
4664         before forcing them into a register.
4665
4666 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
4667
4668         * config/mips/mips.md (fetchop_bit): Use define_code_iterator
4669         rather than define_code_macro.
4670
4671 2007-09-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
4672
4673         * gcc.c (xputenv): New function.
4674         (putenv_from_prefixes): Use xputenv instead of putenv.
4675         (process_command): Use xputenv instead of putenv.
4676         (set_collect_gcc_options): Use xputenv instead of putenv.
4677         (main): Use xputenv instead of putenv.
4678
4679 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
4680
4681         * config/cris/cris.h (TARGET_HAS_SWAP): Defined to describe
4682         availability of swap instruction.
4683         * config/cris/cris.md (bswapsi2): Implement using swap instruction.
4684
4685 2007-09-03  Revital Eres  <eres@il.ibm.com>
4686
4687         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Update
4688         Documentation.
4689
4690 2007-09-03  Vladimir Yanovsky  <yanov@il.ibm.com>
4691             Ayal Zaks  <zaks@il.ibm.com>
4692             Revital Eres  <eres@il.ibm.com>
4693
4694         * modulo-sched.c (ps_insert_empty_row, verify_partial_schedule,
4695         compute_split_row): New functions.
4696         (ps_unschedule_node): Remove.
4697         (normalize_sched_times): Iterate over the already scheduled
4698         insns instead of the number of nodes.
4699         (MAX_SPLIT_NUM): New definition.
4700         (sms_schedule_by_order): Change the scheduling heuristic to
4701         avoid useless increases of initiation interval ii.
4702         (get_sched_window): Add dump printouts.
4703
4704 2007-09-02  David Daney  <ddaney@avtrex.com>
4705
4706         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP, UNSPEC_SYNC_OLD_OP,
4707         UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE): New define_constants.
4708         (optab, insn): Add more attributes.
4709         (fetchop_bit): New code macro.
4710         (immediate_insn): New code macro attribute.
4711         (sync): Change condition to ISA_HAS_SYNC.
4712         (rdhwr): Change predicate for operand 0 to register_operand.
4713         (memory_barrier): New expand.
4714         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
4715         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
4716         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
4717         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
4718         sync_new_nand<mode>, sync_lock_test_and_set<mode>): New insns.
4719         * config/mips/mips.h (ISA_HAS_SYNC, ISA_HAS_LL_SC): New ISA predicates.
4720         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
4721         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
4722         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): New Macros.
4723         
4724 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
4725             Hans-Peter Nilsson  <hp@axis.com>
4726
4727         * config/cris/cris.h (TARGET_HAS_LZ, CLZ_DEFINED_VALUE_AT_ZERO):
4728         Defined to describe availability and behavior of CLZ.
4729         * config/cris/cris.md (clzsi2): Implement using lz instruction.
4730         * config/cris/cris.opt: Tweak comment for "-metrax4".
4731         * config/cris/arit.c (LZ): When defined, define as __builtin_clz.
4732         * longlong.h [__CRIS__ && __CRIS_arch_version >= 3]
4733         (count_leading_zeros): Define.
4734
4735 2007-09-01  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
4736
4737         * ggc-page.c (ggc_pch_read): Call validate_free_objects.
4738
4739 2007-09-02  Joseph Myers  <joseph@codesourcery.com>
4740
4741         PR middle-end/33272
4742         * c-decl.c (grokdeclarator): Apply qualifiers to type of parameter
4743         decayed from array.
4744
4745 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
4746
4747         * config/arm/arm.c, config/rs6000/ppu_intrinsics.h,
4748         config/spu/spu.c, df-scan.c, fixed-value.c, fold-const.c,
4749         ginclude/tgmath.h, haifa-sched.c, optabs.c, recog.c,
4750         sched-deps.c, sched-int.h, system.h, target.h,
4751         tree-ssa-live.c, tree-vect-transform.c, tree-vectorizer.c,
4752         tree.def: Fix comment typos.
4753
4754 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
4755
4756         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove.
4757         (override_options): Turn on -mstrict-align on non-ColdFire
4758         targets.
4759         * config/m68k/m68k.h (BIGGEST_ALIGNMENT): Update a comment.
4760
4761 2007-09-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4762
4763         * c-common.c (const_strip_array_types): Delete.
4764         * c-common.h (const_strip_array_types): Likewise.
4765         * emit-rtl.c (const_next_insn, const_previous_insn,
4766         const_next_nonnote_insn, const_prev_nonnote_insn,
4767         const_next_real_insn, const_prev_real_insn,
4768         const_next_active_insn, const_prev_active_insn, const_next_label,
4769         const_prev_label): Delete.
4770         * gimple-low.c (block_may_fallthru): Use expr_last.
4771         * jump.c (reversed_comparison_code_parts): Use prev_nonnote_insn.
4772         * rtl.h (const_previous_insn, const_next_insn,
4773         const_prev_nonnote_insn, const_next_nonnote_insn,
4774         const_prev_real_insn, const_next_real_insn,
4775         const_prev_active_insn, const_next_active_insn, const_prev_label,
4776         const_next_label): Delete.
4777         * rtlanal.c (keep_with_call_p): Use next_nonnote_insn.
4778         * system.h (CONST_CAST): Update comment.
4779         * tree-cfg.c (tree_can_merge_blocks_p): Use last_stmt.
4780         (const_first_stmt, const_last_stmt): Delete.
4781         (tree_block_ends_with_condjump_p): Use last_stmt.
4782         * tree-flow.h (const_first_stmt, const_last_stmt): Delete.
4783         * tree-iterator.c (const_expr_first, const_expr_last,
4784         const_expr_only): Delete.
4785         * tree.c (const_lookup_attribute): Likewise.
4786         (attribute_list_contained): Use lookup_attribute.
4787         * tree.h (const_lookup_attribute, const_expr_first,
4788         const_expr_last, const_expr_only): Delete.
4789
4790 2007-09-01  Richard Guenther  <rguenther@suse.de>
4791
4792         * tree-ssa-alias.c (create_name_tags): Use TYPE_VOLATILE
4793         instead of TREE_THIS_VOLATILE.
4794         * tree-ssa-operands.c (add_virtual_operand): Do not set
4795         has_volatile_ops.  Do not check s_ann for NULL.
4796         (get_indirect_ref_operands): Likewise.
4797         (get_expr_operands): Likewise.  For all reference trees
4798         set has_volatile_ops based on TREE_THIS_VOLATILE.  Also
4799         check base of reference for TREE_THIS_VOLATILE.
4800
4801 2007-09-01  Richard Guenther  <rguenther@suse.de>
4802
4803         * tree-cfg.c (verify_gimple_expr): Fix check for conversions
4804         between integral types.  Also allow conversions between
4805         pointer types.
4806
4807 2007-08-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4808
4809         * optabs.c (prepare_float_lib_cmp): Use
4810         libgcc_cmp_return_mode instead of word_mode.
4811         * config/dfp-bit.h: Likewise.
4812         * config/fp-bit.h: Likewise.
4813         * config/spu/spu.c (spu_libgcc_cmp_return_mode):
4814         New function.
4815         (spu_libgcc_shift_count_mode): New function.
4816         (TARGET_LIBGCC_CMP_RETURN_MODE): Define.
4817         (TARGET_LIBGCC_SHIFT_COUNT_MODE): Define.
4818
4819 2007-08-31  Joseph Myers  <joseph@codesourcery.com>
4820
4821         * tree-pretty-print.c: Include output.h.
4822         (dump_decl_name, dump_generic_node): Use %wd with pp_printf, not
4823         HOST_WIDE_INT_PRINT_DEC.
4824         * Makefile.in (tree-pretty-print.o): Add dependency on output.h.
4825
4826 2007-08-31  Zdenek Dvorak  <ook@ucw.cz>
4827
4828         PR rtl-optimization/33224
4829         * loop-iv.c (latch_dominating_def): Check that the definition belongs
4830         to the analysed region.
4831
4832 2007-08-31  Richard Guenther  <rguenther@suse.de>
4833
4834         * function.c (allocate_struct_function): Do not set
4835         current_function_returns_pointer.
4836         * function.h (struct var_refs_queue): Remove.
4837         (struct simple_obstack_stack): Likewise.
4838         (struct function): Remove fixup_var_refs_queue member.
4839         Remove returns_pointer flag.
4840         (current_function_returns_pointer): Remove define.
4841
4842 2007-08-31  Nick Clifton  <nickc@redhat.com>
4843
4844         * tree-ssa-coalesce.c (compare_pairs): Use the elements as
4845         secondary keys in order to obtain a stable sort.
4846
4847 2007-08-31  Nick Clifton  <nickc@redhat.com>
4848
4849         PR target/33132
4850         * config/m32r/constraints.md: Add W constraint for integer zero.
4851         * config/m32r/m32r.md (get_pc): Use W and i constraints.
4852         Fix length calculation by using alternatives.
4853
4854 2007-08-31  Richard Sandiford  <richard@codesourcery.com>
4855
4856         * optabs.c (shift_optab_p, commutative_optab_p): New functions,
4857         split out from expand_binop.
4858         (avoid_expensive_constant): New function.
4859         (expand_binop_directly): Remove commutative_op argument and
4860         (expand_binop_directly): Remove commutative_op argument and
4861         call cummutative_optab_p instead.  Do not change op0 or op1
4862         when swapping xop0 and xop1.  Apply avoid_expensive_constant
4863         to each argument after potential swapping.  Enforce the
4864         canonical order of commutative operands.
4865         (expand_binop): Use shift_optab_p and commutative_optab_p.
4866         Update the calls to expand_binop_directly.  Only force constants
4867         into registers when widening an operation.  Only swap operands
4868         once a direct expansion has been rejected.
4869         (expand_twoval_binop): Only force constants into registers when
4870         using a direct expansion.
4871
4872 2007-08-31  Maxim Kuvyrkov  <maxim@codesourcery.com>
4873
4874         * sched-deps.c (update_dep): Mark arguments with ATTRIBUTE_UNUSED.
4875         (sched_analyze_insn): Don't postprocess speculative dependencies when
4876         target has no scheduling.
4877         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Fix
4878         'uninitialized' warning.
4879
4880 2007-08-31  Richard Guenther  <rguenther@suse.de>
4881
4882         * tree.c (build_complex_type): Always set TYPE_NAME for
4883         comples types.
4884
4885 2007-08-31  Olivier Hainque  <hainque@adacore.com>
4886
4887         * config/rs6000/xcoff.h (XCOFF_CSECT_DEFAULT_ALIGNMENT_STR): New
4888         internal macro. Default alignment factor for csect directives, chosen
4889         to match what BIGGEST_ALIGNMENT allows.
4890         (DATA_SECTION_ASM_OP): Use it.
4891         * config/rs6000/rs6000.c
4892         (rs6000_xcoff_output_readonly_section_asm_op):
4893         Use XCOFF_CSECT_DEFAULT_ALIGNMENT_STR.
4894         (rs6000_xcoff_output_readwrite_section_asm_op): Likewise.
4895         
4896 2007-08-31  Olivier Hainque  <hainque@adacore.com>
4897
4898         * dbxout.c (dbxout_block): Move declaration within the first
4899         #if defined (DBX_DEBUGGING_INFO) block.  Rearrange another such
4900         block to include the definition, together with the associated
4901         helpers.
4902
4903 2007-08-31  David Edelsohn  <edelsohn@gnu.org>
4904             Revital Eres  <eres@il.ibm.com>
4905
4906         * doc/invoke.texi (-mpaired): Document flag.
4907         * config.gcc: Include paired.h in powerpc extra_headers and
4908         750cl.h in powerpc-*-linux*paired*.
4909         * config/rs6000/rs6000.opt (-mpaired): New flag.
4910         * config/rs6000/rs6000.c (paired_init_builtins,
4911         paired_expand_builtin, paired_expand_lv_builtin,
4912         paired_expand_stv_builtin, paired_expand_predicate_builtin):
4913         New functions to support the paired single builtin functions.
4914         (rs6000_hard_regno_mode_ok): Handle PAIRED_VECTOR_MODE.
4915         (def_builtin, bdesc_3arg, bdesc_2arg, bdesc_1arg): Add paired
4916         single builtins.
4917         (bdesc_paired_preds): New structure for paired predicate
4918         instructions.
4919         (rs6000_expand_builtin): Expand paired single builtins.
4920         (rs6000_init_builtins): Init paired single builtins.
4921         (rs6000_common_init_builtins): Add v2sf_ftype_v2sf_v2sf_v2sf.
4922         Rename v2sf_ftype_v2sf_v2sf to v2sf_ftype_v2sf_v2sf_spe
4923         and v2sf_ftype_v2sf_spe to v2sf_ftype_v2sf.  Add new types
4924         v2sf_ftype_v2sf_v2sf and v2sf_ftype_v2sf.
4925         (rs6000_vector_mode_supported_p): Support paired vector mode.
4926         * config/rs6000/rs6000.h: (UNITS_PER_PAIRED_WORD,
4927         PAIRED_VECTOR_MODE, PAIRED_SIMD_REGNO_P, TARGET_PAIRED_FLOAT):
4928         New.
4929         (LOCAL_ALIGNMENT): Handle PAIRED_VECTOR_MODE.
4930         (DATA_ALIGNMENT): Likewise.
4931         (UNITS_PER_SIMD_WORD): Handle PAIRED_VECTOR_MODE.
4932         (rs6000_builtins): Add PAIRED builtins.
4933         * config/rs6000/rs6000.md: Include paired.md.
4934         * config/rs6000/paired.h: New.
4935         * config/rs6000/paired.md: New.
4936         * config/rs6000/750cl.h: New.
4937         * config/rs6000/spe.md: Recognize movv2sf instruction for 750cl.
4938
4939 2007-08-30  Ollie Wild  <aaw@google.com>
4940
4941         * c-opts.c (c_common_handle_option): Support -fno-directives-only.
4942         * gcc.c (default_compilers): Add -fno-directives-only to
4943         @assembler-with-cpp.
4944
4945 2007-08-30  Sandra Loosemore  <sandra@codesourcery.com>
4946
4947         PR middle-end/33211
4948
4949         * regclass.c (initial_fixed_regs): Revert previous change and make
4950         it const again.
4951         (initial_call_used_regs): Likewise.
4952         (initial_call_really_used_regs): Delete, reverting previous addition.
4953         (initial_reg_names): Likewise.
4954         (init_reg_sets): Revert previous change.
4955         (saved_fixed_regs): New.
4956         (saved_call_used_regs): New.
4957         (saved_call_really_used_regs): New.
4958         (saved_reg_names): New.
4959         (save_register_info): New.
4960         (restore_register_info): New.
4961         (init_reg_sets_1): Replace reset of register info with call to
4962         restore_register_info.
4963         * rtl.h (save_register_info): Declare.
4964         * toplev.c (backend_init): Call save_register_info.
4965
4966 2007-08-30  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
4967
4968         * tree-ssa-propagate.c (set_rhs): Remove the copied annotation
4969         from the original statement.
4970
4971 2007-08-30  Chao-ying Fu  <fu@mips.com>
4972
4973         * c-lex.c (interpret_fixed): Declare.
4974         (interpret_float): Process _Fract and _Accum.
4975         (interpret_fixed): New function.
4976         * final.c (output_addr_const): Process CONST_FIXED.
4977         * simplify-rtx.c (simplify_const_unary_operation): Handle US_NEG.
4978         (simplify_binary_operation_1): Handle US_ASHIFT, SS_MULT, US_MULT,
4979         SS_DIV, US_DIV.
4980         (simplify_const_binary_operation): Handle SS_MULT, US_MULT, SS_DIV,
4981         US_DIV, US_ASHIFT.
4982         (simplify_immed_subreg): Support CONST_FIXED.
4983         Process MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
4984         (simplify_subreg): Support CONST_FIXED.
4985
4986 2007-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4987
4988         * config/rs6000/ppu_intrinsics.h: New file.
4989         * config.gcc (powerpc*-*-* <extra_headers>): Install
4990         ppu_intrinsics.h.
4991
4992 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
4993
4994         * cfg.c (dump_flow_info): Change to also print entry and exit
4995         block info.
4996         * print-rtl.c (print_rtl_single): Allow to print rtl with
4997         -fdump-unnumbered.
4998         
4999 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
5000
5001         * df-core.h (df_dump_region): New function.
5002         * df.h (df_dump_region): New function.
5003         * loop-invariant.c (find_defs): Add call to df_dump_region.
5004         * loop-iv.c (iv_analysis_loop_init): Changed call from df_dump to
5005         df_dump_region.
5006         
5007 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
5008
5009         PR target/33168
5010         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Return
5011         true if any of the compare_section_name calls returned true,
5012         rather than if any returned false.
5013
5014 2007-08-30  Richard Guenther  <rguenther@suse.de>
5015
5016         PR tree-optimization/33199
5017         * tree-ssa-structalias.c (handle_lhs_call): New function.
5018         (find_func_aliases): In non-IPA mode make sure that for
5019         calls that return a pointer we add a constraint for the
5020         result to point to anything.
5021
5022 2007-08-30  Richard Guenther  <rguenther@suse.de>
5023
5024         * doc/invoke.texi (-mveclibabi): Document new target option.
5025         * config/i386/i386.opt (-mveclibabi): New target option.
5026         * config/i386/i386.c (ix86_veclib_handler): Handler for
5027         vectorization library support.
5028         (override_options): Handle the -mveclibabi option, initialize
5029         the vectorization library handler.
5030         (ix86_builtin_vectorized_function): As fallback call the
5031         vectorization library handler, if set.
5032         (ix86_veclibabi_acml): New static function for ACML ABI style
5033         vectorization support.
5034
5035 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
5036
5037         * config/rs6000/rs6000.c (rs6000_emit_sync): For QI or HI mode
5038         used_m, even if it is 32-bit aligned, adjust used_m MEM to have
5039         SImode and update m.  Don't run gen_lowpart_common on arbitrary
5040         memory address, force it to register first.
5041
5042         PR middle-end/32758
5043         * dce.c (dce_process_block): Don't delete setters of
5044         artificially used registers.
5045
5046 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5047
5048         * config/s390/s390.md ("*add<mode>3_alc_carry1_cc",
5049         "*add<mode>3_alc_carry1_cconly", "*add<mode>3_alc_carry2_cc",
5050         "*add<mode>3_alc_carry2_cconly"): New insn definitions.
5051
5052 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5053
5054         * config/s390/s390.c (s390_expand_addcc): Emit canonical alc
5055         pattern.
5056         * config/s390/s390.md ("*add<mode>3_alc_cc", "*add<mode>3_alc",
5057         "addti3", "*adddi3_31z", "*scond<mode>"): Make alc pattern canonical.
5058
5059 2007-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5060
5061         * system.h: Activate -Wcast-qual as warning-only.
5062
5063 2007-08-29  Paolo Bonzini  <bonzini@gnu.org>
5064
5065         PR target/33168
5066         * config/rs6000/rs6000.c (compare_section_name): New function.
5067         (rs6000_elf_in_small_data_p): Compare section prefixes instead
5068         of full name.
5069
5070 2007-08-29  Olivier Hainque  <hainque@adacore.com>
5071
5072         * xcoffout.c: #include debug.h.
5073         * Makefile.in (xcoffout.o): Add debug.h dependency.
5074
5075 2007-08-29  Uros Bizjak  <ubizjak@gmail.com>
5076
5077         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
5078         Change CONST_VECTOR_ELT to XVECEXP in elem calculation.
5079
5080 2007-08-29  Richard Guenther  <rguenther@suse.de>
5081
5082         * tree-pretty-print.c (dump_generic_node): Print
5083         label DECL_UID as D.%u.
5084         * tree-dfa.c (dump_variable): Print DECL_UID as D.%u.
5085
5086 2007-08-29  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
5087
5088         * gcc/builtin-types.def (BT_FN_PTR_PTR_SIZE): New type.
5089         * gcc/builtins.def (BUILT_IN_REALLOC): New builtin.
5090
5091 2007-08-29  Douglas Gregor  <doug.gregor@gmail.com>
5092
5093         PR c++/33194
5094         * tree.c (build_type_attribute_qual_variant): Set canonical types
5095         on the final, unqualified attribute variant before building the
5096         qualified version.
5097
5098 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
5099
5100         * config/bfin/bfin.c (bfin_expand_builtin): Fix the argument
5101         order of __builtin_bfin_cmplx_mac and __builtin_bfin_cmplx_msu.
5102
5103 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
5104
5105         Revert
5106         2007-08-29  Jie Zhang  <jie.zhang@analog.com>
5107         * config/bfin/bfin.md (composev2hi): Put operands into vector
5108         with correct order.
5109
5110 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
5111
5112         * config/bfin/bfin.md (composev2hi): Put operands into vector
5113         with correct order.
5114
5115 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
5116
5117         * config/bfin/bfin.c (bfin_expand_call): Inline PLT with l1_text
5118         attribute when appropriate.
5119         (bfin_handle_l1_text_attribute): New.
5120         (bfin_handle_l1_data_attribute): New.
5121         (bfin_attribute_table): Add attributes: l1_text, l1_data,
5122         l1_data_A and l1_data_B.
5123         * doc/extend.texi (node Function Attributes): Document l1_text
5124         function attribute.
5125         (Variable Attributes): Add Blackfin subsection. Document l1_data,
5126         l1_data_A and l1_data_B variable attributes.
5127
5128 2007-08-28  Jie Zhang  <jie.zhang@analog.com>
5129
5130         * config/bfin/bfin.opt (minline-plt): Add.
5131         * config/bfin/bfin.c (bfin_expand_call): Inline PLT when emit
5132         call to global functions.
5133         * doc/invoke.texi (Option Summary): Mention -minline-plt.
5134         (Blackfin Options): Document -minline-plt.
5135
5136 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
5137
5138         * config/m68k/m68k.c (m68k_get_function_kind): Assert we're never
5139         given a non-function.
5140         (m68k_ok_for_sibcall_p): Only sibcall functions of the same kind.
5141
5142 2007-08-28  DJ Delorie  <dj@redhat.com>
5143
5144         * config/sh/sh.c (sh_gimplify_va_arg_expr): Fix sh2a support.
5145
5146 2007-08-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5147
5148         * system.h (CONST_CAST): Avoid union for gcc-4.0.x.
5149
5150 2007-08-28  Richard Guenther  <rguenther@suse.de>
5151
5152         * tree.h (struct tree_function_decl): Increase size of
5153         function_code bitfield.
5154
5155 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
5156             Kazu Hirata  <kazu@codesourcery.com>
5157
5158         * gcc/config/m68k/linux.h
5159         (M68K_HONOR_TARGET_STRICT_ALIGNMENT): Redefine as 0.
5160         * config/m68k/m68k.c (TARGET_RETURN_IN_MEMORY): New.
5161         (m68k_return_in_memory): New.
5162         * gcc/config/m68k/m68k.h (M68K_HONOR_TARGET_STRICT_ALIGNMENT):
5163         New.
5164
5165 2007-08-28  Uros Bizjak  <ubizjak@gmail.com>
5166
5167         PR target/32661
5168         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
5169         Simplify nested VEC_SELECT (with optional VEC_CONCAT operator as
5170         operand) when top VEC_SELECT extracts scalar element.
5171         * config/i386/sse.md (*vec_extract_v4si_mem): New pattern.
5172         (*vec_extract_v4sf_mem): Ditto.
5173
5174 2007-08-28  Jakub Jelinek  <jakub@redhat.com>
5175
5176         PR middle-end/32370
5177         * passes.c (init_optimization_passes): Move pass_df_finish
5178         after pass_postreload sublist.
5179
5180         PR rtl-optimization/33148
5181         * simplify-rtx.c (simplify_unary_operation_1): Only optimize
5182         (neg (lt X 0)) if X has scalar int mode.
5183
5184         PR debug/32914
5185         * dwarf2out.c (rtl_for_decl_init): If vector decl has CONSTRUCTOR
5186         initializer, use build_vector_from_ctor if possible to create
5187         VECTOR_CST out of it.  If vector initializer is not VECTOR_CST
5188         even after this, return NULL.
5189
5190 2007-08-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
5191
5192         * c-pretty-print.c (pp_c_constant): Handle COMPLEX_CST.
5193
5194 2007-08-28  Richard Guenther  <rguenther@suse.de>
5195
5196         * tree.h (DECL_DISREGARD_INLINE_LIMITS): New.
5197         (struct tree_function_decl): Make function_code a bitfield.
5198         Add disregard_inline_limits flag.
5199         * cgraphunit.c (cgraph_process_new_functions): Check
5200         DECL_DISREGARD_INLINE_LIMITS instead of disregard_inline_limits_p.
5201         (cgraph_preserve_function_body_p): Likewise.
5202         * ipa-inline.c (compute_inline_parameters): Likewise.
5203         * c-decl.c (finish_function): Set DECL_DISREGARD_INLINE_LIMITS
5204         for GNU C extern inline functions.
5205         (merge_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
5206         * tree-inline.c (disregard_inline_limits_p): Remove.
5207         * tree-inline.h (disregard_inline_limits_p): Likewise.
5208         * c-common.c (handle_always_inline_attribute): Set
5209         DECL_DISREGARD_INLINE_LIMITS.
5210         * langhooks.c (add_builtin_function): Verify the function code
5211         fits in the bitfield.
5212
5213 2007-08-28  Mircea Namolaru  <namolaru@il.ibm.com>
5214             Vladimir Yanovsky  <yanov@il.ibm.com>
5215             Revital Eres  <eres@il.ibm.com>
5216             Andrey Belevantsev  <abel@ispras.ru>
5217
5218         * config/spu/spu.md: Recognize doloop pattern when -fmodulo-sched
5219         is set.
5220         * modulo-sched.c: Add documentation regarding do-loop.
5221         (doloop_register_get): Change number of arguments to support
5222         the new do-loop pattern and check whether COUNT_REG has no other
5223         occurences in the loop besides in the control part.
5224         (duplicate_insns_of_cycles): Do not duplicate the insn which
5225         changes count_reg as it is already adjusted.
5226         (generate_prolog_epilog): New argument to support the new
5227         do-loop pattern.  Change the subtract instruction to use
5228         expand_simple_binop.  Call duplicate_insns_of_cycles with new
5229         argument.
5230         (sms_schedule): Call doloop_register_get and
5231         generate_prolog_epilog with new argument.  Do not handle loops
5232         with single sets insns with subreg in their lhs.
5233         * loop-doloop.c (doloop_optimize): Support for another do-loop
5234         pattern.
5235         (doloop_condition_get): Gets an instruction instead of a pattern
5236         and change the return condition when the do-loop pattern is
5237         not parallel.
5238         * ddg.c (create_ddg_dep_from_intra_loop_link): Handle only reg
5239         deps when considering to not create edges.
5240
5241 2007-08-27  Alexandre Oliva  <aoliva@redhat.com>
5242
5243         * doc/extend.texi (gnu_inline funtion attribute): Document C++
5244         behavior.
5245
5246 2007-08-27  Jason Merrill  <jason@redhat.com>
5247
5248         PR c++/31337
5249         * gimplify.c (gimplify_modify_expr): Discard the assignment of 
5250         zero-sized types after calling gimplify_modify_expr_rhs.
5251
5252 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
5253
5254         * regclass.c (init_reg_autoinc): Fix typo.
5255
5256 2007-08-27  Daniel Berlin  <dberlin@dberlin.org>
5257         
5258         Fix PR tree-optimization/33173
5259         * tree-ssa-alias.c (find_used_portions): Fix reversed test.
5260
5261 2007-08-27  H.J. Lu  <hongjiu.lu@intel.com>
5262
5263         PR target/31385
5264         * config/i386/i386.h (VALID_DFP_MODE_P): New.
5265         * config/i386/i386.c (ix86_hard_regno_mode_ok): Allow DFP in
5266         GPR.
5267
5268 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
5269             David Ung  <davidu@mips.com>
5270             Nigel Stephens <nigel@mips.com>
5271
5272         Separate target-specific initialization from general
5273         back-end initialization.
5274
5275         * toplev.c (init_alignments): New, split out from...
5276         (process_options): ...here.
5277         (backend_init_target): New, split out from...
5278         (backend_init): ...here.
5279         (lang_dependent_init_target): New, split out from...
5280         (lang_dependent_init): ...here.
5281         (target_reinit): New.
5282         * toplev.h (target_reinit): Declare.
5283         * expr.c (init_expr_target): Renamed from init_expr_once, since it
5284         now can be called more than once.  Update comments.
5285         * expr.h (init_expr_target): Likewise.
5286         * alias.c (init_alias_target): Renamed from init_alias_once, since it
5287         now can be called more than once.  Explicitly zero
5288         static_reg_base_value.
5289         * emit-rtl.c (init_emit_regs): New, split out from...
5290         (init_emit_once): Here.
5291         * regclass.c (initial_fixed_regs, initial_call_used_regs): Make
5292         non-const, so that changes from command-line arguments can overwrite
5293         values provided by the static initializers.
5294         (initial_call_really_used_regs): New, used similarly to the above.
5295         (initial_reg_names): Likewise.
5296         (last_mode_for_init_move_cost): Promoted function-local static to
5297         file-scope static to make it accessible outside init_move_cost.
5298         (init_reg_sets): Do not initialize fixed_regs and call_used_regs yet.
5299         Do not initialize inv_reg_alloc_order yet, either.  Do initialize
5300         reg_names since it is needed for parsing command-line options.
5301         (init_move_cost): Use last_mode_for_init_move_cost instead of
5302         function-local static.
5303         (init_reg_sets_1): Initialize fixed_regs, call_used_regs, and
5304         call_really_used_regs now.  Reinitialize reg_names.  Also
5305         initialize inv_reg_alloc_order.  Zero reg_class_subunion and
5306         reg_class_superunion.  Clear losing_caller_save_reg_set.
5307         Preserve global registers if called more than once.  Reset
5308         move cost, may_move_in_cost, may_move_out_cost, and
5309         last_mode_for_init_move_cost.
5310         (init_reg_modes_target): Renamed from init_reg_modes_once, since it
5311         can now be invoked more than once.  Update comments.
5312         (init_regs): Update comments.
5313         (fix_register): Update initial_fixed_regs, initial_call_used_regs,
5314         and initial_call_really_used_regs, instead of the non-initial 
5315         variables.  This allows us to save the command-line register settings
5316         after target reinitialization.
5317         (init_reg_autoinc): Zero forbidden_inc_dec_classes.
5318         * rtl.h (init_emit_regs): Declare.
5319         (init_reg_modes_target, init_alias_target): Renamed as described
5320         above.
5321         * reload1.c (init_reload): Update comments.
5322         * optabs.c (init_optabs): Likewise.
5323         * cfgloopanal.c (init_set_costs): Explicitly zero target_avail_regs.
5324         
5325 2007-08-26  Chao-ying Fu  <fu@mips.com>
5326
5327         * rtl.h (XCNMPFV): Preserve const-ness of parameters through use of
5328         __typeof().
5329
5330 2007-08-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5331
5332         * alias.c (memory_modified_1, memory_modified_in_insn_p):
5333         Constify.
5334         * basic-block.h (tree_predicted_by_p, rtl_predicted_by_p):
5335         Likewise.
5336         * bb-reorder.c (copy_bb_p): Likewise.
5337         * cfghooks.c (can_remove_branch_p, can_merge_blocks_p,
5338         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
5339         block_ends_with_condjump_p): Likewise.
5340         * cfghooks.h (can_remove_branch_p, can_merge_blocks_p,
5341         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
5342         block_ends_with_condjump_p): Likewise.
5343         * cfglayout.c (cfg_layout_can_duplicate_bb_p): Likewise.
5344         * cfgrtl.c (can_delete_note_p, can_delete_label_p,
5345         rtl_can_merge_blocks, cfg_layout_can_merge_blocks_p,
5346         rtl_block_ends_with_call_p, rtl_block_ends_with_condjump_p,
5347         need_fake_edge_p, rtl_can_remove_branch_p): Likewise.
5348         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Use
5349         debug_true_const_tree instad of debug_true_tree.
5350         * debug.c (do_nothing_debug_hooks): Likewise.
5351         * debug.h (ignore_block, debug_true_const_tree): Constify.
5352         * dwarf2out.c (stack_adjust_offset, clobbers_queued_reg_save,
5353         dwarf2out_ignore_block, is_pseudo_reg, is_tagged_type,
5354         decl_ultimate_origin, block_ultimate_origin, lookup_decl_loc,
5355         same_dw_val_p, add_ranges, is_subrange_type, type_is_enum,
5356         dbx_reg_number, is_based_loc, field_type,
5357         simple_type_align_in_bits, simple_decl_align_in_bits,
5358         simple_type_size_in_bits, field_byte_offset, insert_float,
5359         type_tag, member_declared_type, is_redundant_typedef,
5360         secname_for_decl, is_inlined_entry_point): Likewise.
5361         * emit-rtl.c (const_next_insn, const_previous_insn,
5362         const_next_nonnote_insn, const_prev_nonnote_insn,
5363         const_next_real_insn, const_prev_real_insn,
5364         const_next_active_insn, const_prev_active_insn, const_next_label,
5365         const_prev_label): Likewise.
5366         * except.h (lookup_stmt_eh_region_fn, lookup_stmt_eh_region):
5367         Likewise.
5368         * haifa-sched.c (may_trap_exp, haifa_classify_insn,
5369         find_set_reg_weight, no_real_insns_p, find_set_reg_weight,
5370         sched_insn_is_legitimate_for_speculation_p): Likewise.
5371         * jump.c (reversed_comparison_code_parts,
5372         reversed_comparison_code, reversed_comparison, condjump_label):
5373         Likewise.
5374         * predict.c (rtl_predicted_by_p, tree_predicted_by_p): Likewise.
5375         * reg-stack.c (stack_regs_mentioned_p, stack_regs_mentioned):
5376         Likewise.
5377         * rtl.h (const_previous_insn, const_next_insn,
5378         const_prev_nonnote_insn, const_next_nonnote_insn,
5379         const_prev_real_insn, const_next_real_insn,
5380         const_prev_active_insn, const_next_active_insn, const_prev_label,
5381         const_next_label, modified_between_p, modified_in_p,
5382         const_note_storeskeep_with_call_p, condjump_label,
5383         reversed_comparison, reversed_comparison_code,
5384         reversed_comparison_code_parts, memory_modified_in_insn_p,
5385         stack_regs_mentioned): Likewise.
5386         * rtlanal.c (modified_between_p, modified_in_p, const_note_stores,
5387         keep_with_call_p): Likewise.
5388         * sched-deps.c (deps_may_trap_p, sched_get_condition,
5389         conditions_mutex_p, sched_insns_conditions_mutex_psd_next_list,
5390         sd_lists_size, sd_lists_empty_p): Likewise.
5391         * sched-int.h (sched_insns_conditions_mutex_p,
5392         haifa_classify_insn, no_real_insns_p,
5393         sched_insn_is_legitimate_for_speculation_p, sd_next_list,
5394         sd_lists_size, sd_lists_empty_p): Likewise.
5395         * sdbout.c (sdb_debug_hooks): Likewise.
5396         * tree-cfg.c (tree_can_merge_blocks_p, is_ctrl_altering_stmt,
5397         stmt_ends_bb_p, tree_can_remove_branch_p, tree_can_duplicate_bb_p,
5398         -tree_block_ends_with_call_p, tree_block_ends_with_condjump_p):
5399         Likewise.
5400         * tree-eh.c (lookup_stmt_eh_region_fn, lookup_stmt_eh_region,
5401         tree_can_throw_internal): Likewise.
5402         * tree-flow-inline.h (phi_nodes): Likewise.
5403         * tree-flow.h (phi_nodesstmt_ends_bb_p, is_ctrl_altering_stmt,
5404         tree_can_throw_internal, lookup_stmt_eh_region): Likewise.
5405         * tree-gimple.c (const_get_call_expr_in): Likewise.
5406         * tree-gimple.h (const_get_call_expr_in): Likewise.
5407         * tree.c (const_lookup_attribute, attribute_list_equal,
5408         attribute_list_contained): Likewise.
5409         * tree.h (attribute_list_equal, attribute_list_contained,
5410         const_lookup_attribute): Likewise.
5411         * vmsdbgout.c (vmsdbgout_ignore_block): Likewise.
5412
5413 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
5414
5415         * tree-ssa-sccvn.c, tree-ssa-sccvn.h, tree-vn.c,
5416         tree-ssa-pre.c: Remove unnecessary trailing whitespace.
5417
5418 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
5419
5420         PR target/32991
5421         * config/alpha/constraints.md: Delete "svn:mime-type" property
5422         with svn propdel "svn:mime-type".
5423
5424 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
5425
5426         PR middle-end/33181
5427         * ifcvt.c (noce_get_alt_condition): Make sure that the previous
5428         non NOTE insn doesn't cross basic block.
5429         (noce_try_abs): Likewise.
5430         (noce_process_if_block): Likewise.
5431
5432 2007-08-26  David Edelsohn  <edelsohn@gnu.org>
5433
5434         PR target/33151
5435         * config/rs6000/predicates.md (offsettable_mem_operand): Memory
5436         operand without auto-inc-dec.
5437         * config/rs6000/rs6000.md (floatsidf2_internal): Use
5438         offsettable_mem_operand.
5439         (floatunssidf2_internal): Same.
5440         (fix_truncdfsi2_internal): Same.
5441         (floatsidf_ppc64): Same.
5442         (floatunssidf_ppc64): Same.
5443         (fix_trunctfsi2_internal): Same.
5444
5445 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
5446
5447         PR bootstrap/30620
5448         * Makefile.in (libbackend.o): Add gcov-iov.h dependency and
5449         pass defines needed for version.c.
5450
5451 2007-08-25  Joseph Myers  <joseph@codesourcery.com>
5452
5453         * configure.ac (--debug-prefix-map check): Change assembler
5454         version presumed to have feature to 2.18.
5455         * configure: Regenerate.
5456
5457 2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5458
5459         * c-common.c (vector_types_convertible_p,
5460         decl_with_nonnull_addr_p, c_promoting_integer_type_p,
5461         self_promoting_args_p): Constify.
5462         * c-common.h (has_c_linkage, decl_with_nonnull_addr_p,
5463         c_promoting_integer_type_p, self_promoting_args_p,
5464         anon_aggr_type_p, vector_types_convertible_p): Likewise.
5465         * c-decl.c (anon_aggr_type_p): Likewise.
5466         * * c-dump.c (dump_stmt): Likewise.
5467         * c-objc-common.c (has_c_linkage): Likewise.
5468         * c-tree.h (same_translation_unit_p): Likewise.
5469         * c-typeck.c (null_pointer_constant_p,
5470         tagged_types_tu_compatible_p, function_types_compatible_p,
5471         type_lists_compatible_p, lvalue_or_else, lvalue_p,
5472         comptypes_internal, struct tagged_tu_seen_cache,
5473         same_translation_unit_p, alloc_tagged_tu_seen_cache,
5474         c_size_in_bytes): Likewise.
5475         * ggc-common.c (compare_ptr_data, hash_descriptor, eq_descriptor,
5476         hash_ptr, eq_ptr): Likewise.
5477         * langhooks-def.h (lhd_decl_ok_for_sibcall,
5478         LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Likewise.
5479         * langhooks.c (lhd_decl_ok_for_sibcall): Likewise.
5480         * langhooks.h (ok_for_sibcall, omp_privatize_by_reference):
5481         Likewise.
5482         * optabs.c (optab_for_tree_code): Likewise.
5483         * optabs.h (optab_for_tree_code): Likewise.
5484         * rtl.h (simplify_rtx): Likewise.
5485         * simplify-rtx.c (simplify_rtx): Likewise.
5486         * tree-dump.c (queue, queue_and_dump_index, queue_and_dump_type,
5487         dump_flag, dump_node): Likewise.
5488         * tree-dump.h (struct dump_info, dump_stmt, queue_and_dump_index,
5489         queue_and_dump_type, dump_flag): Likewise.
5490         * tree-flow.h (vect_can_force_dr_alignment_p): Likewise.
5491         * tree-pass.h (dump_node): Likewise.
5492         * tree-vectorizer.c (vect_can_force_dr_alignment_p,
5493         supportable_narrowing_operation): Likewise.
5494         * tree-vectorizer.h (vect_can_force_dr_alignment_p,
5495         supportable_narrowing_operation): Likewise.
5496         * tree-vrp.c (needs_overflow_infinity, supports_overflow_infinity,
5497         is_negative_overflow_infinity, is_positive_overflow_infinity,
5498         is_overflow_infinity, vrp_val_is_max, vrp_val_is_min,
5499         nonnull_arg_p, get_value_range, vrp_operand_equal_p,
5500         update_value_range, add_equivalence, ssa_name_nonnegative_p,
5501         ssa_name_nonzero_p, fp_predicate): Likewise.
5502         * tree.c (auto_var_in_fn_p, empty_body_p): Likewise.
5503         * tree.h (empty_body_p, auto_var_in_fn_p, ssa_name_nonzero_p,
5504         ssa_name_nonnegative_p): Likewise.
5505
5506 2007-08-25  Hans Kester  <hans.kester@ellips.nl>
5507
5508         * config.gcc : Add x86_64-elf target.
5509
5510 2007-08-25  Jakub Jelinek  <jakub@redhat.com>
5511
5512         * expr.c (store_expr): Fix order of store_by_pieces arguments.
5513
5514 2007-08-24  Sandra Loosemore  <sandra@codesourcery.com>
5515             Nigel Stephens <nigel@mips.com>
5516
5517         PR target/11787
5518
5519         * doc/tm.texi (SET_RATIO, SET_BY_PIECES_P): Document new macros.
5520         (STORE_BY_PIECES_P): No longer applies to __builtin_memset.
5521         * expr.c (SET_BY_PIECES_P): Define.
5522         (can_store_by_pieces, store_by_pieces): Add MEMSETP argument; use
5523         it to decide whether to use SET_BY_PIECES_P or STORE_BY_PIECES_P.
5524         (store_expr): Pass MEMSETP argument to can_store_by_pieces and
5525         store_by_pieces.
5526         * expr.h (SET_RATIO): Define.
5527         (can_store_by_pieces, store_by_pieces): Update prototypes.
5528         * builtins.c (expand_builtin_memcpy): Pass MEMSETP argument to
5529         can_store_by_pieces/store_by_pieces.
5530         (expand_builtin_memcpy_args): Likewise.
5531         (expand_builtin_strncpy): Likewise.
5532         (expand_builtin_memset_args): Likewise.  Also remove special case
5533         for optimize_size so that can_store_by_pieces/SET_BY_PIECES_P can
5534         decide what to do instead.
5535         * value-prof.c (tree_stringops_transform): Pass MEMSETP argument
5536         to can_store_by_pieces.
5537
5538         * config/sh/sh.h (SET_BY_PIECES_P): Clone from STORE_BY_PIECES_P.
5539         * config/s390/s390.h (SET_BY_PIECES_P): Likewise.
5540
5541         * config/mips/mips.opt (mmemcpy): Change from Var to Mask.
5542         * config/mips/mips.c (override_options): Make -Os default to -mmemcpy.
5543         * config/mips/mips.h (MIPS_CALL_RATIO): Define.
5544         (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Define.
5545         (STORE_BY_PIECES_P): Define.
5546
5547 2007-08-24  Tom Tromey  <tromey@redhat.com>
5548
5549         * varpool.c (varpool_last_needed_node): Fix comment typo.
5550         * c-decl.c (duplicate_decls): Fix comment typo.
5551         (clone_underlying_type): Update comment.
5552
5553 2007-08-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5554
5555         * config/alpha/alpha.c (alpha_mangle_type, decl_has_samegp,
5556         alpha_in_small_data_p, alpha_split_complex_arg,
5557         alpha_stdarg_optimize_hook, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
5558         Constify.
5559         * config/arm/arm-protos.h (arm_mangle_type): Likewise.
5560         * config/arm/arm.c (arm_comp_type_attributes, arm_mangle_type):
5561         Likewise.
5562         * config/bfin/bfin.c (funkind, bfin_comp_type_attributes,
5563         TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
5564         * config/darwin-protos.h (darwin_binds_local_p): Likewise.
5565         * config/darwin.c (darwin_binds_local_p): Likewise.
5566         * config/frv/frv.c (frv_string_begins_with, frv_in_small_data_p):
5567         Likewise.
5568         * config/i386/i386-protos.h (i386_pe_binds_local_p,
5569         i386_pe_valid_dllimport_attribute_p): Likewise.
5570         * config/i386/i386.c (ix86_function_regparm,
5571         ix86_comp_type_attributes, ix86_ms_bitfield_layout_p,
5572         x86_can_output_mi_thunk, ix86_mangle_type,
5573         TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
5574         * config/i386/winnt.c (i386_pe_valid_dllimport_attribute_p,
5575         i386_pe_binds_local_p): Likewise.
5576         * config/ia64/ia64.c
5577         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec,
5578         ia64_needs_block_p, ia64_in_small_data_p, ia64_mangle_type,
5579         ia64_invalid_conversion, ia64_invalid_unary_op,
5580         ia64_invalid_binary_op, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
5581         Likewise.
5582         * config/m32c/m32c.c (m32c_comp_type_attributes): Likewise.
5583         * config/m32r/m32r.c (m32r_in_small_data_p): Likewise.
5584         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
5585         * config/mips/mips.c (mips_use_blocks_for_constant_p,
5586         mips_in_small_data_p, mips_use_anchors_for_symbol_p,
5587         mips_comp_type_attributes, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
5588         mips_near_type_p, mips_far_type_p, mips_global_symbol_p,
5589         mips_symbol_binds_local_p, mips_classify_symbol): Likewise.
5590         * config/pa/pa.c (pa_commutative_p): Likewise.
5591         * config/rs6000/rs6000-protos.h (rs6000_elf_in_small_data_p):
5592         Likewise.
5593         * config/rs6000/rs6000.c (rs6000_invalid_within_doloop,
5594         rs6000_ms_bitfield_layout_p, rs6000_mangle_type,
5595         rs6000_use_blocks_for_constant_p,
5596         rs6000_vector_alignment_reachable, rs6000_is_opaque_type,
5597         invalid_arg_for_unprototyped_fn, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
5598         TARGET_SPLIT_COMPLEX_ARG, rs6000_elf_in_small_data_p): Likewise.
5599         * config/s390/s390.c (s390_mangle_type,
5600         TARGET_ASM_CAN_OUTPUT_MI_THUNK, TARGET_INVALID_WITHIN_DOLOOP):
5601         Likewise.
5602         * config/score/score.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
5603         th_in_small_data_p): Likewise.
5604         * config/sh/sh.c (sh_ms_bitfield_layout_p,
5605         sh_dwarf_calling_convention, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
5606         Likewise.
5607         * config/sparc/sparc.c (sparc_can_output_mi_thunk,
5608         sparc_mangle_type): Likewise.
5609         * config/spu/spu.c (spu_vector_alignment_reachable): Likewise.
5610         * config/xtensa/xtensa.c (TARGET_SPLIT_COMPLEX_ARG): Likewise.
5611         * emit-rtl.c (const_fixed_htab_hash, const_fixed_htab_eq):
5612         Likewise.
5613         * hooks.c (hook_bool_mode_const_rtx_false,
5614         hook_bool_mode_const_rtx_true,
5615         hook_bool_const_tree_hwi_hwi_const_tree_false,
5616         hook_bool_const_tree_hwi_hwi_const_tree_true,
5617         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
5618         hook_constcharptr_const_tree_null,
5619         hook_constcharptr_const_rtx_null,
5620         hook_constcharptr_const_tree_const_tree_null,
5621         hook_constcharptr_int_const_tree_null,
5622         hook_constcharptr_int_const_tree_const_tree_null): New.
5623         (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
5624         hook_bool_tree_hwi_hwi_tree_false,
5625         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
5626         hook_int_tree_tree_1, hook_constcharptr_tree_null,
5627         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
5628         hook_constcharptr_int_tree_null,
5629         hook_constcharptr_int_tree_tree_null): Delete.
5630         (default_can_output_mi_thunk_no_vcall): Constify.
5631         * hooks.h (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
5632         hook_bool_tree_hwi_hwi_tree_false,
5633         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
5634         hook_int_tree_tree_1, hook_constcharptr_tree_null,
5635         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
5636         hook_constcharptr_int_tree_null,
5637         hook_constcharptr_int_tree_tree_null): Delete.
5638         (hook_bool_mode_const_rtx_false, hook_bool_mode_const_rtx_true,
5639         hook_bool_const_tree_hwi_hwi_const_tree_false,
5640         hook_bool_const_tree_hwi_hwi_const_tree_true,
5641         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
5642         hook_constcharptr_const_tree_null,
5643         hook_constcharptr_const_rtx_null,
5644         hook_constcharptr_const_tree_const_tree_null,
5645         hook_constcharptr_int_const_tree_null,
5646         hook_constcharptr_int_const_tree_const_tree_null): New.
5647         (default_can_output_mi_thunk_no_vcall): Constify.
5648         * integrate.c (function_attribute_inlinable_p): Likewise.
5649         * integrate.h (function_attribute_inlinable_p): Likewise.
5650         * jump.c (rtx_renumbered_equal_p): Likewise.
5651         * output.h (decl_readonly_section, categorize_decl_for_section,
5652         default_use_anchors_for_symbol_p, default_binds_local_p,
5653         default_binds_local_p_1): Likewise.
5654         * rtl.h (rtx_renumbered_equal_p, decl_default_tls_model):
5655         Likewise.
5656         * target-def.h (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
5657         TARGET_VALID_DLLIMPORT_ATTRIBUTE_P, TARGET_VECTOR_OPAQUE_P,
5658         TARGET_COMMUTATIVE_P, TARGET_USE_BLOCKS_FOR_CONSTANT_P,
5659         TARGET_COMP_TYPE_ATTRIBUTES,
5660         TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P,
5661         TARGET_MS_BITFIELD_LAYOUT_P, TARGET_MANGLE_TYPE,
5662         TARGET_IN_SMALL_DATA_P, TARGET_INVALID_CONVERSION,
5663         TARGET_INVALID_UNARY_OP, TARGET_INVALID_BINARY_OP,
5664         TARGET_DWARF_CALLING_CONVENTION): Likewise.
5665         * target.h (can_output_mi_thunk, needs_block_p,
5666         first_cycle_multipass_dfa_lookahead_guard_spec,
5667         vector_alignment_reachable, comp_type_attributes,
5668         function_attribute_inlinable_p, ms_bitfield_layout_p, mangle_type,
5669         commutative_p, use_blocks_for_constant_p,
5670         use_anchors_for_symbol_p, in_small_data_p, binds_local_p,
5671         vector_opaque_p, dwarf_calling_convention, stdarg_optimize_hook,
5672         invalid_within_doloop, valid_dllimport_attribute_p,
5673         split_complex_arg, invalid_arg_for_unprototyped_fn,
5674         invalid_conversion, invalid_unary_op, invalid_binary_op):
5675         Likewise.
5676         * targhooks.c (default_invalid_within_doloop,
5677         hook_invalid_arg_for_unprototyped_fn,
5678         default_builtin_vector_alignment_reachable): Likewise.
5679         (hook_bool_rtx_commutative_p): Delete.
5680         (hook_bool_const_rtx_commutative_p): New.
5681         * targhooks.h (default_invalid_within_doloop,
5682         default_builtin_vector_alignment_reachable,
5683         hook_invalid_arg_for_unprototyped_fn): Constify.
5684         (hook_bool_rtx_commutative_p): Delete.
5685         (hook_bool_const_rtx_commutative_p): New.
5686         * varasm.c (bss_initializer_p, decl_default_tls_model,
5687         categorize_decl_for_section, decl_readonly_section,
5688         default_use_anchors_for_symbol_p, default_binds_local_p,
5689         default_binds_local_p_1): Constify.
5690
5691 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
5692
5693         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
5694         __NO_BUILTIN if -fno-builtin.
5695
5696 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
5697
5698         * config/bfin/bfin.c (print_operand): Report error instead of
5699         ICE for wrong operand.
5700
5701 2007-08-24  Michael Matz  <matz@suse.de>
5702
5703         * Makefile.in (GTFILES_H): Use $(patsubst) instead of $(subst).
5704
5705 2007-08-24  Richard Guenther  <rguenther@suse.de>
5706
5707         PR middle-end/33166
5708         * tree-ssa.c (useless_type_conversion_p): Split into a
5709         recursive and a non-recursive part.
5710         (useless_type_conversion_p_1): New function.
5711         * tree-ssa-ccp.c (fold_stmt_r): Make sure that the result
5712         from maybe_fold_offset_to_reference is trivially convertible
5713         to the desired type before doing the simplification.
5714
5715 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
5716
5717         * expr.c (store_expr): Optimize initialization of an array
5718         with STRING_CST.
5719         * expr.h (builtin_strncpy_read_str): New prototype.
5720         * builtins.c (builtin_strncpy_read_str): Remove prototype.
5721         No longer static.
5722
5723 2007-08-24  Uros Bizjak  <ubizjak@gmail.com>
5724
5725         PR middle-end/33157
5726         * ifcvt.c (noce_find_if_block): Do not clear if_info.cond_earliest
5727         field when initializing if_info structure.
5728
5729 2007-08-24  Richard Guenther  <rguenther@suse.de>
5730
5731         * Makefile.in (tree-inline.o): Add $(TARGET_H) and $(INTEGRATE_H)
5732         dependencies.
5733         * c-objc-common.c (c_cannot_inline_tree_fn): Remove.
5734         * langhooks.c (lhd_tree_inlining_cannot_inline_tree_fn): Likewise.
5735         * tree-inline.c (inlinable_function_p): Fold in common parts of
5736         the cannot_inline_tree_fn langhook.
5737         * langhooks-def.h (lhd_tree_inlining_cannot_inline_tree_fn): Remove.
5738         (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN): Likewise.
5739         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
5740         cannot_inline_tree_fn langhook.
5741         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
5742         cannot_inline_tree_fn member.
5743
5744 2007-08-24  Richard Guenther  <rguenther@suse.de>
5745
5746         * expr.c (get_inner_reference): Do computation of bitoffset
5747         from offset in a way we can detect overflow reliably.
5748
5749 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
5750
5751         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define for uClibc.
5752
5753 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
5754
5755         * config/bfin/bfin.opt (mfast-fp): Add.
5756         * config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Let
5757         libbffastfp override libgcc if -mfast-fp.
5758         * config/bfin/bfin.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
5759         * doc/invoke.texi (Option Summary): Mention -mfast-fp.
5760         (Blackfin Options): Document -mfast-fp.
5761
5762 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
5763
5764         PR tree-optimization/32573
5765         PR middle-end/32946
5766         * tree-data-ref.c (initialize_data_dependence_relation): Clear
5767         DDR_SUBSCRIPTS, DDR_DIR_VECTS and DDR_DIST_VECTS at the beginning.
5768         (finalize_ddr_dependent): Clear DDR_SUBSCRIPTS after freeing it.
5769         (build_classic_dist_vector): Return false rather than true if
5770         DDR_ARE_DEPENDENT is non-NULL at the beginning.  Return false
5771         if either subscript_dependence_tester_1 or build_classic_dist_vector_1
5772         returned false.  Don't call save_dist_v before calling
5773         build_classic_dist_vector_1.
5774         (free_dependence_relation): Don't guard freeing DDR_SUBSCRIPTS
5775         with NULL DDR_ARE_DEPENDENT.  Also free DDR_DIST_VECTS and/or
5776         DDR_DIR_VECTS vectors.
5777
5778 2007-08-23  Brian Sidebotham  <brian.sidebotham@gmail.com>
5779
5780         * configure.ac (leb128): Modify sed statement to work with any
5781         binutils version string.
5782         * configure: Regenerate
5783
5784 2007-08-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5785
5786         * config/arc/arc-protos.h arc_select_cc_mode, gen_compare_reg):
5787         Wrap in RTX_CODE macro guard.
5788         * config/arm/pe.c (arm_dllexport_p, arm_dllimport_p,
5789         arm_dllexport_name_p, arm_dllimport_name_p, arm_mark_dllexport,
5790         arm_mark_dllimport, arm_pe_encode_section_info,
5791         arm_pe_unique_section): Use ISO-C function declarations.
5792         * config/c4x/c4x-c.c (c4x_parse_pragma, c4x_pr_CODE_SECTION,
5793         c4x_pr_DATA_SECTION, c4x_pr_FUNC_IS_PURE,
5794         c4x_pr_FUNC_NEVER_RETURNS, c4x_pr_INTERRUPT, c4x_pr_ignored):
5795         Likewise.
5796         * config/iq2000/iq2000.h (ASM_OUTPUT_SKIP): Fix format warning.
5797         * config/m68hc11/m68hc11.h (ASM_OUTPUT_EXTERNAL): Undef before
5798         defining.
5799         * config/mips/mips.h (ASM_DECLARE_OBJECT_NAME): Fix format
5800         warnings.
5801         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Likewise.
5802         * config/pdp11/pdp11.c (pdp11_output_function_epilogue): Likewise.
5803         (register_move_cost): Use ISO-C function declarations.
5804         * config/pdp11/pdp11.h (PRINT_OPERAND): Fix format warnings.
5805         * config/score/score-protos.h (score_declare_object): Add
5806         ATTRIBUTE_PRINTF_4.
5807         * config/score/score.h (ASM_DECLARE_OBJECT_NAME): Fix format
5808         warnings.
5809         * final.c (profile_function): Avoid empty if-bodies.
5810         
5811         
5812         * calls.c (must_pass_in_stack_var_size,
5813         must_pass_in_stack_var_size_or_pad): Constify.
5814         * config/alpha/alpha-protos.h (function_value): Likewise.
5815         * config/alpha/alpha.c (alpha_return_in_memory,
5816         alpha_pass_by_reference, function_value,
5817         unicosmk_must_pass_in_stack, TARGET_PROMOTE_FUNCTION_ARGS,
5818         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
5819         Likewise.
5820         * config/arc/arc.c (arc_return_in_memory, arc_pass_by_reference,
5821         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
5822         TARGET_PROMOTE_PROTOTYPES): Likewise.
5823         * config/arm/arm-protos.h (arm_return_in_memory,
5824         arm_pad_arg_upward, arm_function_value): Likewise.
5825         * config/arm/arm.c (arm_pass_by_reference,
5826         arm_promote_prototypes, arm_return_in_msb, arm_must_pass_in_stack,
5827         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
5828         arm_function_value, arm_return_in_memory, arm_pad_arg_upward):
5829         Likewise.
5830         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
5831         * config/avr/avr-protos.h (avr_function_value): Likewise.
5832         * config/avr/avr.c (avr_return_in_memory,
5833         gas_output_limited_string, gas_output_ascii, avr_function_value,
5834         avr_return_in_memory): Likewise.
5835         * config/bfin/bfin-protos.h (bfin_return_in_memory): Likewise.
5836         * config/bfin/bfin.c (bfin_pass_by_reference,
5837         bfin_return_in_memory, TARGET_PROMOTE_PROTOTYPES,
5838         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN):
5839         Likewise.
5840         * config/cris/cris.c (cris_pass_by_reference,
5841         TARGET_PROMOTE_FUNCTION_ARGS): Likewise.
5842         * config/crx/crx.c (crx_return_in_memory): Likewise.
5843         * config/darwin.c (function_base, machopic_function_base_name):
5844         Likewise.
5845         * config/fr30/fr30.c (fr30_must_pass_in_stack,
5846         TARGET_PROMOTE_PROTOTYPES): Likewise.
5847         * config/frv/frv.c (frv_must_pass_in_stack): Likewise.
5848         * config/h8300/h8300.c (h8300_return_in_memory): Likewise.
5849         * config/i386/i386-protos.h (ix86_return_in_memory,
5850         ix86_sol10_return_in_memory): Likewise.
5851         * config/i386/i386.c (ix86_function_value,
5852         ix86_function_sseregparm, ix86_must_pass_in_stack,
5853         type_natural_mode, classify_argument, examine_argument,
5854         construct_container, ix86_pass_by_reference, function_value_32,
5855         function_value_64, ix86_function_value_1, return_in_memory_32,
5856         return_in_memory_64, return_in_memory_ms_64,
5857         ix86_return_in_memory, ix86_sol10_return_in_memory,
5858         TARGET_PROMOTE_PROTOTYPES): Likewise.
5859         * config/ia64/ia64-protos.h (ia64_function_value,
5860         ia64_hpux_function_arg_padding): Likewise.
5861         * config/ia64/ia64.c (hfa_element_mode, ia64_return_in_memory,
5862         ia64_function_value, bundle_state_hash, bundle_state_eq_p,
5863         ia64_hpux_function_arg_padding): Likewise.
5864         * config/iq2000/iq2000-protos.h (function_arg,
5865         iq2000_function_value): Likewise.
5866         * config/iq2000/iq2000.c (iq2000_return_in_memory,
5867         iq2000_pass_by_reference, TARGET_PROMOTE_FUNCTION_ARGS,
5868         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
5869         function_arg, iq2000_function_value): Likewise.
5870         * config/m32c/m32c-protos.h (m32c_function_value,
5871         m32c_promote_function_return): Likewise.
5872         * config/m32c/m32c.c (m32c_pass_by_reference,
5873         m32c_promote_prototypes, m32c_promote_function_return,
5874         m32c_function_value): Likewise.
5875         * config/m32r/m32r.c (m32r_return_in_memory,
5876         m32r_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
5877         m32r_in_small_data_p): Likewise.
5878         * config/m68hc11/m68hc11-protos.h (m68hc11_function_arg_padding):
5879         Likewise.
5880         * config/m68hc11/m68hc11.c (m68hc11_return_in_memory,
5881         m68hc11_function_arg_padding): Likewise.
5882         * config/m68k/m68k-protos.h (m68k_function_value): Likewise.
5883         * config/m68k/m68k.c (TARGET_PROMOTE_PROTOTYPES,
5884         m68k_function_value): Likewise.
5885         * config/mcore/mcore-protos.h (mcore_num_arg_regs,
5886         mcore_function_value): Likewise.
5887         * config/mcore/mcore.c (handle_structs_in_regs,
5888         mcore_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
5889         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
5890         mcore_num_arg_regs, mcore_function_value): Likewise.
5891         * config/mips/mips-protos.h (mips_pad_arg_upward,
5892         mips_function_value): Likewise.
5893         * config/mips/mips.c (mips_fpr_return_fields, mips_return_in_msb,
5894         mips_return_in_memory, mips_pass_by_reference, mips_callee_copies,
5895         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
5896         TARGET_PROMOTE_PROTOTYPES, mips_pad_arg_upward,
5897         mips_function_value): Likewise.
5898         * config/mmix/mmix-protos.h (mmix_function_outgoing_value):
5899         Likewise.
5900         * config/mmix/mmix.c (mmix_pass_by_reference,
5901         TARGET_PROMOTE_FUNCTION_ARGS, mmix_function_outgoing_value,
5902         mmix_encode_section_info): Likewise.
5903         * config/mn10300/mn10300-protos.h (mn10300_function_value):
5904         Likewise.
5905         * config/mn10300/mn10300.c (mn10300_return_in_memory,
5906         mn10300_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
5907         mn10300_function_value): Likewise.
5908         * config/mt/mt-protos.h (mt_function_value): Likewise.
5909         * config/mt/mt.c (mt_pass_by_reference, mt_function_value,
5910         mt_pass_in_stack, TARGET_PROMOTE_PROTOTYPES): Likewise.
5911         * config/pa/pa-protos.h (function_arg_padding, function_value,
5912         pa_return_in_memory): Likewise.
5913         * config/pa/pa.c (pa_pass_by_reference,
5914         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
5915         function_arg_padding, function_value, pa_return_in_memory):
5916         Likewise.
5917         * config/pdp11/pdp11.c (pdp11_return_in_memory): Likewise.
5918         * config/rs6000/rs6000-protos.h (rs6000_function_value,
5919         function_arg_padding): Likewise.
5920         * config/rs6000/rs6000.c (rs6000_return_in_memory,
5921         rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
5922         rs6000_pass_by_reference, rs6000_must_pass_in_stack,
5923         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
5924         function_arg_padding, altivec_expand_dst_builtin,
5925         altivec_expand_builtin, rs6000_expand_builtin, spe_init_builtins,
5926         altivec_init_builtins, rs6000_common_init_builtins,
5927         rs6000_function_value): Likewise.
5928         * s390/s390-protos.h (s390_function_value): Likewise.
5929         * config/s390/s390.c (s390_function_arg_size,
5930         s390_pass_by_reference, s390_return_in_memory,
5931         s390_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
5932         TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
5933         * config/score/score-protos.h (score_function_value): Likewise.
5934         * config/score/score.c (score_arg_partial_bytes,
5935         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
5936         TARGET_PROMOTE_PROTOTYPES, score_return_in_memory,
5937         score_pass_by_reference, score_add_offset, score_function_value):
5938         Likewise.
5939         * config/sh/sh-protos.h (sh_attr_renesas_p,
5940         sh_promote_prototypes): Likewise.
5941         * config/sh/sh.c (sh_return_in_memory, sh_pass_by_reference,
5942         sh_callee_copies, sh_promote_prototypes, shcompact_byref,
5943         sh_attr_renesas_p): Likewise.
5944         * config/sparc/sparc-protos.h (function_value,
5945         function_arg_padding): Likewise.
5946         * config/sparc/sparc.c (sparc_promote_prototypes,
5947         sparc_return_in_memory, sparc_pass_by_reference,
5948         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
5949         function_arg_record_value_2, function_arg_record_value_1,
5950         function_arg_record_value, function_arg_record_value,
5951         function_arg_padding, function_value): Likewise.
5952         * config/spu/spu-protos.h (spu_function_value): Likewise.
5953         * config/spu/spu.c (spu_pass_by_reference, spu_return_in_memory,
5954         spu_function_value): Likewise.
5955         * config/stormy16/stormy16-protos.h (xstormy16_function_value):
5956         Likewise.
5957         * config/stormy16/stormy16.c (xstormy16_return_in_memory,
5958         xstormy16_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
5959         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
5960         Likewise.
5961         * config/v850/v850.c (v850_return_in_memory,
5962         v850_pass_by_reference, TARGET_PROMOTE_PROTOTYPES): Likewise.
5963         * config/vax/vax.c (TARGET_PROMOTE_PROTOTYPES): Likewise.
5964         * config/xtensa/xtensa.c (xtensa_return_in_msb,
5965         xtensa_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
5966         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
5967         Likewise.
5968         * explow.c (promote_mode, hard_function_value): Likewise.
5969         * expr.h (hard_function_value, promote_mode): Likewise.
5970         * function.c (aggregate_value_p): Likewise.
5971         * hooks.c (hook_bool_const_tree_true): New.
5972         * hooks.h (hook_bool_const_tree_true): New.
5973         * sdbout.c (SET_KNOWN_TYPE_TAG, plain_type_1): Constify.
5974         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
5975         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
5976         TARGET_RETURN_IN_MSB): Likewise.
5977         * target.h (promote_function_args, promote_function_return,
5978         promote_prototypes, return_in_memory, return_in_msb,
5979         pass_by_reference, must_pass_in_stack, callee_copies,
5980         function_value): Likewise.
5981         * targhooks.c (default_return_in_memory,
5982         hook_pass_by_reference_must_pass_in_stack,
5983         hook_callee_copies_named,
5984         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
5985         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
5986         default_function_value): Likewise. 
5987         * targhooks.h (default_return_in_memory,
5988         hook_pass_by_reference_must_pass_in_stack,
5989         hook_callee_copies_named,
5990         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
5991         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
5992         default_function_value): Likewise.
5993         * tree-ssa-structalias.c (const_equiv_class_label_t): New.
5994         (equiv_class_label_hash, equiv_class_label_eq): Constify.
5995         * tree-vectorizer.c (bb_in_loop_p): Likewise.
5996         * tree.c (needs_to_live_in_memory): Likewise.
5997         * tree.h (struct tree_type, needs_to_live_in_memory,
5998         aggregate_value_p, must_pass_in_stack_var_size,
5999         must_pass_in_stack_var_size_or_pad): Likewise.
6000         * vmsdbgout.c (write_debug_addr, write_debug_delta4,
6001         write_debug_string, ASM_OUTPUT_DEBUG_STRING, write_rtnbeg,
6002         lookup_filename): Likewise.
6003
6004 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
6005
6006         PR target/17390
6007         * config/i386/i386.c (ix86_expand_fp_compare): Expand fp comparison to
6008         fake fcomi i387 instruction for !TARGET_CMOVE.
6009         (ix86_expand_branch): Expand natural sequence with one jump for
6010         all targets, not only TARGET_CMOVE.
6011         * config/i386/i386.md (*cmpfp_0_cc): New define_insn_and_split
6012         pattern to implement fake fcomi sequence.  Split instruction after
6013         reload to correct compare sequences.
6014         (*cmpfp_xf_cc): Ditto.
6015         (*cmpfp_<mode>_cc): Ditto.
6016         (*cmpfp_u_cc): Ditto.
6017         (*cmpfp_<mode>_cc): Ditto.
6018
6019 2007-08-23  Richard Guenther  <rguenther@suse.de>
6020
6021         * tree-pretty-print.c (dump_generic_node): Annotate
6022         GIMPLE_MODIFY_STMTs with volatile ops with "{v}".
6023
6024 2007-08-23  Richard Guenther  <rguenther@suse.de>
6025
6026         * builtins.c (expand_builtin_mathfn): Wrap argument in
6027         save_expr directly instead of re-building the call.
6028         (expand_builtin_mathfn_2): Likewise.
6029         (expand_builtin_mathfn_3): Likewise.
6030         (expand_builtin_interclass_mathfn): Likewise.
6031         (expand_builtin_int_roundingfn): Set arg.
6032         (expand_builtin_int_roundingfn_2): Likewise.
6033
6034 2007-08-23  Paolo Bonzini  <bonzini@gnu.org>
6035
6036         * config/i386/sse.md (*sse_and<mode>3, *sse_ior<mode>3,
6037         *sse_nand<mode>3, *sse_xor<mode>3): New.
6038
6039 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
6040
6041         * config/i386/i386.h (PRINT_OPERAND_PUNCT_VALID_P): Add ';' code.
6042         * config/i386/i386.c (print_operand): Handle ';' code.  Output
6043         semicolon for TARGET_MACHO.
6044         * config/i386/sync.md (*sync_compare_and_swap<mode>): Use '%;' to
6045         emit semicolon after 'lock' prefix.
6046         (sync_double_compare_and_swap<mode>): Ditto.
6047         (*sync_double_compare_and_swapdi_pic): Ditto.
6048         (*sync_compare_and_swap_cc<mode>): Ditto.
6049         (sync_double_compare_and_swap_cc<mode>): Ditto.
6050         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
6051         (sync_old_add<mode>): Ditto.
6052         (sync_add<mode>): Ditto.
6053         (sync_sub<mode>): Ditto.
6054         (sync_ior<mode>): Ditto.
6055         (sync_and<mode>): Ditto.
6056         (sync_xor<mode>): Ditto.
6057
6058 2007-08-22  Chao-ying Fu  <fu@mips.com>
6059
6060         * rtl.c (rtx_code_size): Check CONST_FIXED to calcualte correct sizes
6061         in DEF_RTL_EXPR.
6062         (copy_rtx): Handle CONST_FIXED.
6063         (rtx_equal_p): Likewise.
6064         * rtl.h (fixed_value.h): New include.
6065         (rtx_def): Add a new field of fixed_value to u.
6066         (XCNMPFV): Define for accessing fixed_value.
6067         (CONST_FIXED_VALUE, CONST_FIXED_VALUE_HIGH, CONST_FIXED_VALUE_LOW):
6068         Define.
6069         * rtl.def (CONST_FIXED): New constant.
6070         (SS_MULT, US_MULT, SS_DIV, US_DIV, FRACT_CONVERT,
6071         UNSIGNED_FRACT_CONVERT, SAT_FRACT, UNSIGNED_SAT_FRACT, US_NEG,
6072         US_ASHIFT): New codes.
6073         * doc/rtl.texi (Expressions): Document const_fixed, us_neg, ss_mult,
6074         us_mult, ss_div, us_div, us_ashift, fract_convert, sat_fract,
6075         unsigned_fract_convert, unsigned_sat_fract): Document them.
6076         * varasm.c (assemble_integer): Extend to support fixed-point constants
6077         by using different machine classes.
6078         (decode_addr_const): Handle FIXED_CST.
6079         (const_hash_1): Likewise.
6080         (compare_constant): Likewise.
6081         (copy_constant): Likewise.
6082         (const_rtx_hash_1): Handle CONST_FIXED.
6083         (output_constant_pool_2): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
6084         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
6085         MODE_VECTOR_UACCUM.
6086         (initializer_constant_valid_p): Handle FIXED_CST.
6087         (output_constant): Support FIXED_POINT_TYPE.
6088         * gengenrtl.c (excluded_rtx): Check CONST_FIXED to exclude.
6089         * cse.c (hash_rtx): Support CONST_FIXED.
6090         (exp_equiv_p): Likewise.
6091         (cannon_reg): Likewise.
6092         (fold_rtx): Likewise.
6093         (equiv_constant): Likewise.
6094         (cse_process_notes_1): Likewise.
6095         (count_reg_usage): Likewise.
6096         * cselib.c (entry_and_rtx_equal_p): Check CONST_FIXED.
6097         (rtx_equal_for_cselib_p): Handle CONST_FIXED.
6098         (wrap_constant): Check CONST_FIXED.
6099         (cselib_hash_rtx): Support CONST_FIXED.
6100         (cselib_subst_to_values): Likewise.
6101         * df-scan.c (df_uses_record): Likewise.
6102         * gcse.c (want_to_gcse_p): Likewise.
6103         (oprs_unchanged_p): Likewise.
6104         (oprs_not_set_p): Likewise.
6105         (compute_transp): Likewise.
6106         (extract_mentioned_regs_helper): Likewise.
6107         * genemit.c (gen_exp): Likewise.
6108         * local-alloc.c (equiv_init_varies_p): Likewise.
6109         (contains_replace_regs): Likewise.
6110         (memref_referenced_p): Likewise.
6111         * loop-invariant.c (check_maybe_invariant): Likewise.
6112         (hash_invariant_expr_1): Likewise.
6113         (invariant_expr_equal_p): Likewise.
6114         * postreload-gcse.c (oprs_unchanged_p): Likewise.
6115         * regclass.c (reg_scan_mark_refs): Likewise.
6116         * regrename.c (scan_rtx): Likewise.
6117         * resource.c (mark_referenced_resources): Likewise.
6118         (mark_set_resources): Likewise.
6119         * rtlanal.c (rtx_unstable_p): Likewise.
6120         (rtx_varies_p): Likewise.
6121         (count_occurrences): Likewise.
6122         (reg_mentioned_p): Likewise.
6123         (modified_between_p): Likewise.
6124         (modified_in_p): Likewise.
6125         (volatile_insn_p): Likewise.
6126         (volatile_refs_p): Likewise.
6127         (side_effects_p): Likewise.
6128         (may_trap_p_1): Likewise.
6129         (inequality_comparisons_p): Likewise.
6130         (computed_jump_p_1): Likewise.
6131         (commutative_operand_precedence): Likewise.
6132         * sched-deps.c (sched_analyze_2): Likewise.
6133         * sched-vis.c (print_value): Likewise.
6134         * reload.c (operands_match_p): Likewise.
6135         (subst_reg_equivs): Likewise.
6136         * reload1.c (eliminate_regs_1): Likewise.
6137         (elimination_effects): Likewise.
6138         (scan_paradoxical_subregs): Likewise.
6139         * alias.c (rtx_equal_for_memref_p): Likewise.
6140         * Makefile.in (RTL_BASE_H): Add fixed-value.h.
6141         * emit-rtl.c (const_fixed_htab): New hash table.
6142         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed):
6143         Declare.
6144         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed,
6145         const_fixed_from_fixed_value): New functions.
6146         (verify_rtx_sharing): Handle CONST_FIXED.
6147         (copy_rtx_if_shared_1): Likewise.
6148         (reset_used_flags): Likewise.
6149         (set_used_flags): Likewise.
6150         (copy_insn_1): Likewise.
6151         (init_emit_once): Create const_fixed_htab.
6152         Store fixed-point scalar and vector zero and one to const_tiny_rtx.
6153
6154 2007-08-22  Zdenek Dvorak  <ook@ucw.cz>
6155
6156         PR tree-optimization/32949
6157         * tree-ssa-loop-niter.c (scev_probably_wraps_p): Test nowrap_type_p
6158         before failing for ivs with non-constant step.
6159
6160 2007-08-22  Hans-Peter Nilsson  <hp@axis.com>
6161
6162         * doc/md.texi (Iterators): Renamed from Macros.  All contents
6163         changed to reflect rename of respectively define_code_macro and
6164         define_mode_macro to define_code_iterator and define_mode_iterator.
6165         (Mode Iterators, Code Iterators): Similar.
6166         * read-rtl.c (struct iterator_group, struct iterator_traverse_data)
6167         (uses_mode_iterator_p, apply_mode_iterator, uses_code_iterator_p)
6168         (apply_iterator_to_string, uses_iterator_p, apply_iterator_traverse)
6169         (initialize_iterators, find_iterator, check_code_iterator)
6170         (map_attr_string, apply_mode_maps, apply_iterator_to_rtx, add_mapping)
6171         (read_mapping, read_rtx_1): Similar.
6172         * config/alpha/sync.md, config/alpha/alpha.md, config/frv/frv.md,
6173         config/s390/s390.md, config/m32c/blkmov.md, config/m32c/m32c.md,
6174         config/spu/spu.md, config/sparc/sparc.md, config/sparc/sync.md,
6175         config/i386/i386.md, config/i386/mmx.md, config/i386/sse.md,
6176         config/i386/sync.md, config/crx/crx.md, config/xtensa/xtensa.md,
6177         config/cris/cris.c, config/cris/cris.md, config/ia64/sync.md,
6178         config/ia64/div.md, config/ia64/vect.md, config/ia64/ia64.md,
6179         config/m68k/m68k.md, config/rs6000/spe.md, config/rs6000/altivec.md,
6180         config/rs6000/sync.md, config/rs6000/rs6000.md,
6181         config/arm/vec-common.md, config/arm/neon.md, config/arm/iwmmxt.md,
6182         config/arm/arm.md, config/mips/mips-dsp.md, config/mips/mips.md,
6183         config/vax/vax.md, config/bfin/bfin.md: Similar.
6184
6185 2007-08-22  David Daney  <ddaney@avtrex.com>
6186
6187         * doc/install.texi (Testing): Mention testing on a simulator.
6188
6189 2007-08-22  Janis Johnson  <janis187@us.ibm.com>
6190
6191         * config/dfp-bit.c (DFP_TO_DFP): Check for overflow.
6192
6193         * doc/libgcc.texi (Decimal float library routines): Fix formatting
6194         and rearrange floating point conversion functions into different
6195         categories.
6196
6197 2007-08-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
6198
6199         * target.h (struct gcc_target.sched: dfa_pre_advance_cycle,
6200         dfa_post_advance_cycle): New scheduler hooks.
6201         * target-def.h (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
6202         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): New macros to initialize
6203         new hooks.
6204         (TARGET_SCHED): Use them.
6205         * doc/tm.texi (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
6206         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Document new hooks.
6207         * haifa-sched.c (advance_one_cycle): Invoke new hooks.
6208
6209         * genautomata.c (insn_has_dfa_reservation_p): New DFA interface
6210         function to facilitate debugging.
6211         (INSN_HAS_DFA_RESERVATION_P_FUNC_NAME): New macro.
6212         (output_insn_has_dfa_reservation_p): New static function to output
6213         insn_has_dfa_reservation_p ().
6214         (write_automata): Use it.
6215         * genattr.c (main): Output declaration for
6216         insn_has_dfa_reservation_p ().
6217
6218 2007-08-22  Christian Bruel  <christian.bruel@st.com>   
6219             Richard Guenther <rguenther@suse.de>
6220         
6221         * fold-const.c (fold_binary): Optimize A-A if -ffinite-math-only.
6222         * simplify_rtx (simplify_binary_operation_1): Likewise.
6223                 
6224 2007-08-22  Rask Ingemann Lambertsen  <rask@sygehus.dk>
6225
6226         PR rtl-optimization/32557
6227         * df-problems.c (df_note_bb_compute): Use mws->start_regno instead
6228         of REGNO (mws->mw_reg).
6229
6230 2007-08-22  Richard Guenther  <rguenther@suse.de>
6231
6232         PR middle-end/33007
6233         * builtins.c (expand_builtin_int_roundingfn): Replace call
6234         argument wrapped with SAVE_EXPR directly.
6235         (expand_builtin_int_roundingfn_2): Likewise.
6236
6237 2007-08-22  Richard Guenther  <rguenther@suse.de>
6238
6239         * tree-inline.c (inlinable_function_p): Restore disregarding
6240         inline limits for GNU extern inline functions.
6241
6242 2007-08-22  Richard Guenther  <rguenther@suse.de>
6243
6244         PR middle-end/32563
6245         * tree.c (host_integerp): Treat sizetype as signed as it is
6246         sign-extended.
6247
6248 2007-08-21  Ian Lance Taylor  <iant@google.com>
6249
6250         PR tree-optimization/33134
6251         * tree-vrp.c (adjust_range_with_scev): Call
6252         set_value_range_to_value.
6253
6254 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
6255
6256         * value-prof.h (gimple_remove_histogram_value): Remove duplicate
6257         prototype.
6258         
6259 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
6260
6261         * tree-flow-inline.h (next_imm_use_stmt): Remove unecessary
6262         whitespace.
6263
6264 2007-08-21  Nathan Froyd  <froydnj@codesourcery.com>
6265
6266         * config/rs6000/rs6000.c (expand_block_clear): Add TARGET_SPE
6267         cases to set eight bytes at a time.
6268         (expand_block_move): Likewise.
6269         
6270 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
6271
6272         PR debug/32610
6273         * dwarf2out.c (gen_decl_die): Don't call
6274         gen_tagged_type_instantiation_die if decl doesn't have tagged type.
6275
6276 2007-08-21  Paul Brook  <paul@codesourcery.com>
6277             Nathan Sidwell  <nathan@codesourcery.com>
6278             Mark Mitchell  <mark@codesourcery.com>
6279             Joseph Myers  <joseph@codesourcery.com>
6280
6281         * configure.ac: Add --with-pkgversion and --with-bugurl.
6282         * configure: Regenerate.
6283         * doc/install.texi: Document them.
6284         * version.c (version_string): Remove VERSUFFIX.
6285         (VERSUFFIX): Remove.
6286         (pkgversion_string): New.
6287         (bug_report_url): Do not hard-code initializer.
6288         * version.h (pkgversion_string): Declare.
6289         * Makefile.in (PKGVERSION_s, BUGURL_s, PKGVERSION, BUGURL_TEXI):
6290         Define.
6291         (version.o): Define PKGVERSION and BUGURL.
6292         (gcc-vers.texi): Define VERSION_PACKAGE and BUGURL.
6293         (%.pod): Define BUGURL.
6294         * gcc.c (process_command, main): Use pkgversion_string.
6295         * toplev.c (compile_file, print_version): Likewise.
6296         * protoize.c (main): Likewise.
6297         * gcov.c (print_version): Likewise.  Update copyright date.
6298         * gcov-dump.c (print_version): Likewise.  Update copyright date.
6299         * mips-tdump.c (main): Likewise.  Update copyright date.
6300         * mips-tfile.c (main): Likewise.  Update copyright date.
6301         * doc/include/gcc-common.texi: Include VERSION_PACKAGE as subtitle.
6302         * doc/bugreport.texi: Use BUGURL for bug-reporting instructions;
6303         shorten description.
6304         * doc/gcc.texi: Include VERSION_PACKAGE in version description.
6305         * doc/gccint.texi: Likewise.
6306         * doc/invoke.texi: Use BUGURL for bug-reporting instructions.
6307         Update copyright date.
6308
6309 2007-08-21  Uros Bizjak  <ubizjak@gmail.com>
6310
6311         * config/i386/i386.c (ix86_expand_clear): Use FLAGS_REG.
6312         (ix86_expand_strlensi_unroll_1): Ditto.
6313         (ix86_expand_branch): Use FLAGS_REG and FPSR_REG.
6314         (ix86_expand_carry_flag_compare): Update comment.
6315
6316 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
6317
6318         PR middle-end/32912
6319         * fold-const.c (fold_unary): Optimize BIT_NOT_EXPR of VECTOR_CST.
6320         (fold_binary): Handle vectors in X | ~X and X ^ ~X optimizations.
6321
6322 2007-08-21  Richard Guenther  <rguenther@suse.de>
6323
6324         * fold-const.c (fold_binary): Revert removing of index +p PTR folding.
6325
6326 2007-08-21  Richard Guenther  <rguenther@suse.de>
6327
6328         PR middle-end/33122
6329         * fold-const.c (fold_binary): Remove index +p PTR folding.
6330         Fix types of POINTER_PLUS_EXPR generated by folding of
6331         (PTR +p B) +p A.
6332
6333 2007-08-20  Chao-ying Fu  <fu@mips.com>
6334
6335         * c-common.h (enum rid): Add new enumeration values of RID_SAT,
6336         RID_FRACT, and RID_ACCUM.  RID_SAT needs to be inserted before
6337         RID_ONEWAY, so that it can be checked in declspecs_add_type.
6338         (c_common_fixed_point_type_for_size): Declare.
6339         * c-parser.c (reswords): Add _Fract, _Accum, and _Sat.
6340         (c_token_starts_typename): Handle RID_FRACT, RID_ACCUM, and RID_SAT.
6341         (c_token_starts_declspecs): Likewise.
6342         (c_parser_declspecs): Likewise.
6343         (c_parser_attributes): Likewise.
6344         * c-tree.h (enum c_typespec_keyword): Add cts_fract and cts_accum.
6345         (c_declspecs): Add saturating_p.
6346         * c-decl.c (build_null_declspecs): Initialize saturating_p.
6347         (declspecs_add_type): Avoid using complex with _Fract, _Accum, or
6348         _Sat.  Handle RID_SAT.
6349         Avoid using void, bool, char, int, float, double, _Decimal32,
6350         _Decimal64, _Decimal128, and complex with _Sat.
6351         Handle RID_FRACT and RID_ACCUM.
6352         Make sure _Sat is used with _Fract or _Accum.
6353         (finish_declspecs): Handle cts_fract and cts_accum.
6354         * c-common.c (fixed-value.h): New include.
6355         (constant_expression_warning): Handle FIXED_CST.
6356         (overflow_warning): Likewise.
6357         (warnings_for_convert_and_check): Likewise.
6358         (c_common_fixed_point_type_for_size): New.
6359         (c_common_type_for_mode): Handle fixed-point modes to
6360         return various saturating/non-saturating, signed/unsigned types.
6361         (c_common_signed_or_unsigned_type): Support fixed-point types.
6362         (shorten_compare): Check fixed-point zero.
6363         Handle FIXED_POINT_TYPE.
6364         (c_common_truthvalue_conversion): Handle FIXED_CST.
6365         Handle FIXED_POINT_TYPE.
6366         (c_common_nodes_and_builtins): Record builtin types for fixed-point
6367         types.
6368         (handle_mode_attribute): Handle fixed-point modes.  Need to check
6369         if the signness of base type and fixed-point modes are consistent.
6370         (handle_vector_size_attribute): Handle fixed-point modes.
6371         (same_scalar_type_ignoring_signedness): Handle FIXED_POINT_TYPE.
6372         (warn_for_div_by_zero): Check fixed-point zero.
6373         * c-typeck.c (c_common_type): Check FIXED_POINT_TYPE.  Build
6374         a common fixed-point type based on fbit, ibit, sign, and saturation.
6375         (build_unary_op): Allow FIXED_POINT_TYPE for CONVERT_EXPR,
6376         NEGATE_EXPR, TRUTH_NOT_EXPR, PREINCREMENT_EXPR, POSTINCREMENT_EXPR,
6377         PREDECREMENT_EXPR, and POSTDECREMENT_EXPR.
6378         (convert_for_assignment): Support FIXED_POINT_TYPE.
6379         (digest_init): Handle FIXED_POINT_TYPE.
6380         (build_binary_op): Support FIXED_POINT_TYPE in *_DIV_EXPR,
6381         TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR, TRUTH_AND_EXPR, TRUTH_OR_EXPR,
6382         TRUTH_XOR_EXPR, RSHIFT_EXPR, LSHIFT_EXPR, EQ_EXPR, NE_EXPR, LE_EXPR,
6383         GE_EXPR, LT_EXPR, GT_EXPR.
6384         * target-def.h (TARGET_FIXED_POINT_SUPPORTED_P): New.
6385         (TARGET_INITIALIZER): Add TARGET_FIXED_POINT_SUPPORTED_P.
6386         * target.h (gcc_target): Add fixed_point_supported_p.
6387         * targhooks.c (default_scalar_mode_supported_p): Handle MODE_FRACT,
6388         MODE_UFRACT, MODE_ACCUM, and MODE_UACCUM.
6389         (default_fixed_point_supported_p): Define.
6390         * targhooks.h (default_fixed_point_supported_p): Declare.
6391         * doc/tm.texi (TARGET_FIXED_POINT_SUPPORTED_P): Add.
6392         * doc/install.texi (Configuration): Add --enable-fixed-point.
6393         * configure.ac (--enable-fixed-point): New to enable fixed-point
6394         arithmetic extension to C.  For mips targets, we enable it by default.
6395         * configure, config.in: Regenerate.
6396
6397 2007-08-20  Pawel Sikora  <pluto@pld-linux.org>
6398
6399         * doc/invoke.texi (-Wnon-virtual-dtor): Update documentation.
6400
6401 2007-08-20  David Edelsohn  <edelsohn@gnu.org>
6402
6403         * dwarf2out.c (text_section_used): Move declaration outside ifdef
6404         DWARF2_DEBUGGING_INFO.
6405         (cold_text_section_used): Same.
6406         (cold_text_section): Same.
6407
6408 2007-08-20  Richard Guenther  <rguenther@suse.de>
6409
6410         * c-typeck.c (convert_for_assignment): Use the type of
6411         the member for the initialization.
6412
6413 2007-08-20  Richard Guenther  <rguenther@suse.de>
6414
6415         * c-objc-common.c (c_disregard_inline_limits): Remove.
6416         * c-objc-common.h (c_disregard_inline_limits): Likewise.
6417         * cgraphunit.c (cgraph_process_new_functions): Call
6418         disregard_inline_limits_p.
6419         (cgraph_preserve_function_body_p): Likewise.
6420         * ipa-inline.c (compute_inline_parameters): Likewise.
6421         * langhooks-def.h (lhd_tree_inlining_disregard_inline_limits):
6422         Remove.
6423         (LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS): Remove.
6424         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
6425         disregard_inline_limits langhook.
6426         * langhooks.c (lhd_tree_inlining_disregard_inline_limits):
6427         Remove.
6428         * langhooks.h (lang_hooks_for_tree_inlining): Remove
6429         disregard_inline_limits langhook.
6430         * tree-inline.c (disregard_inline_limits_p): New function.
6431         * tree-inline.h (disregard_inline_limits_p): Declare.
6432
6433 2007-08-20  Richard Guenther  <rguenther@suse.de>
6434
6435         * langhooks-def.h (lhd_tree_inlining_auto_var_in_fn_p): Remove.
6436         (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P): Likewise.
6437         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
6438         auto_var_in_fn_p langhook.
6439         * langhooks.c (lhd_tree_inlining_auto_var_in_fn_p): Rename and
6440         move ...
6441         * tree.c (auto_var_in_fn_p): ... here.
6442         (find_var_from_fn): Call auto_var_in_fn_p directly.
6443         * langhooks.h (lang_hooks_for_tree_inlining): Remove
6444         auto_var_in_fn_p langhook.
6445         * tree-inline.c (remap_decls): Call auto_var_in_fn_p directly.
6446         (copy_body_r): Likewise.
6447         (self_inlining_addr_expr): Likewise.
6448         * tree.h (auto_var_in_fn_p): Declare.
6449
6450 2007-08-20  Richard Guenther  <rguenther@suse.de>
6451
6452         * tree.c (WALK_SUBTREE): Call walk_tree_1.
6453         (walk_type_fields): Take lh parameter.
6454         (walk_tree): Rename to ...
6455         (walk_tree_1): ... this.  Do not call the walk_subtrees
6456         langhook but the now passed callback.  Pass lh on recursion.
6457         (walk_tree_without_duplicates): Rename to ...
6458         (walk_tree_without_duplicates_1): ... this.  Take lh parameter
6459         and call walk_tree_1.
6460         * tree.h (walk_tree_lh): New typedef.
6461         (walk_tree_1): Declare.
6462         (walk_tree_without_duplicates_1): Likewise.
6463         (walk_tree): New define to walk_tree_1 with NULL lh parameter.
6464         (walk_tree_without_duplicates): New define to
6465         walk_tree_without_duplicates_1 with NULL lh parameter.
6466         * langhooks.c (lhd_tree_inlining_walk_subtrees): Remove.
6467         * langhooks.h (lang_hooks_for_tree_inlining): Remove walk_subtrees
6468         langhook.
6469         * langhooks-def.h (lhd_tree_inlining_walk_subtrees): Remove.
6470         (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Likewise.
6471         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove walk_subtrees
6472         initializer.
6473
6474 2007-08-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6475
6476         PR middle-end/30564
6477         * tree-inline.c (optimize_inline_calls): Move the cgraph checking
6478         code in front of the compacting of basic blocks.
6479         Move the folding of statements inbetween the cgraph checking
6480         and compacting of basic blocks.
6481
6482 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6483            Serge Belyshev  <belyshev@depni.sinp.msu.ru>
6484
6485         PR target/32522
6486         * config/alpha/alpha.c (va_list_skip_additions): Check for
6487         POINTER_PLUS_EXPR in addition to PLUS_EXPR.
6488         (alpha_stdarg_optimize_hook): Look for POINTER_PLUS_EXPR instead of
6489         PLUS_EXPR when checking ap.__base.
6490         (alpha_va_start): Create POINTER_PLUS_EXPR instead of PLUS_EXPR
6491         when doing addition on pointer types.  Use size_int instead of
6492         build_int_cst.
6493         (alpha_gimplify_va_arg_1): Likewise, but use sizetype instead of
6494         ptr_type in the second operand.
6495
6496 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
6497
6498         PR target/33115
6499         * config/i386/darwin.h (CC1_SPEC): Add %(cc1_cpu) in front.
6500
6501 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6502
6503         PR middle-end/32940
6504         * cfgexpand.c  (expand_one_register_var): Mark pointer
6505         DECL_ARTIFICIAL as REG_POINTER also.
6506         * stmt.c (expand_decl): Likewise.
6507
6508 2007-08-19  Daniel Berlin  <dberlin@dberlin.org>
6509
6510         Fix PR 32772
6511         Fix PR 32716
6512         Fix PR 32328
6513         Fix PR 32303
6514
6515         * tree-flow.h (struct stmt_ann_d): Remove makes_clobbering_call.
6516         * tree-ssa-alias.c (init_transitive_clobber_worklist): Add
6517         on_worklist argument and avoid adding things to worklist multiple
6518         times.
6519         (add_to_worklist): Ditto.
6520         (mark_aliases_call_clobbered): Mark entire structure clobbered if
6521         single SFT is clobbered.
6522         (set_initial_properties): Ditto.
6523         (compute_call_clobbered): Update for changes to function
6524         arguments.
6525         (create_overlap_variables_for): Always create SFT for offset 0.
6526         (create_structure_vars): Handle PHI's, since we are in SSA form at
6527         this point.
6528         * tree-ssa-loop-ivopts.c (get_ref_tag): Don't return subvars.
6529         * tree-ssa-operands.c (access_can_touch_variable): Don't handle
6530         TARGET_MEM_REF.
6531         (add_vars_for_offset): Figure out aliases from access + points-to.
6532         (add_virtual_operand): Use add_vars-for_offset.
6533         (get_tmr_operands): Update for NMT changes, rewrite to be correct.
6534         (add_call_clobber_ops): Remove makes_clobbering_call set.
6535         (get_expr_operands): Always pass through the INDIRECT_REF
6536         reference.
6537         * tree-ssa-structalias.c (struct constraint_graph): Remove
6538         variables member.
6539         Add pe, pe_rep, pointer_label, loc_label, pointed_by, points_to,
6540         address_taken, pt_used, number_incoming.
6541         (FIRST_ADDR_NODE): Removed.
6542         (merge_graph_nodes): Remove broken code for the moment.
6543         (init_graph): New function.
6544         (build_pred_graph): Remove code to init_graph.
6545         Add location equivalence support.
6546         (struct scc_info): Rename roots to deleted.
6547         (scc_visit): Ditto.
6548         (init_scc_info): Ditto
6549         (init_topo_info): Use graph->size.
6550         (compute_topo_order): Ditto.
6551         (do_da_constraint): Removed.
6552         (do_sd_constraint): Remove calls to find().
6553         set_union_with_increment should always get 0 as last arg here.
6554         (do_complex_constraint): Replace do_da_constraint with assert.
6555         Stop calling find.
6556         (struct equiv_class_label): New.
6557         (pointer_equiv_class_table): Ditto.
6558         (location_equiv_class_table): Ditto.
6559         (equiv_class_label_hash): Ditto.
6560         (equiv_class_label_eq): Ditto
6561         (equiv_class_lookup): Ditto.
6562         (equiv_class_ladd): Ditto.
6563         (pointer_equiv_class): Ditto.
6564         (location_equiv_class): Ditto.
6565         (condense_visit): Rename and rewrite from label_visit to do only
6566         SCC related stuff for HU.
6567         (label_visit): Do HU work for HU.
6568         (perform_var_substitution): Update to do HU and location
6569         equivalence.
6570         (free_var_substitution_info): Update to free HU and location
6571         equivalence structures.  */
6572         (find_equivalent_node): Update for pointer but not location
6573         equivalence.
6574         (unite_pointer_equivalences): New function.
6575         (move_complex_constraints): Rewrite to only do moving.
6576         (rewrite_constraints): Split out of move_complex_constraints.
6577         (solve_graph): Use graph->size.
6578         (process_constraint_1): Add from_call argument, use it.
6579         Split *a = &b into two constraints.
6580         (process_constraint): Use new process_constraint_1.
6581         (get_constraint_for_component_ref): Handle bitmaxsize == -1 case.
6582         (get_constraint_for): Handle non-pointer integers properly.
6583         Remove code that used to handle structures.
6584         (handle_ptr_arith): Fix a few bugs in pointer arithmetic handling
6585         with unknown addends.
6586         (handle_rhs_call): New function.
6587         (find_func_aliases): Use handle_rhs_call.
6588         (set_uids_in_ptset): Add an assert.
6589         (set_used_smts): Fix bug in not considering unified vars.
6590         (compute_tbaa_pruning): Stop initing useless iteration_obstack.
6591         (compute_points_to_sets): Update for other function changes.
6592         (delete_points_to_sets): Ditto.
6593         (ipa_pta_execute): Ditto.
6594         (pass_ipa_pta): We need to update SSA after ipa_pta.
6595         
6596 2007-08-19  Jan Hubicka  <jh@suse.cz>
6597
6598         * i386.md: Replace "rim" and "mri" constraints by "g".
6599
6600 2007-08-19  Joseph Myers  <joseph@codesourcery.com>
6601
6602         * dwarf2out.c (text_section_used, cold_text_section_used,
6603         cold_text_section, dwarf2out_note_section_used): New.
6604         (dwarf2out_init): Initialize cold_text_section.
6605         (dwarf2out_switch_text_section, dwarf2out_begin_function): Call
6606         dwarf2out_note_section_used.
6607         (size_of_aranges): Only count entry for text section if it was
6608         used.  Count entry for cold text section if it was used.
6609         (output_aranges): Only output entries for text section and cold
6610         text section if they were used.
6611
6612 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
6613
6614         * tree-pretty-print.c (debug_generic_expr): Add a comment about
6615         the function.
6616         (debug_generic_stmt): Likewise.
6617         (debug_tree_chain): Likewise.
6618
6619 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
6620
6621         * tree-data-refs.c (split_constant_offset): Expose.
6622         * tree-data-refs.h (split_constant_offset): Add declaration.
6623
6624         * tree-vectorizer.h (dr_alignment_support): Renamed
6625         dr_unaligned_software_pipeline to dr_explicit_realign_optimized.
6626         Added a new value dr_explicit_realign.
6627         (_stmt_vec_info): Added new fields: dr_base_address, dr_init,
6628         dr_offset, dr_step, and dr_aligned_to, along with new access
6629         functions for these fields: STMT_VINFO_DR_BASE_ADDRESS,
6630         STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET, STMT_VINFO_DR_STEP, and
6631         STMT_VINFO_DR_ALIGNED_TO.
6632
6633         * tree-vectorizer.c (vect_supportable_dr_alignment): Add
6634         documentation.
6635         In case of outer-loop vectorization with non-fixed misalignment - use
6636         the dr_explicit_realign scheme instead of the optimized realignment
6637         scheme.
6638         (new_stmt_vec_info): Initialize new fields.
6639
6640         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Handle the
6641         'nested_in_vect_loop' case. Change verbosity level.
6642         (vect_analyze_data_ref_access): Handle the 'nested_in_vect_loop' case.
6643         Don't fail on zero step in the outer-loop for loads.
6644         (vect_analyze_data_refs): Call split_constant_offset to calculate
6645         base, offset and init relative to the outer-loop.
6646
6647         * tree-vect-transform.c (vect_create_data_ref_ptr): Replace the unused
6648         BSI function argument with a new function argument - at_loop.
6649         Simplify the condition that determines STEP. Takes additional argument
6650         INV_P. Support outer-loop vectorization (handle the
6651         nested_in_vect_loop case), including zero step in the outer-loop. Call
6652         vect_create_addr_base_for_vector_ref with additional argument.
6653         (vect_create_addr_base_for_vector_ref): Takes additional argument LOOP.
6654         Updated function documentation. Handle the 'nested_in_vect_loop' case.
6655         Fixed and simplified calculation of step.
6656         (vectorizable_store): Call vect_create_data_ref_ptr with loop instead
6657         of bsi, and with additional argument. Call bump_vector_ptr with
6658         additional argument. Fix typos. Handle the 'nested_in_vect_loop' case.
6659         (vect_setup_realignment): Takes additional arguments INIT_ADDR and
6660         DR_ALIGNMENT_SUPPORT. Returns another value AT_LOOP. Handle the case
6661         when the realignment setup needs to take place inside the loop.
6662         Support the dr_explicit_realign scheme. Allow generating the optimized
6663         realignment scheme for outer-loop vectorization. Added documentation.
6664         (vectorizable_load): Support the dr_explicit_realign scheme. Handle
6665         the 'nested_in_vect_loop' case, including loads that are invariant in
6666         the outer-loop and the realignment schemes. Handle the case when the
6667         realignment setup needs to take place inside the loop. Call
6668         vect_setup_realignment with additional arguments.  Call
6669         vect_create_data_ref_ptr with additional argument and with loop instead
6670         of bsi. Fix 80-column overflow. Fix typos. Rename PHI_STMT to PHI.
6671         (vect_gen_niters_for_prolog_loop): Call
6672         vect_create_addr_base_for_vector_ref with additional arguments.
6673         (vect_create_cond_for_align_checks): Likewise.
6674         (bump_vector_ptr): Updated to support the new dr_explicit_realign
6675         scheme: takes additional argument bump; argument ptr_incr is now
6676         optional; updated documentation.
6677         (vect_init_vector): Takes additional argument (bsi). Use it, if
6678         available, to insert the vector initialization.
6679         (get_initial_def_for_induction): Pass additional argument in call to
6680         vect_init_vector.
6681         (vect_get_vec_def_for_operand): Likewise.
6682         (vect_setup_realignment): Likewise.
6683         (vectorizable_load): Likewise.
6684
6685 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
6686
6687         * tree-vectorizer.h (vect_is_simple_reduction): Takes a loop_vec_info
6688         as argument instead of struct loop.
6689         (nested_in_vect_loop_p): New function.
6690         (vect_relevant): Add enum values vect_used_in_outer_by_reduction and
6691         vect_used_in_outer.
6692         (is_loop_header_bb_p): New. Used to differentiate loop-header phis
6693         from other phis in the loop.
6694         (destroy_loop_vec_info): Add additional argument to declaration.
6695
6696         * tree-vectorizer.c (supportable_widening_operation): Also check if
6697         nested_in_vect_loop_p (don't allow changing the order in this case).
6698         (vect_is_simple_reduction): Takes a loop_vec_info as argument instead
6699         of struct loop. Call nested_in_vect_loop_p and don't require
6700         flag_unsafe_math_optimizations if it returns true.
6701         (new_stmt_vec_info): When setting def_type for phis differentiate 
6702         loop-header phis from other phis.
6703         (bb_in_loop_p): New function.
6704         (new_loop_vec_info): Inner-loop phis already have a stmt_vinfo, so
6705         just update their loop_vinfo.  Order of BB traversal now matters -
6706         call dfs_enumerate_from with bb_in_loop_p.
6707         (destroy_loop_vec_info): Takes additional argument to control whether
6708         stmt_vinfo of the loop stmts should be destroyed as well.
6709         (vect_is_simple_reduction): Allow the "non-reduction" use of a
6710         reduction stmt to be defines by a non loop-header phi.
6711         (vectorize_loops): Call destroy_loop_vec_info with additional argument.
6712
6713         * tree-vect-transform.c (vectorizable_reduction): Call
6714         nested_in_vect_loop_p. Check for multitypes in the inner-loop.
6715         (vectorizable_call): Likewise.
6716         (vectorizable_conversion): Likewise.
6717         (vectorizable_operation): Likewise.
6718         (vectorizable_type_promotion): Likewise.
6719         (vectorizable_type_demotion): Likewise.
6720         (vectorizable_store): Likewise.
6721         (vectorizable_live_operation): Likewise.
6722         (vectorizable_reduction): Likewise. Also pass loop_info to
6723         vect_is_simple_reduction instead of loop.
6724         (vect_init_vector): Call nested_in_vect_loop_p.
6725         (get_initial_def_for_reduction): Likewise.
6726         (vect_create_epilog_for_reduction): Likewise.
6727         (vect_init_vector): Check which loop to work with, in case there's an
6728         inner-loop.
6729         (get_initial_def_for_inducion): Extend to handle outer-loop
6730         vectorization. Fix indentation.
6731         (vect_get_vec_def_for_operand): Support phis in the case vect_loop_def.
6732         In the case vect_induction_def get the vector def from the induction
6733         phi node, instead of calling get_initial_def_for_inducion.
6734         (get_initial_def_for_reduction): Extend to handle outer-loop 
6735         vectorization.
6736         (vect_create_epilog_for_reduction): Extend to handle outer-loop
6737         vectorization.
6738         (vect_transform_loop): Change assert to just skip this case.  Add a
6739         dump printout.
6740         (vect_finish_stmt_generation): Add a couple asserts.
6741
6742         (vect_estimate_min_profitable_iters): Multiply
6743         cost of inner-loop stmts (in outer-loop vectorization) by estimated
6744         inner-loop bound.
6745         (vect_model_reduction_cost): Don't add reduction epilogue cost in case
6746         this is an inner-loop reduction in outer-loop vectorization.
6747
6748         * tree-vect-analyze.c (vect_analyze_scalar_cycles_1): New function.
6749         Same code as what used to be vect_analyze_scalar_cycles, only with
6750         additional argument loop, and loop_info passed to
6751         vect_is_simple_reduction instead of loop.
6752         (vect_analyze_scalar_cycles): Code factored out into
6753         vect_analyze_scalar_cycles_1. Call it for each relevant loop-nest.
6754         Updated documentation.
6755         (analyze_operations): Check for inner-loop loop-closed exit-phis during
6756         outer-loop vectorization that are live or not used in the outerloop,
6757         cause this requires special handling.
6758         (vect_enhance_data_refs_alignment): Don't consider versioning for
6759         nested-loops.
6760         (vect_analyze_data_refs): Check that there are no datarefs in the
6761         inner-loop.
6762         (vect_mark_stmts_to_be_vectorized): Also consider vect_used_in_outer
6763         and vect_used_in_outer_by_reduction cases.
6764         (process_use): Also consider the case of outer-loop stmt defining an
6765         inner-loop stmt and vice versa.
6766         (vect_analyze_loop_1): New function.
6767         (vect_analyze_loop_form): Extend, to allow a restricted form of nested
6768         loops.  Call vect_analyze_loop_1.
6769         (vect_analyze_loop): Skip (inner-)loops within outer-loops that have
6770         been vectorized.  Call destroy_loop_vec_info with additional argument.
6771
6772         * tree-vect-patterns.c (vect_recog_widen_sum_pattern): Don't allow
6773         in the inner-loop when doing outer-loop vectorization. Add
6774         documentation and printout.
6775         (vect_recog_dot_prod_pattern): Likewise. Also add check for
6776         GIMPLE_MODIFY_STMT (in case we encounter a phi in the loop).
6777
6778 2007-08-18  Andrew Pinski  <pinskia@gmail.com>
6779
6780         * tree-affine.h (print_aff): New prototype.
6781         (debug_aff): Likewise.
6782         * tree-affine.c (print_aff): New function.
6783         (debug_aff): Likewise.
6784
6785 2007-08-18  Paul Brook  <paul@codesourcery.com>
6786             Joseph Myers  <joseph@codesourcery.com>
6787
6788         * common.opt (-fdebug-prefix-map=): New option.
6789         * opts.c: Include debug.h.
6790         (common_handle_option): Handle -fdebug-prefix-map.
6791         * final.c: Include ggc.h.
6792         (struct debug_prefix_map, debug_prefix_maps, add_debug_prefix_map,
6793         remap_debug_filename): New.
6794         * Makefile.in (final.o, opts.o): Update dependencies.
6795         * debug.h (remap_debug_filename, add_debug_prefix_map): Declare.
6796         * configure.ac: Check for assembler --debug-prefix-map support.
6797         * configure, config.in: Regenerate.
6798         * gcc.c (ASM_MAP): Define conditional on HAVE_AS_DEBUG_PREFIX_MAP.
6799         (ASM_DEBUG_SPEC): Include ASM_MAP.
6800         * doc/install.texi (--with-debug-prefix-map): Document.
6801         * doc/invoke.texi (-fdebug-prefix-map): Document.
6802         * dbxout.c (dbxout_init, dbxout_start_source_file,
6803         dbxout_source_file): Call remap_debug_filename.
6804         * dwarf2out.c (add_comp_dir_attribute, maybe_emit_file,
6805         dwarf2out_start_source_file, dwarf2out_finish): Call
6806         remap_debug_filename.
6807         (file_table_relative_p): Do not check d->emitted_number.
6808         * toplev.c (output_file_directive): Call remap_debug_filename.
6809         * vmsdbgout.c (write_srccorr): Call remap_debug_filename.
6810         * xcoffout.c (xcoffout_source_file): Call remap_debug_filename.
6811
6812 2007-08-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6813
6814         * loop-invariant.c (find_invariants_to_move): Add missing macro
6815         argument.
6816
6817 2007-08-17  Tom Tromey  <tromey@redhat.com>
6818
6819         * tree.h (struct tree_label_decl): Removed old "java" fields.
6820
6821 2007-08-17  Richard Sandiford  <richard@codesourcery.com>
6822             Nigel Stephens  <nigel@mips.com>
6823
6824         * config/mips/sde.h (DRIVER_SELF_SPECS): Add commas.
6825         Treat -mno-data-in-code and -mcode-xonly as aliases for
6826         -mcode-readable=no and -mcode-readable=pcrel respectively.
6827         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Add -mcode-xonly.
6828         (MULTILIB_OPTIONS): Add -mcode-readable=no multilibs.
6829         (MULTILIB_DIRNAMES): Update accordingly.
6830
6831 2007-08-17  H.J. Lu  <hongjiu.lu@intel.com>
6832
6833         * Makefile.in (version.o): Depend on $(REVISION) only if
6834         REVISION_s is defined.
6835
6836 2007-08-17  Sa Liu  <saliu@de.ibm.com>
6837             Ulrich Weigand  <uweigand@de.ibm.com>
6838
6839         PR middle-end/32970
6840         * tree.c (reconstruct_complex_type): For a pointer to a vector,
6841         use build_qualified_type to retain qualifiers of the base type.
6842
6843 2007-08-17  Chen Liqin  <liqin@sunnorth.com.cn>
6844
6845         * config/score/score.md : Update pattern tablejump.
6846         * config/score/score.c : Update score_initialize_trampoline 
6847         function.
6848         * config/score/score.h (TRAMPOLINE_TEMPLATE): Added macro.
6849         (TRAMPOLINE_INSNS, TRAMPOLINE_SIZE) Update macro.
6850         * doc/contrib.texi: Add my entry.
6851
6852 2007-08-16  H.J. Lu  <hongjiu.lu@intel.com>
6853
6854         * Makefile.in (REVISION): New.
6855         (REVISION_c): New.
6856         (REVISION_s): New.
6857         (version.o): Also depend on $(REVISION). Add
6858         -DREVISION=$(REVISION_s).
6859
6860         * version.c (version_string): Add REVISION.
6861
6862 2007-08-16  Seongbae Park <seongbae.park@gmail.com>
6863
6864         * tree-eh.c (lower_try_finally_onedest): Reset the locus
6865         of GOTO that's relocated to a different block.
6866
6867 2007-08-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6868
6869         * c-common.c (const_strip_array_types): New.
6870         * c-common.h (lang_missing_noreturn_ok_p): Delete.
6871         (const_strip_array_types): New.
6872         * c-objc-common.c (c_disregard_inline_limits,
6873         c_warn_unused_global_decl): Constify.
6874         * c-tree.h (c_disregard_inline_limits, c_warn_unused_global_decl,
6875         c_vla_type_p, c_incomplete_type_error): Likewise.
6876         * c-typeck.c (c_incomplete_type_error, c_vla_type_p): Likewise.
6877         * hooks.c (hook_bool_const_tree_false): New.
6878         * hooks.h (hook_bool_const_tree_false): Likewise.
6879         * langhooks-def.h (lhd_warn_unused_global_decl,
6880         lhd_incomplete_type_error, lhd_expr_size,
6881         lhd_tree_inlining_disregard_inline_limits,
6882         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
6883         LANG_HOOKS_GENERIC_TYPE_P, LANG_HOOKS_TYPE_MAX_SIZE): Constify.
6884         * langhooks.c (lhd_warn_unused_global_decl,
6885         lhd_incomplete_type_error,
6886         lhd_tree_inlining_disregard_inline_limits,
6887         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
6888         lhd_expr_size): Likewise.
6889         * langhooks.h (lang_hooks_for_tree_inlining,
6890         lang_hooks_for_tree_dump, lang_hooks_for_types,
6891         lang_hooks_for_decls, lang_hooks): Likewise.
6892         * pointer-set.c (pointer_set_t, pointer_set_create,
6893         pointer_set_contains, insert_aux, pointer_set_insert,
6894         pointer_set_traverse, pointer_map_t, pointer_map_create,
6895         pointer_map_contains, pointer_map_insert, pointer_map_traverse):
6896         Likewise.
6897         * pointer-set.h (pointer_set_contains, pointer_set_insert,
6898         pointer_set_traverse, pointer_map_contains, pointer_map_insert,
6899         pointer_map_traverse): Likewise.
6900         * predict.c (assert_is_empty): Likewise.
6901         * tree-affine.c (free_name_expansion): Likewise.
6902         * tree-cfg.c (edge_to_cases_cleanup): Likewise.
6903         * tree.c (size_in_bytes, max_int_size_in_bytes): Likewise.
6904         * tree.h (size_in_bytes, max_int_size_in_bytes): Likewise.
6905
6906 2007-08-16  Victor Kaplansky <victork@il.ibm.com>
6907
6908         * tree-vectorizer.c (new_loop_vec_info): Initialize new 
6909         field.
6910         (destroy_loop_vec_info): Add call to VEC_free.
6911         * tree-vectorizer.h (may_alias_ddrs): Define.
6912         (LOOP_VINFO_MAY_ALIAS_DDRS): Define.
6913         * tree-vect-analyze.c (vect_analyze_data_ref_dependence):
6914         Change reporting to dump.
6915         (vect_is_duplicate_ddr): New.
6916         (vect_mark_for_runtime_alias_test): New.
6917         (vect_analyze_data_ref_dependences) Add call to
6918         vect_mark_for_runtime_alias_test.
6919         (vect_enhance_data_refs_alignment): Define local variable
6920         vect_versioning_for_alias_required, don't perform
6921         peeling for alignment if versioning for alias is
6922         required.
6923         (vect_enhance_data_refs_alignment): Use
6924         PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS instead of
6925         PARAM_VECT_MAX_VERSION_CHECKS.
6926         * tree-vect-transform.c
6927         (vect_create_cond_for_alias_checks): New.
6928         (vect_transform_loop): Add call to
6929         vect_create_cond_for_alias_checks.
6930         (vect_vfa_segment_size): New.
6931         * params.def (PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS):
6932         Rename.
6933         (PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS): Define.
6934         * gcc/doc/invoke.texi
6935         (vect-max-version-for-alignment-checks): Document.
6936         (vect-max-version-for-alias-checks): Document.
6937         (vect-max-version-checks): Remove.
6938      
6939 2007-08-16  Uros Bizjak  <ubizjak@gmail.com>
6940
6941         * config/i386/i386.md (*rep_movdi_rex64): Emit "rep" prefix on
6942         the same line as the instruction for all asm dialects.
6943         (*rep_movsi): Ditto.
6944         (*rep_movsi_rex64): Ditto.
6945         (*rep_movqi): Ditto.
6946         (*rep_movqi_rex64): Ditto.
6947         (*rep_stosdi_rex64): Ditto.
6948         (*rep_stossi): Ditto.
6949         (*rep_stossi_rex64): Ditto.
6950         (*rep_stosqi): Ditto.
6951         (*rep_stosqi_rex64): Ditto.
6952         (*cmpstrnqi_nz_1): Ditto.
6953         (*cmpstrnqi_nz_rex_1): Ditto.
6954         (*cmpstrnqi_1): Ditto.
6955         (*cmpstrnqi_rex_1): Ditto.
6956         (*strlenqi_1): Ditto.
6957         (*strlenqi_rex_1): Ditto.
6958         * config/i386/sync.md (*sync_compare_and_swap<mode>): Emit "lock"
6959         prefix on the same line as the instruction for all asm dialects.
6960         (sync_double_compare_and_swap<mode>): Ditto.
6961         (*sync_double_compare_and_swapdi_pic): Ditto.
6962         (*sync_compare_and_swap_cc<mode>): Ditto.
6963         (sync_double_compare_and_swap_cc<mode>): Ditto.
6964         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
6965         (sync_old_add<mode>): Ditto.
6966         (sync_add<mode>): Ditto.
6967         (sync_sub<mode>): Ditto.
6968         (sync_ior<mode>): Ditto.
6969         (sync_and<mode>): Ditto.
6970         (sync_xor<mode>): Ditto.
6971
6972 2007-08-16  Richard Sandiford  <richard@codesourcery.com>
6973
6974         PR middle-end/32897
6975         * reload.c (find_reloads): Check that the memory returned by
6976         find_reloads_toplev was not the result of forcing a constant
6977         to memory.
6978         (find_reloads_toplev): Always use simplify_gen_subreg to get
6979         the subreg of a constant.  If the result is also a constant,
6980         but not a legitimate one, force it into the constant pool
6981         and reload its address.
6982
6983 2007-08-15  David Edelsohn  <edelsohn@gnu.org>
6984
6985         * config/rs6000/rs6000.c (rs6000_rtx_costs): Add CLZ, CTZ, and
6986         POPCOUNT.
6987
6988 2007-08-15  Daniel Jacobowitz  <dan@codesourcery.com>
6989
6990         * config/rs6000/rs6000.c (rs6000_file_start): Output a .gnu_attribute
6991         directive for the current vector ABI.
6992
6993 2007-08-15  Steve Ellcey  <sje@cup.hp.com>
6994
6995         PR target/32963
6996         * caller-save.c (reg_save_code): Set invalide status on restore code.
6997         
6998 2007-08-15  Diego Novillo  <dnovillo@google.com>
6999
7000         * tree-ssa-alias.c (compute_memory_partitions): Use
7001         alias_bitmap_obstack to allocate bitmaps.
7002         (reset_alias_info): Factor out of init_alias_info.
7003         Mark all name tags not associated to an SSA name for renaming.
7004         (init_alias_info): Call it.
7005         (create_name_tags): Tidy.  Add comments.
7006         (dump_points_to_info_for): Do not call get_mem_sym_stats_for.
7007
7008 2007-08-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
7009
7010         * config/mips/mips.c (vr4130_swap_insns_p): Use new interface to
7011         scheduler dependencies.
7012
7013 2007-08-15  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7014
7015         * config/i386/i386.md (subsi3_carry_zext): Remove "m" constraint for
7016         "register_operand".
7017         (*iorsi_1_zext): Likewise.
7018         (*iorsi_1_zext_imm): Likewise.
7019         * config/i386/sse.md: (*sse4_1_extractps): Use "nonimmediate_operand"
7020         with "rm"/"xm" constraint.
7021         (sse2_vmsqrtv2df2): Likewise.
7022
7023 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
7024
7025         PR middle-end/33074
7026         * emit-rtl.c (try_split): Use INSN_LIST instead of EXPR_LIST for
7027         REG_LIBCALL note.
7028
7029 2007-08-14  Daniel Berlin  <dberlin@dberlin.org>
7030
7031         * tree-pass.h (PROP_pta): Removed.
7032         (TODO_rebuild_alias): New.
7033         (pass_may_alias): Removed.
7034         * tree-ssa-ccp.c (execute_fold_all_builtins): Only rebuild
7035         aliasing if we changed something.
7036         * tree-ssa-alias.c (compute_may_aliases): Make non-static.  Update
7037         SSA internally.
7038         (pass_may_alias): Removed.
7039         (create_structure_vars): Return TODO_rebuild_alias.
7040         * tree-ssa-pre.c (do_pre): Return TODO_rebuild_alias.
7041         * tree-sra.c (tree_sra): Only rebuild aliasing if something
7042         changed.
7043         (tree_sra_early): We never affect aliasing right now.
7044         * tree-flow.h (compute_may_aliases): New prototype.
7045         * passes.c: Remove pass_may_alias from the passes.
7046         (execute_function_todo): Support TODO_rebuild_alias.    
7047
7048 2007-08-14  Kai Tietz  <kai.tietz@onevision.com>
7049
7050         * i386.c: (legitimize_address): Move dllimported variable check
7051         infront of legitimizing pic address of CONST symbols.
7052
7053 2007-08-14  Steve Ellcey  <sje@cup.hp.com>
7054
7055         PR tree-optimization/32941
7056         * tree-eh.c (struct leh_tf_state): Add goto_queue_map field.
7057         (goto_queue_cmp): Remove.
7058         (find_goto_replacement): Change search method.
7059         (maybe_record_in_goto_queue): Add assert.
7060         (lower_try_finally): Remove qsort call, add pointer_map_destroy call.
7061         * Makefile.in (tree-eh.o): Add pointer-set.h dependency.
7062
7063 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7064
7065         * alias.c (component_uses_parent_alias_set): Constify.
7066         * alias.h (component_uses_parent_alias_set): Likewise.
7067         * cfgrtl.c (print_rtl_with_bb): Likewise.
7068         * double-int.c (tree_to_double_int, double_int_fits_to_tree_p,
7069         mpz_get_double_int): Likewise.
7070         * double-int.h (double_int_fits_to_tree_p, tree_to_double_int,
7071         mpz_get_double_int): Likewise.
7072         * expr.c (is_aligning_offset, undefined_operand_subword_p,
7073         mostly_zeros_p, all_zeros_p, safe_from_p, is_aligning_offset):
7074         Likewise.
7075         * expr.h (safe_from_p): Likewise.
7076         * gimple-low.c (try_catch_may_fallthru, block_may_fallthru):
7077         Likewise.
7078         * gimplify.c (should_carry_locus_p, zero_sized_field_decl,
7079         zero_sized_type, goa_lhs_expr_p): Likewise.
7080         * omp-low.c (is_variable_sized, use_pointer_for_field): Likewise.
7081         * rtl.h (print_rtl_with_bb): Likewise.
7082         * sched-vis.c (print_exp, print_value, print_pattern): Likewise.
7083         * tree-cfg.c (const_first_stmt, const_last_stmt): New.
7084         * tree-flow-inline.h (bb_stmt_list): Constify.
7085         (cbsi_start, cbsi_last, cbsi_end_p, cbsi_next, cbsi_prev,
7086         cbsi_stmt): New.
7087         * tree-flow.h (const_block_stmt_iterator, cbsi_start, cbsi_last,
7088         const_first_stmt, const_last_stmt): New.
7089         (block_may_fallthru, empty_block_p): Constify.
7090         * tree-iterator.c (EXPR_FIRST_BODY, EXPR_LAST_BODY,
7091         EXPR_ONLY_BODY): New.
7092         (expr_first, expr_last, expr_only): Use macro for body.
7093         (const_expr_first, const_expr_last, const_expr_only): New.
7094         * tree-iterator.h (const_tree_stmt_iterator, ctsi_start,
7095         ctsi_last, ctsi_end_p, ctsi_one_before_end_p, ctsi_next,
7096         ctsi_prev, ctsi_stmt): New.
7097         * tree-scalar-evolution.c (get_loop_exit_condition): Constify.
7098         * tree-scalar-evolution.h (get_loop_exit_condition): Likewise.
7099         * tree-ssa-loop-niter.c (loop_only_exit_p,
7100         derive_constant_upper_bound): Likewise.
7101         * tree-ssa-phiopt.c (empty_block_p): Likewise.
7102         * tree-ssa-threadupdate.c (redirection_block_p): Likewise.
7103         * tree-vectorizer.c (slpeel_can_duplicate_loop_p): Likewise.
7104         * tree-vectorizer.h (slpeel_can_duplicate_loop_p): Likewise.
7105         * tree-vrp.c (vrp_bitmap_equal_p): Likewise.
7106         * tree.c (get_type_static_bounds): Likewise.
7107         * tree.h (const_expr_first, const_expr_last, const_expr_only): New.
7108         (get_type_static_bounds): Constify.
7109
7110 2007-08-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7111
7112         PR target/30315
7113         * config/i386/i386.h (CANONICALIZE_COMPARISON): New.
7114         * config/i386/i386.md (plusminus)(addsub)(SWI): New.
7115         (*<addsub><mode>3_cc_overflow): New.
7116         (*add<mode>3_cconly_overflow): New.
7117         (*sub<mode>3_cconly_overflow): New.
7118         (*<addsub>si3_zext_cc_overflow): New.
7119         * config/i386/predicates.md (fcmov_comparison_operator): Accept
7120         CCCmode for LTU, GTU, LEU and GEU.
7121         (ix86_comparison_operator): Likewise.
7122         (ix86_carry_flag_operator): Carry flag is set if LTU or GTU in CCCmode.
7123         * config/i386/i386.c (put_condition_code): Support CCCmode.
7124         (ix86_cc_mode): Use CCCmode when testing for overflow of PLUS
7125         or MINUS expressions.
7126
7127 2007-08-14  Andrew Pinski  <pinskia@gmail.com>
7128
7129         PR c/30428
7130         * c-typeck.c (build_binary_op): Disallow vector float types with
7131         BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.
7132
7133 2007-08-14  Maxim Kuvyrkov  <maxim@codesourcery.com>
7134
7135         * sched-int.h (struct _dep): Rename field 'kind' to 'type'.
7136         (DEP_KIND): Rename to DEP_TYPE.  Update all uses.
7137         (dep_def): New typedef.
7138         (init_dep_1, sd_debug_dep): Declare functions.
7139         (DEP_LINK_KIND): Rename to DEP_LINK_TYPE.
7140         (debug_dep_links): Remove.
7141         (struct _deps_list): New field 'n_links'.
7142         (DEPS_LIST_N_LINKS): New macro.
7143         (FOR_EACH_DEP_LINK): Remove.
7144         (create_deps_list, free_deps_list, delete_deps_list): Remove
7145         declaration.
7146         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
7147         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
7148         (copy_deps_list_change_con, move_dep_link): Ditto.
7149         (struct haifa_insn_data): Split field 'back_deps' into 'hard_back_deps'
7150         and 'spec_back_deps'.  New field 'resolved_forw_deps'.  Remove field
7151         'dep_count'.
7152         (INSN_BACK_DEPS): Remove.
7153         (INSN_HARD_BACK_DEPS, INSN_SPEC_BACK_DEPS, INSN_RESOLVED_FORW_DEPS):
7154         New macros.
7155         (INSN_DEP_COUNT): Remove.
7156         (enum DEPS_ADJUST_RESULT): Add new constant DEP_NODEP.  Fix comments.
7157         (spec_info, haifa_recovery_block_was_added_during_scheduling_p):
7158         Declare global variables.
7159         (deps_pools_are_empty_p, sched_free_deps): Declare functions.
7160         (add_forw_dep, compute_forward_dependences): Remove declarations.
7161         (add_or_update_back_dep, add_or_update_back_forw_dep): Ditto.
7162         (add_back_forw_dep, delete_back_forw_dep): Ditto.
7163         (debug_ds, sched_insn_is_legitimate_for_speculation_p): Declare
7164         functions.
7165         (SD_LIST_NONE, SD_LIST_HARD_BACK, SD_LIST_SPEC_BACK, SD_LIST_FORW):
7166         New constants.
7167         (SD_LIST_RES_BACK, SD_LIST_RES_FORW, SD_LIST_BACK): Ditto.
7168         (sd_list_types_def): New typedef.
7169         (sd_next_list): Declare function.
7170         (struct _sd_iterator): New type.
7171         (sd_iterator_def): New typedef.
7172         (sd_iterator_start, sd_iterator_cond, sd_iterator_next): New inline
7173         functions.
7174         (FOR_EACH_DEP): New cycle wrapper.
7175         (sd_lists_size, sd_lists_empty_p, sd_init_insn, sd_finish_insn):
7176         Declare functions.
7177         (sd_find_dep_between, sd_add_dep, sd_add_or_update_dep): Ditto.
7178         (sd_resolve_dep, sd_copy_back_deps, sd_delete_dep, sd_debug_lists):
7179         Ditto.
7180
7181         * sched-deps.c (init_dep_1): Make global.
7182         (DUMP_DEP_PRO, DUMP_DEP_CON, DUMP_DEP_STATUS, DUMP_DEP_ALL): New
7183         constants.
7184         (dump_dep): New static function.
7185         (dump_dep_flags): New static variable.
7186         (sd_debug_dep): New function.
7187         (add_to_deps_list, remove_from_deps_list): Update 'n_links' field of
7188         the list.
7189         (move_dep_link): Use remove_from_deps_list (), instead of
7190         detach_dep_link ().
7191         (dep_links_consistent_p, dump_dep_links, debug_dep_links): Remove.
7192         (dep_link_is_detached_p): New static function.
7193         (deps_obstack, dl_obstack, dn_obstack): Remove.  Use dn_pool, dl_pool
7194         instead.
7195         (dn_pool, dl_pool): New alloc_pools.
7196         (dn_pool_diff, dl_pool_diff): New static variables.
7197         (create_dep_node, delete_dep_node): New static function.
7198         (create_deps_list): Make it static.  Use alloc_pool 'dl_pool'.
7199         (deps_list_empty_p): Make it static.  Use 'n_links' field.
7200         (deps_pools_are_empty_p): New static function.
7201         (alloc_deps_list, delete_deps_list): Remove.
7202         (dump_deps_list, debug_deps_list, add_back_dep_to_deps_list): Remove.
7203         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
7204         (copy_deps_list_change_con): Remove.  Use sd_copy_back_deps () instead.
7205         (forward_dependency_cache): Remove.
7206         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Remove
7207         'back' from the names.  Change signature to use dep_t instead of
7208         equivalent quad.
7209         (add_back_dep): Ditto.  Make global.
7210         (check_dep_status): Rename to check_dep ().
7211         (sd_next_list, sd_lists_size, sd_lists_empty_p, sd_init_insn):
7212         New functions.
7213         (sd_finish_insn): Ditto.
7214         (sd_find_dep_between_no_cache): New static function.
7215         (sd_find_dep_between): New function.
7216         (ask_dependency_caches, set_dependency_caches): New static functions.
7217         (update_dependency_caches, change_spec_dep_to_hard, update_dep): Ditto.
7218         (add_or_update_dep_1): Separate pieces of functionality into
7219         ask_dependency_caches (), update_dependency_caches (),
7220         change_spec_dep_to_hard (), update_dep ().
7221         (get_back_and_forw_lists): New static function.
7222         (sd_add_dep): Separate setting of dependency caches into
7223         set_dependency_caches ().
7224         (sd_add_or_update_dep, sd_resolve_dep, sd_copy_back_deps):
7225         New functions.
7226         (sd_delete_dep): Ditto.
7227         (DUMP_LISTS_SIZE, DUMP_LISTS_DEPS, DUMP_LISTS_ALL): New constants.
7228         (dump_lists): New static function.
7229         (sd_debug_lists): New debug function.
7230         (delete_all_dependences, fixup_sched_groups): Update to use
7231         sd_* infrastructure.
7232         (sched_analyze_2): Create data-speculative dependency only if
7233         data-speculation is enabled.
7234         (sched_analyze_insn): If insn cannot be speculative, make all its
7235         dependencies non-speculative.
7236         (sched_analyze): Use sd_init_insn ().
7237         (add_forw_dep, compute_forward_dependencies): Remove.
7238         (delete_dep_nodes_in_back_deps): New static function.
7239         (sched_free_deps): New function.
7240         (init_dependency_caches): Init alloc_pools.
7241         (extend_depedency_caches): Update after removing of
7242         forward_dependency_cache.
7243         (free_dependency_caches): Ditto.  Free alloc_pools.
7244         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Remove.
7245         (delete_forw_dep, add_or_update_back_dep, add_or_update_back_forw_dep):
7246         Ditto.
7247         (add_back_forw_dep, delete_back_forw_dep): Ditto.
7248         (add_dependence): Use init_dep ().
7249         (get_dep_weak_1): New static function.
7250         (get_dep_weak): Move logic to get_dep_weak_1 ().
7251         (dump_ds): New static function moved from haifa-sched.c:
7252         debug_spec_status ().
7253         (debug_ds): New debug function.
7254         (check_dep_status): Rename to check_dep ().  Update to check whole
7255         dependencies.
7256
7257         * haifa-sched.c (spec_info): Make global.
7258         (added_recovery_block_p): Rename to
7259         'haifa_recovery_block_was_added_during_current_schedule_block_p'.
7260         (haifa_recovery_block_was_added_during_scheduling_p): New variable.
7261         (dep_cost, priority, rank_for_schedule, schedule_insn): Update
7262         to use new interfaces.
7263         (ok_for_early_queue_removal): Ditto.
7264         (schedule_block): Initialize logical uids of insns emitted by the
7265         target.
7266         (sched_init): Initialize new variable.
7267         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
7268         interfaces.
7269         (extend_global): Initialize insn data.
7270         (init_h_i_d): Remove code that is now handled in sd_init_insn ().
7271         (process_insn_forw_deps_be_in_spec): Change signature.  Update to use
7272         new interfaces.
7273         (add_to_speculative_block): Update to use new interfaces.
7274         (create_recovery_block): Set new variables.
7275         (create_check_block_twin, fix_recovery_deps): Update to use new
7276         interfaces.
7277         (sched_insn_is_legitimate_for_speculation_p): New function.
7278         (speculate_insn): Move checking logic to
7279         sched_insn_is_legitimate_for_speculation_p ().
7280         (sched_remove_insn): Finalize sched-deps information of instruction.
7281         (clear_priorities, add_jump_dependencies): Update to use new
7282         interfaces.
7283         (debug_spec_status): Rename to dump_ds () and move to sched-deps.c.
7284         
7285         * sched-rgn.c (set_spec_fed, find_conditional_protection): Update
7286         to use new interfaces.
7287         (is_conditionally_protected, is_pfree, is_prisky) Ditto.
7288         (new_ready): Try to use control speculation only if it is available.
7289         (add_branch_dependences): Update to use new interfaces.
7290         (compute_block_backward_dependences): Rename to
7291         compute_block_dependences ().  Call
7292         targetm.sched.dependencies_evaluation_hook ().
7293         (free_block_dependencies): New static function.
7294         (debug_dependencies): Update to use new interfaces.
7295         (schedule_region): Remove separate computation of forward dependencies.
7296         Move call of targetm.sched.dependencies_evaluation_hook () to
7297         compute_block_dependences ().  Free dependencies at the end of
7298         scheduling the region.
7299
7300         * sched-ebb.c (earliest_block_with_similiar_load): Update to use
7301         new interfaces.
7302         (add_deps_for_risky_insns): Ditto.
7303         (schedule_ebb): Remove separate computation of forward dependencies.
7304         Free dependencies at the end of scheduling the ebb.
7305
7306         * ddg.c (create_ddg_dependence): Update to use new interfaces.
7307         (build_intra_loop_deps): Ditto.  Remove separate computation of
7308         forward dependencies.  Free sched-deps dependencies.
7309
7310         * config/ia64/ia64.c (ia64_dependencies_evaluation_hook): Update
7311         to use new interfaces.
7312         (ia64_dfa_new_cycle, ia64_gen_check): Ditto.
7313
7314         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Update to use
7315         new interfaces.
7316         (is_costly_group): Ditto.
7317
7318 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7319
7320         * alias.c (rtx_equal_for_memref_p): Constify.
7321         * basic-block.h (const_edge, const_basic_block): New.
7322         (reg_set_to_hard_reg_set, dfs_enumerate_from, single_succ_p,
7323         single_pred_p, single_succ_edge, single_pred_edge, single_succ,
7324         single_pred, maybe_hot_bb_p, probably_cold_bb_p,
7325         probably_never_executed_bb_p, edge_probability_reliable_p,
7326         br_prob_note_reliable_p, forwarder_block_p, flow_nodes_print,
7327         inside_basic_block_p, control_flow_insn_p, dominated_by_p):
7328         Likewise.
7329         * bb-reorder.c (better_edge_p, push_to_next_round_p): Likewise.
7330         * bt-load.c (basic_block_freq, insn_sets_btr_p, can_move_up):
7331         Likewise.
7332         * cfganal.c (flow_active_insn_p, forwarder_block_p,
7333         flow_nodes_print, dfs_enumerate_from): Likewise.
7334         * cfgbuild.c (count_basic_blocks, inside_basic_block_p,
7335         control_flow_insn_p, count_basic_blocks): Likewise.
7336         * cfgloop.c (flow_bb_inside_loop_p, glb_enum_p,
7337         get_loop_body_with_size, loop_exit_edge_p): Likewise.
7338         * cfgloop.h (flow_bb_inside_loop_p, num_loop_insns,
7339         average_num_loop_insns, loop_exit_edge_p,
7340         just_once_each_iteration_p, can_duplicate_loop_p): Likewise.
7341         * cfgloopanal.c (just_once_each_iteration_p, num_loop_insns,
7342         average_num_loop_insns, seq_cost): Likewise.
7343         * cfgloopmanip.c (rpe_enum_p, can_duplicate_loop_p): Likewise.
7344         * dominance.c (dominated_by_p): Likewise.
7345         * emit-rtl.c (validate_subreg): Likewise.
7346         * except.c (can_throw_internal, can_throw_external): Likewise.
7347         * except.h (can_throw_internal, can_throw_external): Likewise.
7348         * gcse.c (gcse_constant_p, oprs_unchanged_p, oprs_anticipatable_p,
7349         oprs_available_p, hash_expr, expr_equiv_p, oprs_not_set_p,
7350         compute_transp, load_killed_in_block_p, reg_killed_on_edge,
7351         simple_mem, store_ops_ok, load_kills_store, find_loads,
7352         store_killed_in_insn, store_killed_after, store_killed_before,
7353         gcse_mem_operand, implicit_set_cond_p, store_killed_in_pat):
7354         Likewise.
7355         * ifcvt.c (count_bb_insns, cheap_bb_rtx_cost_p, noce_operand_ok,
7356         noce_mem_write_may_trap_or_fault_p): Likewise.
7357         * pointer-set.c (pointer_set_contains, pointer_map_contains):
7358         Likewise.
7359         * pointer-set.h (pointer_set_contains, pointer_map_contains):
7360         Likewise.
7361         * predict.c (can_predict_insn_p, maybe_hot_bb_p,
7362         probably_cold_bb_p, probably_never_executed_bb_p,
7363         edge_probability_reliable_p, br_prob_note_reliable_p,
7364         can_predict_insn_p): Likewise.
7365         * regclass.c (reg_set_to_hard_reg_set): Likewise.
7366         * resource.c (return_insn_p): Likewise.
7367         * rtl.h (reg_set_between_p, reg_set_p, validate_subreg):
7368         Likewise.
7369         * rtlanal.c (reg_set_between_p, reg_set_p): Likewise.
7370         * tracer.c (count_insns, ignore_bb_p, better_p): Likewise.
7371         * tree-cfg.c (verify_gimple_unary_expr, verify_gimple_binary_expr,
7372         verify_gimple_modify_stmt): Likewise.
7373         * tree-chrec.c (is_not_constant_evolution,
7374         is_multivariate_chrec_rec, is_multivariate_chrec,
7375         chrec_contains_symbols, chrec_contains_undetermined,
7376         tree_contains_chrecs, evolution_function_is_affine_multivariate_p,
7377         evolution_function_is_univariate_p, avoid_arithmetics_in_type_p,
7378         eq_evolutions_p, scev_direction): Likewise.
7379         * tree-chrec.h (automatically_generated_chrec_p, tree_is_chrec,
7380         eq_evolutions_p, is_multivariate_chrec, chrec_contains_symbols,
7381         chrec_contains_symbols_defined_in_loop,
7382         chrec_contains_undetermined, tree_contains_chrecs,
7383         evolution_function_is_affine_multivariate_p,
7384         evolution_function_is_univariate_p, chrec_zerop,
7385         evolution_function_is_constant_p, evolution_function_is_affine_p,
7386         evolution_function_is_affine_or_constant_p,
7387         tree_does_not_contain_chrecs, chrec_type): Likewise.
7388         * tree-data-ref.c (tree_fold_divides_p,
7389         object_address_invariant_in_loop_p, dr_may_alias_p,
7390         ziv_subscript_p, siv_subscript_p, gcd_of_steps_may_divide_p,
7391         same_access_functions, constant_access_functions,
7392         access_functions_are_affine_or_constant_p, find_vertex_for_stmt):
7393         Likewise.
7394         * tree-flow.h (scev_direction): Likewise.
7395         * tree-gimple.c (is_gimple_stmt): Likewise.
7396         * tree-outof-ssa.c (identical_copies_p, identical_stmt_lists_p):
7397         Likewise.
7398         * tree-pretty-print.c (op_prio): Likewise.
7399         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop,
7400         analyzable_condition, backedge_phi_arg_p): Likewise.
7401         * tree-scalar-evolution.h (get_chrec_loop): Likewise.
7402         * tree-ssa-operands.c (get_name_decl, operand_build_cmp): Likewise.
7403         * tree-ssa-threadupdate.c (dbds_continue_enumeration_p):
7404         Likewise.
7405
7406 2007-08-13  Dan Hipschman  <dsh@google.com>
7407
7408         PR c/32953
7409         * c-format.c (check_format_arg): Move check for zero-length
7410         format strings below the check for unterminated strings.
7411
7412 2007-08-13  Andrew Pinski  <pinskia@gmail.com>
7413
7414         PR C/30427
7415         * c-typeck.c (build_unary_op <case BIT_NOT_EXPR>): Reject vector float
7416         types.
7417
7418 2007-08-13  Nick Clifton  <nickc@redhat.com>
7419
7420         * config/arm/arm_neon.h: Revert GPLv3 patch to this file.
7421
7422 2007-08-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
7423
7424         PR fortran/32860
7425         * c-format.c (gcc_gfc_length_specs): New array.
7426         (gcc_gfc_char_table): Add unsigned specifier, and references to
7427         the l length modifier.
7428         (format_types_orig): Use the new gcc_gfc_length_specs.
7429
7430 2007-08-12  Sa Liu  <saliu@de.ibm.com>
7431
7432         * emit-rtl.c (try_split): Relink the insns with REG_LIBCALL note
7433         and with REG_RETVAL note after split.
7434
7435 2007-08-11  David Daney  <ddaney@avtrex.com>
7436
7437         * config/mips/mips.c (mips_sched_reorder): Mark cycle parameter
7438         as ATTRIBUTE_UNUSED.
7439
7440 2007-08-11  David Edelsohn  <edelsohn@gnu.org>
7441             Segher Boessenkool  <segher@kernel.crashing.org>
7442
7443         * config/rs6000/rs6000.h (CC1_CPU_SPEC): Define as empty string if
7444         HAVE_LOCAL_CPU_DETECT not defined.
7445
7446 2007-08-11  Jan Hubicka  <jh@suse.cz>
7447
7448         * cgraphunit.c (record_cdtor_fn): Declare all cdtors always inlined.
7449         (cgraph_process_new_functions): Honor previous value of
7450         disregard_inline_limits.
7451         * ipa-inline.c (compute_inline_parameters): Likewise.
7452
7453 2007-08-11  Ian Lance Taylor  <iant@google.com>
7454
7455         * alias.h (alias_set_type): Define new type.
7456         (ALIAS_SET_MEMORY_BARRIER): Use it.
7457         * rtl.h: Include alias.h.
7458         (struct mem_attrs): Use alias_set_type.
7459         * tree.h: Include alias.h
7460         (struct tree_type): Use alias_set_type.
7461         (struct tree_struct_field_tag): Likewise.
7462         (struct tree_decl_common): Likewise.
7463         * alias.c (struct alias_set_entry): Use alias_set_type.
7464         (get_alias_set_entry, alias_set_subset_of): Likewise.
7465         (alias_sets_conflict_p): Likewise.
7466         (alias_sets_must_conflict_p): Likewise.
7467         (objects_must_conflict_p): Likewise.
7468         (get_alias_set, new_alias_set): Likewise.
7469         (record_alias_subset, record_component_aliases): Likewise.
7470         (varargs_set, frame_set): Change to alias_set_type.
7471         (get_varargs_alias_set): Use alias_set_type.
7472         (get_frame_alias_set): Likewise.
7473         * builtins.c (setjmp_alias_set): Change to alias_set_type.
7474         * dse.c (struct store_info): Use alias_set_type.
7475         (struct read_info, struct clear_alias_mode_holder): Likewise.
7476         (clear_alias_set_lookup, canon_address): Likewise.
7477         (record_store, check_mem_read_rtx): Likewise.
7478         (dse_record_singleton_alias_set): Likewise.
7479         (dse_invalidate_singleton_alias_set): Likewise.
7480         * emit-rtl.c (get_mem_attrs): Likewise.
7481         (set_mem_attributes_minus_bitpos): Likewise.
7482         (set_mem_alias_set): Likewise.
7483         * expr.c (store_constructor_field, store_field): Likewise.
7484         * gimplify.c (struct gimplify_init_ctor_preeval_data): Likewise.
7485         * langhooks.c (lhd_get_alias_set): Likewise.
7486         * langhooks-def.h (lhd_get_alias_set): Likewise.
7487         * reload1.c (alter_reg): Likewise.
7488         * tree-flow.h (struct fieldoff): Likewise.
7489         * tree-ssa-alias.c (struct alias_map_d): Likewise.
7490         (may_alias_p, get_smt_for, create_sft): Likewise.
7491         * tree-ssa-alias-warnings.c (nonstandard_alias_types_p): Likewise.
7492         * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
7493         (merge_smts_into): Likewise.
7494         * varasm.c (const_alias_set): Likewise.
7495         * c-common.c (strict_aliasing_warning): Likewise.
7496         (c_common_get_alias_set): Likewise.
7497         * dse.h (dse_record_singleton_alias_set): Update declaration.
7498         (dse_invalidate_singleton_alias_set): Likewise.
7499         * emit-rtl.h (set_mem_alias_set): Likewise.
7500         * c-common.h (c_common_get_alias_set): Likewise.
7501         * print-rtl.c (print_rtx): Cast MEM_ALIAS_SET when printing it.
7502         * print-tree.c (print_node): Likewise.
7503         * config/alpha/alpha.c (alpha_sr_alias_set): Change to
7504         alias_set_type.
7505         (alpha_setup_incoming_varargs): Use alias_set_type.
7506         * config/i386/i386.c (setup_incoming_varargs_64): Use
7507         alias_set_type.
7508         (setup_incoming_varargs_ms_64): Likewise.
7509         (ix86_GOT_alias_set): Likewise.
7510         * config/mn10300/mn10300.c (mn10300_builtin_saveregs): Likewise.
7511         * config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
7512         (set): Change to alias_set_type.
7513         (get_TOC_alias_set): Use alias_set_type.
7514         * config/rs6000/rs6000-protos.h (get_TOC_alias_set): Update
7515         declaration.
7516         * config/sh/sh.c (sh_builtin_saveregs): Use alias_set_type.
7517         * config/sparc/sparc.c (sparc_sr_alias_set): Change to
7518         alias_set_type.
7519         (struct_value_alias_set): Likewise.
7520         * Makefile.in (GTFILES): Add $(srcdir)/alias.h.
7521
7522 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
7523
7524         * config/vxworks-dummy.h (TARGET_VXWORKS): Define.
7525         * config/vxworks.h (TARGET_VXWORKS): Override.
7526         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Don't define
7527         "mips" if TARGET_VXWORKS.
7528
7529 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
7530
7531         * calls.c (avoid_likely_spilled_reg): New function.
7532         (expand_call): Use it.
7533
7534 2007-08-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7535
7536         * c-typeck.c (build_c_cast): Add OPT_Wcast_qual to warnings.
7537
7538 2007-08-10  Adam Nemet  <anemet@caviumnetworks.com>
7539
7540         * config/mips/predicates.md (const_call_insn_operand): Invoke
7541         SYMBOL_REF_LONG_CALL_P only on SYMBOL_REFs.
7542
7543 2007-08-10  David Edelsohn  <edelsohn@gnu.org>
7544
7545         PR target/33042
7546         * config/rs6000/driver-rs6000.c: Include link.h.
7547         Use ElfW instead of wordsize-specif typedef.
7548
7549 2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7550
7551         * system.h (CONST_CAST): New.
7552         * c-decl.c (c_make_fname_decl): Use it.
7553         * c-lex.c (cb_ident, lex_string): Likewise.
7554         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
7555         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
7556         give_switch, set_multilib_dir): Likewise.
7557         * gengtype-parse.c (string_seq, typedef_name): Likewise.
7558         * passes.c (execute_one_pass): Likewise.
7559         * prefix.c (update_path): Likewise.
7560         * pretty-print.c (pp_base_destroy_prefix): Likewise.
7561         * tree.c (build_string): Likewise.
7562
7563 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
7564
7565         * tree-flow-inline.h (is_exec_stmt): Remove.
7566         (is_label_stmt): Remove.
7567         * tree-flow.h: Remove prototypes for is_exec_stmt, get_filename, and
7568         is_label_stmt.
7569
7570 2007-08-10  Andreas Krebbel  <krebbel1@de.ibm.com>
7571
7572         * lower-subreg.c (resolve_shift_zext): Don't adjust
7573         src_reg_num for wordmode operands.
7574
7575 2007-08-10  Sandra Loosemore  <sandra@codesourcery.com>
7576             David Ung  <davidu@mips.com>
7577
7578         * config/mips/mips.c (TARGET_SCHED_INIT): Define.
7579         (TARGET_SCHED_REORDER2): Define.
7580         (mips_maybe_swap_ready): New.
7581         (mips_last_74k_agen_insn): New.
7582         (mips_74k_agen_init): New.
7583         (mips_74k_agen_reorder): New function to group loads and stores
7584         in the ready queue.
7585         (mips_sched_init): New.  
7586         (mips_sched_reorder): Don't do initialization here.  Call
7587         mips_74k_agen_reorder.
7588         (mips_variable_issue): Call mips_74k_agen_init.
7589
7590 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
7591
7592         * tree-flow-inline.h (get_filename): Remove.
7593
7594 2007-08-10  Richard Sandiford  <richard@codesourcery.com>
7595
7596         * config/mips/mips-protos.h (mips_address_insns): Add a boolean
7597         argument.
7598         (mips_fetch_insns): Delete in favor of...
7599         (mips_load_store_insns): ...this new function.
7600         * config/mips/mips.c (mips_address_insns): Add a boolean argument
7601         to say whether multiword moves _might_ be split.
7602         (mips_fetch_insns): Delete in favor of...
7603         (mips_load_store_insns): ...this new function.
7604         (mips_rtx_costs): Update the call to mips_address_insns.
7605         (mips_address_cost): Likewise.
7606         * config/mips/mips.md (length): Use mips_load_store_insns instead
7607         of mips_fetch_insns.
7608         * config/mips/constraints.md (R): Use mips_address_insns rather
7609         than mips_fetch_insns.  Assume that the move never needs to be split.
7610
7611 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
7612
7613         * config/mips/mips.opt (mhard-float, msoft-float): Make these
7614         control TARGET_HARD_FLOAT_ABI and TARGET_SOFT_FLOAT_ABI, rather
7615         than TARGET_HARD_FLOAT and TARGET_SOFT_FLOAT.  
7616         * config/mips/mips.h (mips16_hard_float): Delete.
7617         (TARGET_HARD_FLOAT_ABI, TARGET_SOFT_FLOAT_ABI): Delete these
7618         definitions, and replace with....
7619         (TARGET_HARD_FLOAT, TARGET_SOFT_FLOAT): Define.
7620         * config/mips/mips.c (mips16_hard_float): Delete.  Replace
7621         all references with (TARGET_MIPS16 && TARGET_HARD_FLOAT_ABI).
7622         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Update comments.
7623         (override_options): Replace MASK_SOFT_FLOAT references with
7624         MASK_SOFT_FLOAT_ABI.  Delete twiddling with MASK_SOFT_FLOAT
7625         and mips16_hard_float when TARGET_MIPS16.
7626         
7627 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7628
7629         PR c/32796
7630         * c-typeck.c (build_binary_op): Check for non pointer types before
7631         calling int_fits_type_p.
7632
7633 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7634
7635         PR middle-end/32813
7636         * fold-const.c (omit_one_operand): Return only the ommitted expression
7637         if the result is an empty statement.
7638         (pedantic_omit_one_operand): Likewise.
7639
7640 2007-08-09  Daniel Berlin  <dberlin@dberlin.org>
7641
7642         * c-typeck.c (readonly_error): Improve error for assignment.
7643         
7644         * c-pretty-print.c (pp_c_additive_expression): Handle pointer-plus
7645         expression. 
7646         (pp_c_expression): Ditto.
7647
7648 2007-08-09  Simon Baldwin  <simonb@google.com>
7649
7650         * simplify-rtx.c (simplify_binary_operation_1): Removed erroneous
7651         break that was preventing simplify_associative_operation() for xor.
7652
7653 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
7654             Nigel Stephens  <nigel@mips.com>
7655
7656         * doc/tm.texi (CLZ_DEFINED_VALUE_AT_ZERO, CTZ_DEFINED_VALUE_AT_ZERO):
7657         Document change in interpretation of value from boolean to
7658         tri-state integer.
7659         * optabs.c (expand_ffs, expand_ctz): New functions to compute
7660         ffs and ctz using clz.
7661         (expand_unop): Call them.
7662         * config/rs6000/rs6000.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix its
7663         result value.
7664         (CTZ_DEFINED_VALUE_AT_ZERO): Likewise.
7665         * config/mips/mips.h (CLZ_DEFINED_VALUE_AT_ZERO): Likewise, to
7666         enable the new ffs expansion on this target.
7667
7668 2007-08-09  Jan Hubicka  <jh@suse.cz>
7669
7670         * optabs.c (expand_widen_pattern_expr): Use optabs accestors.
7671         (expand_ternary_op): Likewise.
7672         (expand_vec_shift_expr): Likewise.
7673         (expand_binop_directly): Likewise.
7674         (expand_binop): Likewise.
7675         (sign_expand_binop): Likewise.
7676         (expand_twoval_unop): Likewise.
7677         (expand_twoval_binop): Likewise.
7678         (expand_twoval_binop_libfunc): Likewise.
7679         (widen_clz): Likewise.
7680         (widen_bswap): Likewise.
7681         (expand_parity): Likewise.
7682         (expand_unop): Likewise.
7683         (expand_abs_nojump): Likewise.
7684         (expand_copysign): Likewise.
7685         (emit_no_conflict_block): Likewise.
7686         (emit_libcall_block): Likewise.
7687         (can_compare_p): Likewise.
7688         (prepare_cmp_insn): Likewise.
7689         (emit_cmp_and_jump_insn_1): Likewise.
7690         (prepare_float_lib_cmp): Likewise.
7691         (emit_conditional_add): Likewise.
7692         (gen_add2_insn): Likewise.
7693         (have_add2_insn): Likewise.
7694         (gen_sub2_insn): Likewise.
7695         (have_sub2_insn): Likewise.
7696         (can_extend_p): Likewise.
7697         (can_fix_p): Likewise.
7698         (can_float_p): Likewise.
7699         (expand_float): Likewise.
7700         (expand_fix): Likewise.
7701         (expand_sfix_optab): Likewise.
7702         (new_optab): Likewise.
7703         (new_convert_optab): Likewise.
7704         (init_libfuncs): Likewise.
7705         (init_interclass_conv_libfuncs): Likewise.
7706         (init_intraclass_conv_libfuncs): Likewise.
7707         (set_conv_libfunc): Likewise.
7708         (init_optabs): Likewise.
7709         (debug_optab_libfuncs): Likewise.
7710         (gen_cond_trap): Likewise.
7711         * optabs.h (optab_handler, convert_optab_hanlder): New.
7712         * genopinit.c: Update optabs generation table.
7713         * reload.c (find_reloads_address_1): Use optabs accestors.
7714         * builtins.c (expand_builtin_mathfn): Likewise.
7715         (expand_builtin_mathfn_2): Likewise.
7716         (expand_builtin_mathfn_3): Likewise.
7717         (expand_builtin_interclass_mathfn): Likewise.
7718         (expand_builtin_sincos): Likewise.
7719         (expand_builtin_cexpi): Likewise.
7720         (expand_builtin_powi): Likewise.
7721         (expand_builtin_strlen): Likewise.
7722         * dojump.c (do_jump): Likewise.
7723         * expr.c (convert_move): Likewise.
7724         (move_by_pieces): Likewise.
7725         (move_by_pieces_ninsns): Likewise.
7726         (can_store_by_pieces): Likewise.
7727         (store_by_pieces_1): Likewise.
7728         (emit_move_via_integer): Likewise.
7729         (emit_move_complex): Likewise.
7730         (emit_move_ccmode): Likewise.
7731         (emit_move_insn_1): Likewise.
7732         (emit_single_push_insn): Likewise.
7733         (store_constructor): Likewise.
7734         (expand_expr_real_1): Likewise.
7735         (do_store_flag): Likewise.
7736         * ada/misc.c (gnat_compute_largest_alignment): Likewise.
7737         (enumerate_modes): Likewise.
7738         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
7739         (supportable_widening_operation): Likewise.
7740         (supportable_narrowing_operation): Likewise.
7741         * expmed.c (store_bit_field_1): Likewise.
7742         (extract_bit_field_1): Likewise.
7743         (expand_mult_highpart_optab): Likewise.
7744         (expand_smod_pow2): Likewise.
7745         (expand_divmod): Likewise.
7746         (emit_store_flag): Likewise.
7747         * tree-vect-patterns.c
7748         (vect_pattern_recog_1): Likewise.
7749         * tree-ssa-loop-prefetch.c
7750         (nontemporal_store_p): Likewise.
7751         * tree-vect-transform.c (vect_model_reduction_cost): Likewise.
7752         (vect_create_epilog_for_reduction): Likewise.
7753         (vectorizable_reduction): Likewise.
7754         (vectorizable_operation): Likewise.
7755         (vect_strided_store_supported): Likewise.
7756         (vectorizable_store): Likewise.
7757         (vect_strided_load_supported): Likewise.
7758         (vectorizable_load): Likewise.
7759         * combine.c (simplify_comparison): Likewise.
7760         * tree-vect-generic.c
7761         (type_for_widest_vector_mode): Likewise.
7762         (expand_vector_operations_1): Likewise.
7763         * config/spu/spu.c (spu_expand_mov): Likewise.
7764         (spu_emit_vector_compare): Likewise.
7765         * config/rs6000/rs6000.c
7766         (rs6000_emit_vector_compare): Likewise.
7767         * stmt.c (add_case_node): Likewise.
7768         * reload1.c (gen_reload):
7769
7770 2007-08-09  Michael Matz  <matz@suse.de>
7771
7772         * tree.h (fixed_zerop): Declare as taking a const_tree.
7773         * tree.c (fixed_zerop): Take a const_tree.
7774
7775 2007-08-09  Ira Rosen  <irar@il.ibm.com>
7776
7777         * tree-vect-transform.c (vectorizable_store): Remove call to
7778         copy_virtual_operands() and call mark_symbols_for_renaming() for
7779         the created vector store.
7780         (vect_setup_realignment): Don't call copy_virtual_operands() and
7781         update_vuses_to_preheader(). 
7782         (vectorizable_load): Don't call copy_virtual_operands(). 
7783         (update_vuses_to_preheader): Remove.
7784
7785 2007-08-08  Chao-ying Fu  <fu@mips.com>
7786
7787         * tree.def (FIXED_POINT_TYPE): New type.
7788         (FIXED_CST): New constant.
7789         (FIXED_CONVERT_EXPR): New expr.
7790         * doc/c-tree.texi (Types): Document FIXED_POINT_TYPE.
7791         (Expressions): Document FIXED_CST and FIXED_CONVERT_EXPR.
7792         * tree.h (struct tree_base): Add saturating_flag.
7793         Remove one bit of spare for saturating_flag.
7794         (NUMERICAL_TYPE_CHECK): Support FIXED_POINT_TYPE.
7795         (NON_SAT_FIXED_POINT_TYPE_P, SAT_FIXED_POINT_TYPE_P,
7796         FIXED_POINT_TYPE_P): Define.
7797         (TYPE_SATURATING): Define.
7798         (TREE_FIXED_CST_PTR, TREE_FIXED_CST): Define.
7799         (struct tree_fixed_cst): New.
7800         (TYPE_IBIT, TYPE_FBIT): Define.
7801         (tree_node): Add fixed_cst.
7802         (enum tree_index): Add new enumeration values of
7803         TI_SAT_SFRACT_TYPE, TI_SAT_FRACT_TYPE, TI_SAT_LFRACT_TYPE,
7804         TI_SAT_LLFRACT_TYPE, TI_SAT_USFRACT_TYPE, TI_SAT_UFRACT_TYPE,
7805         TI_SAT_ULFRACT_TYPE, TI_SAT_ULLFRACT_TYPE, TI_SFRACT_TYPE,
7806         TI_FRACT_TYPE, TI_LFRACT_TYPE, TI_LLFRACT_TYPE, TI_USFRACT_TYPE,
7807         TI_UFRACT_TYPE, TI_ULFRACT_TYPE, TI_ULLFRACT_TYPE,
7808         TI_SAT_SACCUM_TYPE, TI_SAT_ACCUM_TYPE, TI_SAT_LACCUM_TYPE,
7809         TI_SAT_LLACCUM_TYPE, TI_SAT_USACCUM_TYPE, TI_SAT_UACCUM_TYPE,
7810         TI_SAT_ULACCUM_TYPE, TI_SAT_ULLACCUM_TYPE, TI_SACCUM_TYPE,
7811         TI_ACCUM_TYPE, TI_LACCUM_TYPE, TI_LLACCUM_TYPE, TI_USACCUM_TYPE,
7812         TI_UACCUM_TYPE, TI_ULACCUM_TYPE, TI_ULLACCUM_TYPE,
7813         TI_QQ_TYPE, TI_HQ_TYPE,_TYPE, TI_SQ_TYPE, TI_DQ_TYPE, TI_TQ_TYPE,
7814         TI_UQQ_TYPE, TI_UHQ_TYPE, TI_USQ_TYPE, TI_UDQ_TYPE, TI_UTQ_TYPE,
7815         TI_SAT_QQ_TYPE, TI_SAT_HQ_TYPE, TI_SAT_SQ_TYPE, TI_SAT_DQ_TYPE,
7816         TI_SAT_TQ_TYPE, TI_SAT_UQQ_TYPE, TI_SAT_UHQ_TYPE, TI_SAT_USQ_TYPE,
7817         TI_SAT_UDQ_TYPE, TI_SAT_UTQ_TYPE, TI_HA_TYPE, TI_SA_TYPE, TI_DA_TYPE,
7818         TI_TA_TYPE, TI_UHA_TYPE, TI_USA_TYPE, TI_UDA_TYPE, TI_UTA_TYPE,
7819         TI_SAT_HA_TYPE, TI_SAT_SA_TYPE, TI_SAT_DA_TYPE, TI_SAT_TA_TYPE,
7820         TI_SAT_UHA_TYPE, TI_SAT_USA_TYPE, TI_SAT_UDA_TYPE, TI_SAT_UTA_TYPE.
7821         (sat_short_fract_type_node, sat_fract_type_node,
7822         sat_long_fract_type_node, sat_long_long_fract_type_node,
7823         sat_unsigned_short_fract_type_node, sat_unsigned_fract_type_node,
7824         sat_unsigned_long_fract_type_node,
7825         sat_unsigned_long_long_fract_type_node, short_fract_type_node,
7826         fract_type_node, long_fract_type_node, long_long_fract_type_node,
7827         unsigned_short_fract_type_node, unsigned_fract_type_node,
7828         unsigned_long_fract_type_node, unsigned_long_long_fract_type_node,
7829         sat_short_accum_type_node, sat_accum_type_node,
7830         sat_long_accum_type_node, sat_long_long_accum_type_node,
7831         sat_unsigned_short_accum_type_node, sat_unsigned_accum_type_node,
7832         sat_unsigned_long_accum_type_node,
7833         sat_unsigned_long_long_accum_type_node, short_accum_type_node,
7834         accum_type_node, long_accum_type_node, long_long_accum_type_node,
7835         unsigned_short_accum_type_node, unsigned_accum_type_node,
7836         unsigned_long_accum_type_node, unsigned_long_long_accum_type_node,
7837         qq_type_node, hq_type_node, sq_type_node, dq_type_node, tq_type_node,
7838         uqq_type_node, uhq_type_node, usq_type_node, udq_type_node,
7839         utq_type_node, sat_qq_type_node, sat_hq_type_node, sat_sq_type_node,
7840         sat_dq_type_node, sat_tq_type_node, sat_uqq_type_node,
7841         sat_uhq_type_node, sat_usq_type_node, sat_udq_type_node,
7842         sat_utq_type_node, ha_type_node, sa_type_node, da_type_node,
7843         ta_type_node, uha_type_node, usa_type_node, uda_type_node,
7844         uta_type_node, sat_ha_type_node, sat_sa_type_node, sat_da_type_node,
7845         sat_ta_type_node, sat_uha_type_node, sat_usa_type_node,
7846         sat_uda_type_node, sat_uta_type_node): New macro.
7847         (make_fract_type, make_accum_type): Declare.
7848         (make_signed_fract_type, make_unsigned_fract_type,
7849         make_sat_signed_fract_type, make_sat_unsigned_fract_type,
7850         make_signed_accum_type, make_unsigned_accum_type,
7851         make_sat_signed_accum_type, make_sat_unsigned_accum_type,
7852         make_or_reuse_signed_fract_type, make_or_reuse_unsigned_fract_type,
7853         make_or_reuse_sat_signed_fract_type,
7854         make_or_reuse_sat_unsigned_fract_type, make_or_reuse_signed_accum_type,
7855         make_or_reuse_unsigned_accum_type, make_or_reuse_sat_signed_accum_type,
7856         make_or_reuse_sat_unsigned_accum_type): New macro.
7857         (fixed_zerop): Declare.
7858         * defaults.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
7859         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
7860         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
7861         LONG_LONG_ACCUM_TYPE_SIZE): Define.
7862         * treestruct.def: Add TS_FIXED_CST.
7863         * Makefile.in (c-pretty-print.o): Add dependence on fixed-value.h.
7864         (tree.o): Likewise.
7865         (tree-dump.o): Likewise.
7866         (print-tree.o): Likewise.
7867         (tree-pretty-print.o): Likewise.
7868         (fold-const.o): Likewise.
7869         * tree-complex.c (some_nonzerop): Handle FIXED_CST.
7870         * tree-gimple.c (is_gimple_formal_tmp_rhs): Handle FIXED_CST.
7871         (is_gimple_min_invariant): Handle FIXED_CST.
7872         * stor-layout.c (int_mode_for_mode): Handle MODE_FRACT, MODE_UFRACT,
7873         MODE_ACCUM, MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
7874         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
7875         (layout_type): Handle FIXED_POINT_TYPE.
7876         (make_fract_type, make_accum_type): New functions.
7877         * tree-browser.c (browse_tree): Handle FIXED_POINT_TYPE.
7878         * tree-dump.c (fixed-value.h): New include.
7879         (dump_fixed): New function.
7880         (dequeue_and_dump): Handle FIXED_POINT_TYPE and FIXED_CST.
7881         * tree-inline.c (remap_type_1): Handle FIXED_POINT_TYPE.
7882         (estimate_num_insns_1): Handle FIXED_CST and FIXED_CONVERT_EXPR.
7883         * tree-pretty-print.c (fixed-value.h): New include.
7884         (dump_generic_node): Handle FIXED_POINT_TYPE, FIXED_CST, and
7885         FIXED_CONVERT_EXPR.
7886         * tree-scalar-evolution.c (get_scalar_evolution): Handle FIXED_CST.
7887         * tree-ssa-loop-im.c (for_each_index): Handle FIXED_CST.
7888         * tree-ssa-pre.c (poolify_tree): Handle FIXED_CST.
7889         * tree-ssa-reassoc.c (break_up_subtract_bb): We can do reassociation
7890         for non-saturating fixed-point types.
7891         (reassociate_bb): Likewise.
7892         * emit-rtl.c (fixed-value.h): New include.
7893         (fconst0, fconst1): New array.
7894         (init_emit_once): Initialize fconst0 and fconst1 for fixed-point modes.
7895         * tree-vect-generic.c expand_vector_operation): Support
7896         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, and
7897         MODE_VECTOR_UACCUM.
7898         (type_for_widest_vector_mode): Add one parameter for the 
7899         saturating flag.
7900         Check scalar FRACT, UFRACT, ACCUM, and UACCUM mode to select their
7901         vector mode.
7902         Pass the satp parameter to type_for_mode for fixed-point types.
7903         (expand_vector_operations_1): Pass the saturating flag to
7904         type_for_widest_vector_mode.
7905         Support MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
7906         and MODE_VECTOR_UACCUM.
7907         * tree-vect-transform.c (vect_is_simple_cond): Support FIXED_CST.
7908         (vectorizable_condition): Likewise.
7909         * tree.c (fixed-value.h): New include.
7910         (tree_code_size): Support FIXED_CST.
7911         (build_fixed): New function.
7912         (build_one_cst): Support FIXED_POINT_TYPE for accum types.
7913         (fixed_zerop): New function.
7914         (tree_node_structure): Support FIXED_CST.
7915         (type_contains_placeholder_1): Support FIXED_POINT_TYPE.
7916         (build_type_attribute_qual_variant): Handle FIXED_POINT_TYPE.
7917         (type_hash_eq): Handle FIXED_POINT_TYPE.
7918         (simple_cst_equal): Support FIXED_CST.
7919         (iterative_hash_expr): Handle FIXED_CST.
7920         (get_unwidened): Make sure type is not FIXED_POINT_TYPE.
7921         (get_narrower): Likewise.
7922         (variably_modified_type_p): Handle FIXED_POINT_TYPE.
7923         (make_or_reuse_fract_type, make_or_reuse_accum_type): New functions.
7924         (build_common_tree_nodes_2): Use MAKE_FIXED_TYPE_NODE_FAMILY and
7925         MAKE_FIXED_MODE_NODE macros to initialize fixed-point type
7926         nodes.
7927         (build_vector_type_for_mode): Handle MODE_VECTOR_FRACT,
7928         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
7929         (initializer_zerop): Support FIXED_CST.
7930         (walk_tree): Handle FIXED_CST and FIXED_POINT_TYPE.
7931         * dwarf2out.c (base_type_die): Use DW_ATE_signed_fixed or
7932         DW_ATE_unsigned_fixed to describe FIXED_POINT_TYPE.
7933         (is_base_type): Handle FIXED_POINT_TYPE.
7934         (add_type_attribute): Handle FIXED_POINT_TYPE.
7935         (gen_type_die_with_usage): Handle FIXED_POINT_TYPE.
7936         * print-tree.c (fixed-value.h): New include.
7937         (print_node_brief): Support FIXED_CST.
7938         (print_node): Support FIXED_POINT_TYPE and FIXED_CST.
7939         * c-pretty-print.c (fixed-value.h): New include.
7940         (pp_c_type_specifier): Handle FIXED_POINT_TYPE.  Need to pass
7941         TYPE_SATURATING to c_common_type_for_mode for fixed-point modes.
7942         (pp_c_direct_abstract_declarator): Handle FIXED_POINT_TYPE.
7943         Support fixed-point types for inner items in VECTOR_TYPE.
7944         (pp_c_direct_declarator): Likewise.
7945         (pp_c_declarator): Likewise.
7946         (pp_c_fixed_constant): New function.
7947         (pp_c_constant): Handle FIXED_CST.
7948         (pp_c_primary_expression): Likewise.
7949         (pp_c_expression): Likewise.
7950         * fold-const.c (fixed-value.h): New include.
7951         (negate_expr_p): Return true for FIXED_CST.
7952         (fold_negate_expr): Support FIXED_CST.
7953         (split_tree): Support FIXED_CST.
7954         (const_binop): Support FIXED_CST.
7955         (fold_convert_const_int_from_fixed): New function to convert from
7956         fixed to int.
7957         (fold_convert_const_real_from_fixed): New function to convert from
7958         fixed to real.
7959         (fold_convert_const_fixed_from_fixed): New function to convert from
7960         fixed to another fixed.
7961         (fold_convert_const_fixed_from_int): New function to convert from
7962         int to fixed.
7963         (fold_convert_const_fixed_from_real): New function to convert from
7964         real to fixed.
7965         (fold_convert_const): Support conversions from fixed to int, from
7966         fixed to real, from fixed to fixed, from int to fixed, and from real
7967         to fixed.
7968         (fold_convert): Support FIXED_CST and FIXED_POINT_TYPE.
7969         (operand_equal_p): Support FIXED_CST.
7970         (make_range): For fixed-point modes, we need to pass the
7971         saturating flag as the 2nd parameter.
7972         (tree_swap_operands_p): Handle FIXED_CST.
7973         (fold_plusminus_mult_expr): For fract modes, we cannot generate
7974         constant 1.
7975         (fold_unary): Support FIXED_CONVERT_EXPR.
7976         (fold_binary): Handle FIXED_CST.
7977         Make sure the type is not saturating, before associating operations.
7978         Ex: A + B + C, A * B * C, (A1 * C1) +/- (A2 * C2).
7979         (tree_expr_nonnegative_warnv_p): Handle FIXED_CST.
7980         (fold_negate_const): Support FIXED_CST.
7981         (fold_relational_const): Support FIXED_CST.
7982         * gimplify.c (omp_firstprivatize_type_sizes): Handle FIXED_POINT_TYPE.
7983         (gimplify_expr): Handle FIXED_CST.
7984         (gimplify_type_sizes): Handle FIXED_POINT_TYPE.
7985         * ipa-prop.c (ipa_callsite_compute_param): Support FIXED_CST.
7986         * ipa-type-escape.c (type_to_consider): Handle FIXED_POINT_TYPE.
7987         * doc/tm.texi (Type Layout): Document SHORT_FRACT_TYPE_SIZE,
7988         FRACT_TYPE_SIZE, LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
7989         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
7990         LONG_LONG_ACCUM_TYPE_SIZE.
7991         * dbxout.c (dbxout_type): Handle FIXED_POINT_TYPE.
7992         * c-aux-info.c (gen_type): Handle FIXED_POINT_TYPE.
7993         * tree-sra.c (is_sra_scalar_type): Support FIXED_POINT_TYPE.
7994         * expmed.c (extract_bit_field): Support MODE_FRACT, MODE_UFRACT,
7995         MODE_ACCUM, and MODE_UACCUM.
7996         * tree-vectorizer.c (vect_is_simple_reduction): Check for saturating
7997         fixed-point types to disable reduction.
7998         * explow.c (promote_mode): Support FIXED_POINT_TYPE.
7999
8000 2007-08-08  David Edelsohn  <edelsohn@gnu.org>
8001
8002         * config/rs6000/x-rs6000: New file.
8003         * config/rs6000/darwin.h (CC1_SPEC): Add cc1_cpu.
8004         * config/rs6000/rs6000.h (EXTRA_SPECS): Add cc1_cpu.
8005         (EXTRA_SPEC_FUNCTIONS): Define.
8006         (HAVE_LOCAL_CPU_DETECT): Define.
8007         (CC1_CPU_SPEC): Define.
8008         * config/rs6000/driver-rs6000.c: New file.
8009         * config/rs6000/aix.h (CC1_SPEC): Define.
8010         * config/rs6000/sysv4.h (CC1_SPEC): Add cc1_cpu.
8011         * config.host: Add x-rs6000 to host_xmake_file if host and target
8012         are rs6000 or powerpc.
8013
8014 2007-08-08  Paolo Bonzini <paolo.bonzini@lu.unisi.ch>
8015
8016         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Use +=.
8017
8018 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
8019             Sandra Loosemore  <sandra@codesourcery.com>
8020             Chao-ying Fu  <fu@mips.com>
8021             Nigel Stephens  <nigel@mips.com>
8022             David Ung  <davidu@mips.com>
8023
8024         * doc/invoke.texi (-mcode-readable): Document.
8025         * config/mips/mips.opt (mcode-readable): New option.
8026         * config/mips/mips-protos.h (SYMBOL_32_HIGH): New symbol type.
8027         * config/mips/mips.h (mips_code_readable_setting): New enum.
8028         (mips_code_readable): Declare.
8029         (TARGET_MIPS16_TEXT_LOADS, TARGET_MIPS16_PCREL_LOADS): New macros.
8030         (TARGET_MIPS16_SHORT_JUMP_TABLES): New macro.
8031         (JUMP_TABLES_IN_TEXT_SECTION): Use it.
8032         (CASE_VECTOR_MODE, CASE_VECTOR_PC_RELATIVE): Likewise.  Remove
8033         boiler-plate comments.
8034         (ASM_OUTPUT_ADDR_DIFF_ELT): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
8035         * config/mips/mips.c (mips_code_readable): New variable.
8036         (mips_classify_symbol): Only return SYMBOL_PC_RELATIVE for
8037         MIPS16 labels if TARGET_MIPS16_SHORT_JUMP_TABLES.  Use both the
8038         context and -mcode-readable setting to restrict the use of
8039         SYMBOL_PC_RELATIVE for MIPS16 constant pool references.
8040         Only return TARGET_FORCE_TO_MEM if PC-relative loads are allowed.
8041         (mips_symbolic_constant_p): Handle SYMBOL_32_HIGH.
8042         (mips_blocks_for_constant_p): Only return false for
8043         TARGET_MIPS16_PCREL_LOADS.
8044         (mips_symbol_insns_1): Treat HIGHs as 2 extended instructions
8045         for MIPS16.  Handle SYMBOL_32_HIGH.
8046         (mips_const_insns): Allow HIGHs for MIPS16 too.
8047         (mips_unspec_address_offset): New function, split out from...
8048         (mips_unspec_address): ...here.
8049         (mips_output_move): Handle MIPS16 HIGH moves.  Use "li" to load
8050         16-bit symbolic constants.  Assert approropiate conditions for
8051         using the "la" and "dla" macros.
8052         (mips_handle_option): Handle -mcode-readable=.
8053         (override_options): Use %hi/%lo relocations for TARGET_MIPS16 too.
8054         Set up mips_lo_relocs[SYMBOL_32_HIGH].
8055         (mips_strip_unspec_address): New function, split out from...
8056         (print_operand_reloc): ...here.
8057         (print_operand): Pass constants through mips_strip_unspec_address.
8058         (print_operand_address): Likewise.
8059         (mips_output_mi_thunk): Remove guard of mips16_lay_out_constants.
8060         (mips_select_rtx_section): Remove MIPS16 handling.
8061         (mips16_gp_pseudo_reg): Check currently_expanding_to_rtl.
8062         (mips16_rewrite_pool_refs): Wrap the labels in an address UNSPEC.
8063         (mips16_lay_out_constants): Do nothing unless
8064         TARGET_MIPS16_PCREL_LOADS.
8065         (mips_avoid_hazards): Remove guard of mips16_lay_out_constants.
8066         * config/mips/mips.md: Split HIGHs for MIPS16.
8067         (tablejump): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
8068
8069 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
8070
8071         * config/mips/mips-protos.h (mips_emit_move): Declare.
8072         * config/mips/mips.c (mips_emit_move): New function.
8073         (mips_force_temporary): Use mips_emit_move instead of emit_move_insn.
8074         (mips_legitimize_const_move): Likewise.
8075         (mips_legitimize_move): Likewise.
8076         (mips_split_64bit_move): Likewise.
8077         (mips_restore_gp): Likewise.
8078         (mips_load_call_address): Likewise.
8079         (mips_emit_fcc_reload): Likewise.
8080         (mips_set_return_address): Likewise.
8081         (mips_block_move_straight): Likewise.
8082         (mips_block_move_loop): Likewise.
8083         (mips_setup_incoming_varargs): Likewise.
8084         (mips_save_reg): Likewise.
8085         (mips_expand_prologue): Likewise.
8086         (mips_restore_reg): Likewise.
8087         (mips_expand_epilogue): Likewise.
8088         (mips_output_mi_thunk): Likewise.
8089         (build_mips16_call_stub): Likewise.
8090         (mips_builtin_branch_and_move): Likewise.
8091         * config/mips/mips.h (INITIALIZE_TRAMPOLINE): Likewise.
8092         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
8093         (fixuns_truncdfdi2): Likewise.
8094         (fixuns_truncsfsi2): Likewise.
8095         (fixuns_truncsfdi2): Likewise.
8096         (loadgp_absolute): Likewise.
8097         (builtin_setjmp_setup): Likewise.
8098         (builtin_longjmp): Likewise.
8099         (untyped_call): Likewise.
8100
8101 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
8102
8103         * config/mips/mips-protos.h (mips_split_symbol): Add a mode and
8104         an "rtx *" argument.  Return a bool.
8105         * config/mips/mips.c (mips_split_symbol): Accept arbitrary source
8106         values and return true if they can be split.  Take the same kind of
8107         mode argument as mips_symbol_insns.  Add a "lo_sum_out" parameter
8108         and store the lo_sum there if nonnull.  Use the symbol type to
8109         determine whether a $gp or HIGH is needed.
8110         (mips_legitimize_address): Update call to mips_split_symbol and
8111         simplify accordingly.
8112         (mips_legitimize_const_move): Likewise.
8113         * config/mips/mips.md: In the combine define_split,
8114         check mips_split_symbol instead of splittable_symbolic_operand.
8115         Update use of mips_split_symbol in the generator code.
8116         * config/mips/predicates.md (splittable_symbolic_operand): Delete.
8117
8118 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
8119
8120         * config/mips/mips.c (mips_symbolic_address_p): Delete.
8121         (mips_symbol_insns_1): New function, split out from...
8122         (mips_symbol_insns): ...here.  Take a mode argument.  Treat loads
8123         and stores separately from load addresses.
8124         (mips_classify_address): Replace uses of mips_symbolic_address_p
8125         with uses of mips_symbol_insns.
8126         (mips_address_insns): Update calls to mips_symbol_insns.
8127         (mips_const_insns): Likewise.
8128         (mips_legitimize_address): Likewise.
8129
8130 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
8131
8132         * config/mips/mips-protos.h (SYMBOL_FORCE_TO_MEM): New symbol type.
8133         * config/mips/mips.c (mips_classify_symbol): Skip TARGET_ABICALLS
8134         block for locally-binding symbols if TARGET_ABSOLUTE_ABICALLS.
8135         Return SYMBOL_FORCE_TO_MEM instead of SYMBOL_ABSOLUTE for
8136         non-call contexts if TARGET_MIPS16.
8137         (mips_symbolic_constant_p): Handle SYMBOL_FORCE_TO_MEM.
8138         (mips_symbolic_address_p): Likewise.  Remove special TARGET_MIPS16
8139         code for SYMBOL_ABSOLUTE.
8140         (mips_symbol_insns): Likewise.
8141
8142 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
8143
8144         * config/mips/mips-protos.h (mips_symbol_context): New enumeration.
8145         * config/mips/mips.c (mips_classify_symbol): Take a context argument.
8146         (mips_symbolic_constant_p): Likewise.  Update the call to
8147         mips_classify_symbol.
8148         (mips_classify_address): Update the calls to mips_symbolic_constant_p.
8149         (mips_const_insns): Likewise.  Update the call to mips_classify_symbol.
8150         (mips_legitimize_address): Update the call to mips_symbolic_constant_p.
8151         (print_operand_reloc): Add a context argument.  Update the call to
8152         mips_symbolic_constant_p.
8153         (print_operand): Update the calls to print_operand_reloc.
8154         (print_operand_address): Use print_operand_reloc rather than
8155         print_operand.
8156         (mips_rewrite_small_data_p): Add a context argument.  Update the call
8157         to mips_symbolic_constant_p.
8158         (mips_small_data_pattern_1): Make DATA the containing mem.
8159         Update the call to mips_rewrite_small_data_p.
8160         (mips_rewrite_small_data_1): Likewise.
8161         (mips_use_anchors_for_symbol_p): Update the call to
8162         mips_symbolic_constant_p.
8163         * config/mips/predicates.md (const_call_insn_operand): Likewise.
8164         (splittable_symbolic_operand): Likewise.
8165         (move_operand): Likewise.
8166         (absolute_symbolic_operand): Likewise.
8167         (got_disp_operand): Likewise.
8168         (got_page_ofst_operand): Likewise.
8169
8170 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
8171
8172         * config/mips/mips-protos.h (SYMBOL_GENERAL): Rename to...
8173         (SYMBOL_ABSOLUTE): ...this.
8174         (SYMBOL_SMALL_DATA): Rename to...
8175         (SYMBOL_GP_RELATIVE): ...this.
8176         (SYMBOL_CONSTANT_POOL): Rename to...
8177         (SYMBOL_PC_RELATIVE): ...this.
8178         * config/mips/mips.c (mips_classify_symbol, mips_symbolic_constant_p)
8179         (mips_symbolic_address_p, mips_symbol_insns, override_options)
8180         (mips_rewrite_small_data_p, mips_use_anchors_for_symbol_p): Update
8181         after above changes.
8182         * config/mips/predicates.md (const_call_insn_operand): Likewise.
8183         (general_symbolic_operand): Rename to...
8184         (absolute_symbolic_operand): ...this.
8185         * config/mips/mips.md: Update after above changes.
8186
8187 2007-08-08  Vladimir Yanovsky  <yanov@il.ibm.com>
8188             Revital Eres  <eres@il.ibm.com>
8189
8190         * ddg.c (print_ddg): Add dump information.
8191         * modulo-sched.c (print_node_sched_params): Add parameter and
8192         verbosity.
8193         (calculate_maxii): Remove function.
8194         (undo_generate_reg_moves): Likewise.
8195         (undo_permute_partial_schedule): Likewise.
8196         (kernel_number_of_cycles): Likewise.
8197         (MAXII_FACTOR): New definition to calculate the upper bound of II.
8198         (sms_schedule): Use it.  Remove profitability checks.
8199         (sms_schedule_by_order): Fix order of nodes within the cycle.
8200
8201 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
8202
8203         * config/i386/gnu.h (STARTFILE_SPEC): Use gcrt0.o in profile mode, add
8204         -profile option, add pie support.
8205         (ENDFILE_SPEC): New spec.
8206         * config/gnu.h (LIB_SPEC): Add -profile option.
8207
8208 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
8209
8210         * config/i386/gnu.h (CPP_SPEC): Add -pthread option.
8211         * config/gnu.h (LIB_SPEC): Likewise.
8212
8213 2007-08-07  Yaz Saito  <saito@google.com>
8214             Ian Lance Taylor  <iant@google.com>
8215
8216         * common.opt (finstrument-functions-exclude-function-list): New
8217         option.
8218         (finstrument-functions-exclude-file-list): New option.
8219         * opts.c (char_p): Define and DEF_VEC.
8220         (flag_instrument_functions_exclude_functions): New static
8221         variable.
8222         (flag_instrument_functions_exclude_files): New static variable.
8223         (add_instrument_functions_exclude_list): New static function.
8224         (flag_instrument_functions_exclude_p): New function.
8225         (common_handle_option): Handle new options.
8226         * flags.h (flag_instrument_functions_exclude_p): Declare.
8227         * gimplify.c (gimplify_function_tree): Call
8228         flag_instrument_functions_exclude_p.
8229         * doc/invoke.texi (Option Summary): Mention new options.
8230         (Code Gen Options): Document new options.
8231
8232 2007-08-07  Ian Lance Taylor  <iant@google.com>
8233
8234         PR rtl-optimization/32776
8235         * lower-subreg.c (resolve_clobber): Call resolve_reg_notes.
8236         (resolve_use): Likewise.
8237         (decompose_multiword_subregs): Remove "changed" local variable.
8238
8239 2007-08-07  Carlos O'Donell  <carlos@codesourcery.com>
8240
8241         * configure.ac: Define HAVE_GNU_AS if $gas_flag is yes.
8242         * configure: Regenerate.
8243         * config.in: Regenerate.
8244         * gcc.c [HAVE_GNU_AS]: Add "%{v} %{w:-W} %{I*} " to asm_options
8245         spec string.
8246
8247 2007-08-07  Ian Lance Taylor  <iant@google.com>
8248
8249         * lower-subreg.c (resolve_clobber): If the clobber has a LIBCALL
8250         note, just delete the insn.
8251
8252 2007-08-07  Andreas Schwab  <schwab@suse.de>
8253
8254         PR bootstrap/32973
8255         * gengtype-lex.l: Ignore backslash/newline pair while scanning a
8256         struct definition.
8257
8258 2007-08-07  Andreas Krebbel  <krebbel1@de.ibm.com>
8259
8260         * lower-subreg.c (resolve_subreg_use): Remove assertion.
8261         (find_decomposable_shift_zext, resolve_shift_zext): New functions.
8262         (decompose_multiword_subregs): Use the functions above to decompose
8263         multiword shifts and zero-extends.
8264
8265 2007-08-07  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8266
8267         * doc/sourcebuild.texi (Test Directives): Fix "compile" and
8268         "assemble" descriptions which were swapped.
8269
8270 2007-08-06  Chao-ying Fu  <fu@mips.com>
8271
8272         * fixed-value.h: New file.
8273         * fixed-value.c: New file.
8274         * Makefile.in (OBJS-common): Add fixed-value.o.
8275         (fixed-value.o): New rule.
8276         (GTFILES): Add fixed-value.h.
8277         * double-int.c (double_int_scmp): We should use unsigned HOST_WIDE_INT
8278         to compare a.low and b.low.
8279         * gengtype.c (main): Handle FIXED_VALUE_TYPE type as scalar typedef.
8280
8281 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
8282             Daniel Jacobowitz  <dan@codesourcery.com>
8283
8284         PR target/31868
8285         * config.gcc (x86_64-*-freebsd*): Add i386/t-crtstuff to
8286         tmake_file.
8287         (x86_64-*-netbsd*): Likewise.
8288         (x86_64-*-linux*): Likewise.
8289         (x86_64-*-kfreebsd*-gnu): Likewise.
8290         (x86_64-*-knetbsd*-gnu): Likewise.
8291         (i[34567]86-*-solaris2.1[0-9]*): Likewise.
8292
8293         * config/i386/t-linux64 (CRTSTUFF_T_CFLAGS): Removed.
8294
8295         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Update comments.
8296         Add -fno-asynchronous-unwind-tables.
8297
8298         * config/t-freebsd (CRTSTUFF_T_CFLAGS_S): Add $(CRTSTUFF_T_CFLAGS).
8299         * config/t-libc-ok (CRTSTUFF_T_CFLAGS_S): Likewise.
8300         * config/t-lynx (CRTSTUFF_T_CFLAGS_S): Likewise.
8301         * config/t-netbsd (CRTSTUFF_T_CFLAGS_S): Likewise.
8302         * config/t-svr4 (CRTSTUFF_T_CFLAGS_S): Likewise.
8303
8304 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
8305
8306         * config/ia64/ia64.c (ia64_c_mode_for_suffix): New.
8307         (TARGET_C_MODE_FOR_SUFFIX): New.
8308
8309 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
8310
8311         * config/ia64/div.md (m2subrf4_cond): Change 'g' to 'G'.
8312
8313 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
8314
8315         * config/ia64/ia64.h (MODES_TIEABLE_P): Fix typo.
8316
8317 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
8318
8319         * config/i386/i386.md: Check TARGET_ macros and optimize_size
8320         before checking function returns in conditional expressions.
8321
8322 2007-08-06  Alfred Minarik  <a.minarik@aon.at>
8323
8324         PR pch/13676
8325         * doc/invoke.texi: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
8326
8327 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8328
8329         PR middle-end/32988
8330         * tree.c (build2_stat): Instead of checking for INTEGER_TYPE, check
8331         for INTEGRAL_TYPE_P.
8332
8333 2008-08-05  Paolo Bonzini  <bonzini@gnu.org>
8334
8335         * configure.ac: Remove --enable-checking=df from default settings.
8336         * tree-pass.h (TODO_df_verify): New.  Shift TODO_mark_first_instance.
8337         * df-core.c (df_finish_pass) [ENABLE_CHECKING]: Schedule verification
8338         if the parameter is true.
8339         (df_analyze) [!ENABLE_DF_CHECKING]: Also do verification if the
8340         DF_VERIFY_SCHEDULED flag is true.
8341         * df.h (enum df_changeable_flags): Add DF_VERIFY_SCHEDULED.
8342         (df_finish_pass): Adjust prototype.
8343         * passes.c (execute_todo): Schedule verification if TODO_df_verify is
8344         true.
8345
8346         * see.c (pass_see): Add TODO_df_verify.
8347         * loop-init.c (pass_rtl_move_loop_invariants): Add TODO_df_verify.
8348         * global.c (rest_of_handle_global_alloc): Schedule verification
8349         after the pass.
8350         * local-alloc.c (rest_of_handle_local_alloc): Schedule verification
8351         before the pass.
8352         * function.c (pass_thread_prologue_and_epilogue): Add TODO_df_verify.
8353         * gcse.c (rest_of_handle_gcse): Adjust call to df_finish_pass.
8354         * loop-iv.c (iv_analysis_done): Schedule verification after the pass.
8355
8356         * config/sh/sh.c (sh_output_mi_thunk): Remove dead code.
8357         * config/ia64/ia64.c (ia64_reorg): Adjust call to df_finish_pass.
8358         * config/bfin/bfin.c (bfin_reorg): Adjust call to df_finish_pass.
8359
8360 2007-08-05  Vladimir Yanovsky  <yanov@il.ibm.com>
8361             Revital Eres <eres@il.ibm.com>
8362
8363         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Document new
8364         flag.
8365         * ddg.c (create_ddg_dependence): Rename to...
8366         (create_ddg_dep_from_intra_loop_link): This.  Do not check
8367         for interloop edges.  Do not create anti dependence edge when
8368         a true dependence edge exists in the opposite direction and
8369         -fmodulo-sched-allow-regmoves is set.
8370         (build_intra_loop_deps): Call create_ddg_dep_from_intra_loop_link.
8371         (add_cross_iteration_register_deps): Create anti dependence edge
8372         when -fno-modulo-sched-allow-regmoves is set.
8373         * common.opt (-fmodulo-sched-allow-regmoves): New flag.
8374
8375 2007-08-04  Richard Sandiford  <richard@codesourcery.com>
8376
8377         * config/arm/arm.md (movsi): Add braces.
8378
8379 2007-08-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8380
8381         PR middle-end/32780
8382         * fold-const.c (fold_binary <case MINUS_EXPR>): Fix the type of
8383         operands for the folding of "A - (A & B)" into "~B & A"; cast them
8384         to type.
8385
8386 2007-08-03  Zdenek Dvorak  <ook@ucw.cz>
8387
8388         * tree-ssa-threadupdate.c (thread_through_all_blocks): Use loops'
8389         state accessor functions.
8390         * cfgloopmanip.c (remove_path, create_preheaders,
8391         force_single_succ_latches, fix_loop_structure): Ditto.
8392         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
8393         tree_duplicate_loop_to_header_edge): Ditto.
8394         * cfgloopanal.c (mark_irreducible_loops): Ditto.
8395         * loop-init.c (loop_optimizer_init, loop_optimizer_finalize):
8396         Ditto.
8397         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures,
8398         cleanup_tree_cfg): Ditto.
8399         * tree-cfg.c (tree_merge_blocks): Ditto.
8400         * cfgloop.c (rescan_loop_exit, record_loop_exits,
8401         release_recorded_exits, get_loop_exit_edges, verify_loop_structure,
8402         loop_preheader_edge, single_exit): Ditto.
8403         (flow_loops_find): Do not clear loops->state.
8404         * cfgloop.h (loops_state_satisfies_p, loops_state_set,
8405         loops_state_clear): New functions.
8406
8407 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8408
8409         PR middle-end/32399
8410         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
8411         when adding to the base and convert ELT to sizetype instead of type.
8412
8413 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8414
8415         PR middle-end/32304
8416         * ipa-reference.c (has_proper_scope_for_analysis): Return false when
8417         the decl's type has TYPE_NEEDS_CONSTRUCTING set.
8418
8419 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8420
8421         PR middle-end/32935
8422         * fold-convert.c (fold_negate_expr <NOP_EXPR>): Convert back to the
8423          correct type the negate expression.
8424
8425 2007-08-03  Jan Hubicka  <jh@suse.cz>
8426
8427         * i386.c (setup_incoming_varargs_64): Tolerate 64bit preferred
8428         stack boundary.
8429
8430 2007-08-03  David Edelsohn  <edelsohn@gnu.org>
8431
8432         * config/rs6000/rs6000.c (struct processor_cost): Change
8433         l1_cache_lines to l1_cache_size.  Add l2_cache_size.
8434         (*_cost): Convert l1 cache information to kilobytes.  Add l2 cache
8435         information.
8436         (rios1_costs, rios2_cost): Correct cache line size.
8437         (rs6000_override_options): Set l2-cache-size parameter.
8438
8439 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8440             Diego Novillo  <dnovillo@google.com>
8441
8442         PR 31521
8443         * tree-vrp.c (simplify_div_or_mod_using_ranges): Also simplify
8444         if the range includes 0.
8445
8446 2007-08-03  Ben Elliston  <bje@au.ibm.com>
8447
8448         * config/spu/spu.md (dftsv, dftsv_celledp): Attach the appropriate
8449         mode to unspec expressions to silence a warning from the generator
8450         programs.
8451         
8452 2007-08-02  Steve Ellcey  <sje@cup.hp.com>
8453
8454         * config/ia64/constraints.md ("U"): Make constraint vector only.
8455
8456 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
8457
8458         PR middle-end/25446
8459         * c-objc-common.c (c_cannot_inline_tree_fn): Check for an
8460         always_inline attribute on the function decl.
8461
8462 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
8463
8464         PR middle-end/25445
8465         * varasm.c (default_binds_local_p_1): Consult flag_whole_program
8466         if we are compiling with -fPIC.
8467
8468 2007-08-02  Sandra Loosemore  <sandra@codesourcery.com>
8469             Nigel Stephens  <nigel@mips.com>
8470
8471         * longlong.h [__mips__] (count_leading_zeros, COUNT_LEADING_ZEROS_0):
8472         Define for MIPS32 and MIPS64.
8473
8474 2007-08-02  Nick Clifton  <nickc@redhat.com>
8475
8476         * config/host-hpux.c: Change copyright header to refer to version
8477         3 of the GNU General Public License and to point readers at the
8478         COPYING3 file and the FSF's license web page.
8479         * config/alpha/predicates.md, config/alpha/vms-ld.c,
8480         config/alpha/linux.h, config/alpha/alpha.opt,
8481         config/alpha/linux-elf.h, config/alpha/vms.h, config/alpha/elf.h,
8482         config/alpha/vms-unwind.h, config/alpha/ev4.md,
8483         config/alpha/ev6.md, config/alpha/alpha.c, config/alpha/vms-cc.c,
8484         config/alpha/alpha.h, config/alpha/sync.md,
8485         config/alpha/openbsd.h, config/alpha/alpha.md,
8486         config/alpha/alpha-modes.def, config/alpha/ev5.md,
8487         config/alpha/alpha-protos.h, config/alpha/freebsd.h,
8488         config/alpha/osf5.h, config/alpha/netbsd.h, config/alpha/vms64.h,
8489         config/alpha/constraints.md, config/alpha/osf.h,
8490         config/alpha/xm-vms.h, config/alpha/unicosmk.h, config/linux.h,
8491         config/frv/predicates.md, config/frv/frv.h, config/frv/linux.h,
8492         config/frv/frv.md, config/frv/frv.opt, config/frv/frv-modes.def,
8493         config/frv/frv-asm.h, config/frv/frv-protos.h,
8494         config/frv/frv-abi.h, config/frv/frv.c, config/s390/tpf.h,
8495         config/s390/s390.c, config/s390/predicates.md, config/s390/s390.h,
8496         config/s390/linux.h, config/s390/tpf.md, config/s390/tpf.opt,
8497         config/s390/2064.md, config/s390/2084.md, config/s390/s390.md,
8498         config/s390/s390.opt, config/s390/s390-modes.def,
8499         config/s390/fixdfdi.h, config/s390/constraints.md,
8500         config/s390/s390-protos.h, config/s390/s390x.h, config/elfos.h,
8501         config/dbxcoff.h, config/m32c/predicates.md, config/m32c/cond.md,
8502         config/m32c/m32c.c, config/m32c/minmax.md, config/m32c/blkmov.md,
8503         config/m32c/m32c-pragma.c, config/m32c/m32c.h,
8504         config/m32c/prologue.md, config/m32c/m32c.abi,
8505         config/m32c/muldiv.md, config/m32c/bitops.md, config/m32c/mov.md,
8506         config/m32c/addsub.md, config/m32c/m32c.md, config/m32c/m32c.opt,
8507         config/m32c/t-m32c, config/m32c/m32c-modes.def,
8508         config/m32c/jump.md, config/m32c/shift.md,
8509         config/m32c/m32c-protos.h, config/libgloss.h,
8510         config/spu/spu-protos.h, config/spu/predicates.md,
8511         config/spu/spu-builtins.h, config/spu/spu.c,
8512         config/spu/spu-builtins.def, config/spu/spu-builtins.md,
8513         config/spu/spu.h, config/spu/spu-elf.h, config/spu/constraints.md,
8514         config/spu/spu.md, config/spu/spu-c.c, config/spu/spu.opt,
8515         config/spu/spu-modes.def, config/spu/t-spu-elf, config/interix.h,
8516         config/sparc/hypersparc.md, config/sparc/predicates.md,
8517         config/sparc/linux.h, config/sparc/sp64-elf.h,
8518         config/sparc/supersparc.md, config/sparc/cypress.md,
8519         config/sparc/openbsd1-64.h, config/sparc/openbsd64.h,
8520         config/sparc/niagara.md, config/sparc/sparc.md,
8521         config/sparc/long-double-switch.opt, config/sparc/ultra3.md,
8522         config/sparc/sparc.opt, config/sparc/sync.md,
8523         config/sparc/sp-elf.h, config/sparc/sparc-protos.h,
8524         config/sparc/ultra1_2.md, config/sparc/biarch64.h,
8525         config/sparc/sparc.c, config/sparc/little-endian.opt,
8526         config/sparc/sysv4-only.h, config/sparc/sparc.h,
8527         config/sparc/linux64.h, config/sparc/freebsd.h,
8528         config/sparc/sol2.h, config/sparc/rtemself.h,
8529         config/sparc/netbsd-elf.h, config/sparc/vxworks.h,
8530         config/sparc/sparc-modes.def, config/sparc/sparclet.md,
8531         config/sparc/sysv4.h, config/vx-common.h, config/netbsd-aout.h,
8532         config/flat.h, config/m32r/m32r.md, config/m32r/predicates.md,
8533         config/m32r/little.h, config/m32r/m32r.c, config/m32r/m32r.opt,
8534         config/m32r/linux.h, config/m32r/constraints.md,
8535         config/m32r/m32r.h, config/m32r/m32r-protos.h, config/vxworks.opt,
8536         config/darwin-c.c, config/darwin.opt, config/i386/i386.h,
8537         config/i386/cygming.h, config/i386/linux.h, config/i386/cygwin.h,
8538         config/i386/i386.md, config/i386/netware-crt0.c,
8539         config/i386/sco5.h, config/i386/mmx.md, config/i386/vx-common.h,
8540         config/i386/kaos-i386.h, config/i386/winnt-stubs.c,
8541         config/i386/netbsd64.h, config/i386/djgpp.h, config/i386/gas.h,
8542         config/i386/sol2.h, config/i386/constraints.md,
8543         config/i386/netware-libgcc.c, config/i386/sysv5.h,
8544         config/i386/predicates.md, config/i386/geode.md,
8545         config/i386/x86-64.h, config/i386/kfreebsd-gnu.h,
8546         config/i386/freebsd64.h, config/i386/vxworksae.h,
8547         config/i386/pentium.md, config/i386/lynx.h, config/i386/i386elf.h,
8548         config/i386/rtemself.h, config/i386/netbsd-elf.h,
8549         config/i386/ppro.md, config/i386/k6.md, config/i386/netware.c,
8550         config/i386/netware.h, config/i386/i386-modes.def,
8551         config/i386/sysv4-cpp.h, config/i386/i386-interix.h,
8552         config/i386/cygwin1.c, config/i386/djgpp.opt, config/i386/uwin.h,
8553         config/i386/unix.h, config/i386/ptx4-i.h, config/i386/xm-djgpp.h,
8554         config/i386/att.h, config/i386/winnt.c, config/i386/beos-elf.h,
8555         config/i386/sol2-10.h, config/i386/darwin64.h, config/i386/sse.md,
8556         config/i386/i386.opt, config/i386/bsd.h, config/i386/cygming.opt,
8557         config/i386/xm-mingw32.h, config/i386/linux64.h,
8558         config/i386/openbsdelf.h, config/i386/xm-cygwin.h,
8559         config/i386/sco5.opt, config/i386/darwin.h, config/i386/mingw32.h,
8560         config/i386/winnt-cxx.c, config/i386/i386-interix3.h,
8561         config/i386/nwld.c, config/i386/nwld.h, config/i386/host-cygwin.c,
8562         config/i386/cygwin2.c, config/i386/i386-protos.h,
8563         config/i386/sync.md, config/i386/openbsd.h,
8564         config/i386/host-mingw32.c, config/i386/i386-aout.h,
8565         config/i386/nto.h, config/i386/biarch64.h,
8566         config/i386/i386-coff.h, config/i386/freebsd.h,
8567         config/i386/driver-i386.c, config/i386/knetbsd-gnu.h,
8568         config/i386/host-i386-darwin.c, config/i386/vxworks.h,
8569         config/i386/crtdll.h, config/i386/i386.c, config/i386/sysv4.h,
8570         config/darwin-protos.h, config/linux.opt, config/sol2.c,
8571         config/sol2.h, config/sh/symbian.c, config/sh/sh-protos.h,
8572         config/sh/linux.h, config/sh/elf.h, config/sh/superh.h,
8573         config/sh/sh4.md, config/sh/coff.h, config/sh/newlib.h,
8574         config/sh/embed-elf.h, config/sh/symbian-pre.h, config/sh/rtems.h,
8575         config/sh/kaos-sh.h, config/sh/sh4a.md, config/sh/constraints.md,
8576         config/sh/sh64.h, config/sh/sh.opt, config/sh/symbian-post.h,
8577         config/sh/sh-c.c, config/sh/predicates.md, config/sh/sh.c,
8578         config/sh/sh.h, config/sh/shmedia.md, config/sh/sh-modes.def,
8579         config/sh/little.h, config/sh/sh1.md, config/sh/sh4-300.md,
8580         config/sh/superh64.h, config/sh/rtemself.h,
8581         config/sh/netbsd-elf.h, config/sh/sh.md, config/sh/vxworks.h,
8582         config/usegas.h, config/svr3.h, config/pdp11/pdp11-protos.h,
8583         config/pdp11/2bsd.h, config/pdp11/pdp11.md, config/pdp11/pdp11.c,
8584         config/pdp11/pdp11.opt, config/pdp11/pdp11-modes.def,
8585         config/pdp11/pdp11.h, config/avr/rtems.h, config/avr/avr-protos.h,
8586         config/avr/predicates.md, config/avr/constraints.md,
8587         config/avr/avr.md, config/avr/avr.c, config/avr/avr.opt,
8588         config/avr/avr.h, config/sol2-protos.h, config/dbxelf.h,
8589         config/lynx.opt, config/crx/crx.h, config/crx/crx-protos.h,
8590         config/crx/crx.md, config/crx/crx.c, config/crx/crx.opt,
8591         config/c4x/c4x-c.c, config/c4x/c4x.c, config/c4x/c4x.opt,
8592         config/c4x/c4x-modes.def, config/c4x/rtems.h,
8593         config/c4x/predicates.md, config/c4x/c4x.h,
8594         config/c4x/c4x-protos.h, config/c4x/c4x.md, config/kfreebsd-gnu.h,
8595         config/xtensa/predicates.md, config/xtensa/xtensa.c,
8596         config/xtensa/linux.h, config/xtensa/xtensa.h,
8597         config/xtensa/elf.h, config/xtensa/xtensa.md,
8598         config/xtensa/xtensa.opt, config/xtensa/constraints.md,
8599         config/xtensa/xtensa-protos.h, config/dbx.h,
8600         config/stormy16/predicates.md, config/stormy16/stormy16.md,
8601         config/stormy16/stormy16.c, config/stormy16/stormy16.opt,
8602         config/stormy16/stormy16.h, config/stormy16/stormy16-protos.h,
8603         config/host-solaris.c, config/fr30/fr30.h,
8604         config/fr30/predicates.md, config/fr30/fr30-protos.h,
8605         config/fr30/fr30.md, config/fr30/fr30.c, config/fr30/fr30.opt,
8606         config/vxworksae.h, config/sol2-c.c, config/lynx.h,
8607         config/m68hc11/m68hc11-protos.h, config/m68hc11/predicates.md,
8608         config/m68hc11/m68hc11.md, config/m68hc11/m68hc11.c,
8609         config/m68hc11/m68hc11.opt, config/m68hc11/m68hc11.h,
8610         config/m68hc11/m68hc12.h, config/openbsd-oldgas.h,
8611         config/host-linux.c, config/interix3.h, config/cris/cris.c,
8612         config/cris/predicates.md, config/cris/linux.h,
8613         config/cris/cris.h, config/cris/aout.h, config/cris/cris.md,
8614         config/cris/linux.opt, config/cris/cris.opt, config/cris/elf.opt,
8615         config/cris/aout.opt, config/cris/cris-protos.h,
8616         config/vxworks-dummy.h, config/netbsd.h, config/netbsd-elf.h,
8617         config/iq2000/iq2000.h, config/iq2000/predicates.md,
8618         config/iq2000/iq2000-protos.h, config/iq2000/iq2000.md,
8619         config/iq2000/iq2000.c, config/iq2000/iq2000.opt,
8620         config/host-darwin.c, config/mt/mt.md, config/mt/mt.c,
8621         config/mt/mt.opt, config/mt/t-mt, config/mt/mt.h,
8622         config/mt/mt-protos.h, config/svr4.h, config/host-darwin.h,
8623         config/chorus.h, config/mn10300/mn10300.c,
8624         config/mn10300/mn10300.opt, config/mn10300/predicates.md,
8625         config/mn10300/mn10300.h, config/mn10300/linux.h,
8626         config/mn10300/constraints.md, config/mn10300/mn10300-protos.h,
8627         config/mn10300/mn10300.md, config/ia64/predicates.md,
8628         config/ia64/itanium1.md, config/ia64/unwind-ia64.h,
8629         config/ia64/ia64-c.c, config/ia64/sync.md, config/ia64/ia64.c,
8630         config/ia64/itanium2.md, config/ia64/ia64.h, config/ia64/vect.md,
8631         config/ia64/freebsd.h, config/ia64/ia64.md,
8632         config/ia64/ia64-modes.def, config/ia64/constraints.md,
8633         config/ia64/hpux.h, config/ia64/ia64-protos.h, config/windiss.h,
8634         config/gofast.h, config/rtems.h, config/sol2-10.h,
8635         config/m68k/predicates.md, config/m68k/m68k.md,
8636         config/m68k/linux.h, config/m68k/m68k-modes.def,
8637         config/m68k/print-sysroot-suffix.sh, config/m68k/m68k-protos.h,
8638         config/m68k/coff.h, config/m68k/m68k-none.h, config/m68k/ieee.opt,
8639         config/m68k/openbsd.h, config/m68k/m68k-aout.h,
8640         config/m68k/m68k.opt, config/m68k/m68020-elf.h,
8641         config/m68k/m68kelf.h, config/m68k/m68k-devices.def,
8642         config/m68k/uclinux-oldabi.h, config/m68k/m68k.c,
8643         config/m68k/constraints.md, config/m68k/rtemself.h,
8644         config/m68k/netbsd-elf.h, config/m68k/m68k.h,
8645         config/m68k/uclinux.h, config/rs6000/power4.md,
8646         config/rs6000/host-darwin.c, config/rs6000/6xx.md,
8647         config/rs6000/linux.h, config/rs6000/eabi.h,
8648         config/rs6000/aix41.opt, config/rs6000/xcoff.h,
8649         config/rs6000/secureplt.h, config/rs6000/linuxspe.h,
8650         config/rs6000/eabialtivec.h, config/rs6000/8540.md,
8651         config/rs6000/darwin8.h, config/rs6000/kaos-ppc.h,
8652         config/rs6000/windiss.h, config/rs6000/603.md,
8653         config/rs6000/aix41.h, config/rs6000/cell.md,
8654         config/rs6000/mpc.md, config/rs6000/aix43.h, config/rs6000/beos.h,
8655         config/rs6000/gnu.h, config/rs6000/rtems.h, config/rs6000/aix.opt,
8656         config/rs6000/darwin.md, config/rs6000/darwin64.h,
8657         config/rs6000/default64.h, config/rs6000/7xx.md,
8658         config/rs6000/darwin.opt, config/rs6000/spe.md,
8659         config/rs6000/rs6000.opt, config/rs6000/rs6000-c.c,
8660         config/rs6000/rios2.md, config/rs6000/linuxaltivec.h,
8661         config/rs6000/7450.md, config/rs6000/linux64.h,
8662         config/rs6000/constraints.md, config/rs6000/440.md,
8663         config/rs6000/darwin.h, config/rs6000/host-ppc64-darwin.c,
8664         config/rs6000/rs6000.c, config/rs6000/aix52.h,
8665         config/rs6000/rs6000.h, config/rs6000/power6.md,
8666         config/rs6000/predicates.md, config/rs6000/altivec.md,
8667         config/rs6000/aix64.opt, config/rs6000/rios1.md,
8668         config/rs6000/rs6000-modes.def, config/rs6000/rs64.md,
8669         config/rs6000/eabisim.h, config/rs6000/sysv4le.h,
8670         config/rs6000/darwin7.h, config/rs6000/dfp.md,
8671         config/rs6000/linux64.opt, config/rs6000/sync.md,
8672         config/rs6000/vxworksae.h, config/rs6000/power5.md,
8673         config/rs6000/lynx.h, config/rs6000/biarch64.h,
8674         config/rs6000/rs6000.md, config/rs6000/sysv4.opt,
8675         config/rs6000/eabispe.h, config/rs6000/e500.h,
8676         config/rs6000/freebsd.h, config/rs6000/rs6000-protos.h,
8677         config/rs6000/netbsd.h, config/rs6000/e500-double.h,
8678         config/rs6000/aix.h, config/rs6000/vxworks.h,
8679         config/rs6000/40x.md, config/rs6000/aix51.h,
8680         config/rs6000/sysv4.h, config/arc/arc-protos.h, config/arc/arc.md,
8681         config/arc/arc.c, config/arc/arc.opt, config/arc/arc-modes.def,
8682         config/arc/arc.h, config/mcore/mcore-elf.h,
8683         config/mcore/mcore-protos.h, config/mcore/predicates.md,
8684         config/mcore/mcore.md, config/mcore/mcore.c,
8685         config/mcore/mcore.opt, config/mcore/mcore.h,
8686         config/mcore/mcore-pe.h, config/darwin.c, config/freebsd-nthr.h,
8687         config/score/predicates.md, config/score/score-version.h,
8688         config/score/score-protos.h, config/score/misc.md,
8689         config/score/elf.h, config/score/score.c, config/score/mac.md,
8690         config/score/score7.md, config/score/score.h,
8691         config/score/score-conv.h, config/score/score-mdaux.c,
8692         config/score/score.md, config/score/score.opt,
8693         config/score/score-modes.def, config/score/score-mdaux.h,
8694         config/score/mul-div.S, config/arm/uclinux-elf.h,
8695         config/arm/semi.h, config/arm/ecos-elf.h, config/arm/arm1020e.md,
8696         config/arm/symbian.h, config/arm/linux-elf.h,
8697         config/arm/arm1026ejs.md, config/arm/arm1136jfs.md,
8698         config/arm/elf.h, config/arm/aout.h, config/arm/arm.c,
8699         config/arm/thumb2.md, config/arm/vec-common.md, config/arm/coff.h,
8700         config/arm/strongarm-pe.h, config/arm/arm.h,
8701         config/arm/cortex-a8-neon.md, config/arm/semiaof.h,
8702         config/arm/cortex-a8.md, config/arm/uclinux-eabi.h,
8703         config/arm/arm-modes.def, config/arm/linux-eabi.h,
8704         config/arm/rtems-elf.h, config/arm/neon-schedgen.ml,
8705         config/arm/arm-cores.def, config/arm/arm-protos.h,
8706         config/arm/vfp.md, config/arm/aof.h, config/arm/linux-gas.h,
8707         config/arm/wince-pe.h, config/arm/neon.md,
8708         config/arm/constraints.md, config/arm/neon.ml,
8709         config/arm/xscale-elf.h, config/arm/strongarm-coff.h,
8710         config/arm/arm.opt, config/arm/arm926ejs.md,
8711         config/arm/predicates.md, config/arm/iwmmxt.md,
8712         config/arm/arm_neon.h, config/arm/unknown-elf.h,
8713         config/arm/kaos-arm.h, config/arm/bpabi.h, config/arm/pe.opt,
8714         config/arm/neon-testgen.ml, config/arm/arm.md,
8715         config/arm/xscale-coff.h, config/arm/pe.c,
8716         config/arm/arm-generic.md, config/arm/pe.h,
8717         config/arm/kaos-strongarm.h, config/arm/freebsd.h,
8718         config/arm/neon-docgen.ml, config/arm/netbsd.h, config/arm/fpa.md,
8719         config/arm/strongarm-elf.h, config/arm/cirrus.md,
8720         config/arm/netbsd-elf.h, config/arm/vxworks.h,
8721         config/arm/neon-gen.ml, config/kaos.h, config/darwin-driver.c,
8722         config/pa/predicates.md, config/pa/pa64-hpux.h,
8723         config/pa/pa-hpux.opt, config/pa/som.h, config/pa/pa-hpux1010.opt,
8724         config/pa/pa-hpux1111.opt, config/pa/pa-pro-end.h,
8725         config/pa/elf.h, config/pa/fptr.c, config/pa/pa64-linux.h,
8726         config/pa/pa.md, config/pa/pa.opt, config/pa/pa-hpux.h,
8727         config/pa/pa-hpux10.h, config/pa/pa-hpux11.h,
8728         config/pa/pa-hpux1010.h, config/pa/pa-protos.h,
8729         config/pa/pa-osf.h, config/pa/pa-hpux1111.h, config/pa/pa-64.h,
8730         config/pa/milli64.S, config/pa/pa.c, config/pa/pa-linux.h,
8731         config/pa/pa.h, config/pa/pa32-linux.h, config/pa/pa64-hpux.opt,
8732         config/pa/pa64-regs.h, config/pa/pa-modes.def,
8733         config/pa/constraints.md, config/darwin9.h, config/mips/4100.md,
8734         config/mips/linux.h, config/mips/elfoabi.h, config/mips/elf.h,
8735         config/mips/sdb.h, config/mips/windiss.h, config/mips/rtems.h,
8736         config/mips/3000.md, config/mips/iris5.h, config/mips/5000.md,
8737         config/mips/7000.md, config/mips/9000.md, config/mips/4600.md,
8738         config/mips/linux64.h, config/mips/elforion.h,
8739         config/mips/constraints.md, config/mips/generic.md,
8740         config/mips/predicates.md, config/mips/4300.md,
8741         config/mips/mips-ps-3d.md, config/mips/iris.h, config/mips/24k.md,
8742         config/mips/mips.md, config/mips/mips.opt, config/mips/4k.md,
8743         config/mips/5k.md, config/mips/vr4120-div.S,
8744         config/mips/openbsd.h, config/mips/iris6.h, config/mips/4000.md,
8745         config/mips/mips-protos.h, config/mips/6000.md,
8746         config/mips/mips.c, config/mips/mips.h, config/mips/r3900.h,
8747         config/mips/74k.md, config/mips/netbsd.h, config/mips/vxworks.h,
8748         config/mips/mips-modes.def, config/mips/vr.h,
8749         config/soft-fp/t-softfp, config/openbsd.h, config/ptx4.h,
8750         config/freebsd-spec.h, config/vax/vax.c, config/vax/openbsd.h,
8751         config/vax/vax.h, config/vax/elf.h, config/vax/vax.md,
8752         config/vax/bsd.h, config/vax/vax.opt, config/vax/vax-modes.def,
8753         config/vax/openbsd1.h, config/vax/netbsd.h,
8754         config/vax/vax-protos.h, config/vax/netbsd-elf.h,
8755         config/vax/vaxv.h, config/vax/ultrix.h, config/freebsd.h,
8756         config/h8300/rtems.h, config/h8300/predicates.md,
8757         config/h8300/h8300.c, config/h8300/h8300.h, config/h8300/elf.h,
8758         config/h8300/h8300.md, config/h8300/h8300.opt,
8759         config/h8300/coff.h, config/h8300/h8300-protos.h,
8760         config/v850/v850.md, config/v850/predicates.md,
8761         config/v850/v850-c.c, config/v850/v850.c, config/v850/v850.opt,
8762         config/v850/v850.h, config/v850/v850-protos.h, config/vxworks.c,
8763         config/knetbsd-gnu.h, config/sol2-6.h, config/vxworks.h,
8764         config/mmix/mmix.h, config/mmix/predicates.md,
8765         config/mmix/mmix-protos.h, config/mmix/mmix.md,
8766         config/mmix/mmix.c, config/mmix/mmix.opt,
8767         config/mmix/mmix-modes.def, config/bfin/bfin.opt,
8768         config/bfin/rtems.h, config/bfin/bfin-modes.def,
8769         config/bfin/predicates.md, config/bfin/bfin-protos.h,
8770         config/bfin/bfin.c, config/bfin/bfin.h, config/bfin/bfin.md:
8771         Likewise.
8772
8773 2007-08-02  Richard Sandiford  <richard@codesourcery.com>
8774
8775         * emit-rtl.c (reset_used_decls): Rename to...
8776         (set_used_decls): ...this.  Set the used flag rather than clearing it.
8777         (unshare_all_rtl_again): Update accordingly.  Set flags on argument
8778         DECL_RTLs rather than resetting them.
8779
8780 2007-08-02  Andreas Krebbel  <krebbel1@de.ibm.com>
8781
8782         * config/s390/s390.md ("*xordi3_cconly"): Change xr to xg.
8783
8784 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
8785
8786         * reload.c (find_reloads_address_part): Pass correct MEMREFLOC
8787         argument to find_reloads_address.
8788
8789 2007-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
8790
8791         PR tree-optimization/32919
8792         * tree-ssa-sccvn.c (visit_phi): Do not visit abnormal PHIs.
8793         * tree-ssa-coalesce.c (ssa_conflicts_dump): New.
8794         (coalesce_ssa_name): Call it.
8795
8796 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
8797             David Ung  <davidu@mips.com>
8798
8799         * config/mips/mips16.S (__mips16_unordsf2, __mips16_floatunsisf): New.
8800         (__mips16_unorddf2, __mips16_floatunsidf): New.
8801         * config/mips/mips.c (mips_init_libfuncs): Add optab entries for
8802         above functions.
8803         * config/mips/t-libgcc-mips16 (LIB1ASMFUNCS): Add new functions.
8804
8805 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
8806
8807         * tree-pretty-print.c (dump_generic_node): Dump OMP_SECTIONS_SWITCH.
8808         Display new operands of OMP_SECTIONS and OMP_CONTINUE.
8809         * tree.h (OMP_SECTIONS_CONTROL): New macro.
8810         (OMP_DIRECTIVE_P): Add OMP_SECTIONS_SWITCH.
8811         * omp-low.c (get_ws_args_for, determine_parallel_type,
8812         expand_omp_for_generic, expand_omp_for_static_nochunk,
8813         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
8814         Work with more precise CFG.
8815         (build_omp_regions_1): Handle OMP_SECTIONS_SWITCH.
8816         (lower_omp_sections): Emit OMP_SECTIONS_SWITCH.  Add arguments to
8817         OMP_CONTINUE.
8818         * tree-gimple.c (is_gimple_stmt): Handle OMP_SECTIONS_SWITCH.
8819         * gimple-low.c (lower_stmt): Ditto.
8820         * tree-inline.c (estimate_num_insns_1): Ditto.
8821         * tree.def (OMP_SECTIONS, OMP_CONTINUE): Added new operands.
8822         (OMP_SECTIONS_SWITCH): New.
8823         * tree-cfgcleanup.c (cleanup_omp_return): New.
8824         (cleanup_tree_cfg_bb): Call cleanup_omp_return.
8825         * tree-cfg.c (make_edges): Create back edges for OMP_CONTINUE
8826         and exit edge for OMP_FOR.  Handle OMP_SECTIONS_SWITCH.
8827         (tree_redirect_edge_and_branch): Handle omp constructs.
8828
8829         * fortran/trans-openmp.c (gfc_trans_omp_sections): Build OMP_SECTIONS
8830         with three arguments.
8831
8832 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
8833
8834         * tree-cfg.c (tree_merge_blocks): Preserve loop exit phi nodes only
8835         in loop closed ssa.
8836
8837 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
8838
8839         * tree-ssa-threadupdate.c (thread_through_all_blocks): Record that
8840         the loop structures may need fixing.
8841         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures):
8842         New functions.
8843         (cleanup_tree_cfg_loop): Removed.
8844         (cleanup_tree_cfg): If loops need fixing, call repair_loop_structures.
8845         * tree-predcom.c (tree_predictive_commoning): Return TODO_cleanup_cfg
8846         instead of running cleanup_tree_cfg_loop.
8847         * cfgloop.h (LOOPS_NEED_FIXUP): New constant.
8848         * tree-flow.h (cleanup_tree_cfg_loop): Declaration removed.
8849         (tree_predictive_commoning): Declaration changed.
8850         * passes.c (execute_function_todo): Do not use cleanup_tree_cfg_loop.
8851
8852 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
8853
8854         * doc/invoke.texi (l1-cache-size): Update documentation.
8855         (l2-cache-size): Document.
8856         * params.h (L2_CACHE_SIZE): New macro.
8857         * tree-ssa-loop-prefetch.c (L1_CACHE_SIZE_BYTES): Reflect
8858         that L1_CACHE_SIZE is in kB now.
8859         (L2_CACHE_SIZE_BYTES): New macro.
8860         (tree_ssa_prefetch_arrays): Show size in kB.
8861         * config/i386/i386.h (struct processor_costs): Add l1_cache_size
8862         and l2_cache_size fields.
8863         * config/i386/driver-i386.c (describe_cache): Detect cache size
8864         in kB.
8865         * config/i386/i386.c (size_cost, i386_cost, i486_cost,pentium_cost,
8866         pentiumpro_cost, geode_cost, k6_cost, athlon_cost, k8_cost,
8867         amdfam10_cost, pentium4_cost, nocona_cost, core2_cost,
8868         generic64_cost, generic32_cost): Add l1_cache_size and l2_cache_size.
8869         (override_options): Set l1-cache-size and l2-cache-size to default
8870         values if not specified otherwise.
8871         * params.def (PARAM_L1_CACHE_SIZE): Change to set in kB.
8872         (PARAM_L2_CACHE_SIZE): New.
8873
8874 2007-08-01  Nigel Stephens  <nigel@mips.com>
8875             David Ung  <davidu@mips.com>
8876             Thiemo Seufer  <ths@mips.com>
8877             Chris Dearman  <chris@mips.com>
8878             Richard Sandiford  <richard@codesourcery.com>
8879
8880         * config.gcc (mips*-sde-elf*): New stanza.
8881         (mipsisa32-*-elf*, mipsisa32el-*-elf*, mipsisa32r2-*-elf*)
8882         (mipsisa32r2el-*-elf*, mipsisa64-*-elf*, mipsisa64el-*-elf*)
8883         (mipsisa64sb1-*-elf*, mipsisa64sb1el-*-elf*, mips-*-elf*)
8884         (mipsel-*-elf*, mips64-*-elf*, mips64el-*-elf*, mips64orion-*-elf*)
8885         (mips64orionel-*-elf*, mips*-*-rtems*, mips-wrs-windiss)
8886         (mipstx39-*-elf*, mipstx39el-*-elf*): Add mips/t-libgcc-mips16
8887         to tmake_file.
8888         * config/mips/sde.h: New file.
8889         * config/mips/t-libgcc-mips16: Likewise.
8890         * config/mips/t-sde: Likewise.
8891         * config/mips/linux.h (TARGET_OS_CPP_BUILTINS): Remove settings
8892         of _ABIN32, _ABI64, _ABIO32, _MIPS_SIM, _MIPS_SZLONG, _MIPS_SZPTR,
8893         _MIPS_FPSET and _MIPS_SZINT.
8894         * config/mips/iris.h (TARGET_OS_CPP_BUILTINS): Likewise.
8895         * config/mips/elfoabi.h (DRIVER_SELF_SPECS): Remove separate
8896         insertion of a default -mips option.  Use MIPS_32BIT_OPTION_SPEC.
8897         * config/mips/t-isa3264 (LIB1ASMSRC, LIB1ASMFUNCS): Delete.
8898         * config/mips/t-r3900 (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
8899         * config/mips/t-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
8900         * config/mips/mips.h (TARGET_CPU_CPP_BUITINS): Define _ABIO32,
8901         _ABIN32, _ABI64, _ABIO64, _MIPS_SIM, _MIPS_SZINT, _MIPS_SZLONG,
8902         _MIPS_SZPTR and _MIPS_FPSET.
8903         (MIPS_ISA_LEVEL_SPEC): Inject the default -mips option if no
8904         architecture is specified.
8905         (MIPS_32BIT_OPTION_SPEC): New macro.
8906
8907 2007-07-31  Dan Hipschman  <dsh@google.com>
8908
8909         * gcc.c (end_going_arg): New function.
8910         (do_spec_2): Use it.
8911         (do_spec_1): Use it.
8912
8913 2007-07-31  H.J. Lu  <hongjiu.lu@intel.com>
8914
8915         * ddg.c (add_cross_iteration_register_deps): Declare bb_info
8916         only if ENABLE_CHECKING is defined.
8917
8918 2007-07-31  Kenneth Zadeck <zadeck@naturalbridge.com>
8919
8920         * df.h (DF_RU, DF_RU_BB_INFO, df_ru_bb_info, df_ru,
8921         df_ru_add_problem, df_ru_get_bb_info): Removed.
8922         (DF_RD, DF_UREC, DF_CHAIN, DF_NOTE): Renumbered.
8923         * df-problems.c (df_ru_problem_data, df_ru_set_bb_info,
8924         df_ru_free_bb_info, df_ru_alloc,
8925         df_ru_bb_local_compute_process_def,
8926         df_ru_bb_local_compute_process_use, df_ru_bb_local_compute,
8927         df_ru_local_compute, df_ru_init_solution, df_ru_confluence_n,
8928         df_ru_transfer_function, df_ru_free, df_ru_start_dump,
8929         df_ru_top_dump, df_ru_bottom_dump, df_problem problem_RU,
8930         df_ru_add_problem): Removed.
8931
8932 2007-07-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8933
8934         PR target/32847
8935         * pa.md (casesi32): Use match_scratch.  Revise insn condition.
8936         (casesi32p, casesi64p): Likewise.
8937         (casesi): Adjust for above.
8938
8939 2007-07-31  Richard Sandiford  <richard@codesourcery.com>
8940
8941         * mode-switching.c (create_pre_exit): Don't search past calls.
8942
8943 2007-07-31  Sandra Loosemore  <sandra@codesourcery.com>
8944
8945         * config/mips/mips.h (ISA_HAS_SYNCI): Add !TARGET_MIPS16 test.
8946
8947 2007-07-31  Revital Eres  <eres@il.ibm.com>
8948
8949         * ddg.c (add_deps_for_def): Rename to...
8950         (add_cross_iteration_register_deps): This.  Change implementation
8951         to use only reaching def and def-use chains to construct the
8952         inter loop dependencies.
8953         (add_deps_for_use): Remove function.
8954         (build_inter_loop_deps): Call add_cross_iteration_register_deps
8955         function to build the inter loop dependencies.
8956         * modulo-sched.c (sms_schedule): Build only
8957         reaching def and def-use chains for the propose of the ddg
8958         construction.
8959
8960 2007-07-31  Julian Brown  <julian@codesourcery.com>
8961
8962         * config/arm/neon.md (vec_set<mode>_internal, vec_setv2di_internal):
8963         New define_insns. Use correct RTL.
8964         (vec_set<mode>): Write as expander.
8965
8966 2007-07-31  Razya Ladelsky  <razya@il.ibm.com>
8967
8968         * matrix-reorg.c (analyze_matrix_allocation_site): Avoid referring 
8969         to an unallocated space.
8970
8971 2007-07-30  Jan Sjodin  <jan.sjodin@amd.com>
8972
8973         * tree-data-ref.c
8974         (split_constant_offset): Enable split_constant_offset to extract
8975         constants from other statements.
8976         * tree-vect-transform.c
8977         (vect_create_addr_base_for_vector_ref): Generate data_ref_base
8978         to a temp var. Force base_offset to be simple.
8979
8980 2007-07-30  Seongbae Park <seongbae.park@gmail.com>
8981
8982         * df-scan.c (df_scan_verify): Remove artificial limit on
8983         the number of blocks for verification.
8984         * df-problems.c (df_lr_bb_local_compute, df_simulate_find_defs,
8985         df_simulate_defs): Avoid unnecessary insn checking for defs.
8986
8987 2007-07-29  Mark Mitchell  <mark@codesourcery.com>
8988
8989         * config/m68k/lb1sf68.asm (FUNC): New macro.
8990         (__mulsi3): Use it.
8991         (__udivsi3): Likewise.
8992         (__divsi3): Likewise.
8993         (__umodsi3): Likewise.
8994         (__modsi3): Likewise.
8995         (__subdf3): Likewise.
8996         (__adddf3): Likewise.
8997         (__muldf3): Likewise.
8998         (__divdf3): Likewise.
8999         (__negdf2): Likewise.
9000         (__cmpdf2): Likewise.
9001         (__subsf3): Likewise.
9002         (__addsf3): Likewise.
9003         (__mulsf3): Likewise.
9004         (__divsf3): Likewise.
9005         (__negsf2): Likewise.
9006         (__cmpsf2): Likewise.
9007         (__eqdf2): Likewise.
9008         (__nedf2): Likewise.
9009         (__gtdf2): Likewise.
9010         (__gedf2): Likewise.
9011         (__ltdf2): Likewise.
9012         (__ledf2): Likewise.
9013         (__eqsf2): Likewise.
9014         (__nesf2): Likewise.
9015         (__gtsf2): Likewise.
9016         (__gesf2): Likewise.
9017         (__ltsf2): Likewise.
9018         (__lesf2): Likewise.
9019
9020 2007-07-30  Ollie Wild  <aaw@google.com>
9021
9022         * c-ppoutput.c (print_lines_directives_only): New function.
9023         (scan_translation_unit_directives_only): New function.
9024         (preprocess_file): Add call to scan_translation_unit_directives_only.
9025         * c-opts.c (c_common_handle_option): Add OPT_fdirectives_only.
9026         (sanitize_cpp_opts): Add default flag_dump_macros setting for
9027         -fdirectives-only.  Add errors for -fdirectives-only conflict with
9028         -Wunused-macros and -traditional.
9029         (finish_options): Add builtin macro initialization for
9030         -fdirectives-only + -fpreprocessed.
9031         * c.opt (fdirectives-only): New.
9032         * doc/cppopts.texi (fdirectives-only): New.
9033
9034 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9035
9036         * alias.c (record_set, memory_modified_1): Constify.
9037         * bt-load.c (note_btr_set): Likewise.
9038         * caller-save.c (mark_set_regs, add_stored_regs): Likewise.
9039         * combine.c (set_nonzero_bits_and_sign_copies,
9040         expand_field_assignment, record_dead_and_set_regs_1,
9041         use_crosses_set_p, reg_dead_at_p_1, can_combine_p,
9042         likely_spilled_retval_1): Likewise.
9043         * config/frv/frv.c (frv_registers_update_1, frv_io_check_address,
9044         frv_io_handle_set): Likewise.
9045         * config/mips/mips.c (mips_sim_record_set,
9046         vr4130_true_reg_dependence_p_1): Likewise.
9047         * config/mt/mt.c (insn_dependent_p_1): Likewise.
9048         * config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
9049         * config/sh/sh.c (flow_dependent_p_1): Likewise.
9050         * cselib.c (cselib_invalidate_rtx_note_stores): Likewise.
9051         * dce.c (mark_nonreg_stores_1, mark_nonreg_stores_2): Likewise.
9052         * ddg.c (mark_mem_store): Likewise.
9053         * df-problems.c (df_urec_mark_reg_change): Likewise.
9054         * function.c (update_epilogue_consts): Likewise.
9055         * gcse.c (record_set_info, record_last_set_info,
9056         mems_conflict_for_gcse_p, canon_list_insert, reg_set_info,
9057         reg_clear_last_set): Likewise.
9058         * global.c (mark_reg_store, mark_reg_clobber, reg_becomes_live):
9059         Likewise.
9060         * jump.c (reversed_comparison_code_parts): Likewise.
9061         * local-alloc.c (validate_equiv_mem_from_store, no_equiv,
9062         reg_is_set): Likewise.
9063         * loop-iv.c (mark_altered): Likewise.
9064         * mode-switching.c (reg_becomes_live): Likewise.
9065         * optabs.c (no_conflict_move_test): Likewise.
9066         * postreload-gcse.c (record_last_set_info, find_mem_conflicts):
9067         Likewise.
9068         * postreload.c (reload_combine_note_store, move2add_note_store):
9069         Likewise.
9070         * regmove.c (flags_set_1): Likewise.
9071         * regrename.c (note_sets, kill_clobbered_value, kill_set_value):
9072         Likewise.
9073         * reload1.c (mark_not_eliminable, forget_old_reloads_1):
9074         Likewise. 
9075         * resource.c (update_live_status): Likewise.
9076         * rtl.h (set_of, note_stores): Likewise.
9077         * rtlanal.c (set_of_1, parms_set, struct set_of_data, set_of,
9078         note_stores, parms_set): Likewise.
9079         * sched-rgn.c (sets_likely_spilled_1): Likewise.
9080         * stack-ptr-mod.c (notice_stack_pointer_modification_1):
9081         Likewise. 
9082         * var-tracking.c (count_stores, add_stores): Likewise.
9083
9084 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9085
9086         * alias.c (mems_in_disjoint_alias_sets_p,
9087         fixed_scalar_and_varying_struct_p, aliases_everything_p,
9088         nonoverlapping_component_refs_p, nonoverlapping_memrefs_p,
9089         write_dependence_p, mems_in_disjoint_alias_sets_p,
9090         read_dependence, true_dependence, canon_true_dependence,
9091         anti_dependence, output_dependence): Constify.
9092         * combine.c (extended_count): Likewise.
9093         * cse.c (cse_rtx_varies_p, hash_rtx, exp_equiv_p): Likewise.
9094         * cselib.c (get_value_hash, references_value_p,
9095         cselib_reg_set_mode, cselib_rtx_varies_p): Likewise.
9096         * cselib.h (cselib_reg_set_mode, references_value_p): Likewise.
9097         * emit-rtl.c (mem_expr_equal_p, active_insn_p): Likewise.
9098         * function.c (contains, prologue_epilogue_contains,
9099         sibcall_epilogue_contains): Likewise. 
9100         * jump.c (simplejump_p, condjump_p, condjump_in_parallel_p,
9101         pc_set, any_uncondjump_p, any_condjump_p, onlyjump_p,
9102         only_sets_cc0_p, sets_cc0_p, rtx_renumbered_equal_p, true_regnum,
9103         reg_or_subregno): Likewise.
9104         * recog.c (asm_noperands): Likewise.
9105         * reload1.c (function_invariant_p): Likewise.
9106         * rtl.h (mem_expr_equal_p, active_insn_p, rtx_varies_p,
9107         rtx_addr_varies_p, asm_noperands, exp_equiv_p, hash_rtx,
9108         condjump_p, any_condjump_p, any_uncondjump_p, pc_set,
9109         simplejump_p, onlyjump_p, only_sets_cc0_p, sets_cc0_p,
9110         true_regnum, reg_or_subregno, condjump_in_parallel_p,
9111         extended_count, prologue_epilogue_contains,
9112         sibcall_epilogue_contains, function_invariant_p, true_dependence,
9113         canon_true_dependence, read_dependence, anti_dependence,
9114         output_dependence): Likewise.
9115         * rtlanal.c (rtx_varies_p, rtx_addr_varies_p): Likewise.
9116
9117 2007-07-30  Julian Brown  <julian@codesourcery.com>
9118
9119         * config/arm/neon.md (V_ext): New mode attribute.
9120         (neon_vget_lane<mode>): Replace with define_expand.
9121         (neon_vget_lane<mode>_sext_internal)
9122         (neon_vget_lane<mode>_zext_internal): New define_insns for double
9123         and quad precision vectors.
9124         (neon_vget_lanedi): Add bounds check. Remove dead comment.
9125         * config/arm/neon.ml (get_lane): Make 32-bit get-lane intrinsics
9126         have typeless 32-bit result.
9127
9128 2007-07-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9129
9130         PR tree-opt/32527
9131         * tree-affine.h (aff_tree): The type of rest is sizetype for types
9132         of pointers.
9133         * tree-affine.c (aff_combination_scale): If type is a pointer type,
9134         use sizetype for rest.
9135         (aff_combination_add_elt): Likewise. Don't specialize pointer types.
9136         (aff_combination_convert): Don't convert rest for pointer types.
9137
9138 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
9139
9140         * Makefile.in (tree-ssa-alias.o): Add alloc-pool.h
9141
9142         * tree-ssa-alias.c: Add alloc-pool.h.
9143         (init_alias_info): Free alias_bitmap_obstack.
9144         (delete_alias_info): Call delete_mem_ref_stats.
9145         (get_mem_sym_stats_for): Use alloc_pool.
9146         (init_mem_ref_stats): Do not delete mem_ref_stats here.
9147         (delete_mem_sym_stats): Removed.
9148         
9149 2007-07-29  Sebastian Pop  <sebpop@gmail.com>
9150
9151         * tree-data-ref.c (add_multivariate_self_dist): Parametric access
9152         functions cannot be represented as classical distance vectors.
9153
9154 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9155
9156         * attribs.c (hash_attr, eq_attr, init_attributes): Constify.
9157         * builtins.c (validate_arg, builtin_mathfn_code,
9158         validate_arglist): Likewise.
9159         * calls.c (call_expr_flags): Likewise.
9160         * combine.c (reg_nonzero_bits_for_combine,
9161         reg_num_sign_bit_copies_for_combine, get_last_value,
9162         reg_truncated_to_mode): Likewise.
9163         * emit-rtl.c (subreg_lowpart_p): Likewise.
9164         * expr.c (highest_pow2_factor_for_target,
9165         categorize_ctor_elements_1, categorize_ctor_elements,
9166         count_type_elements, contains_packed_reference,
9167         highest_pow2_factor, highest_pow2_factor_for_target): Likewise.
9168         * fold-const.c (may_negate_without_overflow_p, int_const_binop,
9169         fold_convertible_p, operand_equal_p, tree_swap_operands_p,
9170         native_encode_int, native_encode_real, native_encode_complex,
9171         native_encode_vector, native_encode_expr, native_interpret_int,
9172         native_interpret_real, native_interpret_complex,
9173         native_interpret_vector, native_interpret_expr): Likewise.
9174         * function.c (use_register_for_decl): Likewise.
9175         * gimplify.c (get_name): Likewise.
9176         * langhooks-def.h (lhd_return_null_const_tree): New.
9177         (LANG_HOOKS_GET_CALLEE_FNDECL): Use it.
9178         * langhooks.c (lhd_return_null_const_tree): New.
9179         * langhooks.h (lang_get_callee_fndecl): Constify.
9180         * output.h (constructor_static_from_elts_p): Likewise.
9181         * rtl-factoring.c (gen_symbol_ref_rtx_for_label): Likewise.
9182         * rtl.h (nonzero_bits, num_sign_bit_copies, truncated_to_mode,
9183         subreg_lowpart_p, noop_move_p, struct rtl_hooks): Likewise.
9184         * rtlanal.c (cached_nonzero_bits, nonzero_bits1,
9185         cached_num_sign_bit_copies, num_sign_bit_copies1, noop_move_p,
9186         nonzero_bits, num_sign_bit_copies, truncated_to_mode): Likewise.
9187         * rtlhooks-def.h (reg_nonzero_bits_general,
9188         reg_num_sign_bit_copies_general, reg_truncated_to_mode_general):
9189         Likewise. 
9190         * rtlhooks.c (reg_num_sign_bit_copies_general,
9191         reg_nonzero_bits_general, reg_truncated_to_mode_general):
9192         Likewise. 
9193         * stmt.c (warn_if_unused_value, is_body_block): Likewise.
9194         * stor-layout.c (mode_for_size_tree): Likewise.
9195         * tree-ssa-loop-im.c (memref_eq): Likewise.
9196         * tree-ssa-loop-ivopts.c (tree_int_cst_sign_bit): Likewise.
9197         * tree.c (contains_placeholder_p, type_list_equal,
9198         simple_cst_equal, get_callee_fndecl, operand_equal_for_phi_arg_p):
9199         Likewise. 
9200         * tree.h (tree_int_cst_sign_bit, may_negate_without_overflow_p,
9201         mode_for_size_tree, categorize_ctor_elements, count_type_elements,
9202         contains_placeholder_p, contains_packed_reference,
9203         get_callee_fndecl, operand_equal_for_phi_arg_p,
9204         warn_if_unused_value, is_body_block, native_encode_expr,
9205         native_interpret_expr, fold_convertible_p, operand_equal_p,
9206         int_const_binop, tree_swap_operands_p, builtin_mathfn_code,
9207         validate_arglist, simple_cst_equal, type_list_equal,
9208         use_register_for_decl, call_expr_flags, get_name,
9209         highest_pow2_factor): Likewise.
9210         (const_call_expr_arg_iterator_d,
9211         init_const_call_expr_arg_iterator, next_const_call_expr_arg,
9212         first_const_call_expr_arg, more_const_call_expr_args_p,
9213         FOR_EACH_CONST_CALL_EXPR_ARG): New.
9214         * varasm.c (constructor_static_from_elts_p): Constify.
9215
9216 2007-07-28  Kazu Hirata  <kazu@codesourcery.com>
9217
9218         * cfglayout.c, config/arm/arm.c, config/arm/cortex-a8.md,
9219         config/arm/neon-schedgen.ml, config/arm/neon.ml,
9220         config/arm/vec-common.md, config/ia64/div.md, cselib.c,
9221         df-core.c, df.h, dominance.c, optabs.c, opts.c, reg-stack.c,
9222         regstat.c, target.h, tree-ssa-live.c, tree-ssa-pre.c,
9223         tree-vect-transform.c, tree.def: Fix comment typos.  Follow
9224         spelling conventions.
9225         * doc/invoke.texi: Follow spelling conventions.
9226
9227 2007-07-29  Vladimir Yanovsky  <yanov@il.ibm.com>
9228             Revital Eres  <eres@il.ibm.com>
9229
9230         * modulo-sched.c (sms_schedule): Avoid loops which includes
9231         auto-increment instructions.
9232
9233 2007-07-28  Richard Guenther  <rguenther@suse.de>
9234
9235         PR middle-end/32920
9236         * fold-const.c (fold_cond_expr_with_comparison): Convert
9237         operand zero of MIN/MAX_EXPR to correct type.
9238
9239 2007-07-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9240
9241         * calls.c (special_function_p, setjmp_call_p, alloca_call_p,
9242         flags_from_decl_or_type): Constify.
9243         * gcc.c (do_spec_1): Likewise.
9244         * print-tree.c (dump_addr, print_node_brief): Likewise.
9245         * tree-cfg.c (stmt_starts_bb_p, is_ctrl_stmt, computed_goto_p,
9246         simple_goto_p, tree_can_make_abnormal_goto, stmt_starts_bb_p,
9247         tree_purge_all_dead_eh_edges): Likewise.
9248         * tree-flow.h (is_ctrl_stmt, computed_goto_p, simple_goto_p,
9249         tree_can_make_abnormal_goto, tree_purge_all_dead_eh_edges):
9250         Likewise. 
9251         * tree.c (expr_location, expr_has_location, expr_locus,
9252         expr_filename, expr_lineno, get_inner_array_type,
9253         fields_compatible_p): Likewise.
9254         * tree.h (get_inner_array_type, fields_compatible_p,
9255         expr_location, expr_has_location, expr_locus, expr_filename,
9256         expr_lineno, dump_addr, print_node_brief, flags_from_decl_or_type,
9257         setjmp_call_p, alloca_call_p): Likewise.
9258
9259 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
9260
9261         * timevar.def: Add TV_CALL_CLOBBER, TV_FLOW_SENSITIVE,
9262         TV_FLOW_INSENSITIVE.
9263
9264         * tree-ssa-alias.c (compute_call_clobbered): Push/pop
9265         TV_CALL_CLOBBER.
9266         (compute_flow_sensitive_aliasing): Ditto for TV_FLOW_SENSITIVE.
9267         (compute_flow_insensitive_aliasing): Ditto for
9268         TV_FLOW_INSENSITIVE.    
9269
9270 2007-07-27  Jan Hubicka  <jh@suse.cz>
9271
9272         * config/i386/i386.c (register_move_cost): Remove accidentally
9273         comitted #if 0 block.
9274
9275         * attribs.c: Include hashtab.h
9276         (attribute_hash): New.
9277         (substring): New structure.
9278         (extract_attribute_substring, substring_hash, hash_attr, eq_attr):
9279         New function.
9280         (init_attributes): Initialize attribute hash.
9281         (decl_attributes): Use attribute hash.
9282         * Makefile.in (attribs.c): Depend on hashtab.h.
9283
9284 2007-07-27  Steve Ellcey  <sje@cup.hp.com>
9285
9286         * config/ia64/vect.md (vec_initv2si): Remove bad BIG_ENDIAN test.
9287
9288 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
9289
9290         * doc/invoke.texi (mdsp, mdspr2): Document the __mips_dsp,
9291         __mips_dspr2 and __mips_dsp_rev macros.
9292         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dsp_rev.
9293
9294 2007-07-27  Douglas Gregor  <doug.gregor@gmail.com>
9295         
9296        * c-common.h (enum rid): Add RID_DECLTYPE, update RID_LAST_CXX0X.
9297
9298 2007-07-26  Kenneth Zadeck <zadeck@naturalbridge.com>
9299
9300         PR middle-end/32749
9301         
9302         * df-problems.c (df_create_unused_note): Removed do_not_gen parm
9303         and the updating of the live and do_not_gen sets.
9304         (df_note_bb_compute): Added updating of live and do_not_gen sets
9305         for regular defs so that the case of clobber inside conditional
9306         call is processed correctly.
9307         
9308 2007-07-27  Zdenek Dvorak  <dvorakz@suse.cz>
9309
9310         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Generate the
9311         operands with compatible type.
9312
9313 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
9314
9315         * expr.h (store_bit_field): Don't return a value.
9316         * expmed.c (check_predicate_volatile_ok): New function.
9317         (store_bit_field_1): New function, extracted from store_bit_field.
9318         Take a fallback_p argument and return true if the operation succeeded.
9319         Only use store_fixed_bit_field if fallback_p.  Don't recompute
9320         mode_for_extraction; use op_mode instead.  Try forcing memories
9321         into registers if the insv expander fails.
9322         (store_bit_field): Use store_bit_field_1 with fallback_p true.
9323         Don't return a value.
9324         (convert_extracted_bit_field): New function, extracted from
9325         store_bit_field.
9326         (extract_bit_field_1): Likewise.  Take a fallback_p argument
9327         and return NULL if the operation succeeded.  Only use
9328         extract_fixed_bit_field if fallback_p.  Only calculate one
9329         extraction mode.  Combine code for extv and extzv.  Try forcing
9330         memories into registers if the ext(z)v expander fails.
9331         (extract_bit_field): Use extract_bit_field_1 with fallback_p true.
9332
9333 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
9334
9335         * df.h (df_mw_hardreg): Turn df_ref_type and df_ref_flags
9336         into bitfields.
9337         (df_ref): Likewise.  Put regno with other integer fields.
9338
9339 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
9340
9341         * df.h (df_mw_hardreg): Remove "loc" field.
9342         * df-scan.c (df_ref_record): Don't set it.  Remove redundant
9343         local variable.
9344         * df-problems.c (df_whole_mw_reg_unused_p): New function,
9345         split out from df_set_unused_notes_for_mw.  Return false for
9346         partial references.  Assert that mw_reg is a REG when returning true.
9347         (df_set_unused_notes_for_mw): Use it.  Use mw_reg instead of *loc.
9348         (df_whole_mw_reg_dead_p): New function, split out from
9349         df_set_dead_notes_for_mw.  Return false for partial references.
9350         Assert that mw_reg is a REG when returning true.
9351         (df_set_dead_notes_for_mw): Use it.  Use mw_reg instead of *loc.
9352         Remove redundant bitmap check.
9353
9354 2007-07-26  H.J. Lu  <hongjiu.lu@intel.com>
9355
9356         * config/ia64/t-ia64 ($(T)crtbegin.o): Removed.
9357         ($(T)crtend.o): Likwise.
9358         ($(T)crtbeginS.o): Likwise.
9359         ($(T)crtendS.o): Likwise.
9360         ($(T)crtfastmath.o): Likwise.
9361
9362 2007-07-26  Zdenek Dvorak  <dvorakz@suse.cz>
9363
9364         * dominance.c (dom_computed, n_bbs_in_dom_tree): Removed.
9365         * function.h (dom_computed, n_bbs_in_dom_tree): New macros.
9366         * basic-block.h (struct control_flow_graph): Added x_dom_computed
9367         and x_n_bbs_in_dom_tree fields.
9368
9369 2007-07-26  Steve Ellcey  <sje@cup.hp.com>
9370
9371         PR tree-optimization/32087
9372         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop):
9373         Do not call scale_bbs_frequencies_int with prob of zero.
9374
9375 2007-07-26  Julian Brown  <julian@codesourcery.com>
9376
9377         * config/arm/arm-protos.h (neon_lane_bounds, neon_const_bounds)
9378         (neon_element_bits): Add prototypes.
9379         * config/arm/arm.c (bounds_check, neon_lane_bounds)
9380         (neon_const_bounds, neon_element_bits): New functions.
9381         * config/arm/neon.md (neon_vget_lane<mode>, neon_vget_lanedi)
9382         (neon_vget_lanev2di, neon_vset_lane<mode>, neon_vset_lanedi)
9383         (neon_vset_lanev2di, neon_vdup_lane<mode>, neon_vdup_lanedi)
9384         (neon_vdup_lanev2di, neon_vcvt_n<mode>, neon_vmul_lane<mode>)
9385         (neon_vmull_lane<mode>, neon_vqdmull_lane<mode>)
9386         (neon_vqdmulh_lane<mode>, neon_vmla_lane<mode>)
9387         (neon_vmlal_lane<mode>, neon_vqdmlal_lane<mode>)
9388         (neon_vmls_lane<mode>, neon_vmlsl_lane<mode>)
9389         (neon_vqdmlsl_lane<mode>, neon_vext<mode>, neon_vshr_n<mode>)
9390         (neon_vshrn_n<mode>, neon_vqshrn_n<mode>, neon_vqshrun_n<mode>)
9391         (neon_vshl_n<mode>, neon_vshl_n<mode>, neon_vqshl_n<mode>)
9392         (neon_vqshlu_n<mode>, neon_vshll_n<mode>, neon_vsra_n<mode>)
9393         (neon_vsri_n<mode>, neon_vsli_n<mode>): Add bounds checks.
9394
9395 2007-07-26  Nathan Froyd  <froydnj@codesourcery.com>
9396
9397         * config/vxworks.h (VXWORKS_LINK_SPEC): Fix typo.
9398         (HAVE_AS_GNU_ATTRIBUTE): Undefine.
9399
9400 2007-07-26  Mark Shinwell  <shinwell@codesourcery.com>
9401             Julian Brown  <julian@codesourcery.com>
9402
9403         * config/arm/arm.c (arm_mac_accumulator_is_mul_result): New.
9404         * config/arm/arm-protos.h (arm_mac_accumulator_is_mul_result): New.
9405         * config/arm/cortex-a8.md: New.
9406         * config/arm/cortex-a8-neon.md: New.
9407         * config/arm/neon-schedgen.ml: New.
9408         * config/arm/neon.md (vqh_mnem): New.
9409         (neon_type): New.
9410         (Is_float_mode): New.
9411         (Scalar_mul_8_16): New.
9412         (Is_d_reg): New.
9413         (V_mode_nunits): New.
9414         (All instruction patterns): Annotate with neon_type attribute
9415         values.
9416         * config/arm/arm.md: Include cortex-a8.md.
9417         (insn): Add smmla, umaal, smlald, smlsld, clz, mrs, msr and xtab
9418         values.
9419         Annotate instruction patterns accordingly.
9420         (generic_sched): Do not use generic scheduling for Cortex-A8.
9421         (generic_vfp): Do not use generic VFP scheduling for Cortex-A8.
9422
9423 2007-07-26  Daniel Jacobowitz  <dan@codesourcery.com>
9424
9425         * fold-const.c (fold_read_from_constant_string): Use
9426         build_int_cst_type.
9427         * tree-ssa-ccp.c (fold_const_aggregate_ref): Likewise.
9428
9429 2007-07-26  Nick Clifton  <nickc@redhat.com>
9430
9431         * tree-ssa-operands.h: Change copyright header to refer to version
9432         3 of the GNU General Public License and to point readers at the
9433         COPYING3 file and the FSF's license web page.
9434         * tree-vrp.c, regrename.c, attribs.c, loop-unswitch.c,
9435         sched-ebb.c, fwprop.c, tree-loop-linear.c, dwarf2asm.c,
9436         tree-into-ssa.c, dwarf2asm.h, tree-ssa-loop-im.c, sbitmap.c,
9437         targhooks.c, tree-dump.c, tree-complex.c, sbitmap.h, targhooks.h,
9438         tree-dump.h, regstat.c, see.c, machmode.h, hooks.c, cgraphbuild.c,
9439         hooks.h, genrecog.c, tree-ssa-threadupdate.c, gen-protos.c,
9440         flags.h, rtlhooks.c, gencheck.c, tree-ssa-loop-niter.c,
9441         opts-common.c, dbgcnt.def, tree-pretty-print.c, tracer.c,
9442         gengtype.c, mkconfig.sh, gengtype.h, tree-ssa-loop-unswitch.c,
9443         cgraph.c, c-lex.c, cgraph.h, libfuncs.h, cfgloopmanip.c,
9444         rtl-error.c, optabs.c, postreload-gcse.c, tree-ssa-loop-manip.c,
9445         optabs.h, genmddeps.c, defaults.h, postreload.c, value-prof.c,
9446         tree-ssa-loop-ch.c, tree-tailcall.c, gengenrtl.c, value-prof.h,
9447         genopinit.c, tree.c, tree.h, reload.c, tree-pass.h, ipa-cp.c,
9448         reload.h, bitmap.c, bitmap.h, tree-scalar-evolution.c,
9449         c-config-lang.in, tree-scalar-evolution.h, target.h, cppspec.c,
9450         rtlanal.c, ddg.c, lambda-mat.c, mips-tdump.c, ddg.h,
9451         tree-phinodes.c, mips-tfile.c, pointer-set.c, pointer-set.h,
9452         diagnostic.c, final.c, diagnostic.h, builtins.c, genoutput.c,
9453         gcc.c, lists.c, tree-ssa-alias-warnings.c, gcc.h, cfghooks.c,
9454         input.h, gensupport.c, fold-const.c, cfghooks.h, insn-notes.def,
9455         gensupport.h, builtin-attrs.def, sync-builtins.def, params.c,
9456         cfgloopanal.c, params.h, graphds.c, omp-low.c, tree-ssa-dse.c,
9457         graphds.h, gcov.c, cfg.c, genextract.c, ipa-reference.c,
9458         genautomata.c, tree-ssa-uncprop.c, auto-inc-dec.c, toplev.c,
9459         tree-gimple.c, ipa-reference.h, vmsdbgout.c, errors.c, toplev.h,
9460         reorg.c, tree-gimple.h, tree-chrec.c, pretty-print.c, errors.h,
9461         real.c, tree-chrec.h, pretty-print.h, debug.c, real.h, genemit.c,
9462         omega.c, c-cppbuiltin.c, genmultilib, debug.h, omega.h,
9463         tree-ssa-sccvn.c, genconfig.c, tree-ssa-sccvn.h, cgraphunit.c,
9464         regs.h, df-scan.c, vec.c, hosthooks-def.h, vec.h,
9465         tree-ssa-copyrename.c, scan.c, builtin-types.def, tree-ssa-ccp.c,
9466         scan.h, mode-classes.def, haifa-sched.c, dominance.c, dojump.c,
9467         double-int.c, gcov-io.c, dbxout.c, builtins.def, double-int.h,
9468         dbxout.h, tree-ssa-loop-ivopts.c, df-core.c, mode-switching.c,
9469         gengtype-lex.l, tree-nomudflap.c, modulo-sched.c, c-objc-common.c,
9470         hosthooks.h, c-objc-common.h, caller-save.c, graph.c,
9471         ipa-pure-const.c, graph.h, c-format.c, cse.c, fix-header.c,
9472         c-format.h, web.c, tree-stdarg.c, genpeep.c, tree-stdarg.h,
9473         tree-ssa-math-opts.c, xcoffout.c, tree-ssa-dom.c, tree-nrv.c,
9474         xcoffout.h, tree-ssa-propagate.c, ipa-utils.c,
9475         tree-ssa-propagate.h, tree-ssa-alias.c, loop-init.c, ipa-utils.h,
9476         gimple-low.c, rtl.def, c-tree.h, tree-ssa-sink.c, ipa-inline.c,
9477         mkmap-symver.awk, machmode.def, c-pch.c, cfganal.c, global.c,
9478         alloc-pool.c, c-semantics.c, alloc-pool.h, jump.c, ifcvt.c,
9479         dwarf2out.c, expr.c, cfgbuild.c, tree-browser.c, dwarf2out.h,
9480         expr.h, longlong.h, opts.c, gcov-iov.c, opts.h, dwarf2.h,
9481         genattrtab.c, genconditions.c, genattr.c, optc-gen.awk,
9482         timevar.def, tree-ssa-loop-ivcanon.c, hard-reg-set.h, predict.c,
9483         tree-ssa-loop.c, host-default.c, predict.h, recog.c, dbgcnt.c,
9484         recog.h, dbgcnt.h, c-aux-info.c, tree-ssa-address.c, timevar.c,
9485         dse.c, lcm.c, tree-ssa-ifcombine.c, timevar.h, dse.h,
9486         matrix-reorg.c, tree-vn.c, treestruct.def, fp-test.c, c-decl.c,
9487         tree-eh.c, c-errors.c, c-pretty-print.c, regmove.c,
9488         lambda-trans.c, c-pretty-print.h, et-forest.c, et-forest.h,
9489         ebitmap.c, configure.ac, local-alloc.c, function.c, langhooks.c,
9490         ebitmap.h, cppdefault.c, tree-vectorizer.c, function.h,
9491         langhooks.h, print-rtl.c, cppdefault.h, df.h, tree-vectorizer.h,
9492         sdbout.c, stor-layout.c, sdbout.h, rtlhooks-def.h, read-rtl.c,
9493         gcse.c, ipa-type-escape.c, vmsdbg.h, alias.c, gengtype-parse.c,
9494         ipa-type-escape.h, domwalk.c, alias.h, tree-if-conv.c, profile.c,
9495         init-regs.c, domwalk.h, ipa.c, gccbug.in, tree-data-ref.c,
9496         loop-unroll.c, tree-data-ref.h, tree-flow-inline.h, tree-affine.c,
9497         mkmap-flat.awk, tree-affine.h, tree-vect-analyze.c, c.opt, ggc.h,
9498         opt-gather.awk, c-typeck.c, gimplify.c, coretypes.h, exec-tool.in,
9499         insn-addr.h, tree-ssa-phiopt.c, c-pragma.c, c-pragma.h, calls.c,
9500         tree-ssa-coalesce.c, genmodes.c, loop-doloop.c, predict.def,
9501         dwarf.h, tree.def, rtl-factoring.c, lower-subreg.c, expmed.c,
9502         bt-load.c, ggc-common.c, genflags.c, tree-dfa.c, except.c,
9503         coverage.c, except.h, emit-rtl.c, cfgexpand.c, coverage.h,
9504         stringpool.c, cselib.c, emit-rtl.h, tree-cfgcleanup.c, c-opts.c,
9505         cselib.h, cfgcleanup.c, simplify-rtx.c, tree-ssa-pre.c, explow.c,
9506         tree-ssa-live.c, tree-sra.c, tree-ssa-live.h, tree-predcom.c,
9507         loop-invariant.c, genpreds.c, protoize.c, opth-gen.awk, c-dump.c,
9508         lambda.h, loop-iv.c, tree-mudflap.c, ipa-prop.c, print-tree.c,
9509         tree-mudflap.h, tree-ssa-copy.c, ipa-prop.h, cfglayout.c,
9510         tree-ssa-forwprop.c, c-convert.c, cfglayout.h, common.opt,
9511         ggc-zone.c, ggc-page.c, c-omp.c, tree-ssa-dce.c, gencodes.c,
9512         varasm.c, tree-vect-patterns.c, libada-mk.in, tree-ssa-ter.c,
9513         sched-deps.c, tree-nested.c, c-ppoutput.c, tree-ssa.c,
9514         target-def.h, tree-ssa-loop-prefetch.c, lambda-code.c,
9515         omp-builtins.def, rtl.c, regclass.c, stab.def, intl.c, rtl.h,
9516         intl.h, tree-inline.c, conditions.h, tree-inline.h, integrate.c,
9517         sched-int.h, tree-iterator.c, integrate.h, tree-iterator.h,
9518         genchecksum.c, tree-optimize.c, output.h, tree-vect-transform.c,
9519         tree-object-size.c, combine.c, tree-outof-ssa.c, addresses.h,
9520         bb-reorder.c, stack-ptr-mod.c, resource.c, var-tracking.c,
9521         cfgloop.c, system.h, resource.h, ggc-none.c, tree-profile.c,
9522         cfgloop.h, c-gimplify.c, c-common.c, opt-functions.awk,
9523         tree-vect-generic.c, tree-flow.h, df-problems.c, scan-decls.c,
9524         c-common.h, config.gcc, reg-stack.c, tlink.c, main.c, stub-objc.c,
9525         fixproto, config.host, Makefile.in, gccspec.c, sched-rgn.c,
9526         vecprim.h, basic-block.h, tree-ssa-structalias.c,
9527         tree-ssa-structalias.h, c-common.def, sched-vis.c, tree-cfg.c,
9528         passes.c, genconstants.c, c-incpath.c, c-incpath.h,
9529         struct-equiv.c, c-parser.c, tree-ssa-reassoc.c, varray.c, sreal.c,
9530         varray.h, dfp.c, sreal.h, combine-stack-adj.c, dfp.h,
9531         reg-notes.def, cfgrtl.c, config.build, varpool.c, gengtype-yacc.y,
9532         stmt.c, dce.c, tree-browser.def, prefix.c, statistics.h,
9533         params.def, dce.h, c-lang.c, gcov-dump.c, prefix.h,
9534         tree-ssanames.c, collect2.c, collect2.h, tree-ssa-threadedge.c,
9535         convert.c, convert.h, langhooks-def.h, reload1.c,
9536         tree-ssa-operands.c: Likewise.
9537
9538 2007-07-26  Jan Hubicka  <jh@suse.cz>
9539
9540         * tree-ssa-live.c: Include debug.h and flags.h.
9541         (mark_scope_block_unused): New function.
9542         (remove_unused_scope_block_p): New function.
9543         (remove_unused_locals): Remove unused blocks too.
9544
9545 2007-07-25  Ian Lance Taylor  <iant@google.com>
9546
9547         * combine.c (combine_max_regno): Remove.  Remove all uses.
9548         (struct reg_stat_struct): Rename from struct reg_stat.
9549         (reg_stat_type): Define, and declare VECs.
9550         (reg_stat): Change from pointer to VEC.  Change all uses.
9551         (combine_split_insns): New static function.
9552         (try_combine, find_split_point): Call it instead of split_insns.
9553
9554 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
9555
9556         * cfghooks.c (split_block): Fix the information about loop latch.
9557
9558 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
9559
9560         * cfgloopmanip.c (fix_loop_structure): Call force_single_succ_latches.
9561
9562 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
9563
9564         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
9565         Scan the new edge for loop exit info.
9566
9567 2007-07-25  Andreas Tobler  <a.tobler@schweiz.org>
9568
9569         * config/darwin.c: Include debug.h.
9570
9571 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
9572
9573         PR target/32218
9574         * tree-vect-patterns.c (vect_pattern_recog_1): Check for valid type.
9575
9576 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
9577
9578         * config/ia64/ia64.h (HARD_REGNO_NREGS): Handle RFmode.
9579         (HARD_REGNO_MODE_OK): Ditto.
9580         (MODES_TIEABLE_P): Ditto.
9581         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
9582         (CLASS_MAX_NREGS): Ditto.
9583         * config/ia64/ia64.c (ia64_print_operand_address): Add R format.
9584         * config/ia64/ia64.md (divsf3_internal_thr): Removed.
9585         (divdf3_internal_thr): Removed.
9586         * config/ia64/div.md: New file.
9587         * config/ia64/constraints.md: Add H constraint.
9588
9589 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9590
9591         * sbitmap.c (sbitmap_verify_popcount, sbitmap_alloc_with_popcount,
9592         sbitmap_copy, sbitmap_copy_n, sbitmap_equal, sbitmap_empty_p,
9593         sbitmap_union_of_diff_cg, sbitmap_union_of_diff, sbitmap_not,
9594         sbitmap_difference, sbitmap_any_common_bits, sbitmap_a_and_b_cg,
9595         sbitmap_a_and_b, sbitmap_a_xor_b_cg, sbitmap_a_xor_b,
9596         sbitmap_a_or_b_cg, sbitmap_a_or_b, sbitmap_a_subset_b_p,
9597         sbitmap_a_or_b_and_c_cg, sbitmap_a_or_b_and_c,
9598         sbitmap_a_and_b_or_c_cg, sbitmap_a_and_b_or_c,
9599         sbitmap_first_set_bit, sbitmap_last_set_bit, dump_sbitmap,
9600         dump_sbitmap_file, debug_sbitmap, popcount_table,
9601         sbitmap_popcount): Constify.
9602         * sbitmap.h (const_sbitmap, const_sbitmap_ptr): New.
9603         (sbitmap_iterator, sbitmap_iter_init, dump_sbitmap,
9604         dump_sbitmap_file, sbitmap_copy, sbitmap_copy_n, sbitmap_equal,
9605         sbitmap_empty_p, sbitmap_union_of_diff, sbitmap_union_of_diff_cg,
9606         sbitmap_difference, sbitmap_not, sbitmap_a_or_b_and_c,
9607         sbitmap_a_or_b_and_c_cg, sbitmap_a_and_b_or_c,
9608         sbitmap_a_and_b_or_c_cg, sbitmap_any_common_bits, sbitmap_a_and_b,
9609         sbitmap_a_and_b_cg, sbitmap_a_or_b, sbitmap_a_or_b_cg,
9610         sbitmap_a_xor_b, sbitmap_a_xor_b_cg, sbitmap_a_subset_b_p,
9611         sbitmap_first_set_bit, sbitmap_last_set_bit, debug_sbitmap,
9612         sbitmap_popcount, sbitmap_verify_popcount): Constify.
9613
9614 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9615
9616         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_element_zerop,
9617         bitmap_copy, bitmap_clear_bit, popcount_table, bitmap_count_bits,
9618         bitmap_first_set_bit, bitmap_and, bitmap_and_into,
9619         bitmap_elt_copy, bitmap_and_compl, bitmap_and_compl_into,
9620         bitmap_compl_and_into, bitmap_elt_ior, bitmap_ior,
9621         bitmap_ior_into, bitmap_xor, bitmap_xor_into, bitmap_equal_p,
9622         bitmap_intersect_p, bitmap_intersect_compl_p,
9623         bitmap_ior_and_compl, bitmap_ior_and_compl_into,
9624         debug_bitmap_file, debug_bitmap, bitmap_print, bitmap_hash):
9625         Constify.
9626         * bitmap.h (bitmap_copy, bitmap_equal_p, bitmap_intersect_p,
9627         bitmap_intersect_compl_p, bitmap_count_bits, bitmap_and,
9628         bitmap_and_into, bitmap_and_compl, bitmap_and_compl_into,
9629         bitmap_compl_and_into, bitmap_ior, bitmap_ior_into, bitmap_xor,
9630         bitmap_xor_into, bitmap_ior_and_compl, bitmap_ior_and_compl_into,
9631         debug_bitmap, debug_bitmap_file, bitmap_print,
9632         bitmap_first_set_bit, bitmap_hash, bmp_iter_set_init,
9633         bmp_iter_and_init, bmp_iter_and_compl_init): Likewise.
9634
9635 2007-07-25  Daniel Berlin  <dberlin@dberlin.org>
9636
9637         * config/darwin.c (darwin_override_options): Additional fix for
9638         debug info formats that don't support var tracking.
9639
9640 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9641
9642         * cselib.c (entry_and_rtx_equal_p): Constify.
9643         * gengtype.c (output_mangled_typename, write_types, write_local):
9644         Likewise.
9645         * gengtype.h (const_type_p): New.
9646         * see.c (eq_descriptor_extension, hash_descriptor_extension):
9647         Constify.
9648         * tlink.c (scan_linker_output): De-constify.
9649         * tree-ssa-loop-im.c (memref_eq): Constify.
9650         * tree-ssa-structalias.c (const_shared_bitmap_info_t): New.
9651         (shared_bitmap_hash, shared_bitmap_eq): Constify.
9652
9653 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9654
9655         * c-common.c (fname_as_string, c_type_hash): Constify.
9656         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
9657         * cgraph.c (edge_hash, edge_eq): Likewise.
9658         * dwarf2out.c (decl_die_table_eq, decl_loc_table_eq): Likewise.
9659         * emit-rtl.c (mem_attrs_htab_eq, reg_attrs_htab_hash,
9660         reg_attrs_htab_eq): Likewise.
9661         * except.c (t2r_eq, t2r_hash, ttypes_filter_eq, ehl_hash, ehl_eq):
9662         Likewise.
9663         * genautomata.c (const_reserv_sets_t, const_unit_decl_t,
9664         const_decl_t, const_state_t, const_automata_list_el_t): New.
9665         (first_out_arc, DECL_UNIT, DECL_BYPASS, DECL_AUTOMATON, DECL_EXCL,
9666         DECL_PRESENCE, DECL_ABSENCE, DECL_RESERV, DECL_INSN_RESERV,
9667         automaton_decl_hash, automaton_decl_eq_p, insn_decl_hash,
9668         insn_decl_eq_p, decl_hash, decl_eq_p, alt_state_cmp,
9669         reserv_sets_cmp, reserv_sets_eq, state_hash, state_eq_p,
9670         automata_list_hash, automata_list_eq_p, compare_states_for_equiv,
9671         compare_max_occ_cycle_nums, out_state_arcs_num,
9672         compare_transition_els_num, units_cmp, state_reservs_cmp):
9673         Constify.
9674         * genmodes.c (cmp_modes): Likewise.
9675         * ggc-common.c (saving_htab_hash, saving_htab_eq): Likewise.
9676         * gimplify.c (compare_case_labels): Likewise.
9677         * ipa-type-escape.c (get_name_of_type, type_brand_s): Likewise.
9678         * loop-unroll.c (si_info_hash, ve_info_hash): Likewise.
9679         * matrix-reorg.c (mtt_info_hash): Likewise.
9680         * postreload-gcse.c (hash_expr_for_htab, expr_equiv_p): Likewise.
9681         * rtl-factoring.c (const_p_hash_bucket, const_p_hash_elem): New.
9682         (htab_hash_bucket, htab_hash_elem): Constify.
9683         * tree-browser.c (TB_parent_eq): Likewise.
9684         * tree-scalar-evolution.c (hash_scev_info): Likewise.
9685         * tree-ssa-alias.c (sort_tags_by_id): Likewise.
9686         * tree-ssa-coalesce.c (const_coalesce_pair_p): New.
9687         (coalesce_pair_map_hash, coalesce_pair_map_eq, compare_pairs):
9688         Constify.
9689         * tree-ssa-dom.c (avail_expr_hash, avail_expr_eq): Likewise.
9690         * tree-ssa-pre.c (const_expr_pred_trans_t): New.
9691         (expr_pred_trans_hash, expr_pred_trans_eq): Constify.
9692         * tree-ssa-sccvn.c (const_vn_binary_op_t, const_vn_unary_op_t,
9693         const_vn_phi_t, const_vn_reference_op_t, const_vn_reference_t):
9694         New.
9695         (vn_reference_op_eq, vn_reference_hash, vn_reference_eq,
9696         vn_unary_op_hash, vn_unary_op_eq, vn_binary_op_hash,
9697         vn_binary_op_eq, vn_phi_hash, vn_phi_eq): Constify.
9698         * tree-ssa-threadupdate.c (redirection_data_hash,
9699         redirection_data_eq): Likewise. 
9700         * tree-ssa-uncprop.c (equiv_hash, equiv_eq): Likewise.
9701         * tree-ssa.c (var_ann_eq): Likewise.
9702         * tree-vrp.c (compare_case_labels): Likewise.
9703         * tree.c (int_cst_hash_hash, int_cst_hash_eq,
9704         tree_map_base_marked_p, type_hash_marked_p, tree_check_failed,
9705         tree_not_check_failed, tree_class_check_failed,
9706         tree_range_check_failed, tree_not_class_check_failed,
9707         omp_clause_check_failed, omp_clause_range_check_failed,
9708         tree_contains_struct_check_failed, tree_operand_check_failed):
9709         Likewise. 
9710         * tree.h (tree_contains_struct_check_failed, tree_check_failed,
9711         tree_not_check_failed, tree_class_check_failed,
9712         tree_range_check_failed, tree_not_class_check_failed,
9713         tree_operand_check_failed, omp_clause_operand_check_failed,
9714         tree_operand_length): Likewise. 
9715         * var-tracking.c (const_variable): New.
9716         (variable_htab_hash, variable_htab_eq): Constify.
9717         * varasm.c (const_desc_hash): Likewise.
9718
9719 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9720
9721         * expr.c (handled_component_p): Constify.
9722         * fold-const.c (fit_double_type): Likewise.
9723         * real.h (real_value_from_int_cst): Likewise.
9724         * tree-flow-inline.h (gimple_in_ssa_p,
9725         gimple_aliases_computed_p, gimple_addressable_vars,
9726         gimple_call_clobbered_vars, gimple_referenced_vars,
9727         gimple_global_var, gimple_nonlocal_all, gimple_var_anns,
9728         end_htab_p, end_referenced_vars_p, var_ann, function_ann,
9729         may_aliases, end_readonly_imm_use_p, has_zero_uses,
9730         has_single_use, single_imm_use, num_imm_uses, is_exec_stmt,
9731         is_label_stmt, is_global_var, phi_ssa_name_p,
9732         factoring_name_p, is_call_clobbered, tree_common_ann,
9733         op_iter_done, end_imm_use_stmt_p, end_imm_use_on_stmt_p,
9734         unmodifiable_var_p, array_ref_contains_indirect_ref,
9735         ref_contains_array_ref, lookup_subvars_for_var,
9736         var_can_have_subvars, overlap_subvar, gimple_ssa_operands,
9737         gimple_mem_ref_stats): Likewise.
9738         * tree-flow.h (tree_common_ann, var_ann, function_ann,
9739         may_aliases, is_exec_stmt, is_label_stmt,
9740         ref_contains_array_ref, array_ref_contains_indirect_ref,
9741         var_can_have_subvars, overlap_subvar, is_call_clobbered,
9742         unmodifiable_var_p): Likewise.
9743         * tree-gimple.c (is_gimple_min_invariant): Likewise.
9744         * tree-gimple.h (is_gimple_min_invariant): Likewise. 
9745         * tree.c (type_hash_list, attribute_hash_list, tree_size,
9746         cst_and_fits_in_hwi, real_value_from_int_cst,
9747         build_real_from_int_cst, integer_zerop, integer_onep,
9748         integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2,
9749         tree_floor_log2, real_zerop, real_onep, real_twop,
9750         real_minus_onep, really_constant_p, purpose_member, chain_member,
9751         list_length, fields_length, int_size_in_bytes, bit_position,
9752         int_bit_position, byte_position, int_byte_position, expr_align,
9753         array_type_nelts, tree_node_structure,
9754         type_contains_placeholder_1, iterative_hash_pointer,
9755         is_attribute_with_length_p, is_attribute_p, check_qualified_type,
9756         tree_map_base_eq, type_hash_list, type_hash_eq,
9757         attribute_hash_list, type_num_arguments, tree_int_cst_equal,
9758         tree_int_cst_lt, tree_int_cst_compare, host_integerp,
9759         tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
9760         simple_cst_list_equal, compare_tree_int, iterative_hash_expr,
9761         int_fits_type_p, get_containing_scope, decl_function_context,
9762         decl_type_context, omp_clause_operand_check_failed,
9763         initializer_zerop, int_cst_value, num_ending_zeros): Likewise.
9764         * tree.h (omp_clause_operand_check_failed, tree_size,
9765         build_real_from_int_cst, array_type_nelts, purpose_member,
9766         tree_int_cst_equal, tree_int_cst_lt, tree_int_cst_compare,
9767         host_integerp, tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
9768         is_attribute_p, check_qualified_type, expr_align,
9769         int_size_in_bytes, bit_position, int_bit_position, byte_position,
9770         int_byte_position, list_length, fields_length, initializer_zerop,
9771         integer_zerop, integer_onep, integer_all_onesp, integer_pow2p,
9772         integer_nonzerop, cst_and_fits_in_hwi, num_ending_zeros,
9773         tree_node_structure, handled_component_p, get_containing_scope,
9774         decl_function_context, decl_type_context, real_zerop,
9775         type_num_arguments, fit_double_type, really_constant_p,
9776         int_fits_type_p, tree_log2, tree_floor_log2, iterative_hash_expr,
9777         compare_tree_int, chain_member, simple_cst_list_equal, real_onep,
9778         real_twop, real_minus_onep, int_cst_value): Likewise.
9779
9780 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9781
9782         * cfglayout.c (insn_scope, insn_line): Constify.
9783         * emit-rtl.c (const_int_htab_hash, const_int_htab_eq,
9784         const_double_htab_hash, const_double_htab_eq,
9785         mem_attrs_htab_hash): Likewise.
9786         * loop-iv.c (biv_eq): Likewise.
9787         * print-rtl.c (print_rtx, print_decl_name, print_mem_expr,
9788         print_inline_rtx, debug_rtx, debug_rtx_list, debug_rtx_range,
9789         debug_rtx_find, print_rtl, print_rtl_single, print_simple_rtl):
9790         Likewise. 
9791         * rtl-error.c (location_for_asm, diagnostic_for_asm,
9792         error_for_asm, warning_for_asm, _fatal_insn,
9793         _fatal_insn_not_found): Likewise. 
9794         * rtl.c (rtx_size, shared_const_p, shallow_copy_rtx_stat,
9795         rtx_equal_p, rtl_check_failed_bounds, rtl_check_failed_type1,
9796         rtl_check_failed_type2, rtl_check_failed_code1,
9797         rtl_check_failed_code2, rtl_check_failed_code_mode,
9798         rtvec_check_failed_bounds, rtl_check_failed_flag): Likewise.
9799         * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
9800         rtl_check_failed_type2, rtl_check_failed_code1,
9801         rtl_check_failed_code2, rtl_check_failed_code_mode,
9802         rtvec_check_failed_bounds, rtl_check_failed_flag, LABEL_KIND,
9803         SET_LABEL_KIND, rhs_regno, subreg_lsb, subreg_regno, subreg_nregs,
9804         shared_const_p, rtx_size, shallow_copy_rtx_stat, rtx_equal_p,
9805         get_pool_mode, insn_line, insn_file, simplify_replace_rtx,
9806         mode_signbit_p, rtx_addr_can_trap_p, nonzero_address_p,
9807         rtx_unstable_p, get_integer_term, get_related_value,
9808         offset_within_block_p, reg_mentioned_p, count_occurrences,
9809         reg_referenced_p, reg_used_between_p, no_labels_between_p,
9810         single_set_2, multiple_sets, set_noop_p, refers_to_regno_p,
9811         reg_overlap_mentioned_p, dead_or_set_p, dead_or_set_regno_p,
9812         find_reg_note, find_regno_note, find_reg_equal_equiv_note,
9813         find_constant_src, find_reg_fusage, find_regno_fusage,
9814         pure_call_p, remove_note, side_effects_p, volatile_refs_p,
9815         volatile_insn_p, may_trap_p, may_trap_after_code_motion_p,
9816         may_trap_or_fault_p, inequality_comparisons_p, tablejump_p,
9817         computed_jump_p, auto_inc_p, in_expr_list_p,
9818         remove_node_from_expr_list, loc_mentioned_in_p,
9819         label_is_jump_target_p, reversed_comparison_code_parts,
9820         debug_rtx, debug_rtx_list, debug_rtx_range, debug_rtx_find,
9821         print_mem_expr, print_rtl, print_simple_rtl, print_rtl_single,
9822         print_inline_rtx): Likewise.
9823         * rtlanal.c (covers_regno_p, covers_regno_no_parallel_p,
9824         computed_jump_p_1, nonzero_bits1, rtx_unstable_p,
9825         rtx_addr_can_trap_p_1, rtx_addr_can_trap_p, nonzero_address_p,
9826         get_integer_term, get_related_value, offset_within_block_p,
9827         count_occurrences, reg_mentioned_p, no_labels_between_p,
9828         reg_used_between_p, reg_referenced_p, single_set_2,
9829         multiple_sets, set_noop_p, refers_to_regno_p,
9830         reg_overlap_mentioned_p, dead_or_set_p,
9831         covers_regno_no_parallel_p, covers_regno_p,
9832         dead_or_set_regno_p, find_reg_note, find_regno_note,
9833         find_reg_equal_equiv_note, find_constant_src, find_reg_fusage,
9834         find_regno_fusage, pure_call_p, remove_note, in_expr_list_p,
9835         remove_node_from_expr_list, volatile_insn_p, volatile_refs_p,
9836         side_effects_p, may_trap_p_1, may_trap_p,
9837         may_trap_after_code_motion_p, may_trap_or_fault_p,
9838         inequality_comparisons_p, tablejump_p, computed_jump_p_1,
9839         computed_jump_p, auto_inc_p, loc_mentioned_in_p, subreg_lsb,
9840         subreg_regno, subreg_nregs, label_is_jump_target_p): Likewise.
9841         * simplify-rtx.c (neg_const_int, plus_minus_operand_p,
9842         mode_signbit_p, simplify_replace_rtx, plus_minus_operand_p):
9843         Likewise. 
9844         * toplev.h (_fatal_insn_not_found, _fatal_insn, error_for_asm,
9845         warning_for_asm): Likewise.
9846         * tree.h (print_rtl): Likewise.
9847         * varasm.c (get_pool_mode): Likewise.
9848
9849 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9850
9851         * c-lex.c (c_lex_with_flags, lex_string): Constify.
9852         * c-ppoutput.c (print_line, pp_dir_change): Likewise.
9853         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
9854         * cfg.c (bb_copy_original_hash, bb_copy_original_eq): Likewise.
9855         * cfgloop.c (loop_exit_hash, loop_exit_eq): Likewise.
9856         * ddg.c (compare_sccs): Likewise.
9857         * df-scan.c (df_ref_compare, df_mw_compare): Likewise.
9858         * dfp.c (decimal_real_from_string, decimal_to_decnumber,
9859         decimal_to_binary, decimal_do_compare, decimal_real_to_decimal,
9860         decimal_do_fix_trunc, decimal_real_to_integer,
9861         decimal_real_to_integer2, decimal_real_maxval): Likewise.
9862         * dse.c (const_group_info_t): New.
9863         (invariant_group_base_eq, invariant_group_base_hash): Constify.
9864         * dwarf2out.c (const_dw_die_ref): New.
9865         (decl_die_table_hash, decl_die_table_eq, file_info_cmp): Constify.
9866         * tree-browser.c (TB_parent_eq): Likewise.
9867         * unwind-dw2-fde.c (__register_frame_info_bases,
9868         __deregister_frame_info_bases, fde_unencoded_compare, fde_split,
9869         add_fdes, linear_search_fdes, binary_search_unencoded_fdes):
9870         Likewise.
9871         * unwind-dw2-fde.h (get_cie, next_fde): Likewise.
9872         * unwind-dw2.c (uw_frame_state_for): Likewise.
9873         * value-prof.c (histogram_hash, histogram_eq): Likewise.
9874         * value-prof.h (const_histogram_value): New.
9875
9876 2007-07-25  Richard Sandiford  <richard@codesourcery.com>
9877
9878         * config/mips/mips.c (machine_function): Add
9879         initialized_mips16_gp_pseudo_p.
9880         (mips16_gp_pseudo_reg): Do not emit the initialization of
9881         mips16_gp_pseudo_rtx when being called from the gimple cost-
9882         calculation routines; emit it on the first use outside those
9883         routines.
9884
9885 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9886
9887         * coretypes.h (const_bitmap, const_rtx, const_rtvec, const_tree):
9888         New.
9889         
9890         * rtl.h (RTL_CHECK1, RTL_CHECK2, RTL_CHECKC1, RTL_CHECKC2,
9891         RTVEC_ELT, XWINT, XCWINT, XCMWINT, XCNMPRV, BLOCK_SYMBOL_CHECK,
9892         RTL_FLAG_CHECK1, RTL_FLAG_CHECK2, RTL_FLAG_CHECK3,
9893         RTL_FLAG_CHECK4, RTL_FLAG_CHECK5, RTL_FLAG_CHECK6,
9894         RTL_FLAG_CHECK7, RTL_FLAG_CHECK8, LABEL_KIND, SET_LABEL_KIND):
9895         Preserve const-ness of parameters through use of __typeof(),
9896         also constify and tidy.
9897         
9898         * tree.h (TREE_CHECK, TREE_NOT_CHECK, TREE_CHECK2,
9899         TREE_NOT_CHECK2, TREE_CHECK3, TREE_NOT_CHECK3, TREE_CHECK4,
9900         NON_TREE_CHECK4, TREE_CHECK5, TREE_NOT_CHECK5,
9901         CONTAINS_STRUCT_CHECK, TREE_CLASS_CHECK, TREE_RANGE_CHECK,
9902         OMP_CLAUSE_SUBCODE_CHECK, OMP_CLAUSE_RANGE_CHECK, EXPR_CHECK,
9903         GIMPLE_STMT_CHECK, NON_TYPE_CHECK, TREE_VEC_ELT_CHECK,
9904         PHI_NODE_ELT_CHECK, OMP_CLAUSE_ELT_CHECK, TREE_OPERAND_CHECK,
9905         TREE_OPERAND_CHECK_CODE, GIMPLE_STMT_OPERAND_CHECK,
9906         TREE_RTL_OPERAND_CHECK, TREE_CHAIN, TREE_TYPE): Likewise.
9907
9908 2007-07-25  Julian Brown  <julian@codesourcery.com>
9909             Mark Shinwell  <shinwell@codesourcery.com>
9910
9911         * config/alpha/alpha.c (alpha_mangle_fundamental_type): Rename to...
9912         (alpha_mangle_type): This.
9913         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
9914         (TARGET_MANGLE_TYPE): Define this instead.
9915         * config/arm/arm-protos.h (arm_mangle_type): Add prototype.
9916         * config/arm/arm.c (TARGET_MANGLE_TYPE): Define target hook.
9917         (arm_init_neon_builtins): Fix comment.
9918         (arm_mangle_map_entry): New.
9919         (arm_mangle_map): New.
9920         (arm_mangle_type): New.
9921         * config/i386/i386.c (ix86_mangle_fundamental_type): Rename to...
9922         (ix86_mangle_type): This. Use TYPE_MAIN_VARIANT and restrict
9923         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
9924         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
9925         (TARGET_MANGLE_TYPE): Define this instead.
9926         * config/ia64/ia64.c (ia64_mangle_fundamental_type): Rename to...
9927         (ia64_mangle_type): This. Use TYPE_MAIN_VARIANT  and restrict
9928         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
9929         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
9930         (TARGET_MANGLE_TYPE): Define this instead.
9931         * config/rs6000/rs6000.c (rs6000_mangle_fundamental_type): Rename
9932         to...
9933         (rs6000_mangle_type): This. Use TYPE_MAIN_VARIANT.
9934         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
9935         (TARGET_MANGLE_TYPE): Define this instead.
9936         * config/s390/s390.c (s390_mangle_fundamental_type): Rename to...
9937         (s390_mangle_type): This.
9938         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
9939         (TARGET_MANGLE_TYPE): Define this instead.
9940         * config/sparc/sparc.c (sparc_mangle_fundamental_type): Rename to...
9941         (sparc_mangle_type): This.
9942         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
9943         (TARGET_MANGLE_TYPE): Define this instead.
9944         * cp/mangle.c (write_type): Call mangle_type target hook on all
9945         types before mangling.  Use original type, not main variant, as
9946         argument.
9947         * target-def.h (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename hook to...
9948         (TARGET_MANGLE_TYPE): This.
9949         * target.h (gcc_target): Rename mangle_fundamental_type to
9950         mangle_type.
9951         * doc/tm.texi (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename section to...
9952         (TARGET_MANGLE_TYPE): This. Note slightly different semantics.
9953
9954 2007-07-25  Julian Brown  <julian@codesourcery.com>
9955             Paul Brook  <paul@codesourcery.com>
9956             Joseph Myers  <joseph@codesourcery.com>
9957             Mark Shinwell  <shinwell@codesourcery.com>
9958
9959         * Makefile.in (TEXI_GCC_FILES): Add arm-neon-intrinsics.texi.
9960         * config.gcc (arm*-*-*): Add arm_neon.h to extra headers.
9961         (with_fpu): Allow --with-fpu=neon.
9962         * config/arm/aof.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
9963         * config/arm/aout.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
9964         * config/arm/arm-modes.def (EI, OI, CI, XI): New modes.
9965         * config/arm/arm-protos.h (neon_immediate_valid_for_move)
9966         (neon_immediate_valid_for_logic, neon_output_logic_immediate)
9967         (neon_pairwise_reduce, neon_expand_vector_init, neon_reinterpret)
9968         (neon_emit_pair_result_insn, neon_disambiguate_copy)
9969         (neon_vector_mem_operand, neon_struct_mem_operand, output_move_quad)
9970         (output_move_neon): Add prototypes.
9971         * config/arm/arm.c (FL_NEON): New flag for NEON processor capability.
9972         (all_fpus): Add FPUTYPE_NEON.
9973         (fp_model_for_fpu): Add NEON field.
9974         (arm_return_in_memory): Return vectors <= 16 bytes in ARM registers.
9975         (arm_arg_partial_bytes): Allow NEON vectors to be passed partially
9976         in registers.
9977         (arm_legitimate_address_p): Don't support fancy addressing for NEON
9978         structure moves.
9979         (thumb2_legitimate_address_p): Likewise.
9980         (neon_valid_immediate): Recognize and prepare constants suitable for
9981         NEON instructions.
9982         (neon_immediate_valid_for_move): New function. Recognize and prepare
9983         immediates for NEON move instructions.
9984         (neon_immediate_valid_for_logic): New function. Recognize and
9985         prepare immediates for NEON logic instructions.
9986         (neon_output_logic_immediate): New function. Create asm string
9987         suitable for outputting immediate logic instructions.
9988         (neon_pairwise_reduce): New function. Implement reduction using
9989         pairwise operations.
9990         (neon_expand_vector_init): New function. Expand a (possibly
9991         non-constant) vector initialization.
9992         (neon_vector_mem_operand): New function. Memory operands supported
9993         for quad-word loads/stores to/from ARM or NEON registers. Don't
9994         allow base+offset addressing for core regs.
9995         (neon_struct_mem_operand): New function. Valid mems for NEON
9996         structure moves.
9997         (coproc_secondary_reload_class): Enable NEON registers to be loaded
9998         from neon_vector_mem_operand addresses without a secondary register.
9999         (add_minipool_forward_ref): Handle >8-byte minipool entries.
10000         (add_minipool_backward_ref): Likewise.
10001         (dump_minipool): Likewise.
10002         (push_minipool_fix): Likewise.
10003         (output_move_quad): New function. Output quad-word moves, loads and
10004         stores using ARM registers.
10005         (output_move_vfp): Add support for vectors in VFP (NEON) D
10006         registers.
10007         (output_move_neon): Output a NEON load/store to/from a quadword
10008         register.
10009         (arm_print_operand): Implement new codes:
10010         - 'c' for unadorned integers (without a # sign).
10011         - 'J', 'K' for reg+2/reg+3, reg+3/reg+2 in little/big-endian
10012         mode.
10013         - 'e', 'f' for the low and high D parts of a NEON Q register.
10014         - 'q' outputs a NEON Q register.
10015         - 'h' outputs ranges of D registers for VLDM/VSTM etc.
10016         - 'T' prints NEON opcode features from a coded bitmask.
10017         - 'F' is similar to T, but signed/unsigned codes both print as
10018         'i'.
10019         - 't' is similar to T, but 'u' is printed instead of 'p'.
10020         - 'O' prints 'r' if NEON instruction should perform rounding (as
10021         specified by bitmask), else prints nothing.
10022         - '#' is a punctuation character to stop operand numbers from
10023         running together with following digits in the assembler
10024         strings for instructions (when using mode attributes).
10025         (arm_assemble_integer): Handle extra NEON vector modes. Permute
10026         constant vectors in big-endian mode, where necessary.
10027         (arm_hard_regno_mode_ok): Allow vectors in VFP/NEON registers.
10028         Handle EI, OI, CI, XI modes.
10029         (ashlv4hi3, ashlv2si3, lshrv4hi3, lshrv2si3, ashrv4hi3)
10030         (ashrv2si3): Rename IWMMXT2_BUILTINs to...
10031         (ashlv4hi3_iwmmxt, ashlv2si3_iwmmxt, lshrv4hi3_iwmmxt)
10032         (lshrv2si3_iwmmxt, ashrv4hi3_iwmmxt, ashrv2si3_iwmmxt): New names.
10033         (neon_builtin_type_bits): Add enumeration, one bit for each vector
10034         type.
10035         (v8qi_UP, v4hi_UP, v2si_UP, v2sf_UP, di_UP, v16qi_UP, v8hi_UP)
10036         (v4si_UP, v4sf_UP, v2di_UP, ti_UP, ei_UP, oi_UP, UP): Define macros
10037         to turn v8qi, etc. into bits defined above.
10038         (neon_itype): New enumeration. Classifications of NEON builtins.
10039         (neon_builtin_datum): Define struct. Contains information about
10040         a single builtin (with multiple modes).
10041         (CF): Define helper macro for...
10042         (VAR1...VAR10): Define builtins with a type, name and 1-10 different
10043         modes.
10044         (neon_builtin_data): New array. Define information about builtins
10045         for use during initialization/expansion.
10046         (arm_init_neon_builtins): New function.
10047         (arm_init_builtins): Call arm_init_neon_builtins if TARGET_NEON is
10048         true.
10049         (neon_builtin_compare): New function.
10050         (locate_neon_builtin_icode): New function. Find an insn code for a
10051         builtin given a function code for that builtin. Also return type of
10052         builtin (NEON_BINOP, NEON_UNOP etc.).
10053         (builtin_arg): New enumeration. Types of arguments for builtins.
10054         (arm_expand_neon_args): New function. Expand a generic NEON builtin.
10055         Takes a variable argument list of builtin_arg types, terminated by
10056         NEON_ARG_STOP.
10057         (arm_expand_neon_builtin): New function. Expand a NEON builtin.
10058         (neon_reinterpret): New function. Expand NEON reinterpret intrinsic.
10059         (neon_emit_pair_result_insn): New function. Support returning pairs
10060         of vectors via a pointer.
10061         (neon_disambiguate_copy): New function. Set up operands for a
10062         multi-word copy such that registers do not get clobbered.
10063         (arm_expand_builtin): Call arm_expand_neon_builtin if fcode >=
10064         ARM_BUILTIN_NEON_BASE.
10065         (arm_file_start): Set float-abi attribute for NEON.
10066         (arm_vector_mode_supported_p): Enable NEON vector modes.
10067         (arm_mangle_map_entry): New.
10068         (arm_mangle_map): New.
10069         (arm_mangle_vector_type): New.
10070         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_NEON__
10071         when appropriate.
10072         (TARGET_NEON): New macro. Target supports NEON.
10073         (fputype): Add FPUTYPE_NEON.
10074         (UNITS_PER_SIMD_WORD): Define. Allow quad-word registers to be used
10075         for vectorization based on command-line arg.
10076         (NEON_REGNO_OK_FOR_NREGS): Define.
10077         (VALID_NEON_DREG_MODE, VALID_NEON_QREG_MODE)
10078         (VALID_NEON_STRUCT_MODE): Define.
10079         (PRINT_OPERAND_PUNCT_VALID_P): '#' is valid punctuation.
10080         (arm_builtins): Add ARM_BUILTIN_NEON_BASE.
10081         * config/arm/arm.md (VUNSPEC_POOL_16): Insert constant for unspec.
10082         (consttable_16): Add pattern for outputting 16-byte minipool
10083         entries.
10084         (movv2si, movv4hi, movv8qi): Remove blank expanders (redefined in
10085         vec-common.md).
10086         (vec-common.md, neon.md): Include md files.
10087         * config/arm/arm.opt (mvectorize-with-neon-quad): Add option.
10088         * config/arm/constraints.md (constraint "Dn", "Dl", "DL"): Define.
10089         (memory_constraint "Ut", "Un", "Us"): Define.
10090         * config/arm/iwmmxt.md (VMMX, VSHFT): New mode macros.
10091         (MMX_char): New mode attribute.
10092         (addv8qi3, addv4hi3, addv2si3): Remove. Replace with...
10093         (*add<mode>3_iwmmxt): New insn pattern.
10094         (subv8qi3, subv4hi3, subv2si3): Remove. Replace with...
10095         (*sub<mode>3_iwmmxt): New insn pattern.
10096         (mulv4hi3): Rename to...
10097         (*mulv4hi3_iwmmxt): This.
10098         (smaxv8qi3, smaxv4hi3, smaxv2si3, umaxv8qi3, umaxv4hi3)
10099         (umaxv2si3, sminv8qi3, sminv4hi3, sminv2si3, uminv8qi3)
10100         (uminv4hi3, uminv2si3): Remove. Replace with...
10101         (*smax<mode>3_iwmmxt, *umax<mode>3_iwmmxt, *smin<mode>3_iwmmxt)
10102         (*umin<mode>3_iwmmxt): These.
10103         (ashrv4hi3, ashrv2si3, ashrdi3_iwmmxt): Replace with...
10104         (ashr<mode>3_iwmmxt): This new pattern.
10105         (lshrv4hi3, lshrv2si3, lshrdi3_iwmmxt): Replace with...
10106         (lshr<mode>3_iwmmxt): This new pattern.
10107         (ashlv4hi3, ashlv2si3, ashldi3_iwmmxt): Replace with...
10108         (ashl<mode>3_iwmmxt): This new pattern.
10109         * config/arm/neon-docgen.ml: New file. Generate documentation for
10110         intrinsics.
10111         * config/arm/neon-gen.ml: New file. Generate arm_neon.h header.
10112         * config/arm/arm_neon.h: New (autogenerated).
10113         * config/arm/neon-testgen.ml: New file. Generate NEON tests
10114         automatically.
10115         * config/arm/neon.md: New file. Define NEON instructions.
10116         * config/arm/neon.ml: New file. Abstract description of NEON
10117         instructions, used to generate arm_neon.h header, documentation and
10118         tests.
10119         * config/arm/t-arm (MD_INCLUDES): Add vec-common.md, neon.md.
10120         * vec-common.md: New file. Shared parts for iWMMXt and NEON vector
10121         support.
10122         * doc/extend.texi (ARM Built-in Functions): Rename and remove
10123         extraneous comma.
10124         (ARM NEON Intrinsics): New subsection.
10125         * doc/arm-neon-intrinsics.texi: New (autogenerated).
10126
10127 2007-07-25  Danny Smith   <dannysmith@users.sourceforge.net>
10128
10129         * config/i386/i386-protos.h (i386_pe_asm_file_end): Remove
10130         prototype.
10131
10132 2007-07-24  Jan Hubicka  <jh@suse.cz>
10133
10134         * regclass.c (move_table): New type.
10135         (move_cost, may_move_in_cost, may_move_out_cost): Use it.
10136         (init_move_cost): Break out from ...
10137         (init_reg_sets_1): ... here; simplify computation of
10138         have_regs-of_mode and contains_reg_of_mode.
10139         (record_reg_classes): Unswitch internal loops.
10140         (copy_cost): Trigger lazy initialization of move cost
10141         (record_address_regs): Likewise.
10142
10143 2007-07-24  Daniel Berlin  <dberlin@dberlin.org>
10144
10145         * config/darwin.c (darwin_override_options): Don't force on
10146         flag_var_tracking_uninit when no debug info is requested.
10147
10148 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
10149
10150         * cfgloop.c (init_loops_structure): New function.
10151         (flow_loops_find): Create root of the loop tree unconditionally.
10152
10153 2007-07-24  Daniel Jacobowitz  <dan@codesourcery.com>
10154
10155         * tree-ssa-ccp.c (fold_const_aggregate_ref): Use fold_convert.
10156
10157 2007-07-24  Jan Hubicka  <jh@suse.cz>
10158
10159         * caller-save.c: Include ggc.h, gt-caller-save.h
10160         (reg_save_code, reg_restore_code): Rename to ...
10161         (cached_reg_save_code, cached_reg_restore_code): ... those.
10162         (savepat, restpat, test_reg, test_mem, saveinsn, restinsn): New.
10163         (reg_save_code, reg_restore_code): New functions.
10164         (init_caller_save): Do not intialize
10165         reg_save_code/reg_restore_code tables.
10166         * Makefile.in: (gt-caller-save.h): New.
10167
10168 2007-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
10169
10170         * tree-ssa-ifcombine.c (ifcombine_ifandif): Use a ONE operand
10171         with the mode of the original operand instead of
10172         integer_one_node.
10173
10174 2007-07-23  Jan Hubicka  <jH@suse.cz>
10175
10176         * i386.c (ix86_secondary_memory_needed): Break out to...
10177         (inline_secondary_memory_needed): ... here.
10178         (ix86_memory_move_cost): Break out to ...
10179         (inline_memory_move_cost): ... here; add support for IN value of 2 for
10180         maximum of input and output; fix handling of Q_REGS on 64bit.
10181         (ix86_secondary_memory_needed): Microoptimize.
10182
10183 2007-07-23  Sebastian Pop  <sebpop@gmail.com>
10184
10185         * tree-data-ref.c (find_vertex_for_stmt, create_rdg_edge_for_ddr,
10186         create_rdg_edges_for_scalar, create_rdg_edges, create_rdg_vertices,
10187         stmts_from_loop, known_dependences_p, build_rdg): New.
10188         * tree-data-ref.h: Depends on graphds.h.
10189         (rdg_vertex, RDGV_STMT, rdg_dep_type, rdg_edge, RDGE_TYPE): New.
10190         (build_rdg): Declared.
10191         * Makefile.in (TREE_DATA_REF_H): Depends on graphds.h.
10192
10193 2007-07-23  Daniel Berlin  <dberlin@dberlin.org>
10194
10195         * tree-ssa-propagate.c (valid_gimple_expression_p): Match up with
10196         ccp_min_invariant.
10197
10198 2007-07-23  Peter Bergner  <bergner@vnet.ibm.com>
10199             Jakub Jelinek  <jakub@redhat.com>
10200
10201         PR middle-end/PR28690
10202         * optabs.c (expand_binop): (emit_cmp_and_jump_insns): Allow
10203         EQ compares.
10204         * rtlanal.c (commutative_operand_precedence): Prefer both REG_POINTER
10205         and MEM_POINTER operands over REG and MEM operands.
10206         (swap_commutative_operands_p): Change return value to bool.
10207         * rtl.h: Update the corresponding prototype.
10208         * tree-ssa-address.c (gen_addr_rtx): Use simplify_gen_binary
10209         instead of gen_rtx_PLUS.
10210         * simplify-rtx.c (simplify_plus_minus_op_data_cmp): Change return
10211         value to bool.  Change function arguments to rtx's and update code
10212         to match.
10213         (simplify_plus_minus): Update the simplify_plus_minus_op_data_cmp
10214         calls to match the new declaration.
10215         * simplify-rtx.c (simplify_associative_operation): Don't
10216         reorder simplify_binary_operation arguments.
10217
10218 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
10219
10220         * config/mips/mips.c (override_options): Use mips_costs to derive
10221         the default branch cost.
10222         * config/mips/mips.h (BRANCH_COST): Use mips_branch_cost rather
10223         than mips_costs.
10224         * config/mips/mips.opt (mbranch-cost=): New option.
10225         * doc/invoke.texi (-mbranch-cost): Document new MIPS option.
10226
10227 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
10228
10229         * config/mips/mips.h (GR_REG_CLASS_P, COP_REG_CLASS_P): Delete.
10230         (SECONDARY_MEMORY_NEEDED): Delete commented-out definition.
10231         * config/mips/mips.c (mips_register_move_cost): Use reg_class_subset_p
10232         instead of GR_REG_CLASS_P and COP_REG_CLASS_P.
10233
10234 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
10235
10236         * config/mips/constraints.md (ks): New constraint.
10237         * config/mips/mips.md (*add<mode>3_sp1, *add<mode>3_sp2): Fold into...
10238         (*add<mode>3_mips16): ...here.
10239
10240 2007-07-21  Uros Bizjak  <ubizjak@gmail.com>
10241
10242         * optabs.h (enum optab_index): Add new OTI_signbit.
10243         (signbit_optab): Define corresponding macro.
10244         (enum insn_code signbit_optab[]): Remove array.
10245         * optabs.c (init_optabs): Initialize signbit_optab using init_optab.
10246         (expand_copysign_absneg): If back end provides signbit insn, use it
10247         instead of bit operations on floating point argument.
10248         * builtins.c (enum insn_code signbit_optab[]): Remove array.
10249         (expand_builtin_signbit): Check signbit_optab->handlers[].insn_code
10250         for availability of signbit insn.
10251
10252         * config/i386/i386.md (signbit<mode>2): New insn pattern to implement
10253         signbitf, signbit and signbitl built-ins as inline x87 intrinsics when
10254         SSE mode is not active.
10255         (isinf<mode>2): Disable for mfpmath=sse,387.
10256
10257 2007-07-22  Ben Elliston  <bje@au.ibm.com>
10258
10259         * regclass.c (invalid_mode_change_p): Attach ATTRIBUTE_UNUSED to
10260         `class' parameter.
10261         * struct-equiv.c (note_local_live): Likewise for `y_regno'.
10262
10263 2007-07-20  Richard Guenther  <rguenther@suse.de>
10264
10265         * tree-cfg.c (verify_expr): COND_EXPRs can have any
10266         integral typed condition.
10267         * tree-ssa.c (useless_type_conversion_p): Do not preserve
10268         booleanness.  Only preserve conversions from a non-base
10269         type to a base type, not in general between types with
10270         different TYPE_MIN_VALUE or TYPE_MAX_VALUE.
10271         * tree.def (COND_EXPR): Document that the condition
10272         can be of any integral type.
10273
10274 2007-07-20  Nigel Stephens  <nigel@mips.com>
10275             Richard Sandiford  <richard@codesourcery.com>
10276
10277         * config/mips/mips.h (mips_dwarf_regno): Declare.
10278         (DBX_REGISTER_NUMBER): Remove redundant brackets.
10279         (HI_REGNUM, LO_REGNUM): Define in an endian-dependent way.
10280         (AC1HI_REGNUM, AC1LO_REGNUM, AC2HI_REGNUM, AC2LO_REGNUM)
10281         (AC3HI_REGNUM, AC3LO_REGNUM, ACC_HI_REG_P): Delete.
10282         (reg_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
10283         (REG_CLASS_NAMES): Update accordingly.
10284         * config/mips/mips.c (mips_dwarf_regno): New array.
10285         (mips_regno_to_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
10286         (mips_subword): Remove special handling for accumulator registers.
10287         (override_options): Initiailize mips_dwarf_regno.  Remove use
10288         of ACC_HI_REG_P.
10289         (mips_swap_registers): New function.
10290         (mips_conditional_register_usage): Swap accumulator registers
10291         around if TARGET_LITTLE_ENDIAN.
10292         (mips_cannot_change_mode_class): Remove special treatment of ACC_REGS.
10293         * config/mips/constraints.md (h, l): Use the endianness to choose
10294         between MD0_REG and MD1_REG.
10295         * config/mips/mips.md (*mfhilo_<mode>_macc): Use a fixed-string,
10296         alternative-dependent template.
10297
10298 2007-07-20  Richard Sandiford  <richard@codesourcery.com>
10299
10300         * config/arm/arm.md (movsi): Use can_create_pseudo_p instead of
10301         no_new_pseudos.
10302
10303 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
10304
10305         * function.c (thread_prologue_and_epilogue_insns): Fix exit
10306         predecessor fallthru flags.
10307
10308 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
10309
10310         * tree-ssa-loop-niter.c (assert_loop_rolls_lt): Convert the operands
10311         of compare to the same type.
10312         * cfgloopmanip.c (add_loop): Update information about loop exits.
10313         (loop_version): Remove the innermost loop requirement.
10314         * tree-ssa-loop-manip.c (determine_exit_conditions): Convert bounds
10315         to sizetype for pointers.
10316
10317 2007-07-18  H.J. Lu  <hongjiu.lu@intel.com>
10318
10319         * Makefile.in (D32PBIT_FUNCS): Add _sd_to_tf and _tf_to_sd.
10320         (D64PBIT_FUNCS): Add _dd_to_tf and _tf_to_dd.
10321         (D128PBIT_FUNCS): Add _td_to_tf and _tf_to_td.
10322
10323         * config/dfp-bit.c: Empty for TFmode conversions.
10324
10325 2007-07-18  Caroline Tice  <ctice@apple.com>
10326         
10327         * var-tracking.c (find_src_status): Check for  COND_EXEC insns
10328         and handle them correctly; check that src is not NULL before
10329         trying to use it.
10330         (find_src_set_src): Likewise.
10331         
10332 2007-07-18  Bob Wilson  <bob.wilson@acm.org>
10333         
10334         * config/xtensa/xtensa.c (xtensa_expand_mask_and_shift): New.
10335         (struct alignment_context, init_alignment_context): New.
10336         (xtensa_expand_compare_and_swap, xtensa_expand_atomic): New.
10337         * config/xtensa/xtensa.h (XCHAL_HAVE_RELEASE_SYNC): Add default.
10338         (XCHAL_HAVE_S32C1I): Likewise.
10339         (TARGET_RELEASE_SYNC, TARGET_S32C1I): New.
10340         * config/xtensa/xtensa.md (UNSPECV_MEMW): New constant.
10341         (UNSPECV_S32RI, UNSPECV_S32C1I): Likewise.
10342         (ATOMIC, HQI): New macros.
10343         (memory_barrier, *memory_barrier): New.
10344         (sync_lock_releasesi): New.
10345         (sync_compare_and_swapsi, sync_compare_and_swap<mode>): New.
10346         (sync_lock_test_and_set<mode>): New.
10347         (sync_<atomic><mode>): New.
10348         (sync_old_<atomic><mode>, sync_new_<atomic><mode>): New.
10349         * config/xtensa/xtensa-protos.h (xtensa_expand_compare_and_swap): New.
10350         (xtensa_expand_atomic): New.
10351         
10352 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10353
10354         PR target/30652
10355
10356         * builtins.c (expand_builtin_interclass_mathfn): Provide a generic
10357         transformation for builtin ISNORMAL.
10358         (expand_builtin): Handle BUILT_IN_ISNORMAL.
10359         * builtins.def (BUILT_IN_ISNORMAL): New.
10360         * doc/extend.texi: Document isnormal.
10361
10362 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10363
10364         PR target/30652
10365
10366         * builtins.c (expand_builtin_interclass_mathfn): Allow for missing
10367         optabs infrastructure.  Provide generic implementation for
10368         FINITE/ISFINITE.
10369         (expand_builtin): Handle FINITE/ISFINITE.
10370         (fold_builtin_classify): Make ISFINITE canonical instead of FINITE.
10371         (fold_builtin_1): Likewise.
10372
10373         * builtins.def (BUILT_IN_ISFINITE): New.
10374
10375         * doc/extend.texi: Document isfinite.
10376
10377 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10378
10379         PR target/30652
10380         PR middle-end/20558
10381
10382         * builtins.c (expand_builtin_interclass_mathfn): Provide a
10383         generic fallback for isinf.
10384         * c-cppbuiltin.c (builtin_define_float_constants): Move FP max
10385         calculation code ...
10386         * real.c (get_max_float): ... to here.
10387         * real.h (get_max_float): New.
10388
10389 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10390
10391         PR middle-end/32668
10392
10393         * builtin-attrs.def (ATTR_TYPEGENERIC,
10394         ATTR_CONST_NOTHROW_TYPEGENERIC): New.
10395
10396         * builtins.def (BUILT_IN_ISINF, BUILT_IN_ISNAN,
10397         BUILT_IN_ISGREATER, BUILT_IN_ISGREATEREQUAL, BUILT_IN_ISLESS,
10398         BUILT_IN_ISLESSEQUAL, BUILT_IN_ISLESSGREATER,
10399         BUILT_IN_ISUNORDERED): Use ATTR_CONST_NOTHROW_TYPEGENERIC.
10400
10401         * c-common.c (handle_type_generic_attribute): New.
10402         (c_common_attribute_table): Add "type generic".
10403
10404         * c-typeck.c (convert_arguments): Handle "type generic" functions.
10405
10406 2007-07-18  Daniel Berlin  <dberlin@dberlin.org>
10407
10408         * tree-ssa-sccvn.c (try_to_simplify): Use valid_gimple_expression
10409         * tree-ssa-propagate (valid_gimple_expression): Handle ADDR_EXPR
10410         properly.
10411
10412 2007-07-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
10413
10414         PR target/32808
10415         * config/cris/cris.c (cris_print_index): Don't use XEXP before
10416         checking that the operand is an expression.
10417
10418 2007-07-19  Christoph von Wittich  <Christoph_vW@reactos.org>
10419             Danny Smith  <dannysmith@users.sourceforge.net>
10420
10421         PR/other 30335
10422         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Put
10423         file mapping object in local namespace if Windows version later
10424         than NT4
10425
10426 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
10427
10428         * config/arm/arm-protos.h (arm_cannot_force_const_mem): Declare.
10429         * config/arm/arm.c (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to
10430         arm_cannot_force_const_mem.
10431         (arm_cannot_force_const_mem): New function.
10432         * config/arm/arm.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): New macro.
10433         (LEGITIMATE_CONSTANT_P): Test arm_cannot_force_const_mem instead
10434         of arm_tls_referenced_p.
10435         * config/arm/arm.md (movsi): Split out-of-section constants when
10436         ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P.
10437         * config/arm/vxworks.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
10438
10439 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
10440
10441         * config/mips/mips.md (clear_cache): Treat the size argument as Pmode.
10442
10443 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
10444
10445         * config/mips/mips.md (*extendqihi2): Convert the destination
10446         to SImode.
10447
10448 2007-07-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10449
10450         * config/pa/fptr.c: Update license header.
10451         * config/pa/milli64.S: Likewise.
10452
10453 2007-07-17  Nick Clifton  <nickc@redhat.com>
10454
10455         * COPYING_v3: New file.  Contains version 3 of the GNU General
10456         Public License.
10457         * COPYING.LIB_v3: New file.  Contains version 3 of the GNU
10458         Lesser General Public License.
10459         * doc/include/gpl_v3.texi: New file.  Contains version 3 of
10460         the GNU General Public License.
10461
10462 2007-07-17  Zdenek Dvorak  <dvorakz@suse.cz>
10463
10464         PR rtl-optimization/32773
10465         * cfglayout.c (force_one_exit_fallthru): New function.
10466         (cfg_layout_finalize): Use it.
10467
10468 2007-07-16  Richard Guenther  <rguenther@suse.de>
10469             Uros Bizjak  <ubizjak@gmail.com>
10470
10471         * tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond"
10472         before forcing it to gimple operand.
10473
10474 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
10475             David Ung  <davidu@mips.com>
10476
10477         * config/mips/mips.h (TUNE_24K): Define.
10478         (TUNE_MACC_CHAINS): Add TUNE_24K.
10479         * config/mips/mips.md: (*mul_acc_si, *mul_sub_si): Change type to
10480         imadd.
10481         * config/mips/74k.md (r74k_int_mult): Split madd/msub to ..
10482         (r74k_int_madd): .. this new reservation.
10483         (define_bypass): Fixed bypasses for r74k_int_madd to use
10484         mips_linked_madd_p.
10485         * config/mips/24k.md (define_bypass): Define new
10486         r24k_int_mul3->r24k_int_madd bypass using mips_linked_madd_p.
10487
10488 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
10489             Nigel Stephens  <nigel@mips.com>
10490
10491         * config/mips/mips.md: Include 20kc.md.
10492         * config/mips/20kc.md: New file.
10493         * config/mips/mips.c (mips_rtx_cost_data): Fill in 20Kc costs.
10494         (mips_adjust_cost): Tweak for 20Kc.
10495         (mips_issue_rate): Likewise.
10496         * config/mips/mips.h (TUNE_20KC): Define.
10497
10498 2007-07-16  David Edelsohn  <edelsohn@gnu.og>
10499
10500         * config/rs6000/rs6000.c (struct processor_cost): Add
10501         cache_line_size, l1_cache_lines, and simultaneous_prefetches
10502         fields.
10503         (*_cost): Add cache information.
10504         (rs6000_override_options): Set cache parameters.
10505
10506 2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
10507
10508         PR bootstrap/3456
10509         * config.gcc (mips-sgi-irix[56]*): Enable pthread support.
10510         * doc/install.texi (mips-sgi-irix6): pthread support works now.
10511
10512 2007-07-16  Paul Brook  <paul@codesourcery.com>
10513
10514         PR target/32753
10515         * config/arm/cirrus.md (cirrus_arm_movsi_insn): Remove dead insn.
10516         (cirrus_thumb2_movsi_insn): Ditto.
10517
10518 2007-07-15  Geoffrey Keating  <geoffk@apple.com>
10519
10520         * config/rs6000/darwin-fallback.c (interpret_libc): Change
10521         CR2_REGNO to R_CR2.
10522
10523 2007-07-15  Andrew Haley  <aph@redhat.com>
10524
10525         * unwind-sjlj.c (_Unwind_GetIPInfo): Check for context->fc != NULL
10526         before looking in the context.
10527
10528 2007-07-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10529
10530         PR middle-end/32398
10531         PR middle-end/32769
10532         * pa-protos.h (pa_eh_return_handler_rtx): Declare.
10533         * pa.c (pa_extra_live_on_entry, rp_saved): Declare.
10534         (TARGET_EXTRA_LIVE_ON_ENTRY): Define.
10535         (pa_output_function_prologue): Use rp_saved and
10536         current_function_is_leaf to generate .CALLINFO statement.
10537         (hppa_expand_prologue): Set rp_saved.
10538         (hppa_expand_epilogue): Use rp_saved.
10539         (pa_extra_live_on_entry, pa_eh_return_handler_rtx): New functions.
10540         * pa.h (EH_RETURN_HANDLER_RTX): Use pa_eh_return_handler_rtx.
10541
10542 2007-07-14  Dirk Mueller  <dmueller@suse.de>
10543
10544         * omega.c (coalesce): Fix memory leak on early exit.
10545         * matrix-reorg.c (check_allocation_function): Likewise.
10546         * tree-vect-transform.c (vect_get_new_vect_var): free result
10547         of concat().
10548         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
10549         pass pointer to edge vector
10550         (partition_hot_cold_basic_blocks): Fix memory leak.
10551         * collect2.c (prefix_from_string): Free temporary storage.
10552         * reload1.c (fixup_abnormal_edges): Free sbitmap.
10553
10554 2007-07-14  Kaz Kojima  <kkojima@gcc.gnu.org>
10555
10556         * config/sh/sh.h (DO_GLOBAL_CTORS_BODY): Add void to prototype.
10557         (DO_GLOBAL_DTORS_BODY): Likewise.
10558
10559 2007-07-14  Sandra Loosemore  <sandra@codesourcery.com>
10560             Nigel Stephens  <nigel@mips.com>
10561
10562         * config/mips/mips.c (mips_classify_symbol): Don't return
10563         SYMBOL_SMALL_DATA for constant pool addresses if
10564         TARGET_EMBEDDED_DATA is true.
10565
10566 2007-07-14  Uros Bizjak  <ubizjak@gmail.com>
10567
10568         * config/i386/i386.c (init_mmx_sse_builtins): Define all builtins
10569         except __builtin_ia32_emms, __builtin_ia32_ldmxcsr,
10570         __builtin_ia32_stmxcsr, __builtin_ia32_maskmovq, __builtin_ia32_loadups,
10571         __builtin_ia32_storeups, __builtin_ia32_loadhps, __builtin_ia32_loadlps,
10572         __builtin_ia32_storehps, __builtin_ia32_storelps,
10573         __builtin_ia32_movntps, __builtin_ia32_movntq, __builtin_ia32_sfence,
10574         __builtin_ia32_femms, __builtin_ia32_maskmovdqu, __builtin_ia32_loadupd,
10575         __builtin_ia32_storeupd, __builtin_ia32_loadhpd, __builtin_ia32_loadlpd,
10576         __builtin_ia32_movnti, __builtin_ia32_movntpd, __builtin_ia32_movntdq,
10577         __builtin_ia32_clflush, __builtin_ia32_lfence, __builtin_ia32_mfence,
10578         __builtin_ia32_loaddqu, __builtin_ia32_storedqu, __builtin_ia32_monitor,
10579         __builtin_ia32_mwait, __builtin_ia32_lddqu, __builtin_ia32_movntdqa,
10580         __builtin_ia32_movntsd and __builtin_ia32_movntss as const builtins
10581         using def_builtin_const.
10582
10583 2007-07-14  Eric Botcazou  <ebotcazou@adacore.com>
10584
10585         PR tree-optimization/32705
10586         * tree-ssa-sccvn.c (set_ssa_val_to): Accept VN_TOP as value number.
10587         (simplify_binary_expression): Use SSA_VAL consistently.
10588
10589 2007-07-13  David Edelsohn  <edelsohn@gnu.org>
10590
10591         * config/rs6000/spe.md (SPE_ACC_REGNO): Delete definition.
10592         (SPEFSCR_REGNO): Delete definition.
10593         * config/rs6000/rs6000.c: LINK_REGISTER_REGNUM -> LR_REGNO.
10594         COUNT_REGISTER_REGNUM -> CTR_REGNO.
10595         * config/rs6000/rs6000.h: Do not define *_REGNO.
10596         LINK_REGISTER_REGNUM -> LR_REGNO.
10597         COUNT_REGISTER_REGNUM -> CTR_REGNO.
10598         * config/rs6000/predicates.md: LINK_REGISTER_REGNUM ->  LR_REGNO.
10599         COUNT_REGISTER_REGNUM -> CTR_REGNO.
10600         * config/rs6000/linux-unwind.h: Define R_LR, R_CR2, R_VR0,
10601         R_VRSAVE, R_VSCR. Use them.
10602         * config/rs6000/darwin-fallback.c: Define R_LR, R_CTR, R_CR2,
10603         R_XER, R_VR0, R_VRSAVE, R_VSCR, R_SPEFSCR.  Use them.
10604         * config/rs6000/rs6000.md: Define REGNO constants.  Use them.
10605         * config/rs6000/aix.h: Define R_LR.  Use it.
10606         
10607 2007-07-13  Caroline Tice  <ctice@apple.com>
10608         
10609         * toplev.c (process_options): Turn flag_var_tracking_uninit off when
10610         flag_var_tracking is explicitly turned off (i.e. when variable
10611         tracking is not feasible); otherwise, turn flag_var_tracking on when
10612         flag_var_tracking_uninit is on.
10613         * rtl.def (VAR_LOCATION): Add a new integer subfield to VAR_LOCATION
10614         note definitions, to allow recording of initialization status in the
10615         notes.
10616         * dwarf2out.c (dwarf_stack_op_name): Add case for DW_OP_GNU_uninit.
10617         (add_var_loc_to_decl): Add comparison of NOTE_VAR_LOCATION_STATUS to
10618         determine if two note locations are equal.
10619         (output_loc_list): Don't output list entries whose start & end labels
10620         are the same.
10621         (reg_loc_descriptor): Add parameter for initialization status; pass it
10622         to other loc descriptor functions.
10623         (one_reg_loc_descriptor): Add parameter for initialization status;
10624         check its value and add DW_OP_GNU_uninit to returned loc descr if
10625         appropriate.
10626         (multiple_reg_loc_descriptor): Add parameter for initialization
10627         status;
10628         pass init status argument to other loc descriptor functions; check
10629         value of intialization parameter and add DW_OP_GNU_uninit to returned
10630         loc descr if appropriate.
10631         (based_loc_descr): Add parameter for initialization status; add new
10632         variable for return value; check value of initialization parameter and
10633         add DW_OP_GNU_uninit to returned loc descr if appropriate.
10634         (concatn_mem_loc_descriptor): Add parameter for initialization status;
10635         pass init status argument to other loc descriptor functions; check
10636         value of intialization parameter and add DW_OP_GNU_uninit to returned
10637         loc descr if appropriate.
10638         (mem_loc_descriptor): Likewise.
10639         (concat_loc_descriptor): Likewise.
10640         (concatn_loc_descriptor): Likewise.
10641         (loc_descriptor): Add parameter for initialization status; pass it as
10642         argument to other loc descriptor function calls.
10643         (loc_descriptor_from_tree_1): Add appropriate initialization status
10644         to loc descriptor function calls.
10645         (add_location_or_const_value_attribute): Get initialization status
10646         from VAR_LOCATION note; add initialization status to loc descriptor
10647         function calls.
10648         * dwarf2.h (enum dwarf_location_atom): New op, DW_OP_GNU_uninit.
10649         * print-rtl.c (print_rtx): When printing a VAR_LOCATION note, if
10650         status is uninitialized, add "[uninint]" to output.
10651         * common.opt (fvar-tracking-uninit): New option, similar to
10652         fvar-tracking, to turn on tracking of uninitialized variables; creates
10653         a new global flag, flag_var_tracking_uninit.
10654         * rtl.h (NOTE_VAR_LOCATION_STATUS): New macro for accessing new field.
10655         (enum var_init_status): New type, for var initialization status field.
10656         * var-tracking.c (struct location_chain_def): Two new fields, init,
10657         for initialization status, and set_src for the assignment value expr.
10658         (unshare_variable): New parameter for initialization status;
10659         initialize new init and set_src fields.
10660         (var_reg_set): New parameters for initialization status and value;
10661         pass them to set_variable_part.
10662         (var_mem_set): Likewise.
10663         (get_init_value): New function.
10664         (var_reg_delete_and_set): New initialization status & value
10665         parameters; add call to get_init_value if status is unknown; pass new
10666         parameters to clobber_variable_part and var_reg_set.
10667         (var_mem_delete_and_set): Likewise.
10668         (var_reg_delete): Pass null set_src value to clobber_variable_part.
10669         (var_mem_delete): Likewise.
10670         (variable_union): Pass status to unshare_variable; initialize new init
10671         and set_src fields. If flag_var_tracking_uninit is not set, force
10672         status to initialized.
10673         (add_stores): Store insn, rather than NEXT_INSN(insn), so it can be
10674         used later to get the set_src value.
10675         (find_src_status): New function.
10676         (find_src_set_src): New function.
10677         (compute_bb_dataflow): Pass init status to calls to var_reg_set,
10678         var_mem_set, var_reg_delete_and_set and var_mem_delete_and_set; for
10679         MO_SET, get set_src value and pass it to var_reg_delete_and_set
10680         and var_mem_delete_and_set.
10681         (dump_variable): Print out "[uninit]" if appropriate.
10682         (set_variable_part): Add new initialization and set_src parameters;
10683         pass status to unshare_variable; set node->init and node- >set_src
10684         fields and modify slot in hash table appropriately; save the init and
10685         set_src values if appropriate and assign to the new node.
10686         (clobber_variable_part): New set_src parameter; if two nodes have
10687         same variable and same location but different set_src (assignment)
10688         values, clobber old node.
10689         (delete_variable_part): Pass init status to unshare_variable.
10690         (emit_note_insn_var_location): Add initialized var; assign var's init
10691         status to new 'initialized'; pass new init status field to calls to
10692         gen_rtx_VAR_LOCATION. If flag_var_tracking_uninit is not set, force
10693         status to initialized.
10694         (emit_notes_in_bb): Pass initialization status to calls to
10695         var_reg_set, var_mem_set, var_reg_delete_and_set and
10696         var_mem_delete_and_set; for MO_SET, get set_src value and pass it to
10697         var_reg_delete_and_set and var_mem_delete_and_set; call
10698         emit_notes_for_changes on NEXT_INSN(insn) rather than on insn, to
10699         make up for change in add_stores.
10700         (vt_add_function_parameters): Add status to calls to
10701         set_variable_part.
10702         * config/darwin.c (darwin_override_options): Turn on uninitialized
10703         tracking automatically, if var_tracking is on and the system is
10704         10.5 or higher.
10705         
10706 2007-07-13  Sa Liu  <saliu@de.ibm.com>
10707
10708         * config.gcc: Add options for arch and tune on SPU.
10709         * config/spu/predicates.md: Add constant operands 0 and 1.
10710         * config/spu/spu-builtins.def: Add builtins for double precision 
10711         floating point comparison: si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, 
10712         si_dftsv, spu_cmpeq_13, spu_cmpabseq_1, spu_cmpgt_13, spu_cmpabsgt_1,
10713         spu_testsv.
10714         * config/spu/spu-c.c: Define __SPU_EDP__ when builtins invoked with 
10715         a CELLEDP target.
10716         * config/spu/spu-protos.h: Add new function prototypes. 
10717         * config/spu/spu.c (spu_override_options): Check options -march and
10718         -mtune.
10719         (spu_comp_icode): Add comparison code for DFmode and vector mode.
10720         (spu_emit_branch_or_set): Use the new code for DFmode and vector 
10721         mode comparison.
10722         (spu_const_from_int): New.  Create a vector constant from 4 ints.
10723         (get_vec_cmp_insn): New.  Get insn index of vector compare instruction.
10724         (spu_emit_vector_compare): New.  Emit vector compare.
10725         (spu_emit_vector_cond_expr): New.  Emit vector conditional expression.
10726         * config/spu/spu.h: Add options -march and -mtune.  Define processor
10727         types PROCESSOR_CELL and PROCESSOR_CELLEDP.  Define macro
10728         CANONICALIZE_COMPARISON.
10729         * config/spu/spu.md: Add new insns for double precision compare
10730         and double precision vector compare.  Add vcond and smax/smin patterns
10731         to enable DFmode vector conditional expression.
10732         * config/spu/spu.opt: Add options -march and -mtune.
10733         * config/spu/spu_internals.h: Add builtins for CELLEDP target:
10734         si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, si_dftsv.  Add builtin for
10735         both CELL and CELLEDP targets: spu_testsv.
10736         * config/spu/spu_intrinsics.h: Add flag mnemonics for test special 
10737         values.
10738
10739 2007-07-13  Richard Guenther  <rguenther@suse.de>
10740
10741         PR tree-optimization/32721
10742         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Preserve
10743         TREE_THIS_VOLATILE on the folded reference.
10744         * tree-ssa-operands.c (get_expr_operands): Set has_volatile_ops
10745         if the array reference has TREE_THIS_VOLATILE set.
10746
10747 2007-07-13  H.J. Lu  <hongjiu.lu@intel.com>
10748
10749         PR other/32188
10750         * doc/libgcc.texi: Update DFP intrinsics for DPD and BID.
10751
10752 2007-07-13  Andreas Schwab  <schwab@suse.de>
10753
10754         * gengtype-lex.l: Allow declarations to be indented.
10755
10756 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
10757
10758         * ginclude/tgmath.h: New.
10759         * config.gcc: Use GCC's tgmath.h on non-glibc systems.
10760         * doc/sourcebuild.texi (Headers): Document use_gcc_tgmath.
10761         * configure.ac (STMP_FIXPROTO): Honor use_gcc_tgmath.
10762         * configure: Regenerate.
10763
10764 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
10765
10766         * config/sh/linux-unwind.h (sh_fallback_frame_state): Use
10767         correct index when setting register save state for xd
10768         registers.
10769
10770 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
10771
10772         * config/sh/sh.c (mark_use): Remove.
10773
10774 2007-07-12  Paul Brook  <paul@codesourcery.com>
10775
10776         * config/arm/arm.c (thumb1_compute_save_reg_mask): Make sure scratch
10777         reg does not overlap return value.
10778
10779 2007-07-12  Daniel Berlin  <dberlin@dberlin.org>
10780
10781         * tree-ssa-pre.c (get_expression_vuses): Move out side-effect.
10782         (set_expression_vuses): Ditto.
10783         (init_pre): Initialize expression_vuses.
10784
10785 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
10786
10787         * config/i386/sse.md (storentdf, storentsf): New.
10788
10789 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
10790
10791         * builtins.c (get_pointer_alignment): Honor DECL_ALIGN on a
10792         FUNCTION_DECL.
10793         * tree.c (build_decl_stat): Move code from here...
10794         (make_node_stat): ... to here.  Don't uselessly clear DECL_USER_ALIGN.
10795         (expr_align): Honor DECL_ALIGN on a FUNCTION_DECL.  Add comment
10796         about using DECL_ALIGN of LABEL_DECL and CONST_DECL.
10797         * tree.h (DECL_USER_ALIGN): Fix misplaced comment.
10798         * varasm.c (assemble_start_function): Use DECL_ALIGN instead of
10799         FUNCTION_BOUNDARY.
10800
10801 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
10802             Devang Patel  <dpatel@apple.com>
10803
10804         PR tree-optimization/25413
10805         * targhooks.c (default_builtin_vector_alignment_reachable): New.
10806         * targhooks.h (default_builtin_vector_alignment_reachable): New.
10807         * tree.h (contains_packed_reference): New.
10808         * expr.c (contains_packed_reference): New.
10809         * tree-vect-analyze.c (vector_alignment_reachable_p): New.
10810         (vect_enhance_data_refs_alignment): Call
10811         vector_alignment_reachable_p.
10812         * target.h (vector_alignment_reachable): New builtin.
10813         * target-def.h (TARGET_VECTOR_ALIGNMENT_REACHABLE): New.
10814         * config/rs6000/rs6000.c (rs6000_vector_alignment_reachable): New.
10815         (TARGET_VECTOR_ALIGNMENT_REACHABLE): Define.
10816
10817 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
10818
10819         * target.h (builtin_vectorization_cost): Add new target builtin.
10820         * target-def.h (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): New.
10821         * tree-vectorizer.h (TARG_SCALAR_STMT_COST): New.
10822         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST): New.
10823         * tree-vect-analyze.c (vect_analyze_slp_instance): Initisliaze
10824         uninitialized variables.
10825         * tree-vect-transform.c (cost_for_stmt): New function.
10826         (vect_estimate_min_profitable_iters): Call cost_for_stmt instead of
10827         using cost 1 for all scalar stmts. Be less conservative when
10828         estimating the number of prologue/epulogue iterations. Call
10829         targetm.vectorize.builtin_vectorization_cost. Return
10830         min_profitable_iters-1.
10831         (vect_model_reduction_cost): Use TARG_SCALAR_TO_VEC_COST for
10832         initialization cost instead of TARG_VEC_STMT_COST. Use
10833         TARG_VEC_TO_SCALAR_COST instead of TARG_VEC_STMT_COST for reduction
10834         epilogue code. Fix epilogue cost computation.
10835         * config/spu/spu.c (spu_builtin_vectorization_cost): New.
10836         (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): Implement.
10837         * config/spu/spu.h (TARG_COND_BRANCH_COST, TARG_SCALAR_STMT_COST):
10838         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST, TARG_VEC_STMT_COST):
10839         (TARG_VEC_TO_SCALAR_COST, TARG_SCALAR_TO_VEC, TARG_VEC_LOAD_COST):
10840         (TARG_VEC_UNALIGNED_LOAD_COST, TARG_VEC_STORE_COST): Define.
10841
10842 2007-07-12  Richard Guenther  <rguenther@suse.de>
10843
10844         * gimplify.c (gimplify_conversion): Make sure that the result
10845         from maybe_fold_offset_to_reference is trivially convertible
10846         to the desired type before doing the simplification.
10847         (gimplify_expr): Likewise.
10848         * fold-const.c (fold_binary): Use the correct types for
10849         building the simplified expression.
10850
10851 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
10852
10853         PR rtl-optimization/32729
10854         * cfghooks.c (can_duplicate_block_p): Do not forbid duplicating blocks
10855         that fallthru to exit.
10856
10857 2007-07-12  Kaz Kojima  <kkojima@gcc.gnu.org>
10858
10859         * config/sh/sh.md (symGOTOFF2reg): Add missing parenthesis.
10860         (symDTPOFF2reg): Likewise.
10861
10862 2007-07-11  Daniel Berlin  <dberlin@dberlin.org>
10863
10864         PR tree-optimization/32663
10865         
10866         * tree.h (VALUE_HANDLE_VUSES): Remove.
10867         (struct tree_value_handle): Remove vuses.
10868
10869         * tree-vn.c (create_value_handle_for_expr): Don't set
10870         VALUE_HANDLE_VUSES. 
10871
10872         * tree-ssa-pre.c (expression_vuses): New.
10873         (alloc_expression_id): Set up expression_vuses.
10874         (get_expression_vuses): New.
10875         (set_expression_vuses): Ditto.
10876         (clear_expression_ids): Modify for expression_vuses.
10877         (phi_translate_1): Ditto.
10878         (phi_translate_set): Ditto.
10879         (value_dies_in_block_x): Ditto
10880         (valid_in_sets): Ditto.
10881         (add_to_sets): Ditto.
10882         (find_existing_value_expr): Ditto.
10883         (create_value_handle_for_expr): Ditto.
10884         (make_values_for_stmt): Ditto.
10885         (vuse_equiv): Remove.
10886
10887 2007-07-11  Alexandre Oliva  <aoliva@redhat.com>
10888
10889         * Makefile.in (mostlyclean): Remove object files.
10890
10891 2007-07-11  Kenneth Zadeck <zadeck@naturalbridge.com>
10892
10893         * toplev.c (no_new_pseudos): Deleted.
10894         * rtl.h (no_new_pseudos): Deleted.
10895         * tree-pass.h (pass_no_new_pseudos): Deleted. 
10896         * passes.c (pass_no_new_pseudos): Deleted.
10897         * final.c (rest_of_clean_state): Removed no_new_pseudos.
10898         (rest_of_no_new_pseudos, pass_no_new_pseudos): Deleted.
10899         * struct-equiv.c (rtx_equiv_p): Replaced no_new_pseudos with 
10900         reload_completed.
10901         * cfgcleanup.c (try_crossjump_to_edge): Ditto. 
10902         * rtlhooks.c (gen_lowpart_general): Ditto.
10903         * optabs.c (prepare_operand): Ditto.
10904         * mode-switching.c (rest_of_handle_mode_switching): Deleted set of
10905         no_new_pseudos.
10906         * modulo-sched.c (rest_of_handle_sms): Ditto.
10907         * see.c (rest_of_handle_see): Ditto.
10908         * ifcvt.c (if_convert): Ditto.
10909         (gate_handle_if_after_combine): Replaced no_new_pseudos with 
10910         reload_completed.
10911         * init-regs.c (gate_initialize_regs): Deleted set of
10912         no_new_pseudos.
10913         * lower-subreg.c (decompose_multiword_subregs): Ditto. 
10914         * bb-reorder.c (rest_of_handle_partition_blocks): Ditto.
10915         * doc/md.texi: Changed no_new_pseudos to can_create_pseudo_p.
10916         
10917 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
10918
10919         PR target/32661
10920         * config/i386/sse.md (*sse2_storeq_rex64): Handle 64bit mem->reg moves.
10921         (*vec_extractv2di_1_sse2): Disable for TARGET_64BIT.
10922         (*vec_extractv2di_1_rex64): New insn pattern.
10923
10924 2007-07-11  David Daney  <ddaney@avtrex.com>
10925
10926         * config/mips/linux-unwind.h (mips_fallback_frame_state): Rewrite
10927         return address calculation.  Substitute DWARF_ALT_FRAME_RETURN_COLUMN
10928         for SIGNAL_UNWIND_RETURN_COLUMN.
10929         * config/mips/mips.h (SIGNAL_UNWIND_RETURN_COLUMN): Remove.
10930         (DWARF_FRAME_REGNUM): Rewrite.
10931         (DWARF_ALT_FRAME_RETURN_COLUMN) Define.
10932
10933 2007-07-11  Nick Clifton  <nickc@redhat.com>
10934
10935         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Revert previous
10936         delta and use gen_int_mode in place of GET_INT instead.
10937
10938 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
10939
10940         * reg-stack.c (struct tree_opt_pass pass_stack_regs): Nullify name
10941         and letter field.
10942
10943 2007-07-11  Douglas Gregor  <doug.gregor@gmail.com>
10944
10945         * params.def (PARAM_VERIFY_CANONICAL_TYPES): Remove.
10946         (PARAM_USE_CANONICAL_TYPES): New; decides whether to use canonical 
10947         types or not.
10948         * params.h (VERIFY_CANONICAL_TYPES): Remove.
10949         (USE_CANONICAL_TYPES): New.
10950         * doc/invoke.texi (verify-canonical-types): Remove.
10951         (use-canonical-types): Add.
10952
10953 2007-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
10954
10955         * config/spu/spu.c (spu_optimization_options): Remove setting of
10956         parameter PARAM_MAX_COMPLETELY_PEEL_TIMES.
10957         (spu_override_options): Move it here.
10958
10959 2007-07-11  Richard Sandiford  <richard@codesourcery.com>
10960
10961         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Handle -m4ksc and -m4ksd.
10962         * config/mips/mips.c (mips_cpu_info_table): Mention
10963         MIPS_ISA_LEVEL_SPEC in the comment.
10964
10965 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
10966
10967         PR tree-optimization/32713
10968         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle REAL_CST.
10969
10970 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
10971
10972         PR middle-end/30482
10973         * c-opts.c (c_common_post_options): Do not change flag_complex_method
10974         conditional to flag_isoc99.
10975         (c_common_init_options): Do it here, unconditionally.
10976
10977 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
10978
10979         PR tree-optimization/32589
10980         * doc/tree-ssa.texi (Rough GIMPLE Grammar): Add missing rule.
10981         * tree-gimple.c (is_gimple_min_invariant): Clarify head comment.
10982         * tree-ssa-propagate.c (valid_gimple_expression_p): New
10983         predicate, extracted from...
10984         (set_rhs): ...here.  Call it for the expression on entry.
10985         * tree-ssa-propagate.h (valid_gimple_expression_p): Declare.
10986         * tree-ssa-sccvn.c: Include tree-ssa-propagate.h.
10987         (simplify_binary_expression): Use valid_gimple_expression_p
10988         to validate the simplification.
10989         * Makefile.in (tree-ssa-sccvn.o): Depends on tree-ssa-propagate.h.
10990
10991 2007-07-11  Danny Smith  <dannysmith@users.sourceforge.net>
10992
10993         * config/i386/cygming.h (PREFERRED_DEBUGGING_TYPE): Define to
10994         DWARF2_DEBUG on 32 bit target too.
10995         (DWARF2_UNWIND_INFO): Reorganize 64-bit vs 32-bit definition. 
10996
10997 2007-07-11  Nick Clifton  <nickc@redhat.com>
10998
10999         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Provide alternative
11000         version for 64-bit hosts.
11001
11002 2007-07-10  David Daney  <ddaney@avtrex.com>
11003
11004         * config/mips/mips.h (ISA_HAS_SYNCI): New target capability
11005         predicate.
11006         (INITIALIZE_TRAMPOLINE): Emit clear_cache insn instead of  library
11007         call.
11008         * config/mips/mips.c (mips_expand_synci_loop): New function.
11009         * config/mips/mips.md (UNSPEC_CLEAR_HAZARD): New constant.
11010         (UNSPEC_RDHWR): Same.
11011         (UNSPEC_SYNCI): Same.
11012         (UNSPEC_SYNC): Same.
11013         (clear_cache): New expand.
11014         (sync): New insn.
11015         (synci): Same.
11016         (rdhwr): Same.
11017         (clear_hazard): Same.
11018         * config/mips/mips-protos.h (mips_expand_synci_loop): Declare
11019         function.
11020         * testsuite/gcc.target/mips/clear-cache-1.c: New test.
11021         * testsuite/gcc.target/mips/clear-cache-2.c: New test.
11022
11023 2007-07-10  Ian Lance Taylor  <iant@google.com>
11024
11025         * emit-rtl.c (gen_reg_rtx): Check can_create_pseudo_p rather than
11026         no_new_pseudos.
11027
11028 2007-07-10  David Daney  <ddaney@avtrex.com>
11029
11030         * builtins.def (BUILT_IN_CLEAR_CACHE): New builtin.
11031         * builtins.c (expand_builtin___clear_cache): New function.
11032         (expand_builtin): Call expand_builtin___clear_cache for
11033         BUILT_IN_CLEAR_CACHE case.
11034         * doc/extend.texi (__builtin___clear_cache): Document new builtin.
11035         * doc/md.texi (clear_cache): Document new instruction pattern.
11036         * testsuite/gcc.dg/builtins-64.c: New test.
11037
11038 2007-07-11  Hans-Peter Nilsson  <hp@axis.com>
11039
11040         * config/cris/cris.md ("movsi"): Fix typo in last change.
11041
11042 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
11043
11044         PR 32617
11045         * c-common.c (c_alignof_expr): Look at DECL_ALIGN of
11046         FUNCTION_DECLs.
11047         (handle_aligned_attribute): Allow use on FUNCTION_DECLs.
11048         * varasm.c (assemble_start_function): Honor DECL_ALIGN
11049         for FUNCTION_DECLs.  Don't use align_functions_log if
11050         DECL_USER_ALIGN.
11051         * print-tree.c (print_node): Print DECL_ALIGN and DECL_USER_ALIGN
11052         even for FUNCTION_DECLs.
11053         * c-decl.c (merge_decls): Propagate DECL_ALIGN even for
11054         FUNCTION_DECLs.
11055         * tree.h (DECL_ALIGN): Update for new location of 'align'.
11056         (DECL_FUNCTION_CODE): Update for new location and name of
11057         'function_code'.
11058         (DECL_OFFSET_ALIGN): Update for new location of 'off_align'.
11059         (struct tree_decl_common): Move 'align' and 'off_align' out
11060         of union, ensure they're still on a 32-bit boundary.  Remove
11061         other fields in union 'u1'.
11062         (struct tree_function_decl): Add field 'function_code' replacing
11063         'u1.f' in tree_decl_common.
11064         * tree.c (build_decl_stat): Set initial value of DECL_ALIGN.
11065         * doc/extend.texi (Function Attributes): Add 'aligned' attribute.
11066         (Variable Attributes): Cross-reference 'aligned' attribute
11067         to Function Attributes.
11068         * flags.h (force_align_functions_log): Delete.
11069         * toplev.c (force_align_functions_log): Delete.
11070
11071 2007-07-10  Uros Bizjak  <ubizjak@gmail.com>
11072
11073         PR target/32708
11074         * config/i386/sse.md (vec_concatv2di): Disable for TARGET_64BIT.
11075         (*vec_concatv2di_rex): New insn pattern.
11076
11077 2007-07-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
11078
11079         PR target/32538
11080         * config/mips/iris6.h (LIBGCC_SPEC): Add libm.
11081
11082 2007-07-10  Ian Lance Taylor  <iant@google.com>
11083
11084         Replace no_new_pseudos in backends.
11085         * rtl.h (can_create_pseudo_p): Define.
11086         * config/darwin.c (machopic_indirect_data_reference): Use
11087         can_create_pseudo_p () instead of no_new_pseudos.
11088         (machopic_indirect_data_reference): Likewise.
11089         (machopic_legitimize_pic_address): Likewise.
11090         * config/alpha/alpha.c (alpha_legitimize_address): Likewise.
11091         (alpha_emit_set_const_1): Likewise.
11092         (alpha_emit_set_const): Likewise.
11093         (alpha_emit_conditional_move): Likewise.
11094         (alpha_split_conditional_move): Likewise.
11095         * config/alpha/alpha.md (various splitters): Likewise.
11096         (movti): Likewise.
11097         * config/arm/arm.c (legitimize_pic_address): Likewise.
11098         (arm_load_pic_register): Likewise.
11099         * config/arm/arm.md (addsi3, subsi3, andsi3, iorsi3): Likewise.
11100         (movdi, movsi, movhi, movqi, movsf, movdf): Likewise.
11101         * config/bfin/bfin.c (legitimize_pic_address): Likewise.
11102         * config/cris/cris.c (cris_expand_pic_call_address): Likewise.
11103         * config/cris/cris.md (movsi): Likewise.
11104         * config/frv/frv.md (symGOT2reg_hilo): Likewise.
11105         (symGOTOFF2reg_hilo): Likewise.
11106         (symGPREL2reg, symGPREL2reg_hilo): Likewise.
11107         * config/h8300/h8300.md (insv, extzv): Likewise.
11108         * config/i386/i386.c (ix86_expand_move): Likewise.
11109         (ix86_expand_vector_move): Likewise.
11110         (ix86_prepare_fp_compare_args): Likewise.
11111         (ix86_expand_carry_flag_compare): Likewise.
11112         * config/i386/i386.md (tls_dynamic_gnu2_32): Likewise.
11113         (tls_dynamic_gnu2_combine_32): Likewise.
11114         (tls_dynamic_gnu2_64, tls_dynamic_gnu2_combine_64): Likewise.
11115         * config/ia64/ia64.c (ia64_expand_move): Likewise.
11116         (ia64_expand_movxf_movrf): Likewise.
11117         * config/m32c/m32c.c (m32c_prepare_move): Likewise.
11118         (m32c_split_move): Likewise.
11119         (m32c_expand_insv): Likewise.
11120         * config/m68k/m68k.md (movsi): Likewise.
11121         * config/mips/mips.c (mips_force_temporary): Likewise.
11122         (mips_split_symbol): Likewise.
11123         (mips_move_integer): Likewise.
11124         (mips_legitimize_const_move): Likewise.
11125         * config/mn10300/mn10300.md (movsi): Likewise.
11126         * config/pa/pa.c (emit_move_sequence): Likewise.
11127         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
11128         (rs6000_got_register): Likewise.
11129         (create_TOC_reference): Likewise.
11130         (rs6000_machopic_legitimize_pic_address): Likewise.
11131         * config/rs6000/rs6000.md (add<mode>3): Likewise.
11132         (various splitters): Likewise.
11133         (iorsi3, xorsi3, iordi3, xordi3): Likewise.
11134         (movsi_got): Likewise.
11135         * config/s390/s390.c (emit_symbolic_move): Likewise.
11136         * config/s390/s390.md (movhi, movqi): Likewise.
11137         (load_multiple, store_multiple): Likewise.
11138         * config/score/score.c (score_force_temporary): Likewise.
11139         * config/sh/sh.c (prepare_move_operands): Likewise.
11140         (prepare_cbranch_operands): Likewise.
11141         (emit_fpu_switch): Likewise.
11142         (fpscr_set_from_mem): Likewise.
11143         * config/sh/sh.md (movdicc, movsicc, movsicc_umin): Likewise.
11144         (adddi3, subsi3): Likewise.
11145         (various splitters): Likewise.
11146         (divsi_inv_fp_combine): Likewise.
11147         (symGOT_load, symGOTOFF2reg, symDTPOFF2reg): Likewise.
11148         (seq, slt, sle, sgt, sge, sgtu, sltu, sleu, sgeu): Likewise.
11149         (sne): Likewise.
11150         * config/sh/predicates.md (xor_operand): Likewise.
11151         * config/sparc/sparc.c (legitimize_tls_address): Likewise.
11152         * config/sparc/sparc.md (movsi_pic_label_ref): Likewise.
11153         (movdi_pic_label_ref): Likewise.
11154         * config/spu/spu.c (spu_split_immediate): Likewise.
11155         * config/alpha/alpha.md (various splitters): Remove test
11156         !no_new_pseudos || reload_completed.
11157         * config/ia64/ia64.c (ia64_output_mi_thunk): Don't set
11158         no_new_pseudos.
11159         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
11160         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
11161         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
11162         * config/score/score.c (th_output_mi_thunk): Likewise.
11163         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
11164         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
11165
11166 2007-07-10  Kaz Kojima  <kkojima@gcc.gnu.org>
11167
11168         PR rtl-optimization/32664
11169         * mode-switching.c (create_pre_exit): Skip barrier insns.
11170
11171 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
11172
11173         * tree-scalar-evolution.c (scev_const_prop): Add arguments to
11174         force_gimple_operand_bsi.
11175         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr,
11176         rewrite_use_compare): Ditto.
11177         * tree-ssa-address.c (gimplify_mem_ref_parts, create_mem_ref):
11178         Ditto.
11179         * tree-ssa-ifcombine.c (ifcombine_ifandif): Ditto.
11180         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
11181         * lambda-code.c (replace_uses_equiv_to_x_with_y): Ditto.
11182         * tree-profile.c (prepare_instrumented_value,
11183         tree_gen_interval_profiler, tree_gen_pow2_profiler,
11184         tree_gen_one_value_profiler, tree_gen_ic_profiler,
11185         tree_gen_ic_func_profiler, tree_gen_average_profiler,
11186         tree_gen_ior_profiler): Ditto.
11187         * tree-ssa-reassoc.c (negate_value): Ditto.
11188         * matrix-reorg.c (transform_access_sites, transform_allocation_sites):
11189         Use force_gimple_operand_bsi.
11190         * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Ditto.
11191         * tree-if-conv.c (add_to_dst_predicate_list,
11192         find_phi_replacement_condition): Ditto.
11193         * gimplify.c (force_gimple_operand_bsi): Add before and m arguments.
11194         Call mark_symbols_for_renaming for new statements.
11195         * tree-flow.h (force_gimple_operand_bsi): Declaration changed.
11196
11197 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
11198
11199         * cfghooks.c (remove_edge): New function.
11200         (redirect_edge_and_branch, remove_branch, merge_blocks): Updated
11201         loop exit rescans.
11202         * cfghooks.h (remove_edge): Declare.
11203         * cfg.c (remove_edge): Renamed to remove_edge_raw.
11204         * basic-block.h (remove_edge): Declaration changed to remove_edge_raw.
11205
11206 2007-07-09  Wolfgang Gellerich  <gellerich@de.ibm.com>
11207
11208         * optabs.h: Added declaration for signbit_optab.  
11209         * optabs.c: (init_optabs): Added initialization for signbit_optab.
11210         * genoptinit.c (optabs): Added entry for signbit insns.  
11211         * builtins.c (expand_builtin_signbit): Added code to use a signbit
11212         insn, if available.  
11213         * config/s390/s390.h (S390_TDC_SIGNBIT_SET): New constant.  
11214         * config/s390/s390.md (signbit<mode>2): New expander.  
11215
11216 2007-07-09  Richard Guenther  <rguenther@suse.de>
11217
11218         PR middle-end/32698
11219         * fold-const.c (fold_plusminus_mult_expr): Move constant
11220         arguments second to allow decomposing.
11221
11222 2007-07-09  Alexandre Oliva  <aoliva@oliva.athome.lsd.ic.unicamp.br>
11223
11224         Revert:
11225         2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
11226         PR debug/23551
11227         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
11228         Disregard DECL_FROM_INLINE.
11229
11230 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
11231
11232         PR target/27855
11233         * doc/invoke.texi: Add ftree-reassoc flag.
11234         * common.opt (ftree-reassoc): New flag.
11235         * tree-ssa-reassoc.c (gate_tree_ssa_reassoc): New static function.
11236         (struct tree_opt_pass pass_reassoc): Use gate_tree_ssa_reassoc.
11237
11238 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
11239
11240         PR tree-optimization/32681
11241         * tree-if-conv.c (find_phi_replacement_condition): Use the condition
11242         saved in second_edge->aux when first_bb is a loop header.
11243
11244 2007-07-09  Jan HUbicka  <jh@suse.cz>
11245
11246         * cse.c (cse_insn): Avoid invalid sharing on trial replacement.
11247
11248 2007-07-09  Richard Guenther  <rguenther@suse.de>
11249
11250         * c-decl.c (start_function): Do not promote return type.
11251
11252 2007-07-08  Daniel Franke  <franke.daniel@gmail.com>
11253
11254         * function.c (do_warn_unused_parameter): Do not warn if
11255         TREE_NO_WARNING is set.
11256
11257 2007-07-08  Andreas Schwab  <schwab@suse.de>
11258
11259         * doc/invoke.texi (DEC Alpha/VMS Options): Fix typo.
11260
11261 2007-07-08  Sandra Loosemore  <sandra@codesourcery.com>
11262
11263         Revert this patch:
11264         2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
11265
11266         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
11267         apply to assembly language, too.
11268         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
11269
11270 2007-07-07  Daniel Berlin  <dberlin@dberlin.org>
11271
11272         Revert (note the sccvn portions are *not* reverted)
11273         2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
11274
11275         Fix PR tree-optimization/23488
11276
11277         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
11278         handles.
11279         * tree-flow-inline.h (get_value_handle): Ditto.
11280         * tree-ssa-pre.c (decl_vh_map): New.
11281         (decl_node_pool): New.
11282         (can_value_number_operation): Support DECL_P.
11283         (can_PRE_operation): Ditto.
11284         (create_expression_by_pieces): Ditto.
11285         (find_existing_value_expr): Modify to differnetiate between
11286         addressing and top level.
11287         (create_value_handle_for_expr): Handle DECL's.
11288         (poolify_tree): Ditto.
11289         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
11290         (make_values_for_stmt): Handle DECL's properly.
11291         (init_pre): Reorg to not init useless things during FRE.
11292         (fini_pre): Ditto.
11293         * tree-flow.h: Include pointer-set.h.
11294         (decl_vh_map): Declare.
11295         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
11296
11297 2007-07-07 Eric Weddington  <eweddington@cso.atmel.com>
11298
11299         * config/avr/constraints.md (define_memory_constraint "Q"): Fix
11300         the constraint description.
11301         * doc/md.texi: Update documentation of AVR constraints.
11302
11303 2007-07-07  Kazu Hirata  <kazu@codesourcery.com>
11304
11305         * auto-inc-dec.c, config/arm/arm.c,
11306         config/m32r/constraints.md, config/mips/mips.md,
11307         config/rs6000/rs6000.c, cselib.c, dce.c, df-core.c,
11308         df-problems.c, df-scan.c, df.h, dse.c, gimplify.c,
11309         tree-if-conv.c, tree-ssa-sccvn.c, tree-ssa.c: Fix comment
11310         typos.  Follow spelling conventions.
11311         * doc/invoke.texi, doc/rtl.texi: Fix typos.
11312
11313         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
11314         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
11315
11316         * tree-ssa-operands.c (realloc_vop, realloc_vdef,
11317         realloc_vuse): Remove.
11318         * tree-ssa-operands.h: Remove the prototype for realloc_vdef
11319         and realloc_vuse.
11320
11321 2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
11322
11323         Fix PR tree-optimization/23488
11324
11325         * tree-ssa-sccvn.c (expr_has_constants): Handle tcc_declaration.
11326         (try_to_simplify): Ditto.
11327         (visit_use): Ditto.
11328         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
11329         handles.
11330         * tree-flow-inline.h (get_value_handle): Ditto.
11331         * tree-ssa-pre.c (decl_vh_map): New.
11332         (decl_node_pool): New.
11333         (can_value_number_operation): Support DECL_P.
11334         (can_PRE_operation): Ditto.
11335         (create_expression_by_pieces): Ditto.
11336         (find_existing_value_expr): Modify to differnetiate between
11337         addressing and top level.
11338         (create_value_handle_for_expr): Handle DECL's.
11339         (poolify_tree): Ditto.
11340         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
11341         (make_values_for_stmt): Handle DECL's properly.
11342         (init_pre): Reorg to not init useless things during FRE.
11343         (fini_pre): Ditto.
11344         * tree-flow.h: Include pointer-set.h.
11345         (decl_vh_map): Declare.
11346         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
11347                 
11348 2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
11349
11350         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
11351         apply to assembly language, too.
11352         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
11353
11354 2007-07-06  Ian Lance Taylor  <iant@google.com>
11355             Zack Weinberg  <zackw@panix.com>
11356
11357         PR middle-end/32441
11358         * builtins.c (std_expand_builtin_va_start): Don't use make_tree.
11359
11360 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
11361
11362         * config/sh/sh.md (*prefetch_i4): Disable for TARGET_VXWORKS_RTP.
11363         (prefetch): Likewise if "pref" would be used.
11364
11365 2007-07-06  Josh Conner  <jconner@apple.com>
11366
11367         PR middle-end/32602
11368         PR middle-end/32603
11369         * calls.c (store_one_arg): Handle arguments which are partially
11370         on the stack when detecting argument overlap.
11371
11372 2007-07-06  Bernd Schmidt  <bernd.schmidt@analog.com>
11373
11374         * reload1.c (choose_reload_regs): Set reload_spill_index for regs
11375         chosen during find_reloads.
11376
11377 2007-07-06  Richard Guenther  <rguenther@suse.de>
11378
11379         * gimplify.c (gimplify_call_expr): Prefer DECL_ARGUMENTS over
11380         TYPE_ARG_TYPES for verification of argument types.  Use
11381         DECL_ARG_TYPE instead of the PARM_DECL type.  Take excess
11382         parameters as variable arguments.
11383
11384 2007-07-06  Andreas Krebbel  <krebbel1@de.ibm.com>
11385
11386         * libgcc2.h (word_type): Type definition removed.
11387         (cmp_return_type, shift_count_type): Type definitions added.
11388         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
11389         replaced with shift_count_type.
11390         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
11391         cmp_return_type.
11392         * libgcc2.c (__udivmoddi4, __moddi3): Type of local variable c
11393         changed from word_type to Wtype.
11394         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
11395         replaced with shift_count_type.
11396         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
11397         cmp_return_type.
11398         * c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return
11399         and libgcc_shift_count attribute added.
11400         * target-def.h (TARGET_LIBGCC_CMP_RETURN_MODE,
11401         TARGET_LIBGCC_SHIFT_COUNT_MODE): New target hooks defined.
11402         (TARGET_INITIALIZER): New target hooks added.
11403         * targhooks.c (default_libgcc_cmp_return_mode,
11404         default_libgcc_shift_count_mode): Default implementations for the new
11405         target hooks added.
11406         * targhooks.h (default_libgcc_cmp_return_mode,
11407         default_libgcc_shift_count_mode): Function prototypes added.
11408         * target.h (struct gcc_target): Fields for the new target hooks added.
11409         * optabs.c (expand_binop): Use shift_count_mode when expanding shift
11410         as library call.
11411         (prepare_cmp_insn): Use cmp_return_mode when expanding comparison as
11412         library call.
11413
11414         * doc/tm.texi (TARGET_LIBGCC_CMP_RETURN_MODE,
11415         TARGET_LIBGCC_SHIFT_COUNT_MODE): Documentation added.
11416
11417         * config/s390/s390.c (s390_libgcc_cmp_return_mode,
11418         s390_libgcc_shift_count_mode): Functions added.
11419         (TARGET_LIBGCC_CMP_RETURN_MODE, TARGET_LIBGCC_SHIFT_COUNT_MODE):
11420         Target hooks defined.
11421
11422 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
11423
11424         * config/mips/mips.c (compute_frame_size): Restore the original
11425         gp_sp_offset for !GENERATE_MIPS16E_SAVE_RESTORE and remove the
11426         fp_size term from the GENERATE_MIPS16E_SAVE_RESTORE calculation.
11427         Document why the difference is needed.
11428
11429 2007-07-06  Richard Guenther  <rguenther@suse.de>
11430
11431         * c-common.c (boolean_increment): Use correctly typed
11432         constant.
11433
11434 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
11435
11436         * config/mips/mips.c (mips16e_save_restore_pattern_p): Check that
11437         the topmost argument register is not also included in the save mask.
11438         (mips16e_collect_argument_save_p): Take a pointer to the argument
11439         register, rather than a pointer to the number of arguments.
11440         (mips16e_collect_argument_saves): Only include argument saves
11441         that aren't in the register mask.
11442
11443 2007-07-06  Uros Bizjak  <ubizjak@gmail.com>
11444
11445         PR rtl-optimization/32450
11446         * function.c (thread_prologue_and_epilogue_insns): Emit blockage insn
11447         to ensure that instructions are not moved into the prologue when
11448         profiling is on.  Remove unused prologue_end variable.
11449         (expand_function_end): Emit blockage insn instead of ASM_INPUT rtx
11450         as a scheduling barrier.
11451
11452 2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
11453
11454         PR debug/23551
11455         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
11456         Disregard DECL_FROM_INLINE.
11457
11458 2007-07-05  Adam Nemet  <anemet@caviumnetworks.com>
11459
11460         * rtlanal.c (num_sign_bit_copies1): Improve cases of ANDing or
11461         IORing with a constant.
11462
11463 2007-07-05  Seongbae Park  <seongbae.park@gmail.com>
11464
11465         PR rtl-optimization/32475
11466         * df-scan.c (df_def_record_1): Add a use of the stack pointer
11467         for every definition of the stack pointer.
11468
11469 2007-07-05  Richard Earnshaw  <rearnsha@arm.com>
11470
11471         * arm.c (vfp3_const_double_index): Copy signed results of
11472         REAL_VALUE_TO_INT into unsigned vars.
11473
11474 2007-07-05  Richard Guenther  <rguenther@suse.de>
11475
11476         PR middle-end/32639
11477         * alias.c (get_alias_set): Tread METHOD_TYPE the same as
11478         FUNCTION_TYPE.
11479         * tree-ssa.c (useless_type_conversion_p): Check canonical
11480         types early.
11481
11482 2007-07-05 Anatoly Sokolov <aesok@post.ru>
11483
11484         * config/avr/avr.md (zero_extendqihi2, zero_extendqisi2, 
11485         zero_extendhisi2): Change to define_insn_and_split. 
11486         (zero_extendqidi2, zero_extendhidi2, zero_extendsidi2): New.
11487
11488 2007-07-05  Paolo Bonzini  <bonzini@gnu.org>
11489
11490         * function.c (match_asm_constraints_1, rest_of_match_asm_constraints,
11491         pass_match_asm_constraints): New.
11492         * passes.c (init_optimization_passes): Add new pass.
11493         * stmt.c (expand_asm_operands): Set cfun->has_asm_statement.
11494         * function.h (struct function): Add has_asm_statement bit.
11495         (current_function_has_asm_statement): New.
11496         * tree-pass.h (pass_match_asm_constraints): New.
11497
11498 2007-07-05  Richard Sandiford  <rsandifo@nildram.co.uk>
11499
11500         * config/mips/mips.c (mips_file_start): Avoid declaration
11501         after code.
11502
11503 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
11504
11505         * optabs.c (expand_binop_directly): Fix signed/unsigned comparison.
11506
11507 2007-07-05  Uros Bizjak  <ubizjak@gmail.com>
11508
11509         * rtl.def (NOTE): Change print format string to print
11510         operand 5 as a note insn name.
11511
11512 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
11513             David Ung  <davidu@mips.com>
11514
11515         * config/mips/mips.c (mips_cpu_info): Add 4ksc and 4ksd processors.
11516         * doc/invoke.texi: (MIPS Options): Document them.
11517
11518 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
11519             David Ung  <davidu@mips.com>
11520
11521         Add support for SmartMIPS ASE.
11522
11523         * optabs.c (expand_binop_directly): New, broken out from...
11524         (expand_binop): Here.  Make it try rotating in the other
11525         direction even when the second operand isn't constant.
11526         * config/mips/mips.md (*lwxs): New.
11527         * config/mips/mips.opt (msmartmips): New.
11528         * config/mips/mips.c (mips_lwxs_address_p): New.
11529         (mips_rtx_costs): Make it recognize scaled indexed addressing.
11530         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
11531         __mips_smartmips when compiling for TARGET_SMARTMIPS.
11532         (ISA_HAS_ROR): Define for TARGET_SMARTMIPS.
11533         (ISA_HAS_LWXS): New.
11534         (ASM_SPEC): Add -msmartmips/-mno-smartmips.
11535         * doc/invoke.texi (MIPS Options): Document -msmartmips/-mno-smartmips.
11536         * testsuite/gcc.target/mips/smartmips-lwxs.c: New test case.
11537         * testsuite/gcc.target/mips/smartmips-ror-1.c: New test case.
11538         * testsuite/gcc.target/mips/smartmips-ror-2.c: New test case.
11539         * testsuite/gcc.target/mips/smartmips-ror-3.c: New test case.
11540         * testsuite/gcc.target/mips/smartmips-ror-4.c: New test case.
11541
11542 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
11543
11544         * tree-vectorizer.c (new_loop_vec_info): Initialize
11545         LOOP_VINFO_COST_MODEL_MIN_ITERS.
11546         * tree-vectorizer.h (_loop_vec_info): Added new filed
11547         min_profitable_iters.
11548         (LOOP_VINFO_COST_MODEL_MIN_ITERS): New access macro to above new field.
11549         (TARG_SCALAR_TO_VEC_COST): Define cost of scalar to vector operation.
11550         * tree-vect-analyze.c (vect_analyze_operations): Set
11551         LOOP_VINFO_COST_MODEL_MIN_ITERS.
11552         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Use
11553         VEC_length to determine if there are any LOOP_VINFO_MAY_MISALIGN_STMTS.
11554         Fix calculation of peel_iters_prologue. Move consideration of epilogue
11555         and prologue cost to after they are computed.
11556         (vect_model_induction_cost): Use TARG_SCALAR_TO_VEC_COST instead of
11557         TARG_VEC_STMT_COST.
11558         (vect_model_simple_cost): Takes additional argument dt. Consider cost
11559         of creating vectors from scalars according to dt.
11560         (vect_model_store_cost): Likewise.
11561         (vectorizable_call): Use dt array instead of scalar dt. Call
11562         vect_model_simple_cost with additional argument dt.
11563         (vectorizable_assignment): Likewise.
11564         (vectorizable_operation): Likewise.
11565         (vectorizable_type_demotion): Likewise.
11566         (vectorizable_type_promotion): Likewise.
11567         (vectorizable_store): Use dt array instead of scalar dt. Call
11568         vect_model_store_cost with additional argument dt.
11569         (vect_do_peeling_for_loop_bound): Don't call
11570         vect_estimate_min_profitable_iters. Instead, lookup
11571         LOOP_VINFO_COST_MODEL_MIN_ITERS. Don't always print
11572         "may not be profitable".
11573
11574 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
11575
11576         PR testsuite/32014
11577         * config/rs6000/altivec.md (UNSPEC_VUPKHS_V4SF, UNSPEC_VUPKLS_V4SF):
11578         (UNSPEC_VUPKHU_V4SF, UNSPEC_VUPKLU_V4SF): New.
11579         (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi): New patterns.
11580         (vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): New patterns. 
11581
11582 2007-07-05  Zdenek Dvorak  <dvorakz@suse.cz>
11583
11584         * config/i386/i386.c (ix86_address_cost): Do not consider more complex
11585         addressing modes cheaper.
11586
11587 2007-07-05  Alexandre Oliva  <aoliva@redhat.com>
11588
11589         * dwarf2out.c (dw_ranges_by_label_ref): New typedef.
11590         (dw_ranges_struct): Rename block_num to num.  Adjust.
11591         (dw_ranges_by_label_struct): New.
11592         (ranges_by_label, ranges_by_label_allocated,
11593         ranges_by_label_in_use): New variables.
11594         (add_ranges_num): Factored most of the code out of...
11595         (add_ranges): ... this one.  Rewrite in terms of the former.
11596         (add_ranges_by_labels): New.
11597         (output_ranges): Output by-label ranges.
11598         (dwarf2out_finish): Output range for multiple-section
11599         compile_unit.  Output standard DW_AT_low_pc in addition to
11600         unexpected DW_AT_entry_pc.
11601
11602 2007-07-04  Daniel Berlin  <dberlin@dberlin.org>
11603
11604         PR tree-optimization/32604
11605         PR tree-optimization/32606
11606
11607         * tree-ssa-pre.c (bb_bitmap_sets): Removed antic_safe_loads.
11608         (compute_antic_safe): Removed.
11609         (ANTIC_SAFE_LOADS): Ditto.
11610         (compute_antic_aux): Don't print ANTIC_SAFE_LOADS.
11611         (execute_pre): Don't call compute_antic_safe.
11612         (vuse_equiv): New function.
11613         (make_values_for_stmt): Use it
11614         * tree-ssa-sccvn.c (set_ssa_val_to): Remove assert, since it is
11615         not always true.
11616
11617 2007-07-04 Anatoly Sokolov <aesok@post.ru>
11618
11619         PR target/31331
11620         * config/avr/avr.c (avr_naked_function_p): Handle receiving a type
11621         rather than a decl. 
11622         (avr_attribute_table): Make "naked" attribute apply to function types
11623         rather than to decls.
11624         (avr_handle_fntype_attribute): New function.
11625
11626 2007-07-04  Joseph Myers  <joseph@codesourcery.com>
11627
11628         * target-def.h (TARGET_INITIALIZER): Remove trailing whitespace
11629         after \.
11630
11631 2007-07-04  David Ung  <davidu@mips.com>
11632             Joseph Myers  <joseph@codesourcery.com>
11633
11634         * config/mips/mips.md (type): Add logical, signext and move.
11635         (one_cmpl<mode>2, *and<mode>3, *and<mode>3_mips16, *ior<mode>3,
11636         *ior<mode>3_mips16, two unnamed insns after *ior<mode>3_mips16,
11637         *nor<mode>3, "Combiner patterns to optimize truncate/zero_extend
11638         combinations", *zero_extend<SHORT:mode><GPR:mode>2,
11639         *zero_extendqihi2, *extend<SHORT:mode><GPR:mode>2_mips16e,
11640         *extend<SHORT:mode><GPR:mode>2_se<SHORT:size>, *movdi_64bit,
11641         *movdi_64bit_mips16, *movsi_internal, *movsi_mips16, movcc,
11642         *movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16,
11643         *movsf_hardfloat, *movsf_softfloat, *movsf_mips16,
11644         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit,
11645         movv2sf_hardfloat_64bit): Use the new types.
11646         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16,
11647         *movdf_softfloat, *movdf_mips16): Use "multi".
11648         (extendqihi2): Replace with a define_expand.
11649         (*extendqihi2_mips16e, *extendqihi2, *extendqihi2_seb): New.
11650         Based on extend<SHORT:mode><GPR:mode>2 patterns.
11651         * config/mips/74k.md (r74k_int_logical): New reservation and
11652         bypasses.
11653         (r74k_int_arith): Remove "slt".
11654         * config/mips/24k.md, config/mips/4130.md, config/mips/4k.md,
11655         config/mips/5400.md, config/mips/5500.md, config/mips/5k.md,
11656         config/mips/7000.md, config/mips/9000.md, config/mips/generic.md,
11657         config/mips/sb1.md, config/mips/sr71k.md: Add new types to
11658         reservations for "arith".
11659
11660 2007-07-04  Richard Guenther  <rguenther@suse.de>
11661
11662         * tree-ssa.c (useless_type_conversion_p): Add handling for
11663         scalar float and vector types.  Only call the types_compatible_p
11664         langhook for aggregate types as last resort.  Follow the
11665         rules.
11666
11667 2007-07-04  Richard Guenther  <rguenther@suse.de>
11668
11669         * tree-inline.c (estimate_num_insns_1): Treat CONVERT_EXPR
11670         the same as NOP_EXPR.
11671
11672 2007-07-04  Nick Clifton  <nickc@redhat.com>
11673
11674         * target.h (struct gcc_target): Add target_help field.
11675         * target-def.h (TARGET_HELP): New.
11676         (TARGET_INITIALIZER): Use TARGET_HELP.
11677         * opts.c (command_handle_option): Invoke target_help function, if
11678         defined, when the user has specified --target-help on the command
11679         line.
11680         * doc/invoke.texi: Mention that --target-help might print
11681         additional information.
11682         * doc/tm.texi: Document TARGET_HELP hook.
11683
11684         * arm.c (TARGET_HELP): Override default definition.
11685         (arm_target_help): New - display a wrapped list of cores and
11686         architectures supported.
11687
11688 2007-07-04  Rask Ingemann Lambertsen  <rask@sygehus.dk>
11689
11690         * config/v850/v850.c (expand_prologue): Make sure
11691         GEN_INT() argument is sign extended rather than zero extended.
11692         (expand_epilogue): Likewise.
11693         (output_move_double): Delete.
11694         * config/v850/v850-protos.h (output_move_double): Delete.
11695         * config/v850/v850.md (movdi): Delete.
11696         (*movdi_internal): Delete.
11697         (movdf): Delete.
11698         (*movdf_internal): Delete.
11699
11700 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
11701
11702         * config/sh/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Reject -mrelax
11703         unless compiling RTP PIC.
11704
11705 2007-07-04  Richard Guenther  <rguenther@suse.de>
11706
11707         PR tree-optimization/32482
11708         * tree-ssa-ifcombine.c (recognize_single_bit_test): Use the
11709         original ssa name if we didn't find a shift expression.
11710         Fix shift constant for bit zero test.
11711
11712 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
11713
11714         * config/sh/lib1funcs.asm (ic_invalidate): Align constant pool.
11715
11716 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
11717
11718         * config.gcc (arm-wrs-vxworks): Don't include svr4.h.
11719         * config/vxworks.h (PTRDIFF_TYPE, SIZE_TYPE, TARGET_POSIX_IO): Define.
11720         * config/arm/vxworks.h (ASM_SPEC): Delete.
11721         (SUBTARGET_EXTRA_ASM_SPEC): Define.
11722
11723 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
11724
11725         * tree-data-ref.h (data_dependence_relation): New flag reversed_p.
11726         (DDR_REVERSED_P): New.
11727         * tree-data-ref.c (initialize_data_dependence_relation,
11728         build_classic_dist_vector): Set DDR_REVERSED_P.
11729
11730 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
11731
11732         PR middle-end/32457
11733         * tree-data-ref.c (analyze_siv_subscript_cst_affine,
11734         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
11735         init_omega_for_ddr_1): Use non conservative number of iterations
11736         estimations.
11737         (analyze_subscript_affine_affine): Use HOST_WIDE_INT instead of int.
11738         (analyze_siv_subscript): Remove FIXME and reinitialization of 
11739         last_conflicts to chrec_dont_know.
11740         * testsuite/gfortran.dg/vect/pr32457.f90: New.
11741
11742 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
11743
11744         * tree.c (maybe_canonicalize_argtypes): Improve description.
11745
11746 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
11747
11748         * tree.c (maybe_canonicalize_argtypes): New.
11749         (build_function_type): Set canonical type.
11750         (build_method_type_directly): Ditto.
11751         (reconstruct_complex_type): Rebuild the METHOD_TYPE node
11752         properly.
11753
11754 2007-07-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11755
11756         * tree-ssa-loop-ivopts.c (strip_offset_1): Treat POINTER_PLUS_EXPR
11757         like PLUS_EXPR.
11758         (rewrite_use_nonlinear_expr): Likewise.
11759
11760 2007-07-03  Seongbae Park  <seongbae.park@gmail.com>
11761
11762         * rtl.def (UNSPEC, USE, CLOBBER): More comments.
11763
11764 2007-07-04  Ben Elliston  <bje@au.ibm.com>
11765
11766         * dwarf2out.c: Move DWARF2 abbreviation glossary closer to the top
11767         of this file.
11768
11769         * c-objc-common.c (c_types_compatible_p): Fix indentation.
11770
11771         * doc/tm.texi (Run-time Target): Capitalise "CPU".
11772         (Exception Handling): Likewise.
11773
11774 2007-07-03  Jan Hubicka  <jh@suse.cz>
11775
11776         * ifcvt.c (find_cond_trap): Avoid invalid RTL sharing.
11777
11778 2007-07-03  Eric Christopher  <echristo@apple.com>
11779
11780         * doc/cppopts.texi: Add conflicting option note to -dM.
11781         * doc/invoke.texi: Add note about possible conflicts with
11782         -E for -dCHARS and note that -dM will not produce
11783         any results if there is no machine dependent reorg.
11784         
11785 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
11786
11787         * tree.h (DECL_ALIGN): Back out previous change.
11788
11789 2007-07-03  Joseph Myers  <joseph@codesourcery.com>
11790
11791         * configure.ac: Test for .dtprelword support on MIPS.
11792         * configure, config.in: Regenerate.
11793         * config/mips/mips.c (mips_output_dwarf_dtprel): New.
11794         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
11795
11796 2007-07-03  Julian Brown  <julian@codesourcery.com>
11797
11798         * config.gcc (with_fpu): Allow --with-fpu=vfp3.
11799         * config/arm/aout.h (REGISTER_NAMES): Add D16-D31.
11800         * config/arm/aof.h (REGISTER_NAMES): Add D16-D31.
11801         * config/arm/arm.c (FL_VFPV3): New flag for VFPv3 processor
11802         capability.
11803         (all_fpus): Add FPUTYPE_VFP3.
11804         (fp_model_for_fpu): Add VFPv3 field.
11805         (arm_rtx_costs_1): Give cost to VFPv3 constants.
11806         (vfp3_const_double_index): New function. Return integer index of
11807         VFPv3 constant suitable for fconst[sd] insns, or -1 if constant
11808         isn't suitable.
11809         (vfp3_const_double_rtx): New function. True if VFPv3 is enabled
11810         and argument represents a valid RTX for a VFPv3 constant.
11811         (vfp_output_fldmd): Split fldmd with > 16 registers in the list into
11812         two instructions.
11813         (vfp_emit_fstmd): Similar, for fstmd.
11814         (arm_print_operand): Implement new code 'G' for VFPv3 floating-point
11815         constants, represented as integer indices.
11816         (arm_hard_regno_mode_ok): Use VFP_REGNO_OK_FOR_SINGLE,
11817         VFP_REGNO_OK_FOR_DOUBLE macros.
11818         (arm_regno_class): Handle VFPv3 d0-d7, low, high register split.
11819         (arm_file_start): Set float-abi attribute for VFPv3, and output
11820         correct ".fpu" assembler directive.
11821         (arm_dbx_register_numbering): Add FIXME.
11822         * config/arm/arm.h (TARGET_VFP3): New macro. Target supports VFPv3.
11823         (fputype): Add FPUTYPE_VFP3.
11824         (FIXED_REGISTERS): Add 32 registers for D16-D31.
11825         (CALL_USED_REGISTERS): Likewise.
11826         (CONDITIONAL_REGISTER_USAGE): Add note about conditional definition
11827         of LAST_VFP_REGNUM. Make D16-D31 caller-saved, if present.
11828         (LAST_VFP_REGNUM): Extend available VFP registers for VFPv3.
11829         (D7_VFP_REGNUM): New.
11830         (LAST_LO_VFP_REGNUM, FIRST_HI_VFP_REGNUM, LAST_HI_VFP_REGNUM)
11831         (VFP_REGNO_OK_FOR_SINGLE, VFP_REGNO_OK_FOR_SINGLE)
11832         (VFP_REGNO_OK_FOR_DOUBLE): Define new macros.
11833         (FIRST_PSEUDO_REGISTER): Shift up to 128 to accommodate VFPv3.
11834         (REG_ALLOC_ORDER): Adjust for VFPv3.
11835         (reg_class): Add VFP_D0_D7_REGS, VFP_LO_REGS, VFP_HI_REGS.
11836         (REG_CLASS_NAMES): Add entries corresponding to VFP_D0_D7_REGS,
11837         VFP_LO_REGS, VFP_HI_REGS.
11838         (REG_CLASS_CONTENTS): Likewise. Extend contents for VFP_REGS.
11839         (IS_VFP_CLASS): Define macro.
11840         (SECONDARY_OUTPUT_RELOAD_CLASS, SECONDARY_INPUT_RELOAD_CLASS): Use
11841         IS_VFP_CLASS.
11842         (REGISTER_MOVE_COST): Likewise.
11843         * config/arm/arm-protos.h (vfp3_const_double_rtx): Add prototype.
11844         * config/arm/vfp.md (VFPCC_REGNUM): Redefine as 127.
11845         (*arm_movsi_vfp, *thumb2_movsi_vfp, *movsfcc_vfp)
11846         (*thumb2_movsfcc_vfp, *abssf2_vfp, *negsf2_vfp, *addsf3_vfp)
11847         (*subsf3_vfp, *divsf_vfp, *mulsf_vfp, *mulsf3negsf_vfp)
11848         (*mulsf3addsf_vfp, *mulsf3subsf_vfp, *mulsf3negsfaddsf_vfp)
11849         (*extendsfdf2_vfp, *truncdfsf2_vfp, *truncsisf2_vfp)
11850         (*truncsidf2_vfp, fixuns_truncsfsi2, fixuns_truncdfsi2)
11851         (*floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2)
11852         (floatunssidf2, *sqrtsf2_vfp, *cmpsf_split_vfp)
11853         (*cmpsf_trap_split_vfp, *cmpsf_vfp, *cmpsf_trap_vfp): Use 't'
11854         where appropriate for single-word registers.
11855         (*movsf_vfp, *thumb2_movsf_vfp, *movdf_vfp, *thumb2_movdf_vfp):
11856         As above. Fix type attributes.
11857         * config/arm/constraints.md (register_contraint "t"): Define.
11858         (register_constraint "w"): Change to D0-D15, or D0-D31 for
11859         VFPv3/NEON.
11860         (register_constraint "x"): Define.
11861         (constraint "Dv"): Define.
11862
11863 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
11864
11865         * tree.h (DECL_ALIGN): Prevent use on a FUNCTION_DECL.
11866
11867 2007-07-03  Tom Tromey  <tromey@redhat.com>
11868
11869         * c-parser.c (objc_pq_context): Removed.
11870         (objc_need_raw_identifier): Likewise.
11871         (c_parser) <objc_pq_context>: New field.
11872         <objc_need_raw_identifier>: Likewise.
11873         (OBJC_NEED_RAW_IDENTIFIER): Removed.
11874         (c_lex_one_token): Update.
11875         (c_parser_objc_protocol_definition): Update.
11876         (c_parser_objc_method_definition): Update.
11877         (c_parser_objc_methodproto): Update.
11878         (c_parser_declspecs): Update.
11879
11880 2007-07-03  David Ung  <davidu@mips.com>
11881
11882         * config/mips/mips.c (mips_issue_rate): Return 4 for 74K processors.
11883
11884 2007-07-03  David Ung  <davidu@mips.com>
11885             Richard Sandiford  <richard@codesourcery.com>
11886
11887         * doc/invoke.texi: Document -march=74kf3_2.
11888         * config/mips/mips.h (PROCESSOR_74KF3_2): New processor_type.
11889         (TUNE_74K): Check for it.
11890         * config/mips/mips.c (mips_cpu_info): Add 74kf3_2.
11891         (mips_rtx_cost_data): Add an entry for PROCESSOR_74KF3_2.
11892         * config/mips/mips.md (cpu): Add 74kf3_2.
11893         * config/mips/74k.md (r74k_int_logical, r74k_int_arith, r74k_int_nop)
11894         (r74k_int_cmove, r74k_int_mult, r74k_int_mul3, r74k_int_mfhilo)
11895         (r74k_int_mthilo, r74k_int_div, r74k_int_call, r74k_int_jump)
11896         (r74k_int_load, r74k_int_store, r74k_unknown, r74k_multi): Add
11897         74kf3_2 to the CPU list.
11898         (r74kf3_2_fadd, r74kf3_2_fmove, r74kf3_2_fload, r74kf3_2_fstore)
11899         (r74kf3_2_fmul_sf, r74kf3_2_fmul_df, r74kf3_2_fdiv_sf)
11900         (r74kf3_2_fdiv_df, r74kf3_2_frsqrt_sf, r74kf3_2_frsqrt_df)
11901         (r74kf3_2_fcmp, r74kf3_2_fcvt, r74kf3_2_fxfer_to_c1)
11902         (r74kf3_2_fxfer_from_c1): New insn reservations.
11903
11904 2007-07-03  Richard Sandiford  <richard@codesourcery.com>
11905             David Ung  <davidu@mips.com>
11906
11907         * doc/invoke.texi: Replace -march=24kf with -march=24kf2_1 and
11908         -march=24kx with -march=24kf1_1.  Likewise 24ke[fx], 34k[fx]
11909         and 74k[fx].  Document aliases for the new options.
11910         * config/mips/mips.h (PROCESSOR_24KF): Rename to...
11911         (PROCESSOR_24KF2_1): ...this.
11912         (PROCESSOR_24KX): Rename to...
11913         (PROCESSOR_24KF1_1): ...this.
11914         (PROCESSOR_74KF): Rename to...
11915         (PROCESSOR_74KF2_1): ...this.
11916         (PROCESSOR_74KX): Rename to...
11917         (PROCESSOR_74KF1_1): ...this.
11918         (TUNE_74K): Update PROCESSOR_* names.
11919         * config/mips/mips.c (mips_cpu_info): Add 24kf2_1 as a synonym
11920         for 24kf.  Add 24kf1_1 and 24kfx as synonyms for 24kx.  Likewise
11921         the 24ke*, 34k* and 74k* processors.  Update PROCESSOR_* names.
11922         (mips_rtx_cost_data): Update processor names in comments.
11923         (mips_issue_rate): Update PROCESSOR_* names.
11924         * config/mips/mips.md (cpu): Rename 24kf to 24kf2_1, 24kx to
11925         24kf1_1, 74kf to 74kf2_1 and 74kx to 74kf1_1.
11926         * config/mips/24k.md: Rename FPU-related r24k_* insn reservations
11927         to r24kf2_1_*.  Rename r24kx_* insn reservations to r24kf1_1_*.
11928         Update cpu attribute names.
11929         (r24k_fpu_iss): Rename this reservation to...
11930         (r24kf2_1_fpu_iss): ...this and update all uses.
11931         (r24kx_fpu_iss): Rename this reservation to...
11932         (r24kf1_1_fpu_iss): ...this and update all uses.
11933         * config/mips/74k.md: Rename FPU-related r74kf_* insn reservations
11934         to r74kf2_1_*.  Rename r74kx_* insn reservations to r74kf1_1_*.
11935         Update cpu attribute names.
11936
11937 2007-07-01  Kaz Kojima  <kkojima@gcc.gnu.org>
11938
11939         * config/m32r/constraints.md: New file.
11940         * config/m32r/m32r.c: Include tm-constrs.h.
11941         (small_data_operand): Use satisfies_constraint_* instead of macro.
11942         (addr24_operand, gen_compare): Likewise.
11943         * config/m32r/m32r.h (REG_CLASS_FROM_LETTER): Remove.
11944         (INT8_P, UPPER16_P, UINT32_P, UINT5_P, INVERTED_SIGNED_8BIT,
11945         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
11946         EXTRA_CONSTRAINT): Likewise.
11947         * config/m32r/m32r.md: Include constraints.md.
11948         (*movsi_insn): Use satisfies_constraint_* instead of macro.
11949         (andsi3, iorsi3, xorsi3, seq_insn+1, sne): Likewise.
11950         * config/m32r/predicates.md (conditional_move_operand): Likewise.
11951         (two_insn_const_operand, int8_operand, uint16_operand,
11952         reg_or_int16_operand, reg_or_uint16_operand,
11953         reg_or_cmp_int16_operand, cmp_int16_operand,
11954         seth_add3_operand): Likewise.
11955
11956 2007-07-03  Eric Christopher  <echristo@gmail.com>
11957
11958         * libgcc2.h: Conditionally declare __bswapsi2 and
11959         __bswapdi2.
11960         
11961 2007-07-03  H.J. Lu  <hongjiu.lu@intel.com>
11962
11963         * ddg.c (check_sccs): Define only if ENABLE_CHECKING is
11964         defined.
11965
11966 2007-07-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
11967
11968         PR target/28307
11969         * gthr-posix.h [SUPPORTS_WEAK && GTHREAD_USE_WEAK]
11970         (__gthrw_pragma): Provide default definition.
11971         (__gthrw2): Use it.
11972         * gthr-posix.c (__gthrw_pragma): Define.
11973
11974 2007-07-03  Daniel Berlin  <dberlin@dberlin.org>
11975
11976         * tree-ssa-sccvn.c (set_ssa_val_to): Check for operand_equal_p
11977         before declaring inequality.
11978
11979 2007-07-03  Rask Ingemann Lambertsen  <rask@sygehus.dk>
11980
11981         * combine.c (recog_for_combine): Log the success or failure of
11982           matching new insn patterns against the machine description in
11983           detailed dumps.
11984
11985 2007-07-03  Revital Eres  <eres@il.ibm.com>
11986
11987         * ddg.c (print_sccs): New function.
11988         (check_sccs): New function.
11989         (create_ddg_all_sccs): Use it.
11990         * ddg.h (print_sccs): Declare.
11991         * modulo-sched.c (sms_order_nodes): Call print_sccs.
11992
11993 2007-07-03  Uros Bizjak  <ubizjak@gmail.com>
11994
11995         * targhooks.h (default_mode_for_suffix): New function declaration.
11996         * targhooks.c (default_mode_for_suffix): New default target hook.
11997         * target.h (struct c): New structure in the targetm struct.
11998         (mode_for_suffix): New target hook as part of struct c.
11999         target-def.h (TARGET_C_MODE_FOR_SUFFIX): Define as
12000         default_mode_for_suffix.
12001         (TARGET_C): New define.
12002         * c-lex.c: Include "target.h".
12003         (interpret_float): Use targetm.c.mode_for_suffix to determine
12004         the mode for a given non-standard suffix.
12005         Makefile.in (c-lex.o): Depend on $(TARGET_H).
12006
12007         * config/i386/i386.c (ix86_c_mode_for_suffix): New static function.
12008         (TARGET_C_MODE_FOR_SUFFIX): Define to ix86_c_mode_for_suffix.
12009
12010         * doc/extend.texi (Floating Types): New node.  Document __float80 and
12011         __float128 types.  Document 'w', 'W', 'q' and 'Q' suffixes.
12012
12013 2007-07-03  Kaz Kojima  <kkojima@gcc.gnu.org>
12014
12015         PR target/32506
12016         * config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
12017         predicate instead of target_operand.
12018         (divsi3_i1_media, divsi3_media_2): Likewise.
12019
12020 2007-07-02  Eric Botcazou  <ebotcazou@adacore.com>
12021
12022         * tree.h (alias_sets_might_conflict_p): Rename into
12023         alias_sets_must_conflict_p.
12024         * alias.c (alias_sets_might_conflict_p): Likewise.
12025         (alias_sets_conflict_p): Use it.
12026         (objects_must_conflict_p): Likewise.
12027         * c-common.c (strict_aliasing_warning): Adjust.
12028
12029 2007-07-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12030
12031         * rtlhooks.c (gen_lowpart_if_possible): Check for
12032         invalid subreg before calling gen_lowpart_SUBREG.
12033
12034 2007-07-02  Geoffrey Keating  <geoffk@apple.com>
12035
12036         * config/darwin9.h: Add copyright notice.
12037         (LINK_COMMAND_SPEC): Add comment.
12038         (DARWIN_LIBSYSTEM_HAS_UNWIND): Define.
12039         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Conditionalise on
12040         DARWIN_LIBSYSTEM_HAS_UNWIND.
12041
12042 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
12043
12044         PR libgomp/32468
12045         * omp-low.c (check_combined_parallel): New function.
12046         (lower_omp_parallel): Call it via walk_stmts, set
12047         OMP_PARALLEL_COMBINED if appropriate.
12048         (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
12049         isn't the only statement in WS_ENTRY_BB or OMP_RETURN
12050         the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
12051         don't consider it as combined parallel.
12052
12053 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
12054
12055         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
12056         (gcc_tooldir): Likewise.
12057         * configure: Regenerate.
12058         * Makefile.in (libsubdir_to_prefix): New variable, based on the
12059         old configure.ac gcc_tooldir setting.
12060         (prefix_to_exec_prefix): New variable.
12061         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
12062         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
12063
12064 2007-07-02  Daniel Berlin  <dberlin@dberlin.org>
12065
12066         Fix PR tree-optimization/32583
12067         Fix PR tree-optimization/32584
12068         * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
12069         (phi_translate_set): Use phi_translate directly now.
12070         (make_values_for_stmt): Don't value number RHS if we already know
12071         it is constant.
12072
12073 2007-07-02  Steve Ellcey  <sje@cup.hp.com>
12074             Jim Wilson <wilson@specifix.com>
12075
12076         PR target/31684
12077         * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
12078         copy_insn.
12079
12080 2007-07-02  Sandra Loosemore  <sandra@codesourcery.com>
12081             Richard Sandiford  <richard@codesourcery.com>
12082             Nigel Stephens  <nigel@mips.com>
12083
12084         * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
12085         (mips16e_output_save_restore): Declare.
12086         (mips16e_save_restore_pattern_p): Likewise.
12087         * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
12088         * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
12089         for GENERATE_MIPS16E_SAVE_RESTORE.  Return 0x400 for TARGET_MIPS16
12090         && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
12091         (BITSET_P): New global macro, extracted from...
12092         (mips_for_each_saved_reg): ...here.
12093         (mips16e_save_restore_info): New struct.
12094         (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
12095         (mips16e_save_restore_regs): New variable.
12096         (mips_split_plus, mips16e_find_first_register): New functions.
12097         (mips16e_mask_registers): New function.
12098         (compute_frame_size): Expand the commentary before the function.
12099         Enforce the MIPS16e save and restore register range restrictions.
12100         Pad the general register save area at the low end.
12101         (mips16e_save_restore_reg, mips16e_build_save_restore)
12102         (mips16e_save_restore_pattern_p, mips16e_add_register_range)
12103         (mips16e_output_save_restore, mips16e_collect_propagate_value)
12104         (mips16e_collect_argument_save, mips16e_collect_argument_saves):
12105         New functions.
12106         (mips_expand_prologue, mips_expand_epilogue): Handle
12107         GENERATE_MIPS16E_SAVE_RESTORE.
12108         * config/mips/mips.md (*mips16e_save_restore): New pattern.
12109
12110 2007-07-02  Uros Bizjak  <ubizjak@gmail.com>
12111
12112         PR tree-optimization/31966
12113         PR tree-optimization/32533
12114         * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
12115         "basic_block" description as its third argument.  Update function
12116         calls to get destination bb from "edge" argument.  Save "cond" into
12117         aux field of the edge.  Update prototype for changed arguments.
12118         (if_convertible_loop_p): Clear aux field of incoming edges if bb
12119         contains phi node.
12120         (find_phi_replacement_condition): Operate on incoming edges, not
12121         on predecessor blocks.  If there is a condition saved in the
12122         incoming edge aux field, AND it with incoming bb predicate.
12123         Return source bb of the first edge.
12124         (clean_predicate_lists): Clean aux field of outgoing node edges.
12125         (tree_if_conversion): Do not initialize cond variable. Move
12126         variable declaration into the loop.
12127         (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
12128         initializations of new_stmt, arg0 and arg1 variables.
12129
12130 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
12131
12132         * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
12133         SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
12134
12135 2007-07-02  Richard Guenther  <rguenther@suse.de>
12136
12137         * tree-ssa.c (useless_type_conversion_p): Document
12138         future intent as defining the middle-end type system.
12139         Re-structure to call langhook last, group by type class,
12140         mark questionable parts.
12141
12142 2007-07-02  Richard Guenther  <rguenther@suse.de>
12143
12144         * tree-flow.h (types_compatible_p): Declare.
12145         * tree-ssa.c (types_compatible_p): New function.
12146         * ipa-type-escape.c (discover_unique_type): Use
12147         types_compatible_p instead of lang_hooks.types_compatible_p.
12148         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
12149         * tree-vn.c (expressions_equal_p): Likewise.
12150         * tree.c (fields_compatible_p): Likewise.
12151         * tree-ssa-dom.c (avail_expr_eq): Likewise.
12152         (cprop_operand): Use useless_type_conversion_p instead of
12153         lang_hooks.types_compatible_p.
12154         * tree-inline.c (setup_one_parameter): Likewise.
12155         (declare_return_variable): Likewise.
12156         * tree-nrv.c (tree_nrv): Likewise.
12157         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
12158         (maybe_fold_offset_to_component_ref): Likewise.
12159         (maybe_fold_offset_to_reference): Likewise.
12160         * tree-ssa-copy.c (may_propagate_copy): Likewise.
12161         (merge_alias_info): Likewise.
12162         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
12163         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
12164         * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
12165         * tree-tailcall.c (find_tail_calls): Likewise.
12166         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
12167         * gimplify.c (canonicalize_addr_expr): Likewise.
12168         (fold_indirect_ref_rhs): Likewise.
12169         (gimplify_addr_expr): Likewise.  Swap parameters to cpt_same_type.
12170         (cpt_same_type): Likewise.
12171         (check_pointer_types_r): Swap parameters to cpt_same_type
12172         where appropriate.
12173         * fold-const.c (fold_convert): Revert fix for PR15988.
12174         * tree-inline.c (setup_one_parameter): Instead fix it here by
12175         using fold_build1 instead of fold_convert and checking for
12176         error_mark_node.  Convert only if the conversion is necessary.
12177
12178 2007-07-02  Joseph Myers  <joseph@codesourcery.com>
12179
12180         * configure.ac: Check for .gnu_attribute on Power.
12181         * configure: Regenerate.
12182         * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
12183         attribute for floating-point ABI.
12184
12185 2007-07-02  Ira Rosen  <irar@il.ibm.com>
12186
12187         PR tree-optimization/32230
12188         PR tree-optimization/32477
12189         * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base 
12190         address is a constant.
12191
12192 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
12193
12194         * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
12195         (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
12196         (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
12197         stanzas.  Use the first part of the triplet to set MIPS_ISA_DEFAULT.
12198         Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
12199         64-bit targets.  Add support for *-elfoabi*.
12200         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
12201         different settings if $(tm_defines) does not select the EABI.
12202         (MULTILIB_EXCLUSIONS): Define in those circumstances.
12203         * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
12204         (MIPS_ARCH_OPTION_SPEC): Likewise.
12205         (MIPS_ISA_LEVEL_SPEC): Likewise.
12206         (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
12207         * config/mips/elfoabi.h: New file.
12208
12209 2007-07-02  Richard Guenther  <rguenther@suse.de>
12210
12211         * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
12212         (useless_type_conversion_p): ... this.
12213         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
12214         (useless_type_conversion_p): ... this.
12215         * builtins.c (fold_builtin_memory_op): Rename
12216         tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
12217         * tree-cfg.c (verify_expr): Likewise.
12218         * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
12219         * tree-ssa-ccp.c (ccp_fold): Likewise.
12220         * tree-ssa-copy.c (may_propagate_copy): Likewise.
12221         * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
12222         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
12223         * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
12224         * tree-ssa-pre.c (eliminate): Likewise.
12225         * tree-ssa.c (delete_tree_ssa): Likewise.
12226         (tree_ssa_useless_type_conversion): Likewise.
12227         * tree.c (build2_stat): Likewise.
12228
12229 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
12230
12231         Fix PR tree-optimization/32571
12232         * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
12233         simplifying them.
12234
12235 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
12236
12237         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
12238         and other expected operations explicitly, change default to
12239         gcc_unreachable. 
12240
12241 2007-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
12242
12243         * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
12244         PARALLEL.
12245         * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
12246         (tls_load_dot_plus_eight): Move the label number into the unspec.
12247         * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
12248
12249 2007-07-01  Andreas Schwab  <schwab@suse.de>
12250
12251         * dwarf2out.c (initial_return_save): Define only if used.
12252
12253 2007-07-01  Kenneth Zadeck <zadeck@naturalbridge.com>
12254
12255         Unreverting Richard's Revert of:
12256
12257         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
12258
12259         * dce.c (deletable_insn_p_1): New function, split out from...
12260         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
12261         specially, not those inside PARALLELs.  Remove BODY argument
12262         and adjust recursive call accordingly.
12263         (prescan_insns_for_dce): Update call to delete_insn_p.
12264
12265 2007-07-01  Vladimir Yanovsky  <yanov@il.ibm.com>
12266             Revital Eres  <eres@il.ibm.com>
12267
12268         * ddg.c (create_ddg_all_sccs): Fix missed
12269         initialization of scc_nodes.
12270
12271 2007-07-01  Uros Bizjak  <ubizjak@gmail.com>
12272
12273         PR middle-end/32559
12274         * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
12275         X + ~X to 1 only for INTEGRAL_TYPE_P type.
12276
12277 2007-06-30  Joseph Myers  <joseph@codesourcery.com>
12278
12279         * configure.ac: Check for .gnu_attribute on MIPS.
12280         * configure, config.in: Regenerate.
12281         * config/mips/mips.c (mips_file_start): If supported, output
12282         attribute for floating-point ABI.
12283
12284 2007-06-30  Uros Bizjak  <ubizjak@gmail.com>
12285
12286         PR target/32433
12287         * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
12288         (ffs_cmove): New expander to expand using ctz pattern.
12289         (*ffs_cmove): Remove pattern.
12290         (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
12291         (ffsdi2): Expand using ctz pattern.
12292         (*ffs_rex64): Remove pattern.
12293
12294 2007-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12295
12296         PR rtl-optimization/32296
12297         * pa.md (return): Delete pattern.
12298         (return_internal): Remove "(const_int 1)" from pattern.
12299         (epilogue): Use return_internal pattern for trivial returns.
12300         * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
12301         * pa.c (hppa_can_use_return_insn_p): Delete function.  Include "df.h".
12302
12303 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
12304
12305         * tree-ssa-pre.c (is_exception_related): New function
12306         (can_value_number_operation): Use it.
12307
12308 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
12309         
12310         Fix PR tree-optimization/32540
12311         Fix PR tree-optimization/31651
12312
12313         * tree-ssa-sccvn.c: New file.
12314
12315         * tree-ssa-sccvn.h: Ditto.
12316         
12317         * tree-vn.c: Include tree-ssa-sccvn.h
12318         (val_expr_paid_d): Removed.
12319         (value_table): Ditto.
12320         (vn_compute): Ditto.
12321         (val_expr_pair_hash): Ditto.
12322         (val_expr_pair_expr_eq): Ditto.
12323         (copy_vuses_from_stmt): Ditto.
12324         (vn_delete): Ditto.
12325         (vn_init): Ditto.
12326         (shared_vuses_from_stmt): Ditto.
12327         (print_creation_to_file): Moved up.
12328         (sort_vuses): Ditto.
12329         (sort_vuses_heap): Ditto.
12330         (set_value_handle): Make non-static.
12331         (make_value_handle): Ditto.
12332         (vn_add): Rewritten to use sccvn lookups.
12333         (vn_add_with_vuses): Ditto.
12334         (vn_lookup): Ditto (and second argument removed).
12335         (vn_lookup_with_vuses): Ditto.
12336         (vn_lookup_or_add): Ditto (and second argument removed);
12337         (vn_lookup_or_add_with_vuses): Ditto.
12338         (vn_lookup_with_stmt): New.
12339         (vn_lookup_or_add_with_stmt): Ditto.
12340         (create_value_handle_for_expr): Ditto.
12341
12342         * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
12343         (seen_during_translate): New function.
12344         (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
12345         (phi_trans_add): Ditto.
12346         (constant_expr_p): FIELD_DECL is always constant.
12347         (phi_translate_1): Renamed from phi_translate, add seen bitmap.
12348         Use constant_expr_p.
12349         Avoid infinite recursion on mutually valued expressions.
12350         Change callers of vn_lookup_or_add.
12351         (phi_translate): New function.
12352         (compute_antic_safe): Allow phi nodes.
12353         (create_component_ref_by_pieces): Update for FIELD_DECL change.
12354         (find_or_generate_expression): Rewrite slightly.
12355         (create_expression_by_pieces): Updated for vn_lookup_or_add
12356         change.
12357         Update VN_INFO for new names.
12358         (insert_into_preds_of_block): Update for new names.
12359         (add_to_exp_gen): New function.
12360         (add_to_sets): Use vn_lookup_or_add_with_stmt.
12361         (find_existing_value_expr): Rewrite to changed vn_lookup.
12362         (create_value_expr_from): Ditto, and use add_to_exp_gen.
12363         (try_look_through_load): Removed.
12364         (try_combine_conversion): Ditto.
12365         (get_sccvn_value): New function.
12366         (make_values_for_phi): Ditto.
12367         (make_values_for_stmt): Ditto.
12368         (compute_avail): Rewritten for vn_lookup_or_add changes and to use
12369         SCCVN.
12370         (init_pre): Update for SCCVN changes.
12371         (fini_pre): Ditto.
12372         (execute_pre): Ditto.
12373
12374         * tree-flow.h (make_value_handle): Declare.
12375         (set_value_handle): Ditto.
12376         (sort_vuses_heap): Ditto.
12377         (vn_lookup_or_add_with_stmt): Ditto.
12378         (vn_lookup_with_stmt): Ditto.
12379         (vn_compute): Remove.
12380         (vn_init): Ditto.
12381         (vn_delete): Ditto.
12382         (vn_lookup): Update arguments.
12383
12384         * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
12385         (tree-vn.o): Ditto.
12386         (tree-ssa-sccvn.o): New.
12387         (OBJS-common): Add tree-ssa-sccvn.o
12388         
12389 2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12390
12391         PR c/4076
12392         * c-typeck.c (build_external_ref): Don't mark as used if called
12393         from itself.
12394         * calls.c (rtx_for_function_call): Likewise.
12395         
12396 2007-06-30  Richard Sandiford  <richard@codesourcery.com>
12397
12398         Revert:
12399
12400         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
12401
12402         * dce.c (deletable_insn_p_1): New function, split out from...
12403         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
12404         specially, not those inside PARALLELs.  Remove BODY argument
12405         and adjust recursive call accordingly.
12406         (prescan_insns_for_dce): Update call to delete_insn_p.
12407
12408 2007-06-30  Rask Ingemann Lambertsen <rask@sygehus.dk>
12409
12410         * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
12411         (try_combine): Move potential calls to undo_all() so they happen
12412         before we commit to using the combined insns.
12413
12414 2006-06-30  Jan Hubicka  <jh@suse.cz>
12415
12416         * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
12417         code.
12418
12419 2006-06-30  Thomas Neumann  <tneumann@users.sourceforge.net>
12420
12421         * ipa.c (cgraph_postorder): Cast according to the coding conventions.
12422         (cgraph_remove_unreachable_nodes): Likewise.
12423         * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
12424         * ipa-inline.c (update_caller_keys): Cast according to the coding
12425         conventions.
12426         (cgraph_decide_recursive_inlining): Likewise.
12427         (cgraph_decide_inlining_of_small_function): Likewise.
12428         (try_inline): Likewise.
12429         (cgraph_decide_inlining_incrementally): Likewise.
12430         * ipa-pure-const.c (get_function_state): Likewise.
12431         (scan_function): Likewise.
12432         (analyze_function): Likewise.
12433         (static_execute): Likewise.
12434         * ipa-reference.c (scan_for_static_refs): Likewise.
12435         (merge_callee_local_info): Likewise.
12436         (analyze_function): Use type safe memory macros.
12437         (static_execute): Likewise. Cast according to the coding conventions.
12438         * ipa-type-escape.c (scan_for_regs): Cast according to the coding
12439         conventions.
12440         * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
12441         names.
12442         (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
12443         * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
12444         variable names.
12445
12446 2007-06-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12447
12448         PR middle-end/30024
12449         * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
12450         for complex modes (both int and real).
12451
12452 2007-06-29  Jan Hubicka  <jh@suse.cz>
12453
12454         * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
12455
12456 2007-06-29  Jan Hubicka  <jh@suse.cz>
12457
12458         PR middle-end/32372
12459         * cse.c (cse_insn): Avoid invalid sharing in between register note and
12460         the insn pattern.
12461
12462 2007-06-29  Anatoly Sokolov <aesok@post.ru>
12463
12464         PR target/32335
12465         * config/avr/avr.c: Include dataflow header file.
12466         (expand_prologue): Adjust for prologue insn change.
12467         * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
12468         inside a insn.
12469
12470 2007-06-29  Richard Guenther  <rguenther@suse.de>
12471
12472         PR middle-end/32493
12473         * gimplify.c (gimplify_call_expr): Ignore variable argument parts
12474         during type verification.
12475
12476 2007-06-29  Jan Hubicka  <jh@suse.cz>
12477
12478         * recog.c (validate_change_rtx_1): Unshare TO argument.
12479
12480 2007-06-29  Uros Bizjak  <ubizjak@gmail.com>
12481
12482         PR tree-optimization/24659
12483         * tree-vect-transform.c (vectorizable_call): Handle
12484         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
12485
12486         * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
12487         * config/i386/i386.c (enum ix86_builtins)
12488         [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
12489         (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
12490         description.
12491         (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
12492         const using def_builtin_const.
12493         (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
12494         input operands in the same modes as the result.
12495         (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
12496
12497 2007-06-29  Richard Sandiford  <rsandifo@nildram.co.uk>
12498
12499         * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
12500         (df_set_dead_notes_for_mw): Likewise.
12501
12502 2007-06-29  Eric Botcazou  <ebotcazou@adacore.com>
12503
12504         * c-common.c (pointer_int_sum): Do the negation in sizetype.
12505
12506 2007-06-28  DJ Delorie  <dj@redhat.com>
12507
12508         * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
12509
12510 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
12511
12512         * doc/invoke.texi (C++ Dialect Options): Document
12513         fvisibility-ms-compat.
12514         * c.opt (fvisibility-ms-compat): New.
12515
12516 2007-06-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12517
12518         PR tree-opt/32417
12519         * tree-affine.c (aff_combination_add_elt): Handle
12520         pointer addition specially.
12521
12522 2007-06-28  Jakub Jelinek  <jakub@redhat.com>
12523
12524         * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
12525         decl is non-external for AIX ABI.
12526
12527 2007-06-28  David Edelsohn  <edelsohn@gnu.org>
12528
12529         * config/rs6000/predicates.md (current_file_function_operand):
12530         Ensure the symbol is non-external for AIX ABI.
12531
12532 2007-06-28  Nick Clifton  <nickc@redhat.com>
12533
12534         * common.opt (fipa-matrix-reorg): Add Optimization attribute.
12535         (fdce, fdse, fpredictive-commoning): Likewise.
12536
12537 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
12538
12539         PR other/31400
12540         * gcc.c (process_command): Recognize the new -static-libgfortran
12541         option.
12542
12543 2007-06-27  Rask Ingemann Lambertsen  <rask@sygehus.dk>
12544
12545         PR target/32418
12546         * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
12547         Use a call clobbered hard reg instead of a pseudo reg.
12548
12549 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
12550
12551         * config/sh/sh.md (load_gbr): Use correct operand constraint.
12552
12553 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
12554
12555         PR target/32479
12556         * config/sh/sh.md (udivsi3): Don't wrap the sequence with
12557         REG_LIBCALL and REG_RETVAL notes.
12558         (divsi3, mulsi3): Likewise.
12559         (mulhisi3): Likewise.  Use emit_libcall_block.
12560         (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
12561
12562 2007-06-27  Seongbae Park  <seongbae.park@gmail.com>
12563
12564         PR rtl-optimization/32481
12565         * combine.c (adjust_for_new_dest): Rescan the changed insn.
12566
12567 2007-06-27  Richard Sandiford  <richard@codesourcery.com>
12568
12569         * dce.c (deletable_insn_p_1): New function, split out from...
12570         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
12571         specially, not those inside PARALLELs.  Remove BODY argument
12572         and adjust recursive call accordingly.
12573         (prescan_insns_for_dce): Update call to delete_insn_p.
12574
12575 2007-06-27  Richard Guenther  <rguenther@suse.de>
12576
12577         PR middle-end/32492
12578         * tree.h (fold_convertible_p): Declare.
12579         * fold-const.c (fold_convertible_p): New function.
12580         * gimplify.c (gimplify_call_expr): Use fold_convertible_p
12581         instead of lang_hooks.types_compatible_p.
12582
12583 2007-06-26  Jan Hubicka  <jh@suse.cz>
12584
12585         * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
12586         * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
12587         early use validate_unshare_change.
12588         (reload_combine): Likewise.
12589         * recog.c (change_t): New field unshare.
12590         (validate_change_1): Rename from validate_change; add argument unshare.
12591         (validate_change): Turn into wrapper of validate_change_1; update
12592         prototype for bools.
12593         (validate_unshare_change): New.
12594         (confirm_change_group): Unshare changes if asked for; avoid unnecesary
12595         calls of df_insn_rescan.
12596         * recog.h (validate_change): Replace ints by bools.
12597         (validate_unshare_change): Declare.
12598
12599 2007-06-26  Kenneth Zadeck <zadeck@naturalbridge.com>
12600
12601         * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
12602         
12603 2007-06-26  Steve Ellcey  <sje@cup.hp.com>
12604
12605         * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
12606
12607 2007-06-25  Jan Hubicka  <jh@suse.cz>
12608
12609         * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
12610         uninlinable call.
12611         (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
12612         cgraph_decide_inlining_incrementally): Move uninlinability checks to
12613         places other call site specific checks are performed.
12614
12615 2007-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12616
12617         PR tree-opt/32421
12618         * tree-vect-transform.c (vectorizable_operation): Convert
12619         POINTER_PLUS_EXPR over to PLUS_EXPR.
12620
12621 2007-06-25  Chao-ying Fu  <fu@mips.com>
12622
12623         * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
12624         UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
12625         Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
12626         Document GET_MODE_IBIT, and GET_MODE_FBIT.
12627
12628         * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
12629         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
12630         (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
12631         SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
12632         SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
12633         ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
12634         ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
12635         SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
12636         ALL_FIXED_POINT_MODE_P): New define.
12637         (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
12638         MODE_UACCUM.
12639         (GET_MODE_IBIT, GET_MODE_FBIT): New define.
12640
12641         * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
12642         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
12643         MODE_VECTOR_UACCUM): New mode classes.
12644
12645         * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
12646         UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
12647         Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
12648         USA, UDA, and UTA.
12649
12650         * genmodes.c (struct mode_data): Add ibit and fbit fields.
12651         (blank_mode): Initialize ibit and fbit.
12652         (adj_ibit, adj_fbit): New to adjust ibit and fbit.
12653         (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
12654         MODE_UACCUM.
12655         (new_adjust): Change required_class to required_class_from and
12656         required_class_to for testing within a range.
12657         (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
12658         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
12659         MODE_VECTOR_UACCUM.
12660         (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
12661         (make_fixed_point_mode): New.
12662         (_ADD_ADJUST): Change C to C1 and C2.
12663         (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
12664         use a range for machine classes.
12665         (ADJUST_IBIT, ADJUST_FBIT): New.
12666         (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
12667         CONST_MODE_FBIT.
12668         (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
12669         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
12670         Emit adjustment for ibit and fbit.
12671         (emit_mode_ibit, emit_mode_fbit): New.
12672         (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
12673
12674 2007-06-25  Nathan Froyd  <froydnj@codesourcery.com>
12675
12676         * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
12677         as the source of the set.
12678
12679 2007-06-25  Roman Zippel <zippel@linux-m68k.org>
12680
12681         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
12682         FP_REGNO_P): Use IN_RANGE.
12683         (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
12684         (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
12685         (DATA_REG_P): Use DATA_REGNO_P.
12686         (FP_REG_P): Use FP_REGNO_P.
12687         (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
12688         * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
12689         REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
12690
12691 2007-06-24  Jan Hubicka  <jh@suse.cz>
12692
12693         PR middle-end/30563
12694         * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
12695
12696 2007-06-24  Sebastian Pop  <sebpop@gmail.com>
12697
12698         PR middle-end/32461
12699         * fold-const.c (fold_binary): Strip nops of operand 0
12700         of BIT_NOT_EXPR before calling operand_equal_p.
12701         * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
12702         * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
12703
12704 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
12705
12706         * doc/extend.texi: Document that dllimport and dllexport imply
12707         default visibility.
12708         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
12709         imported or exported declaration, including type declarations.
12710         * c-common.c (handle_visibility_attribute): Check for conflicts
12711         with dllimport/dllexport.
12712         (c_determine_visibility): Handle dllimport/dllexport as an
12713         explicit visibility atttribute.
12714
12715 2007-06-23  Richard Guenther  <rguenther@suse.de>
12716
12717         PR tree-optimization/16876
12718         PR middle-end/29478
12719         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
12720         for CALL_EXPRs.
12721         * tree-inline.c (initialize_inlined_parameters): Do not call
12722         lang_hooks.tree_inlining.convert_parm_for_inlining.
12723         * cgraphbuild.c (initialize_inline_failed): Set inline failed
12724         reason for mismatched types.
12725         * gimplify.c (gimplify_call_expr): Verify the call expression
12726         arguments match the called function type signature.  Otherwise
12727         mark the call expression to be not considered for inlining
12728         using CALL_CANNOT_INLINE_P flag.
12729         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
12730         edges call expression.
12731         (cgraph_decide_inlining_of_small_function): Likewise.
12732         (cgraph_decide_inlining): Likewise.
12733         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
12734         Remove define.
12735         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
12736         * c-typeck.c (c_convert_parm_for_inlining): Remove.
12737         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
12738         Remove declaration.
12739         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
12740         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
12741         Remove.
12742         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
12743         convert_parm_for_inlining member.
12744
12745 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
12746
12747         PR target/31152
12748         * arm.md (negscc): Match the correct operand for optimized LT0 test.
12749         Remove optimization for GT.
12750
12751 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
12752
12753         PR middle-end/32437
12754         * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
12755         is a PARALLEL.
12756         (prescan_insns_for_dce): Add extra parameter.
12757         
12758 2007-06-23  Jan Hubicka  <jh@suse.cz>
12759
12760         PR middle-end/31541
12761         * gimplify.c (mark_addressable): New function.
12762         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
12763
12764 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
12765
12766         PR middle-end/32374
12767         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
12768
12769 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
12770
12771         PR target/32413
12772         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
12773         moves between MMX/SSE registers to at least 8 units to prevent
12774         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
12775
12776 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
12777
12778         * config/i386/i386.c (override_options): Correct x86_sahf
12779         setting condition.
12780
12781 2007-06-21  David Daney  <ddaney@avtrex.com>
12782
12783         PR target/32406
12784         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
12785         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
12786         (exception_receiver): Renamed to ...
12787         (nonlocal_goto_receiver): ... this.
12788
12789 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
12790
12791         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
12792         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
12793         partial register accesses.
12794
12795 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
12796
12797         * fold-const.c (debug_fold_checksum): Move it under
12798         ENABLE_FOLD_CHECKING.
12799
12800 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
12801
12802         PR middle-end/20623
12803         * tree.h (debug_fold_checksum): Declared.
12804         * fold-const.c (build_fold_addr_expr_with_type_1): New.
12805         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
12806         build_fold_addr_expr_with_type_1.
12807         (fold_addr_expr, debug_fold_checksum): New.
12808         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
12809         (fold_unary, fold_comparison, split_address_to_core_and_offset):
12810         Use fold_addr_expr.
12811         
12812 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
12813
12814         PR tree-optimization/19590
12815         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
12816         of scev is a constant.
12817
12818 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
12819
12820         * df-problems.c (df_note_bb_compute): Made computation of live
12821         info consistent with df_lr.
12822
12823 2007-06-21  Richard Guenther  <rguenther@suse.de>
12824
12825         PR tree-optimization/32453
12826         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
12827         for pointer anti-range.
12828
12829 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
12830
12831         * config/i386/i386.c (processor_target_table): Increase maximum
12832         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
12833         default 64bit.
12834
12835         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
12836         byte alignment if > 8 byte alignment is preferred.
12837         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
12838
12839 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
12840
12841         PR tree-optimization/31866
12842         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
12843         if ASM_EXPR's input is not a SSA_NAME.
12844
12845         PR middle-end/32362
12846         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
12847         but decl is a global var, instead return decl.
12848         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
12849         even for is_global_var decls, if they are private in some outer
12850         context.
12851
12852 2007-06-21  Richard Guenther  <rguenther@suse.de>
12853
12854         PR tree-optimization/32451
12855         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
12856
12857 2007-06-21  Christian Bruel  <christian.bruel@st.com>
12858
12859         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
12860         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
12861         (push_regs): Changed saving order or banked registers.
12862         (sh_expand_epilogue): Likewise.
12863         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
12864         (FIRST_BANKED_REG): Likewise.
12865         (LAST_BANKED_REG): Likewise.
12866         * config/sh/sh.md (banked) New attribute.
12867         (in_delay_slot): Check banked attribute.
12868         
12869 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
12870
12871         PR tree-optimization/32075
12872         * tree-data-ref.c (subscript_dependence_tester_1, 
12873         analyze_miv_subscript, analyze_overlapping_iterations,
12874         add_distance_for_zero_overlaps, build_classic_dist_vector,
12875         subscript_dependence_tester_1, analyze_overlapping_iterations,
12876         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
12877         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
12878         to evolution_function_is_affine_multivariate_p.
12879
12880 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
12881
12882         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
12883
12884 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
12885
12886         PR target/32335
12887         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
12888         for TARGET_A16.
12889         * config/m32c/prologue.md (epilogue_exitd_16): New.
12890         (epilogue_reit_16): New.
12891         (epilogue_exitd): Rename to epilogue_exitd_24.
12892         (epilogue_reit): Rename to epilogue_reit_24.
12893
12894 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
12895             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
12896
12897         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
12898         New counters.
12899         * haifa-sched.c (queue_to_ready): Don't requeue next insn
12900         if dbg_cnt (sched_insn) reaches the limit.
12901         (choose_ready): New parameter INSN_PTR and new return value.
12902         (schedule_block): Handle dbg_cnt (sched_insn). Handle
12903         the new return value from choose_ready.
12904         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
12905         (rest_of_handle_global_alloc): New global_alloc_at_func.
12906
12907 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
12908
12909         PR tree-optimization/25737
12910         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
12911         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
12912         * tree-flow.h (struct fieldoff): Add new field alias_set.
12913         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
12914         argument addressable_type.  Set alias_set of fieldoff.
12915         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
12916         (create_overlap_variables_for): Pass alias_set from fieldoff to
12917         create_sft.
12918         * alias.c (get_alias_set): Use alias_set from SFT if set.
12919
12920 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
12921
12922         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
12923         of a variable as an unsigned HOST_WIDE_INT integer.
12924
12925 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
12926
12927         PR rtl-optimization/32405
12928         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
12929
12930 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
12931
12932         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
12933
12934         PR middle-end/31959
12935         * builtins.c: Include diagnostic.h.
12936         (expand_builtin_expect): Make gcc_assert more permissive.
12937         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
12938
12939         PR inline-asm/32109
12940         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
12941         and !allows_mem.
12942
12943         PR middle-end/32285
12944         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
12945         if ACCUMULATE_OUTGOING_ARGS.
12946
12947 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
12948
12949         * config/m68hc11/m68hc11.c: Include dataflow header file.
12950         (m68hc11_reorg): Port to dataflow.
12951
12952 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
12953
12954         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
12955         (struct df_problem.free_blocks_on_set_blocks): New field.
12956         (struct dataflow.optional_p): New field.
12957         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
12958         (df_live_set_all_dirty): New function.
12959         * df-scan.c (df_scan_alloc): Initialize optional_p.
12960         (problem_SCAN): Initialize free_blocks_on_set_blocks.
12961         * df-core.c (df_set_blocks): Removed use of
12962         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
12963         df_problem.free_blocks_on_set_blocks to determine which blocks are
12964         recycled.
12965         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
12966         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
12967         uses dataflow.optional_p to determine if problem should be
12968         deleted.
12969         (rest_of_handle_df_initialize): Only start live problem if 
12970         -02 or above.
12971         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
12972         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
12973         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
12974         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
12975         problem_NOTE): Initialize free_blocks_on_set_blocks.
12976         (df_lr_bb_local_compute): Recompute luids if df_live problem is
12977         not active.
12978         (df_live_set_all_dirty, df_note_alloc): New function.
12979         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
12980         df_get_live_*.
12981         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
12982         * postreload.c (reload_combine): Ditto.
12983         * cse.c (cse_extended_basic_block): Ditto.
12984         * regmove.c (mark_flags_life_zones): Ditto.
12985         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
12986         erase_matching_seqs): Ditto.
12987         * bt-load.c (compute_defs_uses_and_gen): Ditto.
12988         * integrate (allocate_initial_values): Ditto.
12989         * combine.c (reg_dead_at_p): Ditto.
12990         * resource.c (mark_target_live_regs): Ditto.
12991         * sched-rgn.c (check_live_1, update_live_1): Ditto.
12992         * config/sh/sh.c (find_r0_life_regions): Ditto.
12993         * global.c (rest_of_handle_global_alloc): Only add back df_live
12994         for -O > 1.
12995         * local-alloc.c (rest_of_handle_local_alloc): Only remove
12996         df_live for -O > 1.
12997         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
12998         df_get_live_*.
12999         (if_convert): Make sure df_live is there at -O == 1.
13000         (pass_if_after_combine): Cleanup flags.
13001         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
13002         is there at -O == 1.
13003         
13004 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
13005
13006         * config/arm/arm.c (arm_get_frame_offsets): Set
13007         offsets->locals_base to avoid negative stack size.
13008         (thumb1_expand_prologue): Assert on negative stack size.
13009
13010 2007-06-19  Sebastian Pop  <sebpop@gmail.com>
13011
13012         PR tree-optimization/32367
13013         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
13014         of the chrec has no evolution in that loop.
13015         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
13016
13017 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
13018
13019         * config/xtensa/xtensa.c: Include "df.h".
13020         (xtensa_builtin_saveregs): Use adjust_address instead of
13021         change_address.
13022         (xtensa_va_start): Invoke make_tree with sizetype for
13023         expand_builtin_saveregs and then convert the result to a pointer.
13024         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
13025         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
13026         Subtract argument size from index value as integers and then use
13027         POINTER_PLUS_EXPR to add the result to the array address.
13028         
13029 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
13030
13031         PR target/32335
13032         * config/m32c/m32c.c: Include dataflow header file.
13033         (m32c_emit_prologue): Adjust for prologue insn change.
13034         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
13035         once inside a PARALLEL. Assume frame size passed in operand 0
13036         includes space to save the fb register.
13037         (prologue_enter_24): Likewise.
13038         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
13039
13040 2007-06-19  David Daney  <ddaney@avtrex.com
13041
13042         PR target/32313
13043         * config/mips/mips.md (cprestore): Mark $gp as used.
13044
13045 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
13046
13047         PR target/32369
13048         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
13049         (frv_ifcvt_modify_insn): Likewise.
13050
13051 2007-06-19  Richard Guenther  <rguenther@suse.de>
13052
13053         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
13054         only handle positive offsets that fit in a HOST_WIDE_INT.
13055
13056 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
13057
13058         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
13059         result of rsqrt insn for zero input argument to avoid NaN.
13060
13061 2007-06-19  Richard Guenther  <rguenther@suse.de>
13062
13063         PR middle-end/31950
13064         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
13065
13066 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
13067
13068         PR tree-optimization/32353
13069         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
13070
13071 2007-06-19  Nick Clifton  <nickc@redhat.com>
13072
13073         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
13074
13075 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
13076
13077         PR target/32389
13078         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
13079         * config/i386/i386.c (assign_386_stack_local): Assert that
13080         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
13081         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
13082         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
13083         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
13084
13085 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
13086
13087         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
13088
13089 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
13090
13091         PR rtl-optimization/32321
13092         * gcse.c (replace_store_insn): Update the note before
13093         calling emit_insn_after.
13094
13095 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
13096
13097         PR middle-end/32355
13098         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
13099         cse_main.
13100         * df-problems.c (df_note_bb_compute): Fix dumping info.
13101         
13102 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
13103
13104         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
13105         insn with emit_jump_insn.
13106
13107 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
13108
13109         PR tree-optimization/32383
13110         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
13111         * targhooks.h (default_builtin_reciprocal): Update prototype.
13112         * target.h (struct gcc_target): Update builtin_reciprocal.
13113         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
13114         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
13115         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
13116         when fndecl is in BUILT_IN_MD class.
13117         (execute_convert_to_rsqrt): Ditto.
13118
13119         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
13120         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
13121         Convert BUILT_IN_SQRTF code only  when md_fn is false.
13122
13123 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
13124
13125         * bt-load.c (move_btr_def): Fix the order of arguments
13126         to validate_replace_rtx.
13127
13128 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
13129
13130         * config/m68k/m68k-devices.def: Add 54450..54455.
13131
13132 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
13133
13134         PR rtl-optimization/32366
13135         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
13136         FLOAT_EXTEND]: Prevent non-scalar modes from entering
13137         significand_size.
13138
13139 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
13140
13141         PR middle-end/32349
13142         * modulo-sched (generate_reg_moves): Added rescan parameter and if
13143         this is true, rescan insn being modified.
13144         (sms_schedule): Added rescan parameter.
13145         (rest_of_handle_sms): Moved freeing of dominance info to before
13146         getting out of cfg_layout.
13147         
13148 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
13149
13150         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
13151         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
13152         appropriate.
13153
13154         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
13155         FL_CF_EMAC from the entry for isac.
13156
13157         * config/m68k/predicates.md (const_call_operand): Adjust comment.
13158         (const_sibcall_operand): New.
13159         (sibcall_operand): Use it.
13160         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
13161         (m68k_isas): ISAC does not imply FPU or EMAC.
13162         (override_options): Add ISA_C logic for symbolic jump & call.
13163
13164 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
13165
13166         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
13167         return mode from the builtin itself.
13168         (sparc_fold_builtin): Fix cast of zero constant.
13169
13170 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
13171
13172         * targhooks.c (default_builtin_reciprocal): New default target hook.
13173         * targhooks.h (default_builtin_reciprocal): Add prototype.
13174         * hooks.c (hook_tree_tree_bool_null): Remove hook.
13175         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
13176         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
13177         default_builtin_reciprocal.
13178
13179 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
13180
13181         PR middle-end/31723
13182         * hooks.c (hook_tree_tree_bool_null): New hook.
13183         * hooks.h (hook_tree_tree_bool_null): Add prototype.
13184         * tree-pass.h (pass_convert_to_rsqrt): Declare.
13185         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
13186         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
13187         and convert it to reciprocal a*rfunc(b).
13188         (execute_convert_to_rsqrt): New function.
13189         (gate_convert_to_rsqrt): New function.
13190         (pass_convert_to_rsqrt): New pass definition.
13191         * target.h (struct gcc_target): Add builtin_reciprocal.
13192         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
13193         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
13194         TARGET_BUILTIN_RECIPROCAL.
13195         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
13196
13197         * config/i386/i386.h (TARGET_RECIP): New define.
13198         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
13199         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
13200         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
13201         and not optimizing for size.
13202         (*rcpsf2_sse): New insn pattern.
13203         (*rsqrtsf2_sse): Ditto.
13204         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
13205         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
13206         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
13207         and not optimizing for size.
13208         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
13209         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
13210         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
13211         and not optimizing for size.
13212         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
13213         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
13214         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
13215         and not optimizing for size.
13216         (*sse_rsqrtv4sf2): Do not export.
13217         (sqrtv4sf2): Ditto.
13218         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
13219         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
13220         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
13221         and not optimizing for size.
13222         (sqrtv4sf2): Ditto.
13223         * config/i386/i386.opt (mrecip): New option.
13224         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
13225         (ix86_emit_swsqrtsf): Ditto.
13226         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
13227         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
13228         builtin definition.
13229         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
13230         ix86_expand_unop1_builtin.
13231         (ix86_emit_swdivsf): New function.
13232         (ix86_emit_swsqrtsf): Ditto.
13233         (ix86_builtin_reciprocal): New function.
13234         (TARGET_BUILTIN_RECIPROCAL): Use it.
13235         (ix86_vectorize_builtin_conversion): Rename from
13236         ix86_builtin_conversion.
13237         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
13238         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
13239         "i386 and x86_64 Options" section.
13240         (Intel 386 and AMD x86_64 Options): Document -mrecip.
13241
13242 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
13243             Zdenek Dvorak <dvorakz@suse.cz>
13244             Richard Guenther  <rguenther@suse.de>
13245             Kaz Kojima  <kkojima@gcc.gnu.org>
13246
13247         * tree-vrp.c (compare_values_warnv): Convert val2 to
13248         the type of val1.
13249         (extract_range_from_assert): Create
13250         POINTER_PLUS_EXPR for pointer types.
13251         (extract_range_from_binary_expr): Handle
13252         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
13253         for pointer types.
13254         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
13255         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
13256         POINTER_PLUS_EXPR as PLUS_EXPR.
13257         (number_of_iterations_lt_to_ne):
13258         For pointer types, use sizetype when
13259         creating MINUS_EXPR/PLUS_EXPRs.
13260         (assert_loop_rolls_lt): For pointer types, use sizetype when
13261         creating MINUS_EXPR/PLUS_EXPRs.
13262         (number_of_iterations_le): Likewise.
13263         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
13264         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
13265         like PLUS_EXPR and MINUS_EXPR.
13266         * tree-pretty-print.c (dump_generic_node): Handle
13267         POINTER_PLUS_EXPR.
13268         (op_prio): Likewise.
13269         (op_symbol_1): Likewise.
13270         * optabs.c (optab_for_tree_code): Likewise.
13271         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
13272         specially.
13273         * tree-tailcall.c (process_assignment): Mention
13274         POINTER_PLUS_EXPR in a TODO comment.
13275         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
13276         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
13277         not used with a pointer and an integer type.
13278         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
13279         increment using chrec_convert_rhs instead of chrec_convert.
13280         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
13281         PLUS_EXPR except for the right hand side's type will be
13282         sizetype.
13283         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
13284         (fold_used_pointer_cast): Kill.
13285         (pointer_offset_p): Kill.
13286         (fold_used_pointer): Kill.
13287         (pointer_used_p): Kill.
13288         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
13289         call fold_used_pointer.
13290         (instantiate_parameters_1): Convert the increment
13291         using chrec_convert_rhs instead of chrec_convert.
13292         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
13293         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
13294         instead of PLUS_EXPR.
13295         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
13296         PLUS_EXPR for pointers.
13297         (std_gimplify_va_arg_expr): Likewise.
13298         (fold_builtin_memory_op): Likewise.
13299         (fold_builtin_strstr): Likewise.
13300         (fold_builtin_strchr): Likewise.
13301         (fold_builtin_strrchr): Likewise.
13302         (fold_builtin_strpbrk): Likewise.
13303         (expand_builtin_memory_chk): Likewise.
13304         (fold_builtin_memory_chk): Likewise.
13305         (std_expand_builtin_va_start): Use
13306         sizetype for the call to make_tree and then convert
13307         to the pointer type.
13308         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
13309         instead of PLUS_EXPR for adding to a pointer.
13310         (std_gimplify_va_arg_expr): Use fold_build2 for
13311         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
13312         the operands to sizetype first and then cast the BIT_AND_EXPR
13313         back to the pointer type.
13314         * fold-const.c (build_range_check): Handle pointer types
13315         specially.
13316         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
13317         of PLUS_EXPR's. Make sure the offset is converted to
13318         sizetype.
13319         (try_move_mult_to_index): Strip the NOPs from the offset.
13320         Remove code argument and replace all uses with PLUS_EXPR.
13321         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
13322         specially. Don't use a pointer type for MINUS_EXPR.
13323         (fold_unary): Handle for (T1)(X op Y),
13324         only p+ as that is the only as that can be handled for
13325         binary operators now.
13326         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
13327         POINTER_PLUS_EXPR.
13328         <case PLUS_EXPR>: Add folding of PTR+INT into
13329         PTR p+ INT.
13330         Don't call try_move_mult_to_index.
13331         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
13332         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
13333         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
13334         Don't call try_move_mult_to_index.
13335         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
13336         (tree_expr_nonzero_p): Likewise.
13337         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
13338         of PLUS_EXPR for the complex expression folding.
13339         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
13340         first chrec is a pointer type, then the second should
13341         be sizetype and not the first's type.
13342         For POINTER_PLUS_EXPR, use a different right hand side type.
13343         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
13344         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
13345         different right hand side type.
13346         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
13347         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
13348         instead of PLUS_EXPR.
13349         When either operand is zero, convert the other operand.
13350         (chrec_apply): Use chrec_convert_rhs
13351         on the argument x instead of chrec_convert.
13352         (reset_evolution_in_loop): For pointer types, the new_evol
13353         should be sizetype.
13354         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
13355         different right hand side type.
13356         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
13357         (chrec_convert_rhs): New function.
13358         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
13359         different right hand side type.
13360         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
13361         * tree-chrec.h (chrec_convert_rhs): New prototype.
13362         (build_polynomial_chrec): For pointer types, the right hand
13363         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
13364         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
13365         Remove subtraction case as it is always addition now.
13366         Make sure the offset is converted to sizetype.
13367         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
13368         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
13369         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
13370         PLUS_EXPR in pointer type.
13371         Handle POINTER_PLUS_EXPR.
13372         (tree_to_aff_combination): Likewise.
13373         (force_expr_to_var_cost): Likewise.
13374         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
13375         instead of PLUS_EXPR for pointers.
13376         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
13377         instead of PLUS_EXPR of pointer types.
13378         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
13379         as PLUS_EXPR.
13380         (check_va_list_escapes): Likewise.
13381         (check_all_va_list_escapes): Likewise.
13382         * dwarf2out.c (loc_descriptor_from_tree_1):
13383         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
13384         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
13385         (string_constant): Likewise.
13386         * tree-ssa-address.c (tree_mem_ref_addr): When adding
13387         the offset to the base, use POINTER_PLUS_EXPR.
13388         (add_to_parts): Convert the index to sizetype.
13389         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
13390         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
13391         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
13392         Offset only holds something for PLUS_EXPR.
13393         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
13394         a PLUS_EXPR.
13395         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
13396         and not PLUS_EXPR.
13397         (analyze_accesses_for_modify_stmt): Likewise.
13398         Remove comment about the type being integral type as it is
13399         wrong now.
13400         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
13401         PLUS_EXPR.
13402         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
13403         and not PLUS_EXPR.
13404         Correct the type which the artimentic is done in (is now
13405         sizetype).
13406         Reindent one loop.
13407         * tree-data-ref.c (split_constant_offset): Handle
13408         POINTER_PLUS_EXPR
13409         * tree-affine.c (tree_to_aff_combination): Likewise.
13410         * c-typeck.c (build_unary_op): For pointers create the increment
13411         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
13412         for pointers.
13413         * gimplify.c (gimplify_self_mod_expr): Create a
13414         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
13415         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
13416         * tree.def (POINTER_PLUS_EXPR): New tree code.
13417         * tree-predcom.c (ref_at_iteration): If we have a pointer
13418         type do the multiplication in sizetype.
13419         * tree-mudflap.c (mf_xform_derefs_1): Create a
13420         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
13421         * tree-ssa-forwprop.c 
13422         (forward_propagate_addr_into_variable_array_index):
13423         Don't expect there to be a cast for the index as that
13424         does not exist anymore.
13425         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
13426         instead of PLUS_EXPR.
13427         Don't check for the first operand of the POINTER_PLUS_EXPR
13428         was the index as it cannot be.
13429         Call forward_propagate_addr_into_variable_array_index with
13430         the SSA_NAME instead of the statement.
13431         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
13432         (compare_constant): Likewise.
13433         (copy_constant): Likewise.
13434         (compute_reloc_for_constant): Likewise.
13435         (output_addressed_constants): Likewise.
13436         (initializer_constant_valid_p): Likewise.
13437         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
13438         Convert the MIN/MAX of the inner type to the outer
13439         type before comparing them.
13440         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Handle
13441         POINTER_PLUS_EXPR instead of PLUS_EXPR.
13442         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
13443         of PLUS_EXPR for pointers.
13444         * tree-inline.c (estimate_num_insns_1): Handle
13445         POINTER_PLUS_EXPR.
13446         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
13447         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
13448         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
13449         instead of PLUS_EXPR for the pointer increment statement.
13450         (vect_update_ivs_after_vectorizer): For pointer types, create
13451         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
13452         MULT_EXPR in sizetype.
13453         (vect_gen_niters_for_prolog_loop): Add a cast when creating
13454         byte_misalign.
13455         * tree-object-size.c (plus_expr_object_size): Handle
13456         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
13457         code which is trying to figure out which side is a pointer and 
13458         is the index.
13459         (check_for_plus_in_loops_1): Likewise.
13460         (check_for_plus_in_loops): Likewise.
13461         * c-common.c (pointer_int_sum): Create a
13462         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
13463         * tree-ssa-structalias.c (handle_ptr_arith): Handle
13464         only POINTER_PLUS_EXPR.  Removing all the extra
13465         code which is trying to figure out which side is a pointer and 
13466         is the index.
13467         * tree-cfg.c (verify_expr): Add extra checking for pointers and
13468         PLUS_EXPR and MINUS_EXPR.
13469         Also add checking to make sure the operands of POINTER_PLUS_EXPR
13470         are correct.
13471         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
13472         with make_tree, instead of a pointer type.
13473         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
13474         for pointers instead of PLUS_EXPR.
13475         (s390_gimplify_va_arg): Likewise.
13476         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
13477         instead of PLUS_EXPR when doing addition on pointer
13478         types.  Use sizetype for the second operand.
13479         (spu_gimplify_va_arg_expr): Likewise.
13480         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
13481         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
13482         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
13483         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
13484         for the pointer addition and also use size_int/sizetype
13485         for the offset.
13486         (ix86_gimplify_va_arg): Likewise.
13487         Perform BIT_AND_EXPR on sizetype arguments.
13488         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
13489         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
13490         for the pointer additions and also use size_int for the offsets.
13491         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
13492         additions and also use size_int for the offsets.  Perform
13493         BIT_AND_EXPR on sizetype arguments.
13494         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
13495         POINTER_PLUS_EXPR for pointers and create the
13496         BIT_AND_EXPR in sizetype.
13497         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
13498         instead of PLUS_EXPR for pointer addition.
13499         (rs6000_va_start): Likewise.
13500         Also use sizetype for the offset.
13501         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
13502         as PLUS_EXPR/MINUS_EXPR.
13503         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
13504         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
13505         Don't use BIT_AND_EXPR on a pointer type, convert the
13506         expression to sizetype first.
13507         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
13508         for pointers.
13509         (mips_gimplify_va_arg_expr): Likewise.
13510         Don't create BIT_AND_EXPR in a pointer type.
13511
13512 2007-06-15  Eric Christopher  <echristo@apple.com>
13513
13514         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
13515         (x86_64-*-darwin*): Ditto.
13516         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
13517         for above.
13518
13519 2007-06-15  Matthew Wilcox <matthew@wil.cx>
13520
13521         * doc/extend.texi: Document behavior of __attribute__((aligned))
13522         on typedefs.
13523
13524 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
13525
13526         * rtlanal.c (note_stores): Improve documentation.
13527
13528 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
13529
13530         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
13531         LOCAL_LABEL_PREFIX): Delete.
13532         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
13533         (bfin_internal_label): Delete.
13534
13535 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
13536
13537         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
13538         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
13539         otherwise define to LIBGCC2_TF_CEXT.
13540         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
13541         (LIBGCC_TF_CEXT): Ditto.
13542         (TF_SIZE): Ditto.
13543
13544 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
13545
13546         PR rtl-optimization/32339
13547         * df-scan.c (df_uses_record): Don't modify flags but just add to
13548         it for df_ref_record.
13549
13550 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13551
13552         * tree-mudflap.c: Fix whitespace issues.
13553
13554 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
13555
13556         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
13557
13558 2007-06-14  Eric Christopher  <echristo@apple.com>
13559
13560         * config/i386/sse.md (movdi_to_sse): Rewrite body.
13561         (movv4sf): Use gcc_unreachable instead of abort.
13562
13563 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
13564
13565         PR target/32268
13566         * config/i386/sfp-machine.h (CMPtype): New define.
13567         (mach stubs): Use CMPtype instead of int as a return type.
13568
13569 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
13570
13571         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
13572         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
13573         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
13574         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
13575         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
13576         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
13577         config/soft-fp/soft-fp.h: Update from glibc CVS.
13578
13579 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
13580
13581         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
13582
13583 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
13584
13585         PR target/32341
13586         * config/v850/v850.c: Include dataflow header file.
13587         (substitute_ep_register): Fix typo.
13588
13589 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
13590
13591         * configure.ac: Fix earlier checkin.
13592         * configure: Regenerated.
13593
13594 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
13595
13596         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
13597         * aclocal.m4: Regenerate.
13598         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
13599         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
13600         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
13601         * configure: Regenerate.
13602         * Makefile.in (LOOSE_WARN): Subst loose_warn.
13603
13604         * Makefile.in (quickstrap): Build libgcc too.
13605
13606 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
13607
13608         * configure.ac: Add --enable-checking=df.  Explicitly mention that
13609         the variables are initialized as for "release".
13610         * df-core.c: Use it.
13611         * configure: Regenerate.
13612         * config.in: Regenerate.
13613
13614 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
13615
13616         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
13617         validate_replace_rtx instead of replace_rtx.
13618         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
13619
13620 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
13621
13622         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
13623         (DWARF2_UNWIND_INFO): Override default if configured with
13624         SJLJ EH disabled.
13625         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
13626         (ENDFILE_SPEC): Add crtend.o.
13627         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
13628         (ENDFILE_SPEC): Add crtend.o.
13629         (TARGET_USE_JCR_SECTION): Define.
13630         (MD_UNWIND_SUPPORT): Define for 32-bit target.
13631
13632         * config/i386/cygming-crtbegin.c: New file.
13633         * config/i386/cygming-crtend.c: New file.
13634
13635 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
13636
13637         * config/i386/w32-unwind.h: New file.
13638
13639 2007-06-13  Eric Christopher  <echristo@apple.com>
13640
13641         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
13642         the user set a value below STACK_BOUNDARY.
13643
13644 2007-06-13  Thiemo Seufer  <ths@networkno.de>
13645
13646         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
13647         imply -lpthread for -pthread.
13648
13649 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
13650
13651         * basic-block.h: Remove the prototype for
13652         free_basic_block_vars.
13653         * cfglayout.h: Remove the prototype for
13654         insn_locators_initialize.
13655         * tree.h: Remove the prototype for emit_line_note.
13656
13657         * tree-ssa-pre.c (mergephitemp): Remove.
13658         (init_pre): Don't use mergephitemp.
13659
13660 2007-06-13  Eric Christopher  <echristo@apple.com>
13661
13662         * config/i386/i386.c (override_options): If we've specified
13663         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
13664
13665 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
13666
13667         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
13668         is defined.
13669
13670 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
13671
13672         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
13673         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
13674         (eh_store_handler): New pattern.
13675         (eh_return): Emit it instead of a plain move.
13676
13677 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
13678
13679         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
13680         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
13681         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
13682         def_builtin_const.
13683
13684 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
13685
13686         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
13687         (find_next_insn_start, find_load): New functions.
13688         (bfin_reorg): Use them to deal with the fact that parallel insns are
13689         no longer represented as a SEQUENCE.
13690
13691 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
13692
13693         * config/sparc/sparc.c (sparc_override_options): Initialize
13694         fpu mask correctly.
13695
13696 2007-06-13  Dave Korn  <dave.korn@artimi.com>
13697
13698         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
13699         df_get_live_out.
13700
13701 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
13702
13703         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
13704         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
13705         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
13706         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
13707         tree-vect-transform.c: Fix comment typos.  Follow spelling
13708         conventions.
13709
13710 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
13711
13712        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
13713        to the exit block use set.
13714        (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
13715        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
13716        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
13717
13718 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
13719
13720         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
13721         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
13722         to indicate an error.
13723         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters):
13724         New functions.
13725         (dbg_cnt_process_opt): Print an error on a bad argument.
13726         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
13727         * common.opt (-fdbg-cnt-list): New.
13728         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
13729
13730 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
13731
13732         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
13733         flag on ref-all pointers.
13734
13735 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13736
13737         PR middle-end/31579
13738         * expr.c (expand_expr_addr_expr_1): Call expand_expr
13739         for the offset with the modifier as EXPAND_INITIALIZER
13740         if the modifier is EXPAND_INITIALIZER.
13741         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
13742         a register if we had an overflow.
13743
13744 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13745
13746         * real.c (real_isfinite): New.
13747         (real_sqrt): Use it.
13748         * real.h (real_isfinite): New.
13749         * builtins.c: Use it.
13750
13751 2007-06-12  Ian Lance Taylor  <iant@google.com>
13752             Daniel Berlin  <dberlin@dberlin.org>
13753
13754         PR libstdc++/29286
13755         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
13756         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
13757         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
13758         (DECL_NO_TBAA_P): Define.
13759         (struct tree_decl_common): Add no_tbaa_flag field.
13760         * tree-ssa-structalias.c (struct variable_info): Add
13761         no_tbaa_pruning field.
13762         (new_var_info): Initialize no_tbaa_pruning field.
13763         (unify_nodes): Copy no_tbaa_pruning field.
13764         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
13765         (dump_solution_for_var): Print no_tbaa_pruning flag.
13766         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
13767         callers.
13768         (compute_tbaa_pruning): New static function.
13769         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
13770         Call compute_tbaa_pruning.
13771         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
13772         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
13773         * gimple-low.c (lower_stmt): Likewise.
13774         * tree-gimple.c (is_gimple_stmt): Likewise.
13775         * tree-ssa-operands.c (get_expr_operands): Likewise.
13776         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
13777         * tree-inline.c (estimate_num_insns_1): Likewise.
13778         (copy_result_decl_to_var): Likewise.
13779         * expr.c (expand_expr_real_1): Likewise.
13780         * tree-pretty-print.c (dump_generic_node): Likewise.
13781         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
13782         * omp-low.c (omp_copy_decl_2): Likewise.
13783         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
13784         * doc/c-tree.texi (Expression trees): Document
13785         CHANGE_DYNAMIC_TYPE_EXPR.
13786
13787 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13788
13789         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
13790         with !HONOR_NANS and !HONOR_INFINITIES.
13791         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
13792
13793 2007-06-12  Tristan Gingold  <gingold@adacore.com>
13794
13795         * gcov.c: Comments updated.
13796         (source_info): Add file_time field.
13797         (source_index): New variable.
13798         (mutiple_files): New variable.
13799         (generate_results): New function extracted from process_file.
13800         (process_file): Save and restore chain of functions, generate
13801         results and free structures only if not merging results.
13802         (release_structures): File names are now freed in create_file_names
13803         (create_file_names): Free previous file names.
13804         (find_source): File date is now read here and modifications in
13805         source files is checked here.
13806         (read_graph_file): Only reverse order of functions for the current
13807         object file.
13808         (make_gcov_file_name): Do not generate long names if input_name is
13809         NULL.
13810         (output_lines): If merging results do not display graph, data and
13811         runs informations.
13812         Checking source file modification is done in find_source.
13813
13814         * doc/gcov.texi: Append an s to sourcefile.
13815
13816 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
13817
13818         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
13819         (forced_nop): New pattern.
13820         * config/bfin/bfin.c: Include "df.h".
13821         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
13822         (bfin_discover_loop): Use df_get_live_in instead of
13823         global_live_at_start.
13824         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
13825         df_analyze when done.
13826         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
13827         the insns.  Use QImode for the final insn in a bundle.  Call
13828         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
13829         gen_nop.
13830         (reorder_var_tracking_notes): New function.
13831         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
13832         update_life_info.  Call df_analyze after scheduling and bundle
13833         generation.  Call reorder_var_tracking_notes if generating these
13834         notes.  Call df_finish_pass at the end.
13835
13836 2007-06-12  Dirk Mueller  <dmueller@suse.de>
13837
13838         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
13839         a comparison, not an assignment.
13840
13841 2007-06-12  Olivier Hainque  <hainque@adacore.com>
13842
13843         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
13844         Request walking the subtrees only, leaving the current is_lhs/val_only
13845         untouched.
13846         (convert_non_local_reference): Likewise.
13847
13848 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
13849
13850         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
13851
13852 2007-06-12  Richard Guenther  <rguenther@suse.de>
13853
13854         PR tree-optimization/15353
13855         PR tree-optimization/31657
13856         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
13857         * timevar.def: Add TV_TREE_IFCOMBINE.
13858         * tree-pass.h (pass_tree_ifcombine): Declare.
13859         * tree-ssa-ifcombine.c: New file.
13860         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
13861         * tree-flow.h (blocks_in_phiopt_order): Declare.
13862         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
13863         (tree-ssa-ifcombine.o): New dependencies.
13864
13865 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
13866
13867         PR rtl-optimization/32293
13868         * combine.c (simplify_if_then_else): Truncate return from
13869         nonzero_bits() to correct mode.
13870
13871 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
13872
13873         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
13874         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
13875
13876 2007-06-11  Diego Novillo  <dnovillo@google.com>
13877
13878         * Makefile.in (reload1.o-warn): Remove.
13879
13880 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
13881
13882         * combine.c (subst): Use reg_overlap_mentioned_p
13883         instead of comparing register numbers directly.
13884
13885 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
13886
13887         * reload1.c (mark_home_live_1): Use the mode parameter.
13888
13889 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
13890
13891         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
13892         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
13893         word "deferred".
13894         * df-core.c: Ditto.
13895
13896 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
13897
13898         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
13899
13900 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
13901
13902         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
13903         from integer registers.
13904         (FP mode splitters): Handle TFmode.
13905
13906 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
13907
13908         * tree-ssa-structalias.c (find_what_p_points_to): Return false
13909         for ref-all pointers that point-to anything.
13910
13911 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
13912
13913         * config/arm/arm.c (arm_output_dwarf_dtprel,
13914         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
13915
13916 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
13917
13918         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
13919         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
13920         to memory moves.
13921
13922 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
13923
13924         * tree.c (signed_or_unsigned_type_for): New.
13925         (unsigned_type_for): Use signed_or_unsigned_type_for.
13926         (signed_type_for): Use signed_or_unsigned_type_for.
13927         * tree.h (signed_or_unsigned_type_for): New.
13928         (get_signed_or_unsigned_type): Remove.
13929         * fold-const.c (fold_negate_expr): Use signed_type_for instead of
13930         lang_hooks.types.signed_type
13931         (size_diffop): Likewise.
13932         (all_ones_mask_p): Likewise.
13933         (build_range_check): Likewise.
13934         (fold_cond_expr_with_comparison): Likewise.
13935         (fold_cond_expr_with_comparison): Likewise.
13936         (unextend): Likewise.
13937         (extract_muldiv_1): Likewise.
13938         (fold_single_bit_test_into_sign_test): Likewise.
13939         (fold_binary): Likewise.
13940         (fold_ternary): Likewise.
13941         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
13942         instead of get_signed_or_unsigned_type.
13943         * c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
13944         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
13945         * expr.c (signed_or_unsigned_type_for): Use
13946         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
13947         * langhooks.c (get_signed_or_unsigned_type): Remove.
13948         (lhd_signed_or_unsigned_type): Remove.
13949         * langhooks.h (lang_hooks_for_types): Remove signed_type and
13950         signed_or_unsigned_type.
13951         (lhd_signed_or_unsigned_type): Remove.
13952         * expmed.c (make_tree): Use signed_type_for instead of
13953         lang_hooks.types.signed_type.
13954         * c-common.c (same_scalar_type_ignoring_signedness): Use
13955         c_common_signed_type instead of lang_hooks.types.signed_type.
13956         (c_common_unsigned_type): New.
13957         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
13958         (shorten_compare): Use c_common_unsigned_type instead of
13959         c_common_signed_or_unsigned_type.
13960         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
13961         unsigned_type_for.
13962         * convert.c (convert_to_integer): Use signed_type_for instead of
13963         lang_hooks.types.signed_type.
13964         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
13965         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
13966         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
13967         * c-format.c (check_format_types): Use c_common_unsigned_type
13968         instead of unsigned_type_for.
13969         * c-decl.c (groakdeclarator): Likewise.
13970         * c-typeck.c (convert_for_assignment): Likewise.
13971         * c-common.h (c_common_unsigned_type): New.
13972
13973 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
13974
13975         PR target/32280
13976         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
13977         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
13978
13979 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
13980
13981         PR middle-end/32279
13982         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
13983         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
13984
13985 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
13986             Sebastian Pop  <sebpop@gmail.com>
13987
13988         * lambda-code.c (remove_iv): New.
13989         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
13990
13991 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
13992
13993         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
13994         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
13995         * tree-ssa-loop-prefetch.c: Include optabs.h.
13996         (FENCE_FOLLOWING_MOVNT): New macro.
13997         (struct mem_ref): Add independent_p and storent_p fields.
13998         (record_ref): Initalize the new fields.
13999         (gather_memory_references_ref): Return true if the reference
14000         could be analysed.
14001         (gather_memory_references): Check whether all memory accesses
14002         in loop were recorded.
14003         (should_issue_prefetch_p): Return false for nontemporal stores.
14004         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
14005         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
14006         (determine_loop_nest_reuse): Detect independent memory references.
14007         (loop_prefetch_arrays): Call mark_nontemporal_stores.
14008         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
14009         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
14010         * config/i386/i386.h (x86_mfence): Declare.
14011         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
14012         * config/i386/i386.c (x86_mfence): New variable.
14013         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
14014
14015         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
14016         * optabs.c (init_optabs): Initialize storent_optab.
14017         * optabs.h (enum optab_index): Add OTI_storent.
14018         (storent_optab): Declare.
14019         * genopinit.c (optabs): Add initialization for storent_optab.
14020         * tree.h (MOVE_NONTEMPORAL): New macro.
14021         * expr.c (expand_assignment, store_expr, store_constructor_field,
14022         store_constructor, store_field, expand_expr_real_1): Propagate
14023         nontemporality of the expanded store.
14024         (emit_storent_insn): New function.
14025         * expr.h (expand_assignment, store_expr): Declaration changed.
14026         * function.c (assign_parm_setup_reg): Pass false as nontemporality
14027         to expand_assignment.
14028         * stmt.c (expand_asm_expr): Ditto.
14029         * calls.c (initialize_argument_information): Pass false as
14030         nontemporality to store_expr.
14031         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
14032         storentsi): New.
14033
14034 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
14035
14036         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
14037         parameter, use it.
14038         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
14039
14040 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
14041
14042         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
14043         and allow DECL_P here.
14044
14045 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
14046
14047         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
14048         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
14049         track of the size of the expression.
14050         * cfghooks.c (merge_blocks): Remove block from loops structure only
14051         after call of the merge_blocks hook.
14052
14053 2007-06-09  Tom Tromey  <tromey@redhat.com>
14054
14055         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
14056         (deprecated_state): Removed.
14057         (start_decl): Update.
14058         (enum deprecated_states): Moved earlier.
14059         (groktypename): Update.
14060         (push_parm_decl): Likewise.
14061         (grokfield): Likewise.
14062         (start_function): Likewise.
14063
14064 2007-06-09  Ian Lance Taylor  <iant@google.com>
14065
14066         PR tree-optimization/32169
14067         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
14068         CONVERT_EXPR, check whether min and max both converted to an
14069         overflow infinity representation.
14070
14071 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
14072
14073         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
14074         not inserted on the edge.
14075
14076 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
14077
14078         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
14079         instructions if they are supported.
14080         (__divsi3, __umodsi3, __modsi3): Likewise.
14081         (__ashldi3, __ashrdi3, __lshrdi3): New.
14082         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
14083
14084 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
14085             Tony Linthicum <tony.linthicum@amd.com>
14086
14087         * doc/invoke.texi: Add fvect-cost-model flag.
14088         * common.opt (fvect-cost-model): New flag.
14089         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
14090         cost fields in stmt_vec_info struct for STMT.
14091         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
14092         fields in stmt_vec_info struct and access functions for the same.
14093         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
14094         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
14095         load, store and vector to scalar operation.
14096         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
14097         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
14098         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
14099         (TARG_VEC_STORE_COST): Define cost of vector store.
14100         (vect_estimate_min_profitable_iters): Define new function.
14101         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
14102         check to evaluate if loop iterations are less than minimum profitable
14103         iterations determined by cost model or minimum vect loop bound defined
14104         by user, whichever is more conservative.
14105         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
14106         run-time check to evaluate if loop iterations are less than minimum
14107         profitable iterations determined by cost model or minimum vect loop
14108         bound defined by user, whichever is more conservative.
14109         (vect_estimate_min_profitable_iterations): New function to estimate
14110         mimimimum iterartions required for vector version of loop to be
14111         profitable over scalar version.
14112         (vect_model_reduction_cost): New function.
14113         (vect_model_induction_cost): New function.
14114         (vect_model_simple_cost): New function.
14115         (vect_cost_strided_group_size): New function.
14116         (vect_model_store_cost): New function.
14117         (vect_model_load_cost): New function.
14118         (vectorizable_reduction): Call vect_model_reduction_cost during
14119         analysis phase.
14120         (vectorizable_induction): Call vect_model_induction_cost during
14121         analysis phase.
14122         (vectorizable_load): Call vect_model_load_cost during analysis phase.
14123         (vectorizable_store): Call vect_model_store_cost during analysis phase.
14124         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
14125         vectorizable_promotion, vectorizable_demotion): Call
14126         vect_model_simple_cost during analysis phase.
14127
14128 2007-06-08  Simon Baldwin  <simonb@google.com>
14129
14130         * reg-stack.c (get_true_reg): Readability change.  Moved default case
14131         label into direct switch statement scope.
14132
14133 2007-06-08  Simon Baldwin  <simonb@google.com>
14134
14135         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
14136         in gcc_assert() with '==' comparison.
14137
14138 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
14139
14140         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
14141         TARGET_ABM handling of x86_popcnt variable.
14142
14143 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
14144
14145         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
14146         __builtin_copysignq and __builtin_infq built-in functions.
14147
14148 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
14149
14150         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
14151         SSE4.2 section.  Correct built-in function names in SSE4A section.
14152
14153 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
14154
14155         PR tree-optimization/32243
14156         * tree-vect-transform.c (vectorizable_type_promotion): Move check
14157         for ncopies after ratio check between nunits_out and nunits_in.
14158         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
14159
14160 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
14161
14162         PR tree-optimization/32224
14163         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
14164         vectorization upon a non GIMPLE_MODIFY_STMT.
14165
14166 2007-06-08  Christian Bruel  <christian.bruel@st.com>
14167
14168         PR target/29953
14169         * config/sh/sh.md (doloop_end): New pattern and splitter.
14170         * loop-iv.c (simple_rhs_p): Check for hardware registers.
14171
14172 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
14173
14174         PR middle-end/32209
14175         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
14176         functions.
14177         (verify_dominators): Do not change dominance tree.
14178
14179 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
14180
14181         * config/sh/constraints.md: New file.
14182         * config/sh/sh.c: Include tm-constrs.h.
14183         (reg_class_from_letter): Remove.
14184         (prepare_cbranch_operands): Use satisfies_constraint_*
14185         function instead of macro.
14186         (andcosts, broken_move, sh_secondary_reload): Likewise.
14187         * config/sh/predicates.md (trapping_target_operand): Likewise.
14188         (and_operand, arith_operand, arith_reg_or_0_operand,
14189         cmp_operand, logical_operand, target_operand,
14190         ua_address_operand, ua_offset, xor_operand): Likewise.
14191         * config/sh/sh.md: Include constraints.md.
14192         (*movsicc_t_false): Use satisfies_constraint_* function
14193         instead of macro.
14194         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
14195         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
14196         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
14197         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
14198         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
14199         (REG_CLASS_FROM_CONSTRAINT): Remove.
14200         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
14201         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
14202         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
14203         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
14204         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
14205         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
14206         function instead of macro.
14207         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
14208         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
14209         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
14210         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
14211         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
14212         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
14213         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
14214         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
14215         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
14216         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
14217         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
14218         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
14219         EXTRA_CONSTRAINT_STR): Likewise.
14220         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
14221
14222 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
14223
14224         * config/i386/darwin.h (STACK_BOUNDARY): Define.
14225
14226 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
14227
14228         PR c++/30759
14229         * c-common.h (flag_cpp0x): Replaced by...
14230         (cxx_dialect): ... this new variable specifying the C++ dialect that
14231         is used.
14232         * c-common.c (flag_cpp0x): Removed.
14233         (cxx_dialect): Defined.
14234         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
14235         cxx_dialect.
14236         * c-opts.c (c_common_post_options): Likewise.
14237         (set_std_cxx98): Set cxx_dialect to cxx98.
14238         (set_std_cxx0x): Set cxx_dialect to cxx0x.
14239
14240 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
14241             Hui-May Chang <hm.chang@apple.com>
14242
14243         * doc/invoke.texi (Darwin Options): Update documentation for
14244         -mmacosx-version-min.
14245         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
14246         * config/darwin-driver.c: New file.
14247         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
14248         * config/t-darwin (darwin-driver.o): New rule.
14249
14250         * config/darwin-c.c (version_as_macro): Ignore low digit.
14251
14252 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
14253
14254         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
14255         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
14256         (CSGNMODE): New mode macro.
14257         (CSGNVMODE): New mode attribute.
14258         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
14259         expander using CSGNMODE mode macro.  Handle TFmode.
14260         (copysign<mode>3_const): Rename from copysignsf3_const and
14261         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
14262         Handle TFmode.
14263         (copysign<mode>3_var): Rename from copysignsf3_var and
14264         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
14265         Handle TFmode.
14266         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
14267         mode macro.  Handle TFmode.
14268         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
14269         (iortf3, *iortf3): Ditto.
14270         (xortf3, *xortf3): Ditto.
14271         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
14272         TFmode and TImode masks.
14273         (ix86_expand_copysign): Expand TFmode copysign insn.
14274         (IX86_BUILTIN_INFQ): New.
14275         (IX86_BUILTIN_FABSQ): Ditto.
14276         (IX86_BUILTIN_COPYSIGNQ): Ditto.
14277         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
14278         [__builtin_fabsq]: Ditto.
14279         [__builtin_copysignq]: Ditto.
14280         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
14281         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
14282         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
14283         ix86_expand_binop_builtin().
14284
14285 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
14286
14287         * config/xtensa/lib1funcs.asm: Clean up whitespace.
14288
14289 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
14290
14291         PR target/31850
14292         * rtl.h (push_to_sequence2): New.
14293         * emit-rtl.c (push_to_sequence2): New.
14294         * function.c (assign_parm_data_all): Add new fields.
14295         (assign_parm_setup_block): Call push_to_sequence2 instead of
14296         push_to_sequence.
14297         (assign_parm_setup_reg): Ditto.
14298         (assign_parm_setup_stack): Ditto.
14299         (assign_parms_unsplit_complex): Ditto.
14300         (assign_parms): Change field name.
14301
14302 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
14303
14304         PR tree-optimization/32220
14305         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
14306         phi node is reached before defining statement.
14307
14308 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14309
14310         PR tree-opt/32231
14311         * tree-vect-transform.c (vectorizable_call): Call update_stmt
14312         after changing the right hand side of the assignment.
14313
14314 2007-06-06  Eric Christopher  <echristo@apple.com>
14315
14316         * config.gcc (i?86-*-darwin*): Remove arch parameter.
14317         (x86_64-*-darwin*): Ditto.
14318         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
14319         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
14320
14321 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
14322
14323         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
14324         coding conventions.
14325         (add_key): Likewise.
14326         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
14327         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
14328         variable names.
14329         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory
14330         macros.
14331         (add_cost_one_coalesce): Likewise.
14332         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
14333         variable names. Rename orig to orig_name for consistency.
14334         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the
14335         coding conventions.
14336         (cprop_into_successor_phis): Avoid using C++ keywords as variable
14337         names.
14338         (record_equivalences_from_stmt): Likewise.
14339         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
14340         the coding conventions.
14341         (memory_ssa_name_same): Likewise.
14342         (dse_optimize_stmt): Likewise.
14343         (dse_record_phis): Likewise.
14344         (dse_finalize_block): Likewise.
14345         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
14346         keywords as variable names.
14347         (may_move_till): Cast according to the coding conventions.
14348         (force_move_till_expr): Avoid using C++ keywords as variable names.
14349         (force_move_till): Cast according to the coding conventions.
14350         (memref_hash): Likewise.
14351         (memref_eq): Likewise.
14352         (gather_mem_refs_stmt): Likewise.
14353         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid
14354         using C++ keywords as variable names.
14355         (idx_find_step): Cast according to the coding conventions.
14356         (idx_record_use): Likewise.
14357         (find_depends): Likewise.
14358         (prepare_decl_rtl): Likewise.
14359         (mbc_entry_hash): Likewise.
14360         (mbc_entry_eq): Likewise.
14361         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
14362         (simplify_replace_tree): Avoid using C++ keywords as variable names.
14363         (idx_infer_loop_bounds): Cast according to the coding conventions.
14364         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
14365         * tree-ssa-math-opts.c (occ_new ): Likwise.
14366         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
14367         macros.
14368         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as
14369         variable names.
14370         (add_use_op): Likewise.
14371         (add_vop): Likewise.
14372         (add_vuse_op): Likewise.
14373         (add_vdef_op): Likewise.
14374         (get_expr_operands): Likewise.
14375         (push_stmt_changes): Use type safe memory macros.
14376         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
14377         keywords as variable names.
14378         (conditional_replacement): Likewise.
14379         (minmax_replacement): Likewise.
14380         (abs_replacement): Likewise.
14381         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
14382         coding conventions.
14383         (insert_fake_stores): Avoid using C++ keywords as variable names.
14384         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
14385         conventions.
14386         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
14387         (heapvar_insert): Use type safe memory macros.
14388         (new_var_info): Cast according to the coding conventions.
14389         (new_constraint): Likewise.
14390         (remove_preds_and_fake_succs): Use type safe memory macros.
14391         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
14392         conventions.
14393         (thread_single_edge): Likewise.
14394         (thread_through_loop_header): Likewise.
14395
14396 2007-06-06  Eric Christopher  <echristo@apple.com>
14397
14398         * config/i386/i386.c (override_options): Move handling
14399         of TARGET_SUBTARGET* earlier.
14400
14401 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
14402
14403         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
14404         use %n on printf.
14405
14406 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
14407
14408         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
14409         emited outside of basic block.
14410         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
14411         the created blocks.
14412         * rtl.h (delete_insn_chain): Declaration changed.
14413         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
14414         non-removed insns.
14415         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
14416         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
14417         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
14418         to delete_insn_chain.
14419         (rtl_verify_flow_info_1): Verify that the insns in header and footer
14420         do not have bb field set.
14421         (rtl_verify_flow_info): Verify that insns between basic blocks do not
14422         have bb field set.
14423         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
14424         * cfgcleanup.c (try_optimize_cfg): Ditto.
14425
14426 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
14427
14428         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
14429         (lambda_body_vector_new): Use type safe memory macros.
14430         (lambda_linear_expression_new): Likewise.
14431         (lambda_loopnest_new): Likewise.
14432         (lambda_lattice_new): Likewise.
14433         (replace_uses_equiv_to_x_with_y): Cast according to the coding
14434         conventions. Use type safe memory macros.
14435         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
14436         (lambda_body_vector_s): Likewise.
14437         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
14438         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
14439
14440 2007-06-06  Richard Guenther  <rguenther@suse.de>
14441
14442         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
14443         if we need to schedule cfg_cleanup.
14444         (tree_ssa_forward_propagate_single_use_vars): Do so.
14445
14446 2007-06-06  Ian Lance Taylor  <iant@google.com>
14447
14448         * fold-const.c (merge_ranges): If range_successor or
14449         range_predecessor fail, just return 0.
14450
14451 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
14452
14453         PR tree-optimization/32216
14454         * tree-vectorizer.c (supportable_widening_operation): Determine
14455         signedness of FIX_TRUNC_EXPR from output operand.
14456         (supportable_narrowing_operation): Ditto.
14457         * tree-vect-generic.c (expand_vector_operations_1): Determine
14458         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
14459         from input operand.
14460
14461 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
14462
14463         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
14464         (struct pta): ...from here. Change flags to unsigned to avoid
14465         excessive casting (as it is used as a bit mask).
14466         (override_options): Add casts according to the coding convenventions.
14467         (x86_64_elf_unique_section): Likewise.
14468         (examine_argument): Avoid using C++ keywords as variable names.
14469         (construct_container): Likewise.
14470         (legitimize_pic_address): Likewise.
14471         (get_dllimport_decl): Cast according to the coding conventions. Use
14472         type safe memory macros.
14473         (legitimize_address): Cast according to the coding conventions.
14474         (emit_i387_cw_initialization): Corrected the type of slot to enum
14475         ix86_stack_slot.
14476         (ix86_init_machine_status): Use type safe memory macros.
14477         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
14478         (bdesc_pcmpistr): Likewise.
14479         (bdesc_crc32): Likewise.
14480         (bdesc_sse_3arg): Likewise.
14481         (bdesc_2arg): Likewise.
14482         (bdesc_1arg): Likewise.
14483         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
14484         (ix86_expand_sse_pcmpistr): Likewise.
14485         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
14486         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
14487         int to match the langhook definition.
14488         (ix86_builtin_conversion): Change the type of code to unsigned init to
14489         match the langhook definition.
14490         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
14491         names.
14492         (ix86_preferred_output_reload_class): Likewise.
14493         (ix86_cannot_change_mode_class): Likewise.
14494         (ix86_memory_move_cost): Likewise.
14495         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
14496         avoid excessive casting later on.
14497         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
14498
14499 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
14500
14501         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
14502         as flags setting insn.
14503         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
14504
14505 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
14506
14507         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
14508         (UNSPEC_ROUND): New.
14509         ("sse4_1_round<mode>2"): New insn pattern.
14510         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
14511         SSE4.1 targets.
14512         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
14513         expander using SSEMODEF mode macro.  Expand using
14514         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
14515         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
14516         expander using SSEMODEF mode macro.  Expand using
14517         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
14518         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
14519         expander using SSEMODEF mode macro.  Expand using
14520         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
14521         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
14522         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
14523         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
14524         UNSPEC_ROUNDS.
14525
14526 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
14527             Sebastian Pop  <sebpop@gmail.com>
14528
14529         * lambda.h (build_linear_expr): New.
14530         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
14531         Use build_linear_expr, call fold and force_gimple_operand.
14532         (lambda_loopnest_to_gcc_loopnest): Check that there is
14533         something to insert.
14534         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
14535
14536 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
14537
14538         PR preprocessor/23479
14539         * doc/extend.texi: Document the 0b-prefixed binary integer
14540         constant extension.
14541
14542 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
14543
14544         PR tree-optimization/32215
14545         * tree-vectorizer.c (supportable_widening_operation): Return false
14546         for unsupported FIX_TRUNC_EXPR tree code.
14547         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
14548
14549 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
14550
14551         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
14552         register on SPE targets.  Change documentation to reflect
14553         reality.
14554         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
14555         Change FIXED_SCRATCH to 14 and document why we're keeping r14
14556         out of the register allocation pool.
14557         (rs6000_reg_live_or_pic_offset_p): New function.
14558         (rs6000_emit_prologue): Move the actual saving of LR up to free
14559         r0 for holding r11.  Split saving of SPE 64-bit registers into
14560         its own case.  Ensure that offsets will always be in-range for
14561         'evstdd' by using r11 as a scratch register to point at the start
14562         of the SPE save area.  Save r11 if necessary, as it is the static
14563         chain register.
14564         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
14565         into its own case.  Ensure that offsets will always be in-range
14566         for 'evldd' by using r11 as a scratch register to point at the
14567         start of the SPE save area.  Also adjust r11 when restoring
14568         the stack pointer to compensate for pre-loading r11.
14569
14570 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
14571
14572         * cfg.c (init_flow): Use type safe memory macros.
14573         (alloc_block): Likewise.
14574         (unchecked_make_edge): Likewise.
14575         (dump_flow_info): Avoid using C++ keywords as variable names.
14576         (copy_original_table_clear): Cast according to the coding conventions.
14577         (copy_original_table_set): Likewise.
14578         * cfgexpand (label_rtx_for_bb): Likewise.
14579         (expand_gimple_basic_block): Likewise.
14580         * cfghooks.c (dump_bb): Likewise.
14581         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
14582         variable names.
14583         (lv_add_condition_to_bb): Likewise.
14584         * cfglayout (relink_block_chain): Cast according to the coding
14585         conventions.
14586         (fixup_reorder_chain): Likewise.
14587         (fixup_fallthru_exit_predecessor): Likewise.
14588         * cfgloop.c (glb_enum_p): Likewise.
14589         (get_exit_description): Likewise.
14590         (dump_recorded_exit): Likewise.
14591         * cfgloop.h (enum loop_estimation): Move out of struct scope...
14592         (struct loop): ... from here.
14593         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
14594         conventions.
14595         * cfgrtl.c (rtl_create_basic_block): Likewise.
14596         (rtl_split_block): Likewise.
14597         (rtl_dump_bb): Likewise.
14598         (cfg_layout_split_block): Likewise.
14599         (init_rtl_bb_info): Use typesafe memory macros.
14600
14601         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
14602         * graphds.h: Updated all usages of edge to graph_edge.
14603         * graphds.c: Likewise.
14604         * cfgloopanal.c: Likewise.
14605
14606 2007-06-05  Ian Lance Taylor  <iant@google.com>
14607
14608         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
14609         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
14610         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
14611         expression.
14612         (test_for_singularity): Likewise.
14613
14614 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
14615
14616         * config/i386/constraints.md ("Y2"): Replaced by ...
14617         ("Yt"): This.
14618         * config/i386/i386.md: Likewise.
14619         * config/i386/mmx.md: Likewise.
14620         * config/i386/sse.md: Likewise.
14621
14622 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
14623
14624         * config/i386/constraints.md ("z"): Replaced by ...
14625         ("Y0"): This.
14626         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
14627         (sse4_1_blendvps): Likewise.
14628         (sse4_1_pblendvb): Likewise.
14629         (sse4_2_pcmpestr): Likewise.
14630         (sse4_2_pcmpestrm): Likewise.
14631         (sse4_2_pcmpestr_cconly): Likewise.
14632         (sse4_2_pcmpistr): Likewise.
14633         (sse4_2_pcmpistrm): Likewise.
14634         (sse4_2_pcmpistr_cconly): Likewise.
14635
14636 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
14637
14638         * matrix-reorg.c (transform_access_sites): Fix computation.
14639         (transform_allocation_sites): Same.
14640
14641 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
14642
14643         * config/i386/i386.c (override_options): Use
14644         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
14645
14646 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
14647
14648         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
14649         (nonimm_not_xmm0_operand): Ditto.
14650         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
14651         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
14652         as operand[2] predicate.  Require "z" class XMM register for
14653         operand[3].  Adjust asm template.
14654         ("sse4_1_blendvpd"): Ditto.
14655         ("sse4_1_pblendvb"): Ditto.
14656         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
14657         force op2 into xmm0 register for variable blend instructions.
14658
14659 2007-06-04  Tom Tromey  <tromey@redhat.com>
14660
14661         * c-tree.h (start_enum): Update.
14662         (build_enumerator): Likewise.
14663         * c-decl.c (enum_next_value): Removed.
14664         (enum_overflow): Likewise.
14665         (start_enum): Add c_enum_contents argument.  Don't use globals.
14666         (build_enumerator): Likewise.
14667         * c-tree.h (struct c_enum_contents): New struct.
14668
14669 2007-06-04  Tom Tromey  <tromey@redhat.com>
14670
14671         * c-common.c (c_common_get_alias_set): Fix indentation.
14672
14673 2007-06-04  Ian Lance Taylor  <iant@google.com>
14674
14675         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
14676         to overflow, reduce overflow infinity to regular infinity.
14677         (vrp_var_may_overflow): New static function.
14678         (vrp_visit_phi_node): Check vrp_var_may_overflow.
14679
14680 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
14681
14682         * stor-layout.c (layout_type): Remove duplicate code.
14683
14684 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
14685
14686         PR c/32191
14687         * c-common.c (c_define_builtins): Call targetm.init_builtins ()
14688         before build_common_builtin_nodes ().
14689
14690 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
14691
14692         PR target/31733
14693         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
14694
14695 2007-06-04  Jan Hubicka  <jh@suse.cz>
14696
14697         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
14698         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
14699         instead of _stat version.
14700
14701 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
14702
14703         PR tree-optimization/32194
14704         * tree-predcom.c (determine_offset): Check that both references have
14705         the same type.
14706
14707 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
14708
14709         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
14710         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
14711         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
14712         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
14713         Add argument to iterate_fix_dominators call.
14714         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
14715         * gcse.c (hoist_code): Change domby to vector.
14716         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
14717         Add argument to iterate_fix_dominators call.
14718         * loop-doloop.c (doloop_modify): Changed recount_dominator to
14719         recompute_dominator.
14720         * lambda-code.c (perfect_nestify): Ditto.
14721         * cfgloopanal.c: Include graphds.h.
14722         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
14723         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
14724         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
14725         add_edge call.
14726         * graphds.c: New file.
14727         * graphds.h: New file.
14728         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
14729         (get_dominated_by, get_dominated_by_region): Change return type to
14730         vector.
14731         (verify_dominators): Recompute all dominators and compare the results.
14732         (recount_dominator): Renamed to ...
14733         (recompute_dominator): ... this.  Do not check that the block is
14734         dominated by entry.
14735         (iterate_fix_dominators): Reimplemented.
14736         (prune_bbs_to_update_dominators, root_of_dom_tree,
14737         determine_dominators_for_sons): New functions.
14738         * et-forest.c (et_root): New function.
14739         * et-forest.h (et_root): Declare.
14740         * Makefile.in (graphds.o): Add.
14741         (cfgloopanal.o): Add graphds.h dependency.
14742         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
14743         * basic-block.h (get_dominated_by, get_dominated_by_region,
14744         iterate_fix_dominators): Declaration changed.
14745         (recount_dominator): Renamed to ...
14746         (recompute_dominator): ... this.
14747         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
14748         (thread_through_all_blocks): Do not free dominance info.
14749
14750 2007-06-03  Andreas Schwab  <schwab@suse.de>
14751
14752         * config/m68k/m68k.c (override_options): Don't override
14753         REAL_MODE_FORMAT.
14754         * config/m68k/m68k-modes.def (SF, DF): Define to use
14755         motorola_single_format and motorola_double_format, resp.
14756         * real.c (motorola_single_format): Renamed from
14757         coldfire_single_format.
14758         (motorola_double_format): Renamed from coldfire_double_format.
14759         (encode_ieee_extended): Generate a proper canonical NaN image
14760         respecting canonical_nan_lsbs_set.
14761         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
14762         true.
14763         * real.h: Adjust declarations.
14764
14765 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
14766
14767         PR target/32163
14768         * config/sh/sh.md (symGOT_load): Don't schedule insns when
14769         the symbol is generated with the stack protector.
14770
14771 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
14772
14773         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
14774         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
14775         "interrupt".
14776         * doc/extend.texi (interrupt): Mention m68k.
14777
14778 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
14779
14780         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
14781         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
14782         (ix86_expand_sse_pcmpestr): Do not check operands for
14783         "register_operand", when insn operand predicate is "register_operand".
14784         (ix86_expand_sse_pcmpistr): Ditto.
14785
14786 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
14787             Uros Bizjak  <ubizjak@gmail.com>
14788
14789         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
14790         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
14791         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
14792         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
14793         * config/i386/constraints.md ("z"): New register constraint
14794         for members of SSE_FIRST_REG class.
14795         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
14796         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
14797         SSE_FIRST_REG class.
14798         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
14799         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
14800         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
14801         (IX86_BUILTIN_PCMPESTRM128): Likewise.
14802         (IX86_BUILTIN_PCMPESTRA128): Likewise.
14803         (IX86_BUILTIN_PCMPESTRC128): Likewise.
14804         (IX86_BUILTIN_PCMPESTRO128): Likewise.
14805         (IX86_BUILTIN_PCMPESTRS128): Likewise.
14806         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
14807         (IX86_BUILTIN_PCMPISTRI128): Likewise.
14808         (IX86_BUILTIN_PCMPISTRM128): Likewise.
14809         (IX86_BUILTIN_PCMPISTRA128): Likewise.
14810         (IX86_BUILTIN_PCMPISTRC128): Likewise.
14811         (IX86_BUILTIN_PCMPISTRO128): Likewise.
14812         (IX86_BUILTIN_PCMPISTRS128): Likewise.
14813         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
14814         (struct builtin_description): Change "flag" field to unsigned.
14815         (bdesc_pcmpestr): New builtin description table.
14816         (bdesc_pcmpistr): Likewise.
14817         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
14818         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
14819         Initialize pcmp[ei]str[im] insns for SSE4.2.
14820         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
14821         (ix86_expand_sse_pcmpistr): Likewise.
14822         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
14823         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
14824         (UNSPEC_PCMPISTR): Likewise.
14825         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
14826         (sse4_2_pcmpestri):New isns pattern.
14827         (sse4_2_pcmpestrm): Likewise.
14828         (sse4_2_pcmpestr_cconly): Likewise.
14829         (sse4_2_pcmpistr): New insn patern and splitter.
14830         (sse4_2_pcmpistri):New isns pattern.
14831         (sse4_2_pcmpistrm): Likewise.
14832         (sse4_2_pcmpistr_cconly): Likewise.
14833         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
14834         in SSE4.2.
14835
14836 2007-06-01  David Daney  <ddaney@avtrex.com>
14837
14838         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
14839         LOADGP_ABSOLUTE and not binds_local_p.
14840
14841 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
14842
14843         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
14844
14845 2007-06-01  Ian Lance Taylor  <iant@google.com>
14846
14847         * tree-vrp.c (compare_name_with_value): Always set
14848         used_strict_overflow if we get a result from the variable itself.
14849
14850 2007-06-01  Ian Lance Taylor  <iant@google.com>
14851
14852         PR rtl-optimization/31455
14853         * lower-subreg.c (find_decomposable_subregs): Don't decompose
14854         subregs which have a cast between modes which are not tieable.
14855
14856 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
14857
14858         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
14859         breaks after return statements.
14860
14861 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
14862
14863         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
14864         only after no_new_pseudos.
14865
14866 2007-05-31  Eric Christopher  <echristo@apple.com>
14867
14868         * expr.c (convert_move): Assert that we don't have a BLKmode
14869         operand.
14870         (store_expr): Handle BLKmode moves by calling emit_block_move.
14871
14872 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
14873
14874         * c-typeck.c (build_indirect_ref): Include type in error message.
14875         (build_binary_op): Pass types to binary_op_error.
14876         * c-common.c (binary_op_error): Take two type arguments, print out
14877         types with error.
14878         * c-common.h (binary_op_error): Update prototype.
14879
14880 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
14881
14882         * config/i386/i386.c: Correct coments on -mno-sse4.
14883
14884 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
14885
14886         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
14887         (x86_64-*-*): Likewise.
14888         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
14889         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
14890         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
14891         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
14892         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
14893         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
14894         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
14895         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
14896         (OPTION_MASK_ISA_SSE4): Likewise.
14897         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
14898         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
14899         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
14900         (override_options): Support SSE4.2.
14901         (ix86_build_const_vector): Support SImode and DImode.
14902         (ix86_build_signbit_mask): Likewise.
14903         (ix86_expand_int_vcond): Support V2DImode.
14904         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
14905         (IX86_BUILTIN_CRC32HI): Likewise.
14906         (IX86_BUILTIN_CRC32SI): Likewise.
14907         (IX86_BUILTIN_CRC32DI): Likewise.
14908         (IX86_BUILTIN_PCMPGTQ): Likewise.
14909         (bdesc_crc32): Likewise.
14910         (bdesc_sse_3arg): Likewise.
14911         (ix86_expand_crc32): Likewise.
14912         (ix86_init_mmx_sse_builtins): Support SSE4.2.
14913         (ix86_expand_builtin): Likewise.
14914         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
14915         __SSE4_2__ for -msse4.2.
14916         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
14917         (CRC32MODE): Likewise.
14918         (crc32modesuffix): Likewise.
14919         (crc32modeconstraint): Likewise.
14920         (sse4_2_crc32<mode>): Likewise.
14921         (sse4_2_crc32di): Likewise.
14922         * config/i386/i386.opt (msse4.2): New for SSE4.2.
14923         (msse4): Likewise.
14924         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
14925         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
14926         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
14927         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
14928         (vcondu<mode>): Likewise.
14929         * doc/extend.texi: Document SSE4.2 built-in functions.
14930         * doc/invoke.texi: Document -msse4.2/-msse4.
14931
14932 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
14933
14934         PR tree-optimization/32160
14935         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
14936         variable as gimple reg.
14937         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
14938
14939 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
14940
14941         * gcc.c (main): Don't consider linker options when issuing the
14942         warning about a linker input file not being used.
14943
14944 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14945
14946         * tree-vrp.c (compare_names): Initialize sop.
14947
14948 2007-05-30  Dirk Mueller  <dmueller@suse.de>
14949
14950         * cgraphunit.c (cgraph_analyze_function): Remove
14951         computation of inline parameters.
14952
14953 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
14954
14955         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
14956
14957 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
14958
14959         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
14960         Add vx-common.h.  Include vxworks.h between vx-common.h and
14961         arm/vxworks.h.
14962         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
14963         redefining.
14964         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
14965         (TARGET_ASM_DESTRUCTOR): Likewise.
14966         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
14967         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
14968         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
14969         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
14970         (VXWORKS_ENDIAN_SPEC): Define.
14971         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
14972         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
14973         VXWORKS_* equivalents.
14974         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
14975         (ASM_FILE_START): Delete.
14976         (TARGET_VERSION): Reformat.
14977         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
14978         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
14979         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
14980         (FPBIT, DPBIT): Define.
14981         (fp-bit.c, dp-bit.c): New rules.
14982         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
14983         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
14984         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
14985         * config/arm/arm.h: Include vxworks-dummy.h.
14986         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
14987         Mark with ATTRIBUTE_UNUSED.
14988         (arm_override_options): Do not allow VxWorks RTP PIC to be used
14989         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
14990         make it incompatible with -msingle-pic-base.
14991         (arm_function_ok_for_sibcall): Return false for calls that might
14992         go through a VxWorks PIC PLT entry.
14993         (require_pic_register): New function, split out from...
14994         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
14995         for VxWorks RTPs.
14996         (arm_load_pic_register): Handle the VxWorks RTP initialization
14997         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
14998         (arm_emit_call_insn): New function.
14999         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
15000         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
15001         (pic_offset_arm): New pattern.
15002         (call, call_value): Use arm_emit_call_insn.
15003         (call_internal, call_value_internal): New expanders.
15004         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
15005         VxWorks unless __PIC__.
15006
15007 2007-05-30  Eric Christopher  <echristo@gmail.com>
15008
15009         * genrecog.c: Include regs.h in generated file.
15010         * genemit.c: Ditto. Fix up formatting.
15011         * config/mn10300/constraints.md: New.
15012         * config/mn10300/mn10300.md: Include.
15013         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
15014         Fix up for removed macro.
15015         * config/mn10300/predicates.md (call_address_operand): Ditto.
15016         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
15017         (CONST_OK_FOR_I): Ditto.
15018         (CONST_OK_FOR_J): Ditto.
15019         (CONST_OK_FOR_K): Ditto.
15020         (CONST_OK_FOR_L): Ditto.
15021         (CONST_OK_FOR_M): Ditto.
15022         (CONST_OK_FOR_N): Ditto.
15023         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
15024         (OK_FOR_Q): Ditto.
15025         (OK_FOR_R): Ditto.
15026         (OK_FOR_T): Ditto.
15027         (EXTRA_CONSTRAINT): Ditto.
15028
15029 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
15030
15031         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
15032         Remove defines.
15033         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
15034         OPTION_MASK_ISA_64BIT.
15035         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
15036
15037 2007-05-30  Richard Guenther  <rguenther@suse.de>
15038
15039         PR middle-end/32152
15040         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
15041         types for comparison.
15042         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
15043         with original typed arguments.
15044         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
15045
15046 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
15047
15048         PR tree-optimization/31769
15049         * except.c (duplicate_eh_regions): Clear prev_try if
15050         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
15051
15052 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
15053
15054         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
15055         * tree-ssa-sink.c (statement_sink_location): Return basic block and
15056         bsi of the location where statements should be inserted.
15057         (sink_code_in_bb): Take bsi from statement_sink_location.
15058         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
15059         instead of bsi_start.
15060         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
15061         bsi_insert_after.
15062         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
15063         (bsi_move_before): Document inconsistency with bsi_move_after.
15064         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
15065
15066 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
15067
15068         * config/i386/i386.h (TARGET_ABM): New define.
15069         (TARGET_POPCNT): Ditto.
15070         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
15071         New temporary defines to redefine from OPTION_ISA_* defines.
15072         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
15073         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
15074         (ix86_isa_flags): New extern int declaration.
15075         (TARGET_SUBTARGET_DEFAULT): New define.
15076         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
15077         (TARGET_SUBTARGET32_DEFAULT): Ditto.
15078         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
15079         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
15080         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
15081         * config/i386/darwin.h: Change TARGET_64BIT define to
15082         OPTION_ISA_64BIT.
15083
15084         * config/i386/i386.opt (m3dnowa): Define as undocumented option
15085         using existing "ix86_isa_flags" varible.
15086         (m32, m64): Use existing "ix86_isa_flags" variable.
15087         (mmmx, m3dnow): Ditto.
15088         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
15089         (mabm): Define as non-negative option using "x86_abm" variable.
15090         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
15091
15092         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
15093         Rewrite feature test bitmap.
15094         (ix86_isa_flags): New initialized global int varible.
15095         (ix86_isa_flags_explicit): New static int variable.
15096         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
15097         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
15098         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
15099         target_flags_explicit.
15100         (override_options): Remove "target_enable" and "target_disable" fields
15101         from "struct ptt". Update processor_target_table accordingly. Remove
15102         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
15103         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
15104         "target_flags" and "ix86_isa_flags_explicit" instead of
15105         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
15106         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
15107         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
15108         to true when either of PTA_POPCNT or PTA_ABM is set in
15109         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
15110         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
15111         processor_alias_table flags entry.  Remove handling of
15112         "target_enable" and "target_disable" fields of processor_target_table.
15113         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
15114         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
15115         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
15116         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
15117         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
15118         "target_flags".
15119         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
15120
15121 2007-05-29  David Daney  <ddaney@avtrex.com>
15122
15123         PR gcc/31975
15124         * config/mips/mips.c (mips_output_mi_thunk): Emit
15125         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
15126
15127 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
15128         * config/i386/i386.c (ix86_function_regparm): Added checking of
15129         ix86_force_align_arg_pointer to determine the number of
15130         register parameters.
15131
15132 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
15133
15134         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
15135         (SET_DR_MISALIGNMENT): New.
15136         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
15137         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
15138         Use SET_DR_MISALIGNMENT.
15139         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
15140         pointer.
15141         * tree-data-ref.c (create_data_ref, compute_all_dependences,
15142         find_loop_nest): Export.
15143         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
15144         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
15145         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
15146         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
15147         New macros.
15148         (struct mem_ref): Add field reuse_distance.
15149         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
15150         Initialize reuse_distance field.
15151         (issue_prefetch_ref): Select temporality of prefetch according to
15152         reuse_distance.
15153         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
15154         self_reuse_distance, determine_loop_nest_reuse): New functions.
15155         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
15156         (tree_ssa_prefetch_arrays): Dump L2 cache size.
15157         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
15158         dependency.
15159
15160 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
15161
15162         * tree-ssa-alias.c: Add aliasing overview.
15163
15164 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
15165             Danny Smith  <dannysmith@users.sourceforge.net>
15166
15167         PR target/29498
15168         * config/i386/t-crtfm: Compile crtfastmath.o with
15169         -minline-all-stringops.
15170         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
15171         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
15172
15173 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15174
15175         * doc/md.texi: Document constraints on HP PA-RISC.
15176
15177         * pa/constraints.md: New file.
15178         * pa.md: Include constraints.md.
15179         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
15180         (integer_store_memory_operand, ldil_cint_p): New functions.
15181         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
15182         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
15183         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
15184         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
15185         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
15186
15187 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
15188
15189         PR c/31339
15190         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
15191         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
15192         case POSTDECREMENT_EXPR>): Return the error_mark_node
15193         if either the real or imaginary parts would an
15194         error_mark_node.
15195
15196 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
15197
15198         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
15199         name when we remove it from a call.
15200
15201 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
15202
15203         * targhooks.c (default_narrow_bitfield): Remove.
15204         * targhooks.h: Remove the prototype for
15205         default_narrow_bitfield.
15206
15207         * langhooks-def.h: Remove the prototype for
15208         hook_get_alias_set_0.
15209         * langhooks.c (hook_get_alias_set_0): Remove.
15210
15211         * global.c (EXECUTE_IF_CONFLICT): Remove.
15212
15213 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15214
15215         PR tree-opt/32100
15216         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
15217         return true when truth_value_p is true and the type
15218         is of signed:1.
15219
15220 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
15221
15222         * doc/install.texi (Prerequisites): We no longer require Autoconf
15223         2.13 for the top-level.
15224
15225 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
15226
15227         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
15228         memory access via x86_expand_vector_move_misalign() only for
15229         TImode values on 32-bit targets.
15230
15231 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
15232
15233         * matrix-reorg.c: New file. Implement matrix flattening and
15234         transposing optimization.
15235         * tree-pass.h: Add matrix reorg pass.
15236         * common.opt: Add fipa-mreorg flag.
15237         * Makefile.in: Add matrix-reorg.c.
15238         * passes.c: Add matrix reorg pass.
15239         * varpool.c (add_new_static_var): New function.
15240         * cgraph.h (add_new_static_var): Declare.
15241
15242 2007-05-27  Eric Christopher  <echristo@apple.com>
15243
15244         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
15245         sp_offset depending on stack size. Save r12 depending
15246         on registers we're saving later.
15247         (rs6000_emit_epilogue): Update sp_offset depending only
15248         on stack size.
15249
15250 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
15251
15252         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
15253         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
15254         * ifcvt.c (if_convert): Ditto.
15255         * tree-ssa-threadupdate.c (thread_block): Ditto.
15256         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
15257         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
15258         verify_loop_closed_ssa): Check number_of_loops instead of
15259         current_loops.
15260         * predict.c (tree_estimate_probability): Ditto.
15261         * tree-if-conv.c (main_tree_if_conversion): Ditto.
15262         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
15263         * modulo-sched.c (sms_schedule): Ditto.
15264         * tree-scalar-evolution.c (scev_const_prop): Ditto.
15265         (scev_finalize): Do not do anything if scev analysis was not
15266         initialized.
15267         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
15268         current_loops == NULL.
15269         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
15270         * loop-init.c (loop_optimizer_init): Do not free current_loops when
15271         there are no loops.
15272         (loop_optimizer_finalize): Assert that loops were analyzed.
15273         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
15274         rtl_doloop): Check number_of_loops instead of current_loops.
15275         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
15276         current_loops == NULL.
15277         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
15278         gate_tree_vectorize tree_linear_transform, check_data_deps,
15279         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
15280         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
15281         Check number_of_loops instead of current_loops.
15282         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
15283         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
15284         free loops if available.
15285         (execute_pre): Do not pass do_fre to fini_pre.
15286
15287 2007-05-27  Tobias Burnus  <burnus@net-b.de>
15288
15289         PR middle-end/32083
15290         * real.c (mpfr_from_real): Fix sign of -Inf.
15291
15292 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
15293
15294         * tree-vect-transform.c (vectorizable_conversion): Initialize
15295         tree_code variables to ERROR_MARK.
15296         (vectorizable_type_demotion): Likewise.
15297         (vectorizable_type_promotion): Likewise.
15298
15299 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
15300
15301         PR target/32065
15302         * config/i386/i386.md (movti): Handle push operands via
15303         ix86_expand_push().
15304
15305 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
15306
15307         * basic-block.h: Remove the prototype for merge_seq_blocks.
15308         * cfgcleanup.c (merge_seq_blocks): Remove.
15309
15310         * tree-flow.h: Remove the prototype for is_aliased_with.
15311         * tree-ssa-alias.c (is_aliased_with): Remove.
15312
15313 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
15314
15315         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
15316
15317         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
15318
15319         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
15320         ix86_expand_sse4_unpack if SSE4.1 is enabled.
15321         (vec_unpacks_hi_v16qi): Likewise.
15322         (vec_unpacku_lo_v16qi): Likewise.
15323         (vec_unpacks_lo_v16qi): Likewise.
15324         (vec_unpacku_hi_v8hi): Likewise.
15325         (vec_unpacks_hi_v8hi): Likewise.
15326         (vec_unpacku_lo_v8hi): Likewise.
15327         (vec_unpacks_lo_v8hi): Likewise.
15328         (vec_unpacku_hi_v4si): Likewise.
15329         (vec_unpacks_hi_v4si): Likewise.
15330         (vec_unpacku_lo_v4si): Likewise.
15331         (vec_unpacks_lo_v4si): Likewise.
15332
15333 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
15334
15335         * c-typeck.c, config/arm/arm.c, config/darwin.c,
15336         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
15337         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
15338         follow spelling conventions in various
15339         warning/error/diagnostic messages.
15340
15341         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
15342         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
15343         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
15344         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
15345         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
15346         * doc/tm.texi: Follow spelling conventions.
15347
15348 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15349
15350         PR tree-opt/32090
15351         * tree-ssa-forwprop.c
15352         (forward_propagate_addr_into_variable_array_index): Remove
15353         the lhs argument.  Use the type of def_rhs instead of lhs.
15354         (forward_propagate_addr_expr_1): Update use of
15355         forward_propagate_addr_into_variable_array_index.
15356
15357 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
15358             Nigel Stephens  <nigel@mips.com>
15359
15360         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
15361         function attributes, "far" being an alias for "long_call".
15362         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
15363         (mips_near_type_p, mips_far_type_p): New.
15364         (mips_comp_type_attributes): New function to check that attributes
15365         attached to a function type are compatible.
15366         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
15367         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
15368         to the target function of the thunk.
15369         (mips_encode_section_info): Check for "near" and "far" function
15370         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
15371
15372         * config/mips/predicates.md (const_call_insn_operand): Test only
15373         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
15374
15375         * doc/extend.texi (Function Attributes): Document MIPS "near" and
15376         "far" attributes.
15377
15378         * testsuite/gcc.target/mips/near-far-1.c: New test case.
15379         * testsuite/gcc.target/mips/near-far-2.c: New test case.
15380         * testsuite/gcc.target/mips/near-far-3.c: New test case.
15381         * testsuite/gcc.target/mips/near-far-4.c: New test case.
15382
15383 2007-05-25  Eric Christopher  <echristo@apple.com>
15384
15385         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
15386         to x86-darwin configurations.
15387         * config/i386/t-darwin: Add softfp support.
15388         * config/i386/t-darwin64: Ditto.
15389         * config/i386/sfp-machine.h: If mach then don't use
15390         aliasing, emit a stub to call.
15391
15392 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
15393
15394         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
15395         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
15396         tree-predcom.c, tree-ssa-alias-warnings.c,
15397         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
15398         comment typos.  Follow spelling conventions.
15399         * doc/cpp.texi, doc/invoke.texi: Fix typos.
15400
15401 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
15402
15403         PR target/32065
15404         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
15405         constants into memory.  Expand unaligned memory references for
15406         SSE modes via x86_expand_vector_move_misalign() function.
15407
15408 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
15409
15410         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
15411         "memory" attribute for "sseishft" type insn without operands[2].
15412
15413 2007-05-25  Dirk Mueller  <dmueller@suse.de>
15414             Marcus Meissner <meissner@suse.de>
15415
15416         * doc/extend.texi (alloc_size): New attribute.
15417         * c-common.c (handle_alloc_size_attribute): New.
15418         * tree-object-size.c (alloc_object_size): Use alloc_size
15419         attribute, if available.
15420
15421 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
15422
15423         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
15424         with MASK_SSE2.
15425         (__builtin_ia32_vec_ext_v2di): Likewise.
15426         (__builtin_ia32_vec_ext_v4si): Likewise.
15427         (__builtin_ia32_vec_ext_v8hi): Likewise.
15428         (__builtin_ia32_vec_ext_v16qi): Likewise.
15429         (__builtin_ia32_vec_set_v8hi): Likewise.
15430
15431 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
15432
15433         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
15434
15435 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
15436
15437         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
15438         (arm_is_longcall_p): Rename to...
15439         (arm_is_long_call_p): ...this.  Take a single tree argument and
15440         return a bool.
15441         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
15442         (CUMULATIVE_ARGS): Remove call_cookie.
15443         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
15444         (ENCODED_LONG_CALL_ATTR_P): Delete.
15445         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
15446         LONG_CALL_FLAG_CHAR cases.
15447         (ARM_DECLARE_FUNCTION_SIZE): Delete.
15448         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
15449         ARM_DECLARE_FUNCTION_SIZE.
15450         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
15451         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
15452         (arm_encode_call_attribute, current_file_function_operand): Delete.
15453         (arm_function_in_section_p): New function.
15454         (arm_is_longcall_p): Rename to...
15455         (arm_is_long_call_p): ...this.  Take the target function as a single
15456         argument and return a bool.  Do not rely on call cookies.  Check
15457         whether the target symbol is in the same section as the current
15458         function, not just the same compilation unit.
15459         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
15460         (arm_encode_section_info): Don't encode a call type.
15461         * config/arm/arm.md (call, call_value): Update calls to
15462         arm_is_long(_)call_p.  Simplify logic.
15463         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
15464         Update calls to arm_is_long(_)call_p.
15465
15466 2007-05-25  Richard Guenther  <rguenther@suse.de>
15467
15468         PR tree-optimization/31982
15469         * tree-ssa-forwprop.c
15470         (forward_propagate_addr_into_variable_array_index): Handle arrays
15471         with element size one.
15472
15473 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15474
15475         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
15476         (umulsi3_highpart): Likewise.
15477
15478 2007-05-24  Ian Lance Taylor  <iant@google.com>
15479
15480         PR rtl-optimization/32069
15481         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
15482         is NULL.
15483
15484 2007-05-24  Ollie Wild  <aaw@google.com>
15485
15486         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
15487         description.
15488
15489 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
15490
15491         * postreload-gcse.c (reg_changed_after_insn_p): New function.
15492         (oprs_unchanged_p): Use it to check all registers in a REG.
15493         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
15494         (reg_set_between_after_reload_p): Delete.
15495         (reg_used_between_after_reload_p): Likewise.
15496         (reg_set_or_used_since_bb_start): Likewise.
15497         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
15498         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
15499         Use reg_set_between_p instead of reg_set_between_after_reload_p.
15500         * rtlanal.c (reg_set_p): Check whether REG overlaps
15501         regs_invalidated_by_call, rather than just checking the
15502         membership of REGNO (REG).
15503
15504 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
15505
15506         * doc/passes.texi: Document predictive commoning.
15507         * doc/invoke.texi (-fpredictive-commoning): Document.
15508         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
15509         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
15510         adding indices to the generated name.
15511         (schedule_sm): Pass 0 to get_lsm_tmp_name.
15512         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
15513         * tree-pretty-print.c (op_symbol_1): Renamed to ...
15514         (op_symbol_code): ... and exported.
15515         (dump_omp_clause, op_symbol): Use op_symbol_code
15516         instead of op_symbol_1.
15517         * tree-pass.h (pass_predcom): Declare.
15518         * timevar.def (TV_PREDCOM): New timevar.
15519         * tree-ssa-loop.c (run_tree_predictive_commoning,
15520         gate_tree_predictive_commoning, pass_predcom): New.
15521         * tree-data-ref.c (find_data_references_in_loop): Find the
15522         references in dominance order.
15523         (canonicalize_base_object_address): Ensure that the result has
15524         pointer type.
15525         (dr_analyze_innermost): Export.
15526         (create_data_ref): Code to fail for references with invariant
15527         address moved ...
15528         (find_data_references_in_stmt): ... here.
15529         * tree-data-ref.h (dr_analyze_innermost): Declare.
15530         * tree-affine.c: Include tree-gimple.h and hashtab.h.
15531         (aff_combination_find_elt, name_expansion_hash,
15532         name_expansion_eq, tree_to_aff_combination_expand,
15533         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
15534         New functions.
15535         * tree-affine.h (aff_combination_constant_multiple_p,
15536         tree_to_aff_combination_expand): Declare.
15537         * tree-predcom.c: New file.
15538         * common.opt (fpredictive-commoning): New option.
15539         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
15540         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
15541         * Makefile.in (tree-predcom.o): Add.
15542         (tree-affine.o): Add TREE_GIMPLE_H dependency.
15543         * passes.c (init_optimization_passes): Add dceloop after
15544         copy propagation in loop optimizer.  Add predictive commoning
15545         to loop optimizer passes.
15546
15547 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
15548
15549         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
15550         default hook.
15551
15552 2007-05-24  Jan Hubicka  <jh@suse.cz>
15553
15554         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
15555         statistics.
15556         (genheader): Include statistics.h.
15557
15558         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
15559         notes are gone.
15560         * print-rtl.c (flag_dump_unnumbered): Update comments.
15561         (print_rtl): Fix my previous change.
15562         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
15563         specific data.
15564
15565 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
15566
15567         PR middle-end/32018
15568         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
15569         set_loop_copy.
15570         (thread_through_all_blocks): Call initialize_original_copy_tables
15571         and free_original_copy_tables.
15572         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
15573         Use set_loop_copy.
15574         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
15575         * cfghooks.c (duplicate_block): Use get_loop_copy.
15576         * cfg.c: Include cfgloop.h.
15577         (loop_copy): New hash table.
15578         (initialize_original_copy_tables): Initialize loop_copy table.
15579         (free_original_copy_tables): Free loop_copy table.
15580         (copy_original_table_clear, copy_original_table_set,
15581         set_loop_copy, get_loop_copy): New functions.
15582         (set_bb_original, set_bb_copy): Use copy_original_table_set.
15583         * cfgloop.h (struct loop): Remove copy field.
15584         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
15585         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
15586
15587 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
15588
15589         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
15590         -msse/-msse2/-msse3.
15591
15592 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
15593
15594         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
15595         __builtin_ia32_vec_set_v2di with MASK_64BIT.
15596
15597 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
15598
15599         PR target/27067
15600         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
15601         * targhooks.h (default_mangle_decl_assembler_name): Declare
15602         default hook.
15603         * targhooks.c (default_mangle_decl_assembler_name): Define
15604         default hook.
15605         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
15606         default hook.
15607         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
15608         * langhooks.c (lhd_set_decl_assembler_name): Call
15609         targetm.mangle_decl_assembler_name for names with global scope.
15610
15611         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
15612         default.
15613         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
15614         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
15615         Declare.
15616         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
15617         New. Factored out of i386_pe_encode_section_info.
15618         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
15619         Move check for prior decoration of stdcall
15620         symbols to i386_pe_encode_section_info.
15621         (i386_pe_encode_section_info): Adjust call to
15622         gen_stdcall_or_fastcall_suffix.  Use
15623         i386_pe_maybe_mangle_decl_assembler_name, if needed.
15624         (i386_pe_mangle_decl_assembler_name): New. Wrap
15625         i386_pe_maybe_mangle_decl_assembler_name.
15626
15627 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
15628
15629         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
15630         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
15631         * langhooks.c (get_signed_or_unsigned_type): Don't check for
15632         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
15633         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
15634         TYPE_UNSIGNED.
15635
15636 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
15637             Nigel Stephens  <nigel@mips.com>
15638             Richard Sandiford  <richard@codesourcery.com>
15639
15640         Fix up MIPS16 hard float and add support for complex.
15641
15642         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
15643         (TARGET_SOFT_FLOAT_ABI): New.
15644         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
15645         __mips_soft_float to reflect the ABI in use, not whether the
15646         FPU is directly accessible (e.g., in MIPS16 mode).
15647         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
15648         (UNITS_PER_FPVALUE): Likewise.
15649
15650         * config/mips/mips.c (mips_expand_call): Remove redundant
15651         TARGET_MIPS16 check.
15652         (mips_arg_regno): New.
15653         (function_arg_advance): When setting bits in cum->fp_code for
15654         MIPS16, don't subtract 1 from cum->arg_number, since it is now
15655         zero-based.
15656         (function_arg): Use mips_arg_regno.
15657         (mips_return_mode_in_fpr_p): New.
15658         (mips16_call_stub_mode_suffix): New.
15659         (mips16_cfun_returns_in_fpr_p): New.
15660         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
15661         (mips_output_function_prologue): Test mips16_hard_float, not
15662         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
15663         (mips_expand_epilogue): Call MIPS16 helper routines to copy
15664         return value into a floating-point register.
15665         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
15666         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
15667         (mips16_fp_args): Handle MIPS32r2 ISA which supports
15668         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
15669         word of double arguments from or to the high bits of 64-bit
15670         floating point registers.
15671         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
15672         (mips16_fpret_double): New helper function.
15673         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
15674         support for complex modes.  Fill in DECL_RESULT for stubdecl.
15675         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
15676
15677         * config/mips/mips16.S
15678         (RET, ARG1, ARG2): New.
15679         (MERGE_GPRf, MERGE_GPRt): New.
15680         (DELAYt, DELAYf): New.
15681         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
15682         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
15683         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
15684         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
15685         (SFOP): Renamed to...
15686         (OPSF3): This, and macro-ified.  Updated all uses.
15687         (SFOP2): Renamed to...
15688         (OPSF2): This, and macro-ified.  Updated all uses.
15689         (SFCMP): Renamed to...
15690         (CMPSF): This, and macro-ified.  Updated all uses.
15691         (SFREVCMP): Renamed to...
15692         (REVCMPSF): This, and macro-ified.  Updated all uses.
15693         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
15694         (LDDBL1, LDDBL2, RETDBL): Deleted.
15695         (DFOP): Renamed to...
15696         (OPDF3): This, and macro-ified.  Updated all uses.
15697         (DFOP2): Renamed to...
15698         (OPDF2): This, and macro-ified.  Updated all uses.
15699         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
15700         (DFCMP): Renamed to...
15701         (CMPDF): This, and macro-ified.  Updated all uses.
15702         (DFREVCMP): Renamed to...
15703         (REVCMPDF): This, and macro-ified.  Updated all uses.
15704         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
15705         (RET_FUNCTION): New.
15706         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
15707         (__mips16_ret_sc, __mips16_ret_dc): New.
15708         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
15709         STUB_ARGS_6, STUB_ARGS_10): New.
15710         (CALL_STUB_NO_RET): New.
15711         (__mips16_call_stub_1): Macro-ified.
15712         (__mips16_call_stub_5): Macro-ified.
15713         (__mips16_call_stub_2): Macro-ified.
15714         (__mips16_call_stub_6): Macro-ified.
15715         (__mips16_call_stub_9): Macro-ified.
15716         (__mips16_call_stub_10): Macro-ified.
15717         (CALL_STUB_RET): New.
15718         (__mips16_call_stub_sf_0): Macro-ified.
15719         (__mips16_call_stub_sf_1): Macro-ified.
15720         (__mips16_call_stub_sf_5): Macro-ified.
15721         (__mips16_call_stub_sf_2): Macro-ified.
15722         (__mips16_call_stub_sf_6): Macro-ified.
15723         (__mips16_call_stub_sf_9): Macro-ified.
15724         (__mips16_call_stub_sf_10): Macro-ified.
15725         (__mips16_call_stub_df_0): Macro-ified.
15726         (__mips16_call_stub_df_1): Macro-ified.
15727         (__mips16_call_stub_df_5): Macro-ified.
15728         (__mips16_call_stub_df_2): Macro-ified.
15729         (__mips16_call_stub_df_6): Macro-ified.
15730         (__mips16_call_stub_df_9): Macro-ified.
15731         (__mips16_call_stub_df_10): Macro-ified.
15732         (__mips16_call_stub_sc_0): New.
15733         (__mips16_call_stub_sc_1): New.
15734         (__mips16_call_stub_sc_5): New.
15735         (__mips16_call_stub_sc_2): New.
15736         (__mips16_call_stub_sc_6): New.
15737         (__mips16_call_stub_sc_9): New.
15738         (__mips16_call_stub_sc_10): New.
15739         (__mips16_call_stub_dc_0): New.
15740         (__mips16_call_stub_dc_1): New.
15741         (__mips16_call_stub_dc_5): New.
15742         (__mips16_call_stub_dc_2): New.
15743         (__mips16_call_stub_dc_6): New.
15744         (__mips16_call_stub_dc_9): New.
15745         (__mips16_call_stub_dc_10): New.
15746
15747         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
15748         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
15749         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
15750
15751 2007-05-23  Ian Lance Taylor  <iant@google.com>
15752
15753         * doc/invoke.texi (Invoking GCC): Document that the order of the
15754         -l option matters.
15755
15756 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
15757
15758         PR target/30987
15759         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
15760         * config/score/predicate.md (const_pow2, const_npow2): Remove.
15761         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
15762         undef.
15763
15764         PR target/30474
15765         * config/score/score.c (score_print_operand): Make sure that only
15766         lower bits are used.
15767
15768 2007-05-22  Ian Lance Taylor  <iant@google.com>
15769
15770         * tree-vrp.c (avoid_overflow_infinity): New static function,
15771         broken out of set_value_range_to_value.
15772         (set_value_range_to_value): Call avoid_overflow_infinity.
15773         (extract_range_from_assert): Likewise.
15774
15775 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15776
15777         PR middle-end/31095
15778          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
15779         change the type before looking for a COMPOUND_EXPR.
15780
15781 2007-05-22  Ian Lance Taylor  <iant@google.com>
15782
15783         * lower-subreg.c (decompose_multiword_subregs): If we change an
15784         insn, call remove_retval_note on it.
15785
15786 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
15787
15788         * regs.h (end_hard_regno): New function.
15789         (END_HARD_REGNO, END_REGNO): New macros.
15790         (add_to_hard_reg_set): New function.
15791         (remove_from_hard_reg_set): Likewise.
15792         (in_hard_reg_set_p): Likewise.
15793         (overlaps_hard_reg_set_p): Likewise.
15794         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
15795         (note_btr_set): Use END_HARD_REGNO.
15796         * caller-save.c (setup_save_areas): Use end_hard_regno.
15797         (mark_set_regs): Use END_HARD_REGNO.
15798         (add_stored_regs): Use end_hard_regno.
15799         (mark_referenced_regs): Use add_to_hard_reg_set.
15800         * combine.c (update_table_tick): Use END_REGNO.
15801         (record_value_for_reg): Likewise.
15802         (record_dead_and_set_regs): Likewise.
15803         (get_last_value_validate): Likewise.
15804         (use_crosses_set_p): Likewise.
15805         (reg_dead_at_p_1): Likewise.
15806         (reg_dead_at_p): Likewise.
15807         (mark_used_regs_combine): Use add_to_hard_reg_set.
15808         (move_deaths): Use END_HARD_REGNO.
15809         (reg_bitfield_target_p): Use end_hard_regno.
15810         (distribute_notes): Use END_HARD_REGNO.
15811         * cse.c (mention_regs): Use END_REGNO.
15812         (insert): Use add_to_hard_reg_set.
15813         (invalidate): Use END_HARD_REGNO.
15814         (invalidate_for_call): Likewise.
15815         (exp_equiv_p): Use END_REGNO.
15816         (cse_insn): Likewise.
15817         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
15818         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
15819         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
15820         * function.c (keep_stack_depressed): Use end_hard_regno.
15821         * global.c (global_alloc): Use end_hard_regno.
15822         (global_conflicts): Use add_to_hard_reg_set instead of
15823         mark_reg_live_nc.
15824         (find_reg): Likewise.
15825         (mark_reg_store): Likewise.
15826         (mark_reg_conflicts): Likewise.
15827         (mark_reg_death): Use remove_from_hard_reg_set.
15828         (mark_reg_live_nc): Delete.
15829         (set_preference): Use end_hard_regno.
15830         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
15831         remove_from_hard_reg_set.
15832         (post_mark_life): Use add_to_hard_reg_set.
15833         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
15834         (reg_becomes_live): Use add_to_hard_reg_set.
15835         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
15836         (peep2_find_free_register): Use add_to_hard_reg_set.
15837         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
15838         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
15839         * regrename.c (note_sets): Use add_to_hard_reg_set.
15840         (clear_dead_regs): Use remove_from_hard_reg_set.
15841         (regrename_optimize): Use add_to_hard_reg_set.
15842         (find_oldest_value_reg): Use in_hard_reg_set_p.
15843         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
15844         (hard_reg_set_here_p): Use end_hard_regno.
15845         (decompose): Likewise.
15846         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
15847         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
15848         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
15849         (mark_home_live): Use end_hard_regno.
15850         (spill_hard_reg): Likewise.
15851         (clear_reload_reg_in_use): Likewise.
15852         * reorg.c (delete_prior_computation): Use END_REGNO.
15853         * resource.c (update_live_status): Use END_HARD_REGNO.
15854         (mark_referenced_resources): Use add_to_hard_reg_set.
15855         (mark_set_resources): Likewise.
15856         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
15857         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
15858         (reg_overlap_mentioned_p): Likewise.
15859         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
15860         (covers_regno_no_parallel_p): Use END_REGNO.
15861         (find_regno_note): Likewise.
15862         (find_reg_fusage): Use END_HARD_REGNO.
15863         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
15864         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
15865
15866 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
15867
15868         * mode-switching.c (reg_dies): Change type of second argument to
15869         "HARD_REG_SET *".
15870         (optimize_mode_switching): Update accordingly.
15871
15872 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
15873
15874         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
15875         in favor of...
15876         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
15877         (hard_reg_set_empty_p): ...these new functions.
15878         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
15879         GO_IF_HARD_REG_SUBSET.
15880         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
15881         instead of GO_IF_HARD_REG_EQUAL.
15882         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
15883         instead of GO_IF_HARD_REG_EQUAL.
15884         * global.c (find_reg): Use hard_reg_set_empty_p instead of
15885         GO_IF_HARD_REG_SUBSET.
15886         (modify_reg_pav): Use hard_reg_set_empty_p instead of
15887         GO_IF_HARD_REG_EQUAL.
15888         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
15889         of GO_IF_HARD_REG_SUBSET.
15890         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
15891         instead of GO_IF_HARD_REG_EQUAL.
15892         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
15893         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
15894         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
15895         of GO_IF_HARD_REG_SUBSET,
15896         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
15897         GO_IF_HARD_REG_SUBSET.
15898         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
15899         instead of GO_IF_HARD_REG_EQUAL.
15900         * config/sh/sh.c (push_regs, calc_live_regs): Use
15901         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
15902         (hard_regs_intersect_p): Delete.
15903
15904 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
15905
15906         * doc/sourcebuild.texi (Test Directives) Add dg-message.
15907
15908 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
15909             Richard Henderson  <rth@redhat.com>
15910
15911         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
15912         extra_headers.
15913         (x86_64-*-*): Likewise.
15914
15915         * i386/i386-modes.def (V2QI): New.
15916
15917         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
15918         SSE4A.
15919         (override_options): Support SSE4.1.
15920         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
15921         (IX86_BUILTIN_BLENDPS): Likewise.
15922         (IX86_BUILTIN_BLENDVPD): Likewise.
15923         (IX86_BUILTIN_BLENDVPS): Likewise.
15924         (IX86_BUILTIN_PBLENDVB128): Likewise.
15925         (IX86_BUILTIN_PBLENDW128): Likewise.
15926         (IX86_BUILTIN_DPPD): Likewise.
15927         (IX86_BUILTIN_DPPS): Likewise.
15928         (IX86_BUILTIN_INSERTPS128): Likewise.
15929         (IX86_BUILTIN_MOVNTDQA): Likewise.
15930         (IX86_BUILTIN_MPSADBW128): Likewise.
15931         (IX86_BUILTIN_PACKUSDW128): Likewise.
15932         (IX86_BUILTIN_PCMPEQQ): Likewise.
15933         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
15934         (IX86_BUILTIN_PMAXSB128): Likewise.
15935         (IX86_BUILTIN_PMAXSD128): Likewise.
15936         (IX86_BUILTIN_PMAXUD128): Likewise.
15937         (IX86_BUILTIN_PMAXUW128): Likewise.
15938         (IX86_BUILTIN_PMINSB128): Likewise.
15939         (IX86_BUILTIN_PMINSD128): Likewise.
15940         (IX86_BUILTIN_PMINUD128): Likewise.
15941         (IX86_BUILTIN_PMINUW128): Likewise.
15942         (IX86_BUILTIN_PMOVSXBW128): Likewise.
15943         (IX86_BUILTIN_PMOVSXBD128): Likewise.
15944         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
15945         (IX86_BUILTIN_PMOVSXWD128): Likewise.
15946         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
15947         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
15948         (IX86_BUILTIN_PMOVZXBW128): Likewise.
15949         (IX86_BUILTIN_PMOVZXBD128): Likewise.
15950         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
15951         (IX86_BUILTIN_PMOVZXWD128): Likewise.
15952         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
15953         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
15954         (IX86_BUILTIN_PMULDQ128): Likewise.
15955         (IX86_BUILTIN_PMULLD128): Likewise.
15956         (IX86_BUILTIN_ROUNDPD): Likewise.
15957         (IX86_BUILTIN_ROUNDPS): Likewise.
15958         (IX86_BUILTIN_ROUNDSD): Likewise.
15959         (IX86_BUILTIN_ROUNDSS): Likewise.
15960         (IX86_BUILTIN_PTESTZ): Likewise.
15961         (IX86_BUILTIN_PTESTC): Likewise.
15962         (IX86_BUILTIN_PTESTNZC): Likewise.
15963         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
15964         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
15965         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
15966         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
15967         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
15968         (bdesc_ptest): New.
15969         (bdesc_sse_3arg): Likewise.
15970         (bdesc_2arg): Likewise.
15971         (bdesc_1arg): Likewise.
15972         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
15973         with 3 args.
15974         (ix86_expand_sse_4_operands_builtin): New.
15975         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
15976         smaller than 8 bits as the 2nd arg.
15977         (ix86_expand_sse_ptest): New.
15978         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
15979         (ix86_expand_vector_set): Support SSE4.1.
15980         (ix86_expand_vector_extract): Likewise.
15981
15982         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
15983         __SSE4_1__ for -msse4.1.
15984
15985         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
15986         (UNSPEC_INSERTPS): Likewise.
15987         (UNSPEC_DP): Likewise.
15988         (UNSPEC_MOVNTDQA): Likewise.
15989         (UNSPEC_MPSADBW): Likewise.
15990         (UNSPEC_PHMINPOSUW): Likewise.
15991         (UNSPEC_PTEST): Likewise.
15992         (UNSPEC_ROUNDP): Likewise.
15993         (UNSPEC_ROUNDS): Likewise.
15994
15995         * config/i386/i386.opt (msse4.1): New for SSE4.1.
15996
15997         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
15998         (const_pow2_1_to_32768_operand): Likewise.
15999
16000         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
16001         file.
16002
16003         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
16004         SSE4.1.
16005         (sse4_1_insertps): Likewise.
16006         (*sse4_1_extractps): Likewise.
16007         (sse4_1_ptest): Likewise.
16008         (sse4_1_mulv2siv2di3): Likewise.
16009         (*sse4_1_mulv4si3): Likewise.
16010         (*sse4_1_smax<mode>3): Likewise.
16011         (*sse4_1_umax<mode>3): Likewise.
16012         (*sse4_1_smin<mode>3): Likewise.
16013         (*sse4_1_umin<mode>3): Likewise.
16014         (sse4_1_eqv2di3): Likewise.
16015         (*sse4_1_pinsrb): Likewise.
16016         (*sse4_1_pinsrd): Likewise.
16017         (*sse4_1_pinsrq): Likewise.
16018         (*sse4_1_pextrb): Likewise.
16019         (*sse4_1_pextrb_memory): Likewise.
16020         (*sse4_1_pextrw_memory): Likewise.
16021         (*sse4_1_pextrq): Likewise.
16022         (sse4_1_blendpd): Likewise.
16023         (sse4_1_blendps): Likewise.
16024         (sse4_1_blendvpd): Likewise.
16025         (sse4_1_blendvps): Likewise.
16026         (sse4_1_dppd): Likewise.
16027         (sse4_1_dpps): Likewise.
16028         (sse4_1_movntdqa): Likewise.
16029         (sse4_1_mpsadbw): Likewise.
16030         (sse4_1_packusdw): Likewise.
16031         (sse4_1_pblendvb): Likewise.
16032         (sse4_1_pblendw): Likewise.
16033         (sse4_1_phminposuw): Likewise.
16034         (sse4_1_extendv8qiv8hi2): Likewise.
16035         (*sse4_1_extendv8qiv8hi2): Likewise.
16036         (sse4_1_extendv4qiv4si2): Likewise.
16037         (*sse4_1_extendv4qiv4si2): Likewise.
16038         (sse4_1_extendv2qiv2di2): Likewise.
16039         (*sse4_1_extendv2qiv2di2): Likewise.
16040         (sse4_1_extendv4hiv4si2): Likewise.
16041         (*sse4_1_extendv4hiv4si2): Likewise.
16042         (sse4_1_extendv2hiv2di2): Likewise.
16043         (*sse4_1_extendv2hiv2di2): Likewise.
16044         (sse4_1_extendv2siv2di2): Likewise.
16045         (*sse4_1_extendv2siv2di2): Likewise.
16046         (sse4_1_zero_extendv8qiv8hi2): Likewise.
16047         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
16048         (sse4_1_zero_extendv4qiv4si2): Likewise.
16049         (*sse4_1_zero_extendv4qiv4si2): Likewise.
16050         (sse4_1_zero_extendv2qiv2di2): Likewise.
16051         (*sse4_1_zero_extendv2qiv2di2): Likewise.
16052         (sse4_1_zero_extendv4hiv4si2): Likewise.
16053         (*sse4_1_zero_extendv4hiv4si2): Likewise.
16054         (sse4_1_zero_extendv2hiv2di2): Likewise.
16055         (*sse4_1_zero_extendv2hiv2di2): Likewise.
16056         (sse4_1_zero_extendv2siv2di2): Likewise.
16057         (*sse4_1_zero_extendv2siv2di2): Likewise.
16058         (sse4_1_roundpd): Likewise.
16059         (sse4_1_roundps): Likewise.
16060         (sse4_1_roundsd): Likewise.
16061         (sse4_1_roundss): Likewise.
16062         (mulv4si3): Don't expand for SSE4.1.
16063         (smax<mode>3): Likewise.
16064         (umaxv4si3): Likewise.
16065         (uminv16qi3): Likewise.
16066         (umin<mode>3): Likewise.
16067         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
16068
16069         * doc/extend.texi: Document SSE4.1 built-in functions.
16070
16071         * doc/invoke.texi: Document -msse4.1.
16072
16073 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
16074
16075         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
16076         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
16077         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
16078         (ASM_SPEC): Add asm_pcrel_spec.
16079         (EXTRA_SPECS): Add asm_pcrel_spec.
16080
16081 2007-05-21  David Daney  <ddaney@avtrex.com>
16082
16083         * doc/install.texi (Building a cross compiler): Add requirements
16084         for Java cross compiler.
16085
16086 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16087
16088         PR middle-end/31995
16089         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
16090         Add loopno argument.  Use evolution_function_is_invariant_rec_p
16091         instead of evolution_function_is_constant_p.
16092         Update calls to evolution_function_is_affine_multivariate_p.
16093         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
16094         Add loopno argument.
16095         * tree-scalar-evolution.c (gather_chrec_stats): Call
16096         evolution_function_is_affine_multivariate_p with a loop
16097         number of 0.
16098         * tree-data-ref.c (analyze_miv_subscript): Likewise.
16099         (analyze_overlapping_iterations): Likewise.
16100         (access_functions_are_affine_or_constant_p): Likewise.
16101         (build_classic_dist_vector_1): If the access functions
16102         are equal, don't do anything.
16103
16104 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
16105             Paolo Carlini  <pcarlini@suse.de>
16106             Uros Bizjak  <ubizjak@gmail.com>
16107
16108         * c-cppbuiltin.c (c_cpp_builtins): Define
16109         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
16110         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
16111         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
16112         * doc/cpp.texi ([Standard Predefined Macros]): Document.
16113
16114 2007-05-21  Mike Stump  <mrs@apple.com>
16115
16116         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
16117         handling as well.
16118         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
16119
16120 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
16121
16122         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
16123         implementation if __OPTIMIZE__ is not defined.
16124         (_mm_alignr_pi8): Ditto.
16125         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
16126         (_mm_inserti_si64): Ditto.
16127         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
16128         (_mm_slli_epi16): Ditto.
16129         (_mm_slli_epi32): Ditto.
16130         (_mm_slli_epi64): Ditto.
16131         (_mm_srai_epi16): Ditto.
16132         (_mm_srai_epi32): Ditto.
16133         (_mm_srli_si128): Ditto.
16134         (_mm_slli_si128): Ditto.
16135         (_mm_srli_epi16): Ditto.
16136         (_mm_srli_epi32): Ditto.
16137         (_mm_srli_epi64): Ditto.
16138         (_mm_extract_epi16): Ditto.
16139         (_mm_insert_epi16): Ditto.
16140         (_mm_shufflehi_epi16): Ditto.
16141         (_mm_shufflelo_epi16): Ditto.
16142         (_mm_shuffle_epi32): Ditto.
16143         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
16144         (_m_pextrw): Ditto.
16145         (_mm_insert_pi16): Ditto.
16146         (_m_pinsrw): Ditto.
16147         (_mm_shuffle_pi16): Ditto.
16148         (_m_pshufw): Ditto.
16149         (_mm_shufle_ps): Ditto.
16150         (_mm_prefetch): Ditto.
16151
16152 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
16153
16154         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
16155         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
16156         * real.c (encode_i370_single, decode_i370_single,
16157         encode_i370_double, decode_i370_double): Functions removed.
16158         (i370_single_format, i370_double_format): Initializations removed.
16159         (real_maxval, round_for_format, exact_real_truncate, significand_size):
16160         Consider the log2_b field to always be one.
16161         (ieee_single_format, mips_single_format, coldfire_single_format,
16162         ieee_double_format, mips_double_format, coldfire_double_format,
16163         ieee_extended_motorola_format, ieee_extended_intel_96_format,
16164         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
16165         ibm_extended_format, mips_extended_format, ieee_quad_format,
16166         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
16167         decimal_single_format, decimal_double_format, decimal_quad_format,
16168         c4x_single_format, c4x_extended_format, real_internal_format): Remove
16169         initialization of log2_b.
16170         * real.h (i370_single_format, i370_double_format): Declarations
16171         removed.
16172         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
16173         field to always be one.
16174
16175 2007-05-21  Andreas Schwab  <schwab@suse.de>
16176
16177         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
16178         NOTE_INSN_BASIC_BLOCK_P.
16179         (process_for_unwind_directive): Likewise.
16180
16181 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
16182
16183         * builtins.c (expand_builtin_setjmp_setup): Update comment.
16184         * function.h (struct function): Move va_list_gpr_size,
16185         va_list_fpr_size, function_frequency to front of bitfields.  Add
16186         calls_unwind_init.
16187         (current_function_calls_unwind_init): New.
16188         * except.c (expand_builtin_unwind_init): Set
16189         current_function_calls_unwind_init not
16190         current_function_has_nonlocal_label.
16191         * reload1.c (has_nonexceptional_receiver): New.
16192         (reload): Use it and current_function_calls_unwind_init to
16193         determine whether call-saved regs must be saved.
16194
16195 2007-05-20  Jan Hubicka  <jh@suse.cz>
16196
16197         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
16198         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
16199         * ddg.c (create_ddg): LIkewise.
16200         * final.c (final): Remove hunk moving line number notes around since
16201         they are no longer present at this stage.
16202         (final_scan_insn): Use NOTE_KIND instead of
16203         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
16204         (output_asm_label): Likewise.
16205         * reorg.c (dbr_schedule): Likewise.
16206         * haifa-sched.c (unlink_other_notes): Likewise.
16207         * mode-switching.c (optimize_mode_switching): Likewise.
16208         * graph.c (start_bb): Likewise.
16209         * rtl.def (NOTE): Update description.
16210         * jump.c (squeeze_notes): Delete.
16211         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
16212         NOTE_INSN_BASIC_BLOCK_P when possible.
16213         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
16214         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
16215         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
16216         (dwarf2out_var_location): Likewise.
16217         * cfgbuild.c (make_edges): Likewise.
16218         (find_basic_blocks_1): Likewise.
16219         * function.c (reorder_blocks_1): Likewise.
16220         (epilogue_done): Likewise.
16221         (reposition_prologue_and_epilogue_notes): Likewise.
16222         * print-rtl.c (print_rtx): Likewise; drop code for printing
16223         line number notes.
16224         (print_rtl): Likewise.
16225         (print_rtl_single): Likewise.
16226         * gcse.c (insert_insn_start_bb): Likewise.
16227         * alias.c (init_alias_analysis): Likewise.
16228         * calls.c (fixup_tail_calls): Likewise.
16229         * except.c (sjlj_emit_function_enter): Likewise.
16230         * emit-rtl.c (add_insn_after): Likeiwse.
16231         (emit_label_before): Likewise.
16232         (emit_label_after): Likewise.
16233         (emit_note_before, emit_note_after, emit_note): Update
16234         parameter to be enum insn_note; do not deal with source
16235         files.
16236         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
16237         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
16238         when possible.
16239         (merge_blocks_move_successor_nojumps): Simplify now when
16240         we don't have BLOCK notes.
16241         (try_optimize_cfg): Likewise.
16242         * cfglayout.c (skip_insns_after_block): Likewise.
16243         (record_effective_endpoints): Likewise.
16244         (duplicate_insn_chain): Likewise.
16245         * varasm.c (output_constant_pool_1): Likewise.
16246         * sched-deps.c (sched_analyze): Likewise.
16247         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
16248         Exterminate.
16249         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
16250         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
16251         (SET_INSN_DELETED): Simplify.
16252         (NOTE_LINE_NUMBER): Exterminate.
16253         (NOTE_LINE_KIND): New.
16254         (NOTE_INSN_BASIC_BLOCK_P): Update.
16255         (enum insn_note): Simplify.
16256         (GET_NOTE_INSN_NAME) Simplify.
16257         (emit_note_before, emit_note_after, emit_note): Update prototype.
16258         (squeeze_notes): Remove.
16259         * sched-int.h (NOTE_NOT_BB_P): Update.
16260         * resource.c (mark_target_live_regs): Update.
16261         * sched-rgn.c (debug_dependencies): Update.
16262         * sched-vis.c (print_insn): Update.
16263         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
16264         * config/i386/i386.c (ix86_output_function_epilogue): Update.
16265         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
16266         (TARGET_ADJUST_UNROLL_MAX): Likewise.
16267         (split_branches): Update.
16268         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
16269         4.0.0.
16270         (sh_adjust_unroll_max): Exterminate.
16271         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
16272         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
16273         (m68hc11_reorg): Likewise.
16274         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
16275         (emit_predicate_relation_info): Update.
16276         (process_for_unwind_directive): Update.
16277         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
16278         (output_call): Update.
16279         * config/pa/pa.c (output_lbranch): Update.
16280         (output_millicode_call): Update.
16281         (output_call): Update.
16282         (pa_combine_instructions): Update.
16283         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
16284         * config/bfin/bfin.c (gen_one_bundle): Update.
16285         * cfgrtl.c (can_delete_note_p): Update.
16286         (delete_insn): Update.
16287         (rtl_merge_blocks): Update.
16288         (commit_one_edge_insertion): Update.
16289         (rtl_verify_flow_info): Update.
16290         * stmt.c (expand_case): Do not call squeeze_notes.
16291
16292 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16293
16294         PR middle-end/7651
16295         PR c++/11856
16296         PR c/12963
16297         PR c/23587
16298         PR other/29694
16299         * c.opt (Wtype-limits): New.
16300         * doc/invoke.texi (Wtype-limits): Document it.
16301         (Wextra): Enabled by -Wextra.
16302         * c-opts.c (c_common_post_options): Enabled by -Wextra.
16303         * c-common.c (shorten_compare): Warn with Wtype-limits.
16304
16305 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
16306
16307         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
16308         inlined function, not as a macro.
16309         (_mm_alignr_pi8): Ditto.
16310         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
16311         (_mm_inserti_si64): Ditto.
16312         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
16313         (_mm_extract_epi16): Ditto.
16314         (_mm_insert_epi16): Ditto.
16315         (_mm_shufflehi_epi16): Ditto.
16316         (_mm_shufflelo_epi16): Ditto.
16317         (_mm_shuffle_epi32): Ditto.
16318         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
16319         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
16320         all functions.
16321         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
16322         float constant.
16323         (_m_to_float): Use C89 compatible assignment.
16324
16325 2007-05-20  Martin Michlmayr  <tbm@cyrius.com>
16326
16327         PR target/32007
16328         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
16329
16330 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16331
16332         PR middle-end/7651
16333         * doc/invoke.texi (Wreturn-type): Complete description.
16334         (Wextra): Delete item about return-type warning.
16335         * c-decl.c: Delete redundant Wextra warning.
16336
16337 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
16338
16339         PR target/31585
16340         * config/i386/pmmintrin.h: Do not include xmmintrin.h
16341         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
16342         inlined function, not as a macro.
16343         (_mm_prefetch): Ditto.
16344         (_m_pextrw): Ditto.
16345         (_mm_insert_pi16): Ditto.
16346         (_m_pinsrw): Ditto.
16347         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
16348         (_m_pshufw): Ditto. Add const to __N argument.
16349         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
16350         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
16351         (_mm_slli_epi32): Ditto.
16352         (_mm_srli_si128): Implement as always inlined function, not as a
16353         macro.  Add __inline to function declaration.
16354         (_mm_slli_si128): Ditto.
16355
16356 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
16357
16358         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
16359         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
16360         New constants.
16361         (struct fenv): New structure.
16362         (FP_HANDLE_EXCEPTIONS): New define.
16363         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
16364         (_FP_DECL_EXP): New define.
16365         (FP_INIT_ROUNDMODE): New define.
16366         (FP_ROUNDMODE): New define.
16367
16368 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16369
16370         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
16371         (Wconversion): Update description.
16372         (Wconversion-sign): New.
16373         * c.opt (Wconversion-sign): New.
16374         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
16375         means disabled for C++. Otherwise, take the status of Wconversion.
16376         * c-common.c (conversion_warning): Warn with either Wconversion or
16377         Wconversion-sign.
16378         (warnings_for_convert_and_check): Conditions are already checked by
16379         conversion_warning.
16380         (convert_and_check): Don't check warnings if the conversion failed.
16381
16382 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
16383            Anatoly Sokolov <aesok@dol.ru>
16384
16385         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
16386         avr_epilogue_uses) : Add declaration.
16387         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
16388         * config/avr/constraints.md (R): New constraint.
16389         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
16390         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
16391         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
16392         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
16393         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
16394         call_prologue_saves, epilogue_restores, return_from_epilogue,
16395         return_from_main_epilogue, return_from_interrupt_epilogue,
16396         return_from_naked_epilogue, prologue, epilogue): New patterns.
16397         (jump): Handle symbol reference.
16398         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
16399         avr_output_function_prologue, avr_output_function_epilogue): Remove
16400         functions.
16401         (avr_init_machine_status, expand_prologue, expand_epilogue,
16402         avr_asm_function_end_prologue, avr_epilogue_uses,
16403         avr_asm_function_begin_epilogue): New functions.
16404         (prologue_size, epilogue_size, jump_tables_size): Remove global
16405         variables.
16406         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
16407         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
16408         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
16409         (avr_override_options): Initialise init_machine_status.
16410         (output_movhi): Handle all stack pointer loads.
16411         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
16412         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
16413         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
16414         (EPILOGUE_USES) Redefine.
16415         (machine_function) Declare.
16416
16417 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
16418
16419         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
16420         Use a single return statement.
16421
16422 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16423
16424         PR middle-end/30250
16425         * builtins.c (do_mpfr_lgamma_r): New.
16426         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
16427         * tree.h (CASE_FLT_FN_REENT): New.
16428
16429 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
16430
16431         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
16432         (output_die): Use 'unsigned long' with %x.
16433         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
16434         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
16435         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
16436
16437         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
16438
16439 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
16440
16441         PR target/31989
16442         PR target/31681
16443         PR target/31666
16444         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
16445         true if function has no argument.
16446
16447 2007-05-18  DJ Delorie  <dj@redhat.com>
16448
16449         * config/mips/mips.c (mips_offset_within_alignment_p): New.
16450         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
16451
16452 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
16453
16454         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
16455         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
16456         count_trailing_zeros.
16457         (__i386__): Implement count_leading_zeros using __builtin_clz().
16458         Implement count_trailing_zeros usign __builtin_ctz().
16459
16460 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
16461
16462         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
16463
16464 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
16465
16466         PR middle-end/31344
16467         * expr.c (emit_move_change_mode): Change mode of push operands here.
16468
16469 2007-05-17  Ian Lance Taylor  <iant@google.com>
16470
16471         PR tree-optimization/31953
16472         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
16473         Change all callers.
16474         (set_value_range_to_null): Call set_value_range_to_value.
16475         (extract_range_from_comparison): Likewise.
16476
16477 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16478
16479         * toplev.c (print_version): Output GMP/MPFR version info.
16480
16481         * builtins.c (CASE_MATHFN_REENT): New macro.
16482         (mathfn_built_in): Use it.
16483         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
16484         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
16485         BUILT_IN_LGAMMAL_R): New.
16486         * doc/extend.texi: Document new builtins.
16487
16488         PR middle-end/31796
16489         * builtins.c (do_mpfr_remquo): New.
16490         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
16491         (fold_builtin_3): Handle BUILT_IN_REMQUO.
16492
16493         PR middle-end/30251
16494         * builtins.c (fold_builtin_1): Handle y0, y1.
16495         (fold_builtin_2): Handle yn.
16496
16497         PR middle-end/30251
16498         * builtins.c (do_mpfr_bessel_n): New.
16499         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
16500         (fold_builtin_2): Handle BUILT_IN_JN.
16501
16502 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
16503
16504         PR target/31965
16505         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
16506         TYPE_PRECISION (intmax_type_node).
16507
16508 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
16509
16510         PR target/31850
16511         * reload.c (subst_reloads): Remove checking.
16512
16513 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
16514
16515         PR rtl-optimization/31691
16516         * combine.c (simplify_set): Build a new src pattern instead of
16517         substituting its operands in the COMPARE case.
16518
16519 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
16520
16521         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
16522         (execute_vrp): Preserve loops through jump threading.
16523         * tree-ssa-threadupdate.c (thread_single_edge,
16524         dbds_continue_enumeration_p, determine_bb_domination_status,
16525         thread_through_loop_header): New functions.
16526         (create_edge_and_update_destination_phis,
16527         create_edge_and_update_destination_phis): Set loops for the new blocks.
16528         (prune_undesirable_thread_requests): Removed.
16529         (redirect_edges): Do not pretend that redirect_edge_and_branch can
16530         create new blocks.
16531         (thread_block): Do not call prune_undesirable_thread_requests.
16532         Update loops.
16533         (mark_threaded_blocks): Select edges to thread here.
16534         (thread_through_all_blocks): Take may_peel_loop_headers argument.
16535         Thread edges through loop headers independently.
16536         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
16537         * tree-pass.h (TODO_mark_first_instance): New.
16538         (first_pass_instance): Declare.
16539         * cfghooks.c (duplicate_block): Put the block to the original loop
16540         if copy is not specified.
16541         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
16542         jump threading.  Pass may_peel_loop_headers to
16543         thread_through_all_blocks according to first_pass_instance.
16544         * cfgloop.h (create_preheader): Declare.
16545         * tree-flow.h (thread_through_all_blocks): Declaration changed.
16546         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
16547         * passes.c (first_pass_instance): New variable.
16548         (next_pass_1): Set TODO_mark_first_instance.
16549         (execute_todo): Set first_pass_instance.
16550
16551 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
16552
16553         PR tree-optimization/24659
16554         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
16555         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
16556         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
16557         OTI_vec_pack_ufix_trunc.
16558         (vec_unpacks_float_hi_optab): Define new macro.
16559         (vec_unpacks_float_lo_optab): Ditto.
16560         (vec_unpacku_float_hi_optab): Ditto.
16561         (vec_unpacku_float_lo_optab): Ditto.
16562         (vec_pack_sfix_trunc_optab): Ditto.
16563         (vec_pack_ufix_trunc_optab): Ditto.
16564         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
16565         and vec_pack_[s|u]fix_trunc_optab using
16566         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
16567         * tree-vectorizer.c (supportable_widening_operation): Handle
16568         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
16569         (supportable_narrowing_operation): New function.
16570         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
16571         * tree-vect-transform.c (vectorizable_conversion): Handle
16572         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
16573         (vect_gen_widened_results_half): Move before vectorizable_conversion.
16574         (vectorizable_type_demotion): Call supportable_narrowing_operation()
16575         to check for target support.
16576         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
16577         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
16578         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
16579         for VEC_PACK_FIX_TRUNC_EXPR.
16580         (expand_binop): Special case mode of the result for
16581         vec_pack_[u|s]fix_trunc_optab.
16582         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
16583         vec_pack_[u|s]fix_trunc_optab.
16584
16585         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
16586         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
16587         * tree-pretty-print.c (dump_generic_node): Handle
16588         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
16589         VEC_PACK_FIX_TRUNC_EXPR.
16590         (op_prio): Ditto.
16591         * expr.c (expand_expr_real_1): Ditto.
16592         * tree-inline.c (estimate_num_insns_1): Ditto.
16593         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
16594
16595         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
16596         (vec_unpacks_float_lo_v8hi): Ditto.
16597         (vec_unpacku_float_hi_v8hi): Ditto.
16598         (vec_unpacku_float_lo_v8hi): Ditto.
16599         (vec_unpacks_float_hi_v4si): Ditto.
16600         (vec_unpacks_float_lo_v4si): Ditto.
16601         (vec_pack_sfix_trunc_v2df): Ditto.
16602
16603         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
16604         Document.
16605         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
16606         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
16607         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
16608         [vec_pack_ufix_trunc]: Ditto.
16609         [vec_unpacks_float_hi]: Ditto.
16610         [vec_unpacks_float_lo]: Ditto.
16611         [vec_unpacku_float_hi]: Ditto.
16612         [vec_unpacku_float_lo]: Ditto.
16613
16614 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
16615
16616         * soft-fp/README: Update for new files.
16617         * soft-fp/floattisf.c: New file.
16618         * soft-fp/floattidf.c: New file.
16619         * soft-fp/floattitf.c: New file.
16620         * soft-fp/floatuntisf.c: New file.
16621         * soft-fp/floatuntidf.c: New file.
16622         * soft-fp/floatuntitf.c: New file.
16623         * soft-fp/fixsfti.c: New file.
16624         * soft-fp/fixdfti.c: New file.
16625         * soft-fp/fixtfti.c: New file.
16626         * soft-fp/fixunssfti.c: New file.
16627         * soft-fp/fixunsdfti.c: New file.
16628         * soft-fp/fixunstfti.c: New file.
16629         * soft-fp/extendxftf.c: New file.
16630         * soft-fp/trunctfxf.c: New file.
16631
16632         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
16633         (__trunctfxf2): Ditto.
16634
16635         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
16636         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
16637         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
16638         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
16639         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
16640         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
16641
16642         * config/i386/t-fprules-softfp64: New file.
16643         * config/i386/sfp-machine.h: New file.
16644         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
16645         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
16646         and soft-fp/t-softfp to tmake_file.
16647         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
16648         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
16649
16650         * config/i386/t-linux64 (softfp_wrap_start): New.
16651         (softfp_wrap_end): New.
16652         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
16653         supported for TARGET_64BIT.
16654
16655 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
16656
16657         * c-common.c (c_common_signed_or_unsigned_type): Emulate
16658         c_common_unsigned_type behavior.
16659
16660 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
16661
16662         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
16663         calls as pure.
16664
16665 2007-05-16  Eric Christopher  <echristo@apple.com>
16666
16667         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
16668         saving after stack push. Set sp_offset whenever we push.
16669         (rs6000_emit_epilogue): Move altivec register restore before
16670         stack push.
16671
16672 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
16673
16674         * configure.ac: Allow sysroots to be relocated under $prefix as
16675         well as $exec_prefix.
16676         * configure: Regenerate.
16677
16678 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
16679
16680         Revert:
16681
16682         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
16683
16684         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
16685         (gcc_tooldir): Likewise.
16686         * configure: Regenerate.
16687         * Makefile.in (libsubdir_to_prefix): New variable, based on the
16688         old configure.ac gcc_tooldir setting.
16689         (prefix_to_exec_prefix): New variable.
16690         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
16691         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
16692
16693 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
16694
16695         * c-typeck.c (build_binary_op): Return early for error.
16696
16697 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
16698
16699         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
16700         struct nb_iter_bound.
16701         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
16702         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
16703         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
16704         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
16705         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
16706         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
16707         (del_scev_info): Use ggc_free.
16708         (scev_initialize): Allocate scalar_evolution_info in gc memory.
16709         * loop-init.c: Include ggc.h.
16710         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
16711         (loop_optimizer_finalize): Use ggc_free.
16712         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
16713         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
16714         pass_iv_optimize): Add TODO_ggc_collect.
16715         * function.h (struct function): Remove skip marker from
16716         x_current_loops.
16717         * cfgloop.c: Include ggc.h.
16718         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
16719         memory.
16720         (establish_preds): Vector superloops is gc allocated.
16721         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
16722         loop->exits list.
16723         (flow_loops_find): Vector larray is gc allocated.
16724         (loop_exit_free): Use ggc_free.
16725         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
16726         that head of exits list is now not a part of struct loop.
16727         (record_loop_exits): Allocate exits table in gc memory.
16728         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect
16729         that head of exits list is now not a part of struct loop.
16730         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
16731         struct loop_exit): Add GTY marker.
16732         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
16733         Add skip marker to aux field.  Make head of exits list a separate
16734         object.
16735         (struct loops): Add GTY marker.  Make larray vector gc allocated.
16736         Add param marker to exits table.
16737         (get_loops): Type changed.
16738         * Makefile.in (tree-scalar-evolution.o): Add
16739         gt-tree-scalar-evolution.h dependency.
16740         (cfgloop.o, loop-init.o): Add ggc.h dependency.
16741         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
16742         * basic-block.h (struct basic_block_def): Remove skip marker from
16743         loop_father field.
16744
16745 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
16746
16747         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
16748         of 0 in the call to expand_expr().
16749         (expand_builtin_mathfn_3): Ditto.
16750         (expand_builtin_interclass_mathfn): Ditto.
16751         (expand_builtin_cexpi): Ditto.
16752         (expand_builtin_int_roundingfn): Ditto.
16753         (expand_builtin_int_roundingfn_2): Ditto.
16754         (expand_builtin_pow): Ditto.
16755         (expand_builtin_powi): Ditto.
16756         (expand_builtin_bswap): Ditto.
16757         (expand_builtin_unop): Ditto.
16758         (expand_builtin_fabs): Ditto.
16759         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
16760         the call to expand_expr().
16761         (expand_builtin_sync_operation): Ditto.
16762         (expand_builtin_compare_and_swap): Ditto.
16763         (expand_builtin_lock_test_and_set): Ditto.
16764         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
16765         instead of 0 in the call to expand_expr().
16766         (expand_builtin_extract_return_addr): Ditto.
16767         (expand_builtin_eh_return): Ditto.
16768         (expand_eh_return): Ditto.
16769         * explow.c (expr_size): Ditto.
16770         * expr.c (optimize_bitfield_assignment_op): Ditto.
16771         (expand_assignement): Ditto.
16772         (store_expr): Ditto.
16773         (store_field): Ditto.
16774         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
16775         the call to expand_expr().
16776         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
16777         in the call to expand_expr().
16778         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
16779         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
16780         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
16781         of expand_expr().
16782         * optabs.c (expand_vec_shift_expr): Ditto.
16783         (expand_vec_cond_expr): Ditto.
16784         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
16785         call to expand_expr().
16786         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
16787         in the call to expand_expr().
16788
16789 2007-05-14  Dave Korn  <dave.korn@artimi.com>
16790
16791         * genautomata.c (gen_regexp_el): Allocate correct size for regexp.
16792
16793 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
16794
16795         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
16796         instead of c_common_unsigned_type.
16797         (c_common_unsigned_type): Remove.
16798         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
16799         c_common_unsigned_type.
16800         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
16801         c_common_unsigned_type.
16802         * c-common.h (c_common_unsigned_type): Remove.
16803         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
16804         c_common_unsigned_type.
16805         * c-format.c (check_format_types): Use unsigned_type_for instead of
16806         c_common_unsigned_type.
16807         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
16808         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead
16809         of c_common_unsigned_type.
16810         * convert.c (convert_to_integer): Use unsigned_type_for instead of
16811         lang_hooks.types.unsigned_type.
16812         * expmed.c (make_tree): Use unsigned_type_for instead of
16813         lang_hooks.types.unsigned_type.
16814         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
16815         lang_hooks.types.unsigned_type.
16816         (build_range_check): Likewise.
16817         (fold_unary): Likewise.
16818         (fold_binary): Likewise.
16819         (fold_ternary): Likewise.
16820         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
16821         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
16822         * tree.c (get_unsigned_type): New.
16823         (unsigned_type_for): Use get_unsigned_type instead of
16824         lang_hooks.types.unsigned_type.
16825
16826 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
16827
16828         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
16829         to m68k_get_function_kind.  Update its prototype.
16830         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
16831         interrupt_thread.
16832         (m68k_interrupt_function_p): Return enum m68k_function_type
16833         instead of bool.  Rename to m68k_get_function_kind.
16834         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
16835         target is not fido.
16836         (m68k_compute_frame_layout): Don't mark any register for save
16837         if an interrupt_thread attribute is specified.
16838         (m68k_hard_regno_rename_ok): Update a use of
16839         m68k_interrupt_function_p.
16840         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
16841         m68k_interrupt_function_p.
16842         (m68k_function_type): New.
16843         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
16844         for a function with an interrupt_thread attribute.
16845         * doc/extend.texi: Document the interrupt_thread attribute.
16846
16847 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
16848
16849         Fix PR tree-optimization/31911
16850         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
16851         if they didn't change the expression.
16852
16853 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
16854
16855         * tree-scalar-evolution.c (resolve_mixers): Exported.
16856         * tree-scalar-evolution.h (resolve_mixers): Declare.
16857         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
16858         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
16859         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
16860         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
16861         init_array_ref, init_pointer_ref, analyze_indirect_ref,
16862         strip_conversion, analyze_offset_expr, address_analysis,
16863         object_analysis, analyze_offset): Removed.
16864         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
16865         split_constant_offset, canonicalize_base_object_address,
16866         object_address_invariant_in_loop_p, disjoint_objects_p,
16867         dr_may_alias_p, dr_address_invariant_p): New functions.
16868         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
16869         and dr_analyze_alias.
16870         (initialize_data_dependence_relation): Use dr_may_alias_p
16871         and object_address_invariant_in_loop_p.
16872         (compute_self_dependence): Handle the case when
16873         DDR_ARE_DEPENDENT (ddr) is chrec_dont_know.
16874         (find_data_references_in_stmt): Restrict the analysis of data
16875         references to the given loop nest.
16876         (find_data_references_in_loop): Made static.  Pass loop nest to
16877         find_data_references_in_stmt.
16878         (compute_data_dependences_for_loop): Use DR_VOPS.
16879         (free_data_ref): Free DR_VOPS.
16880         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
16881         (struct innermost_loop_behavior): ... new.
16882         (struct base_object_info): Replaced by ...
16883         (struct indices): ... new.
16884         (struct dr_alias): New.
16885         (enum data_ref_type): Removed.
16886         (struct data_reference): Consist of struct innermost_loop_behavior,
16887         struct indices and struct dr_alias.
16888         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
16889         (DR_MEMTAG): Renamed to ...
16890         (DR_SYMBOL_TAG): ... this.
16891         (find_data_references_in_loop): Declaration removed.
16892         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
16893         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
16894         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
16895         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
16896
16897 2007-05-13  Revital Eres  <eres@il.ibm.com>
16898
16899         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
16900         which walks virtual def-use chains to find redundant stores.
16901         (dse_optimize_stmt): Call it.
16902
16903 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
16904
16905         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
16906         * passes.c (init_optimization_passes): Move pass_jump_bypass
16907         after loop2.
16908
16909         * basic-block.h (bb_has_eh_pred): Fix style issue.
16910
16911 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
16912
16913         PR rtl-optimization/31848
16914         * loop-invariant.c (move_invariant_reg): If we move an insn
16915         with a REG_EQUAL note, and that insn is not always executed,
16916         remove the REG_EQUAL note.
16917
16918 2007-05-12  Richard Guenther  <rguenther@suse.de>
16919
16920         PR tree-optimization/31797
16921         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
16922         propagate into a stmt that has volatile ops.
16923
16924 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
16925
16926         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
16927         (gcc_tooldir): Likewise.
16928         * configure: Regenerate.
16929         * Makefile.in (libsubdir_to_prefix): New variable, based on the
16930         old configure.ac gcc_tooldir setting.
16931         (prefix_to_exec_prefix): New variable.
16932         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
16933         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
16934
16935 2007-05-11  Silvius Rus  <rus@google.com>
16936
16937         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
16938         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
16939         * c-common.h (strict_aliasing_warning): Change return type.
16940         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
16941         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
16942         (build_c_cast): Condition call to strict_aliasing_warning.
16943         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
16944         * flags.h (set_Wstrict_aliasing): Declare.
16945         * opts.c (set_Wstrict_alising): Define, add call to.
16946         * tree-flow.h (strict_aliasing_warning_backend): Declare.
16947         * tree-ssa-alias-warnings.c: New file.
16948         * tree-ssa-alias.c (compute_may_aliases): Add call to
16949         strict_aliasing_warning_backend.
16950
16951 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
16952
16953         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
16954         Use loop_depth and loop_outer accessor functions.
16955         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
16956         determine_invariantness_stmt, move_computations_stmt): Ditto.
16957         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
16958         add_loop, loopify, unloop, fix_loop_structure): Ditto.
16959         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
16960         * tree-scalar-evolution.c (interpret_loop_phi,
16961         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
16962         instantiate_parameters_1, scev_const_prop): Ditto.
16963         * cfghooks.c (make_forwarder_block): Ditto.
16964         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
16965         * modulo-sched.c (loop_canon_p): Ditto.
16966         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
16967         slpeel_can_duplicate_loop_p): Ditto.
16968         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
16969         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
16970         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
16971         cancel_loop, verify_loop_structure): Ditto.
16972         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
16973         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
16974         superloops vector instead of "pred" array.
16975         (establish_preds): Take father loop as an argument.  Initialize the
16976         superloops vector.
16977         (flow_loop_tree_node_add): Pass father loop to establish_preds.
16978         Do not initialize loop->outer.
16979         (flow_loop_tree_node_remove): Truncate the superloops vector.
16980         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
16981         "pred" merged to "superloops" vector.
16982         (loop_depth, loop_outer): New.
16983         (fel_init): Use loop_outer.
16984
16985 2007-05-11  Jan Hubicka  <jh@suse.cz>
16986
16987         * cgraphunit.c: Include gt-cgraphunit.h
16988         (static_ctors, static_dtors): New static vars.
16989         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
16990         based on implementation in c-common.c
16991         (cgraph_finalize_function): Call record_cdtor_fn.
16992         (cgraph_optimize): Call cgraph_build_cdtor_fns.
16993         * decl.c (finish_function): Do not call c_record_cdtor_fn.
16994         (c_write_global_declarations): Do not call c_build_cdtor_fns.
16995         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
16996         build_cdtor, c_build_cdtor_fns): Remove.
16997         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
16998         c_build_cdtor_fns): Remove prototype.
16999
17000 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
17001
17002         PR other/31852
17003         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
17004         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
17005         * builtins.c (fold_builtin_memchr): New.
17006         (expand_builtin_memchr): Call the latter.
17007         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
17008         * doc/extend.texi ([Other built-in functions provided by GCC]):
17009         Document memchr.
17010
17011 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
17012
17013         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
17014         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
17015         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
17016         PFPO_OP1_TYPE_SHIFT): Constants added.
17017         (DFP_ALL): Mode macro defined.
17018         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
17019         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
17020         Insn definitions added.
17021         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
17022         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
17023         Expanders added.
17024
17025 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
17026
17027         PR tree-optimization/31885
17028         * tree-chrec.c (chrec_contains_undetermined): Do not consider
17029         NULL_TREE to be undetermined.
17030         (automatically_generated_chrec_p): Return false for NULL.
17031
17032 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
17033
17034         * config/bfin/bfin.h (MOVE_RATIO): Define.
17035
17036 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
17037
17038         * config.gcc (sparc-wrs-vxworks): New target.
17039         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
17040         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
17041         * config/sparc/sparc.h: Include vxworks-dummy.h.
17042         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
17043         include LABEL_REFs too.
17044         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
17045         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
17046         VxWorks.
17047         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
17048         on VxWorks.
17049         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
17050         (sparc_emit_call_insn): New function.
17051         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
17052         functions when generating VxWorks PIC.
17053         * config/sparc/sparc.md (vxworks_load_got): New pattern.
17054         (call, call_value): Use sparc_emit_call_insn instead of
17055         emit_call_insn.
17056
17057 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
17058
17059         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
17060
17061 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
17062
17063         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
17064         for floating-point values if HOST_BITS_PER_LONG > 32.  Use
17065         split_double instead of operand_subword.
17066
17067 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
17068
17069         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
17070         * config/bfin/bfin.c (bfin_local_alignment): New function.
17071         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
17072
17073 2007-05-08  Chao-ying Fu  <fu@mips.com>
17074
17075         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
17076         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
17077         (smsub_widen_optab, umsub_widen_optab): Define.
17078         * optabs.c (init_optabs): Initialize smsub_widen_optab and
17079         umsub_widen_optab.
17080         * genopinit.c (optabs): Fill in smsub_widen_optab and
17081         umsub_widen_optab.
17082         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
17083         and umsub_widen_optab to implement multiply-subtract sequences.
17084         * config/mips/mips.md (*msac<u>_di): Rename to...
17085         (<u>msubsidi4): ...this.  Extend condition to include
17086         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
17087         of operand 0 to "ka" and use the three-operand form of msub<u>
17088         for TARGET_DSPR2.
17089         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
17090         to define_expands.
17091
17092 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
17093
17094         PR rtl-optimization/28011
17095         * reload.c (push_reload): Set dont_share if IN appears in OUT
17096         also when IN is a PLUS rtx.
17097         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
17098         are same PLUS rtx.
17099
17100 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
17101
17102         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
17103         call unshare_all_decls.
17104         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
17105         (unshare_all_decls): Remove.
17106
17107 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
17108
17109         PR 31847
17110         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
17111         dumps.
17112
17113 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
17114             Nigel Stephens  <nigel@mips.com>
17115
17116         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
17117         Update comments and all uses.
17118         (MIN_FPRS_PER_FMT): Define.
17119         * config/mips/mips.c (function_arg): Fix to correctly handle
17120         the -mips32r2 -mfp64 -mabi=32 case.
17121         (override_options): Enable use of odd-numbered registers for
17122         SFmode values on MIPS32.
17123         (mips_save_reg_p): Save whole floating-point register pair if
17124         either half is used.
17125         (compute_frame_size): Fix comment.
17126
17127 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
17128
17129         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
17130         argument of type bool.
17131         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
17132         argument. Safely select temporary P register according to it.
17133         (do_link): Change call site of add_to_reg accordingly.
17134         (do_unlink): Add epilogue_p as a fourth argument and pass it
17135         to add_to_reg.
17136         (expand_interrupt_handler_epilogue): Change call of do_unlink
17137         accordingly.
17138         (bfin_expand_prologue): Add a third argument sibcall_p.
17139         * config/bfin/bfin.md (epilogue): Change call of
17140         bfin_expand_epilogue accordingly.
17141         (sibcall_epilogue): Likewise.
17142         (eh_return_internal): Likewise.
17143
17144         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
17145         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
17146         * config/bfin/bfin.c (bfin_handle_option): Handle
17147         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
17148         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
17149         Support bf534, bf536 and bf561.
17150         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
17151
17152 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
17153
17154         PR target/31854
17155         * config/i386/i386.c (ix86_function_regparm): Process local
17156         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
17157
17158 2007-05-07  Mike Stump  <mrs@apple.com>
17159
17160         * doc/invoke.texi (Warning Options): Document that -Wempty-body
17161         also checks for and while statements in C++.
17162
17163 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
17164
17165         * gcc.c (at_file_supplied): New variable.
17166         (main): Set it if we expanded argv.
17167         (do_spec_1): Pass an @-file to the linker if we were called with
17168         an @-file argument and HAVE_GNU_LD.
17169         * collect2.c (at_file_supplied): New variable.
17170         (response_file): New variable.
17171         (collect_exit): Unlink response_file if necessary.
17172         (handler): Likewise.
17173         (do_wait): Likewise.
17174         (main): Set at_file_supplied if we expanded argv.
17175         (collect_execute): Pass an @-file to subprocesses if we were called
17176         with an @-file argument.
17177         * configure.ac: Add define for HAVE_GNU_LD.
17178         * configure: Regenerate.
17179         * config.in: Regenerate.
17180
17181 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
17182
17183         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
17184         operand to HI mode.
17185         (mulsi3): New.
17186         (divsi3): New.
17187         (udivsi3): New.
17188
17189 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
17190
17191         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
17192         (TARGET_ENCODE_SECTION_INFO): Re-define.
17193         (m32c_encode_section_info): New
17194         (function_vector_handler): New
17195         (current_function_special_page_vector): New
17196         (m32c_special_page_vector_p): New.
17197         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
17198         Prototype.
17199         * config/m32c/jump.md: Added instruction JSRS for functions
17200         with attribute "function_vector".
17201         * doc/extend.texi (function_vector): Added description
17202         for M16C, M32C targets.
17203
17204 2007-05-07  DJ Delorie  <dj@redhat.com>
17205
17206         PR 31794
17207         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
17208         ashrpsi3, lshrpsi3): Update shift count constraint.
17209
17210 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
17211             Nathan Froyd  <froydnj@codesourcery.com>
17212
17213         PR 22133
17214         * c-incpath.c (add_path): Strip trailing path separators.
17215
17216 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
17217
17218         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
17219         Free dominance info before purging EH edges.
17220         (eliminate_degenerate_phis): Likewise.
17221         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
17222
17223 2007-05-07  Jan Hubicka  <jh@suse.cz>
17224
17225         * gimplify.c (gimplify_expr): Do not crash when folding
17226         (void *)(int)&a + 4.
17227
17228 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
17229
17230         PR driver/31694
17231         * c-opts.c (lang_fortran): Make it non static.
17232         * c-common.h (lang_fortran): New prototype.
17233         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
17234         -lang-fortran option was passed by the driver.
17235
17236 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
17237
17238         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
17239         of ASSERT_CHECKING.  Tweak message.
17240
17241 2007-05-06  Revital Eres  <eres@il.ibm.com>
17242
17243         PR 30957
17244         * loop-unroll.c (insert_var_expansion_initialization):
17245         Initialize the expansions with -zero instead of +zero.
17246
17247 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
17248
17249         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
17250         into pic and non-pic versions. Mark r19 as used for
17251         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
17252         for tgd_load, tld_load and tie_load .
17253         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
17254         version of tgd_load, tld_load and tie_load depending on the
17255         value of flag_pic.
17256
17257 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
17258             Jakub Jelinek  <jakub@redhat.com>
17259
17260         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
17261         (__do_global_dtors_aux): Use more paranoid loop to run
17262         destructors if HIDDEN_DTOR_LIST_END.
17263         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
17264
17265 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
17266
17267         * varasm.c (align_variable): Don't increase alignment for
17268         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
17269         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
17270
17271 2007-05-04  Josh Conner  <jconner@apple.com>
17272
17273         * basic-block.h (cdi_direction): Assign values to all enumeration
17274         constants.
17275         (dom_computed): Remove.
17276         (dom_info_state): New.
17277         (set_dom_info_availability): New.
17278         * tree-ssa-loop-im.c (determine_invariantness): Initialize
17279         walk_data.dom_direction.
17280         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
17281         instead of dom_computed[].
17282         (split_edge): Likewise.
17283         (create_basic_block): Likewise.
17284         (merge_blocks): Likewise.
17285         * ifcvt.c (find_if_header): Likewise.
17286         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
17287         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
17288         * tree-ssa.c (verify_ssa): Likewise.
17289         * tree-cfg.c (tree_verify_flow_info): Likewise.
17290         (remove_edge_and_dominated_blocks): Likewise.
17291         * dominance.c (dom_computed): Make static.
17292         (calc_dfs_tree_nonrec): Change third param to a bool.
17293         (calc_dfs_tree): Change second param to a bool.
17294         (calc_idioms): Change second param to a bool.  Use
17295         dom_convert_dir_to_idx.
17296         (init_dom_info): Validate dir before using.
17297         (dom_convert_dir_to_idx): New.
17298         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
17299         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
17300         (free_dominance_info): Use dom_convert_dir_to_idx.
17301         (get_immediate_dominator): Likewise.
17302         (set_immediate_dominator): Likewise.
17303         (get_dominated_by): Likewise.
17304         (redirect_immediate_dominators): Likewise.
17305         (nearest_common_denominator): Likewise.
17306         (dominated_by_p): Likewise.
17307         (bb_dom_dfs_in): Likewise.
17308         (bb_dom_dfs_out): Likewise.
17309         (recount_dominator): Likewise.
17310         (iterate_fix_dominators): Likewise.
17311         (add_to_dominance_info): Likewise.
17312         (delete_from_dominance_info): Likewise.
17313         (first_dom_son): Likewise.
17314         (next_dom_son): Likewise.
17315         (dom_info_available_p): Likewise.
17316         (dom_info_state): New.
17317         (set_dom_info_availability): New.
17318
17319 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
17320
17321         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
17322         Expander removed.
17323         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
17324
17325 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
17326
17327         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
17328         (subdi3, subdi_carry): Delete.
17329
17330 2007-05-04  Jan Hubicka  <jh@suse.cz>
17331             Richard Guenther  <rguenther@suse.de>
17332
17333         * opts.c (decode_options): Do not fiddle with inlining
17334         parameters in case of optimizing for size.
17335         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
17336         for size do nothing.
17337         (cgraph_decide_inlining_of_small_function): When optimizing for
17338         size never inline functions increasing caller size.
17339         (cgraph_early_inlining): Inline for size when optimizing for size.
17340
17341 2007-05-04  Bernd Schmidt  <bernd.schmidt@analog.com>
17342
17343         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
17344         logical operations piecewise.
17345         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
17346         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
17347         subdi_sesidi_di): Delete.
17348         (add_with_carry): Produce carry in CC instead of a DREG to shorten
17349         the generated sequence.  Allow three-reg add in constraints.  Rewrite
17350         the rtl expression for carry to avoid zero_extend of a constant.
17351         (sub_with_carry): New pattern.
17352         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
17353         different sequence not involving jumps.
17354         (notbi): Now a named pattern.
17355
17356 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
17357
17358         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
17359         Add the note about a significant loss of accuracy of some
17360         mathematical routines when these options are used.
17361
17362 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
17363
17364         * haifa-sched.c (rtx_vec_t): New typedef.
17365         (contributes_to_priority_p): Extract piece of priority () into new
17366         static function.
17367         (priority): Use the function.  Add assertion.
17368         (rank_for_schedule, set_priorities): Add assertion to check that
17369         insn's priority is initialized.
17370         (clear_priorities, calc_priorities): Change signature.  Make it update
17371         all relevant insns.  Update all callers ('add_to_speculative_block ()'
17372         and 'create_block_check_twin ()').
17373         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
17374         Add new field 'priority_status'.
17375         (INSN_PRIORITY_STATUS): New macro.
17376         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
17377
17378 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
17379
17380         * sched-ebb.c (debug_ebb_dependencies): New static function.
17381         (init_ready_list): Use it.
17382
17383         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
17384         with changed signature and 'debug_rgn_dependencies ()'.
17385         (debug_rgn_dependencies): New static function.
17386         (init_ready_list): Use it.
17387
17388         * sched-int.h (debug_dependencies): Declare.
17389
17390 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
17391
17392         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
17393
17394 2007-05-04  Dirk Mueller  <dmueller@suse.de>
17395
17396         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
17397
17398 2007-05-03  Jan Hubicka  <jh@suse.cz>
17399
17400         * fold-const.c (fold_unary): Convert (T1)(X op Y) into
17401         ((T1)X op (T1)Y), for pointer type in more cases than before.
17402
17403         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
17404
17405         * tree-object-size.c (plus_expr_object_size): When operand size is
17406         unknown, return unknown.
17407
17408 2007-05-03  Dirk Mueller  <dmueller@suse.de>
17409
17410         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
17411
17412         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
17413         options.
17414
17415         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
17416
17417 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
17418
17419         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
17420
17421 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
17422
17423         * config/soft-fp/double.h, config/soft-fp/extended.h,
17424         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
17425         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
17426         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
17427         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
17428         glibc CVS.
17429
17430 2007-05-03  Ian Lance Taylor  <iant@google.com>
17431
17432         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
17433         MASK_PPC_GFXOPT for 8540 or 8548.
17434
17435 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
17436
17437         * tree-vect-transform.c (vect_update_inits_of_drs): Use
17438         vect_print_dump_info() to output debug information.
17439
17440 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
17441
17442         PR target/31768
17443         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
17444         operands of size 2 when operand is not MEM_P.
17445
17446 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
17447
17448         PR tree-optimization/30565
17449         * lambda-code.c (perfect_nestify): Fix updating of dominators.
17450
17451 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
17452
17453         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
17454         (umulsi3_highpart): Use them.
17455         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
17456         for final accumulator to D regisster tranfser.
17457
17458 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
17459
17460         PR tree-optimization/31699
17461         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove
17462         wrong code.
17463         (vect_enhance_data_refs_alignment): Compute peel amount using
17464         TYPE_VECTOR_SUBPARTS instead of vf.
17465         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
17466
17467 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
17468
17469         PR bootstrap/31776
17470         * system.h: Remove inclusion of double-int.h
17471         * tree.h: Include double-int.h
17472         * gengtype.c: Likewise
17473         * cfgloop.h: Likewise
17474         * Makefile.in: Adjust dependencies on double-int.h
17475
17476 2007-05-02  Eric Christopher  <echristo@apple.com>
17477
17478         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
17479         -shared to -Zdynamiclib.
17480
17481 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
17482
17483         PR c++/31663
17484         * c-common.c (strip_pointer_or_array_types): New function.
17485         * c-common.h (strip_pointer_or_array_types): New function declaration.
17486
17487 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
17488
17489         PR tree-optimization/31771
17490         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
17491
17492 2007-05-02  Paul Brook  <paul@codesourcery.com>
17493
17494         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
17495
17496 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17497
17498         PR middle-end/29715
17499         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
17500         transformation.
17501
17502 2007-05-02  Nick Clifton  <nickc@redhat.com>
17503
17504         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
17505
17506 2007-05-02  Richard Guenther  <rguenther@suse.de>
17507
17508         PR tree-optimization/31146
17509         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
17510         argument, single_use_p.  If we have a single use that is
17511         a conversion to the definition rhs type, propagate that rhs.
17512         (forward_propagate_addr_expr): Pass single_use_p argument
17513         to forward_propagate_addr_expr_1.
17514
17515 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
17516
17517         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
17518         variable.
17519
17520 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
17521
17522         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
17523         'AMD Family 10 core'.
17524
17525 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
17526
17527         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
17528         and athlon64-sse3 as improved versions of k8, opteron and athlon64
17529         with SSE3 instruction set support.
17530         * doc/invoke.texi: Likewise.
17531
17532 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
17533
17534         * config/i386/i386.c (override_options): Tuning 32-byte loop
17535         alignment for amdfam10 architecture. Increasing the max loop
17536         alignment to 24 bytes.
17537
17538 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
17539
17540         * config/m68k/constraints.md: New.
17541         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
17542         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
17543         EXTRA_CONSTRAINT): Remove.
17544         * config/m68k/m68k.md: Include constraints.md.
17545         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
17546
17547 2007-05-01  Ian Lance Taylor  <iant@google.com>
17548
17549         PR tree-optimization/31739
17550         * tree-vrp.c (vrp_val_is_max): New static function.
17551         (vrp_val_is_min): New static function.
17552         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
17553         copying the node.
17554         (set_value_range): Use vrp_val_is_{max,min}.
17555         (extract_range_from_assert): Likewise.
17556         (extract_range_from_binary_expr): Likewise.
17557         (extract_range_from_unary_expr): Likewise.
17558         (dump_value_range, vrp_meet): Likewise.
17559         (vrp_visit_phi_node): Likewise.
17560         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
17561
17562 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
17563
17564         * config/i386/gmon-sol2.c (size_t): New type.
17565         (intptr_t): Likewise.
17566         (s_textsize): Declare as size_t.
17567         (sbrk): Declare.
17568         (monstartup): Use size_t for sizes.
17569         (_mcount): Save and restore registers.
17570         (internal_mcount): Pass 0 as the first argument to monstartup
17571         in 64-bit mode.
17572         (moncontrol): Convert pointer to appropriately sized integer
17573         before passing to profil.
17574
17575 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
17576
17577         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
17578         __NO_FPRS__, not just if _SOFT_DOUBLE.
17579         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
17580         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
17581         also for E500 double.
17582         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
17583         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
17584         && !TARGET_FPRS).
17585
17586 2007-05-01  Richard Guenther  <rguenther@suse.de>
17587
17588         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
17589         is NULL.
17590
17591 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
17592
17593         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
17594
17595 2007-05-01  Jan Hubicka  <jh@suse.cz>
17596
17597         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
17598         invariant.
17599
17600 2007-05-01  Jan Hubicka  <jh@suse.cz>
17601
17602         * tree.h (maybe_fold_offset_to_component_ref): Remove.
17603         (maybe_fold_offset_to_reference): Declare.
17604         * fold-const.c (fold_unary): Do not fold
17605         (type *)&A into &A->field_of_type_and_offset_0
17606         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
17607         size is unknown, give up.
17608         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
17609         offsets.
17610         (maybe_fold_offset_to_reference): New.
17611         (maybe_fold_stmt_indirect): Use it.
17612         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
17613         * gimplify.c (gimplify_conversion): Canonicalize conversions to
17614         field references.
17615         (gimplify_expr): Likewise for plus_expr.
17616
17617 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
17618
17619         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
17620         bsi_after_labels.  Always insert statements before bsi.
17621         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
17622         * predict.c (apply_return_prediction): Check for empty blocks.
17623         * cfgexpand.c (lab_rtx_for_bb): New variable.
17624         (label_rtx_for_bb): Do not create new tree labels.
17625         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
17626         (tree_expand_cfg): Initialize lab_rtx_for_bb.
17627         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
17628         creating edges.
17629         (label_for_bb): Add field used.
17630         (update_eh_label, main_block_label): Mark the label used.
17631         (cleanup_dead_labels): Remove unused labels.
17632
17633 2007-05-01  Richard Guenther  <rguenther@suse.de>
17634
17635         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
17636         if it is not about to be set.
17637         (get_value_range): Do not pre-allocate equiv bitmap.
17638         (update_value_range): No need to clear equiv field.
17639         (add_equivalence): Change prototype to get bitmap pointer.
17640         Allocate bitmap here if it is not already.
17641         (extract_range_from_assert): Do not allocate bitmap here.
17642         Update callers to add_equivalence.
17643         (extract_range_from_ssa_name): Likewise.
17644         (get_vr_for_comparison): New static helper.
17645         (compare_name_with_value): Handle NULL equiv bitmap by
17646         peeling the first iteration of the comparison loop.
17647         Use get_vr_for_comparison.
17648         (compare_names): Handle NULL equiv bitmaps by using fake
17649         ones.  Use get_vr_for_comparison.
17650
17651 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
17652
17653         * double-int.c (mpz_set_double_int): Moved from
17654         tree-ssa-loop-niter.c.
17655         (mpz_get_double_int): Likewise; also, add option to wrap
17656         out-of-range integers.
17657         * double-int.h: New prototypes for above.
17658         * tree.c (get_static_type_bounds): Moved from
17659         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
17660         TYPE_MAX_VALUE if they exist..
17661         * tree.h: New prototype for above.
17662         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
17663         get_type_bounds calls.
17664         (mpz_set_double_int): Move to double-int.c.
17665         (get_type_bounds): Move to tree.c, rename to
17666         get_static_type_bounds.
17667         (mpz_to_double_int): Move to double-int.c, rename to
17668         mpz_get_double_int.
17669
17670 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
17671
17672         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
17673         DIV0 exception can fall through to a normal return.
17674
17675 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
17676
17677         PR middle-end/22156
17678         Temporarily revert:
17679         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
17680         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
17681         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
17682         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
17683         initialize align to silence bogus warning.
17684         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
17685         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
17686         all_no_warning.
17687         (struct sra_walk_fns): Remove use_all parameter from use.
17688         (sra_hash_tree): Handle BIT_FIELD_REFs.
17689         (sra_elt_hash): Don't hash bitfld blocks.
17690         (sra_elt_eq): Skip them in parent compares as well.  Handle
17691         BIT_FIELD_REFs.
17692         (sra_walk_expr): Don't maintain or pass down use_all_p.
17693         (scan_use): Remove use_all parameter.
17694         (scalarize_use): Likewise.  Re-expand assignment to
17695         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
17696         output, and re-scalarize after output.  Don't mark anything
17697         for no warning.
17698         (scalarize_ldst): Adjust.
17699         (scalarize_walk_gimple_modify_statement): Likewise.
17700         (build_element_name_1): Handle BIT_FIELD_REFs.
17701         (instantiate_element): Don't warn for any element whose parent
17702         is used as a whole.
17703         (instantiate_missing_elements_1): Return the sra_elt.
17704         (canon_type_for_field): New.
17705         (try_instantiate_multiple_fields): New.
17706         (instantiate_missing_elemnts): Use them.
17707         (mark_no_warning): Removed.
17708         (generate_one_element_ref): Handle BIT_FIELD_REFs.
17709         (REPLDUP, sra_build_elt_assignment): New.
17710         (generate_copy_inout): Use them.
17711         (generate_element_copy): Likewise.  Handle bitfld differences.
17712         (generate_element_zero): Don't recurse for blocks.  Use
17713         sra_build_elt_assignment.
17714         (generate_one_element_int): Take elt instead of var.  Use
17715         sra_build_elt_assignment.
17716         (generate_element_init_1): Adjust.
17717         (scalarize_use, scalarize_copy): Use REPLDUP.
17718         (scalarize_ldst): Move assert before dereference.
17719         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
17720
17721 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17722
17723         PR C++/31721
17724         * tree.c (reconstruct_complex_type): Reconstruct a reference
17725         correctly.
17726         Also use the same mode for the pointer as the old pointer type.
17727
17728 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
17729
17730         * doc/trouble.texi (Interoperation): Remove note about Ultrix
17731         Fortran compiler.
17732
17733 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
17734
17735         PR rtl-optimization/31676
17736         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
17737         (df_refs_record): Call it.
17738
17739 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
17740
17741         * rtl.def (SS_ABS): New code.
17742         * config/bfin/bfin.c (print_operand): New modifier 'v'.
17743         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
17744         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
17745         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
17746         (bfin_init_builtins): Define them.
17747         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
17748         (bfin_expand_builtin): ... and handle the others here.
17749         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
17750         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
17751         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
17752         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
17753         operand is only HImode.
17754
17755 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
17756
17757         * regclass.c (scan_one_insn): Remove splitting of
17758         two address insns.
17759
17760 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
17761             Nigel Stephens  <nigel@mips.com>
17762
17763         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
17764
17765 2007-04-28  Jan Hubicka  <jh@suse.cz>
17766
17767         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
17768         insn_locators_alloc instead of insn_locators_initialize;
17769         call reset_block_changes.
17770         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
17771         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
17772         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
17773         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
17774         * config/score/score.c (th_output_mi_thunk): Likewise.
17775         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
17776         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
17777         tolerate uninitialized locator info.
17778
17779         Re-apply:
17780         * function.c (init_function_start): Don't init line number info.
17781         (expand_function_end): Update.
17782         (reset_block_changes, record_block_change, finalize_block_changes,
17783         check_block_change, free_block_changes): Kill.
17784         * function.h (reset_block_changes, record_block_change,
17785         finalize_block_changes, check_block_change, free_block_changes):
17786         Remove prototypes.
17787         (struct function): Remove ib_boundaries_block.
17788         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
17789         Use curr_insn_locator to initialize locator.
17790         (emit_line_note): Remove.
17791         * cfgexpand.c (expand_gimple_cond_expr): Update.
17792         (construct_exit_block): Likewise.
17793         (tree_expand_cfg): Initialize/finalize locators.
17794         * expr.c (expand_expr_real): Update.
17795         * cfglayout.c (line_locators_locs, line_locators_lines,
17796         file_locators_locs, file_locators_files): Remove.
17797         (set_block_levels): Move to cfgexpand.c.
17798         (insn_locators_initialize): Remove.
17799         (pass_insn_locators_initialize): Remove.
17800         (locations_locators_locs, locations_locators_vals): New static vars.
17801         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
17802         Likewise.
17803         (insn_locators_alloc, insn_locators_finalize,
17804         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
17805         New functions.
17806         (locator_location): New.
17807         (locator_line, locator_file): Rewrite.
17808         * rtl.h (emit_line_note): Kill.
17809         (insn_locators_alloc, insn_locators_finalize,
17810         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
17811         Declare.
17812         * tree-inline.c (initialize_cfun): Do not initialize
17813         ib_boundaries_block.
17814         * passes.c (pass_insn_locators_initialize): Remove.
17815
17816 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
17817
17818         * tree-cfg.c (move_block_to_fn): Release bb from dominance
17819         info.  Update last_basic_block correctly.
17820
17821 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
17822
17823         PR target/31701
17824         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
17825         register itself to hold the offset constant.  Tell flow the use
17826         of r4 and r5 when they are used.
17827
17828 2007-04-27  Richard Guenther  <rguenther@suse.de>
17829
17830         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
17831         if we simplified anything.
17832         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
17833         warnings until we did a simplification and the stmt was not
17834         marked as TREE_NO_WARNING.
17835
17836 2007-04-27  Mike Stump  <mrs@apple.com>
17837
17838         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
17839
17840 2007-04-27  Ian Lance Taylor  <iant@google.com>
17841
17842         PR middle-end/31710
17843         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
17844         TYPE_MAX_VALUE exist, convert them to the new type.
17845
17846 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
17847
17848         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
17849         if it claims to be available.
17850         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
17851         edge is redirected.
17852         (perform_tree_ssa_dce): Always free postdominators.
17853
17854 2007-04-27  Richard Henderson  <rth@redhat.com>
17855
17856         * config/alpha/predicates.md (aligned_memory_operand): Mark
17857         as define_special_predicate.
17858         (unaligned_memory_operand, normal_memory_operand): Likewise.
17859         (reg_or_unaligned_mem_operand): Remove.
17860         (any_memory_operand): Match the documentation and check for
17861         non-renumbered pseudos during reload.
17862         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
17863         alpha_secondary_reload_class, update to new interface, make static.
17864         Handle CQImode like HImode.  Remove FP subreg check.
17865         (alpha_expand_mov): Use replace_equiv_address.
17866         (alpha_expand_mov_nobwx): Use any_memory_operand.
17867         (TARGET_SECONDARY_RELOAD): New.
17868         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
17869         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
17870         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
17871         * config/alpha/alpha.md: ... here.
17872         (RELOAD12, reloadmode): New.
17873         (movcqi): New.
17874         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
17875         Don't handle the aligned case here.
17876         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
17877         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
17878         reload_inhi_help.  Don't expect a scratch register.
17879         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
17880         reload_outhi_help.
17881         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
17882
17883 2007-04-27  Richard Guenther  <rguenther@suse.de>
17884
17885         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
17886
17887 2007-04-27  Richard Guenther  <rguenther@suse.de>
17888
17889         PR tree-optimization/30965
17890         PR tree-optimization/30978
17891         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
17892         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
17893         (find_equivalent_equality_comparison): Likewise.
17894         (simplify_cond): Likewise.
17895         (get_prop_source_stmt): New helper.
17896         (get_prop_dest_stmt): Likewise.
17897         (can_propagate_from): Likewise.
17898         (remove_prop_source_from_use): Likewise.
17899         (combine_cond_expr_cond): Likewise.
17900         (forward_propagate_comparison): New function.
17901         (forward_propagate_into_cond): Rewrite to use fold for
17902         tree combining.
17903         (tree_ssa_forward_propagate_single_use_vars): Call
17904         forward_propagate_comparison to propagate comparisons.
17905
17906 2007-04-27  Richard Guenther  <rguenther@suse.de>
17907
17908         PR tree-optimization/31715
17909         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
17910         sure to do computation on the offset in an appropriate
17911         signed type.
17912
17913 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
17914
17915         * reload.h (elimination_target_reg_p): Declare.
17916         * reload.c (find_reloads): Don't apply the reg_rtx move
17917         optimization if the SET_DEST satisfies elimination_target_reg_p.
17918         * reload1.c (elimination_target_reg_p): New function.
17919         (gen_reload): In the move/add2 fallback, make sure that op0
17920         does not overlap the destination register.
17921
17922 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
17923
17924         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
17925         transform only GIMPLE_MODIFY_STMTs.
17926         * tree-complex.c (expand_complex_operations_1): Ditto.
17927         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
17928         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
17929         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
17930         branches.
17931         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
17932         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
17933         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
17934         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
17935         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
17936         slpeel_add_loop_guard): Ditto.
17937         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
17938         * lambda-code.c (perfect_nestify): Ditto.
17939         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
17940         before the first statement.
17941         * tree-optimize.c (execute_free_datastructures): Fix comments.
17942         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
17943         * tree-flow.h (disband_implicit_edges): Declaration removed.
17944         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
17945         branches.
17946         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle
17947         COND_EXPRs without gotos.
17948         (disband_implicit_edges, has_label_p): Removed.
17949         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
17950         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
17951         branches.
17952         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
17953         side effects.
17954         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
17955         also for COND_EXPRs.
17956         * cfgexpand.c (label_rtx_for_bb): New function.
17957         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
17958         Use label_rtx_for_bb to find the labels.
17959         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
17960         last block.  Detect fallthru edges.
17961
17962 2007-04-26  Ian Lance Taylor  <iant@google.com>
17963
17964         PR target/28675
17965         * reload.c (find_reloads_subreg_address): If the address was valid
17966         in the original mode but not in the new mode, reload the whole
17967         address.
17968
17969 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
17970
17971         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
17972         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
17973         (cleanup_control_expr_graph): Do not invalidate dominance info.
17974         Record altered blocks.
17975         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
17976         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
17977         cleanup_tree_cfg_bb): New functions.
17978         (remove_forwarder_block): Do not maintain the worklist of blocks.
17979         Record altered blocks.
17980         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
17981         not over whole cfg.
17982         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
17983         delete_unreachable_blocks if dominators are not available.
17984         * tree-inline.c (optimize_inline_calls): Free dominance information
17985         earlier.
17986         * tree-flow.h (remove_edge_and_dominated_blocks,
17987         cfgcleanup_altered_bbs): Altered.
17988         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
17989         blocks.
17990         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
17991         functions.
17992         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
17993         do not invalidate dominators.
17994
17995 2007-04-26  Anatoly Sokolov <aesok@post.ru>
17996
17997         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
17998         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
17999         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
18000         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
18001
18002 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
18003
18004         * config/ia64/ia64.md (ip_value): Fix itanium_class attribute.
18005
18006 2007-04-26  Richard Guenther  <rguenther@suse.de>
18007
18008         PR tree-optimization/31703
18009         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
18010         the right type for the target of the bittest.
18011
18012 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
18013
18014         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
18015         ix86_sol10_return_in_memory.
18016
18017 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
18018
18019         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
18020         variables.
18021
18022 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
18023
18024         PR c++/31598
18025         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
18026
18027         PR tree-optimization/30558
18028         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
18029         clear this_state.prev_try.
18030
18031 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
18032             Mark Mitchell  <mark@codesourcery.com>
18033
18034         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
18035         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
18036         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
18037
18038 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
18039
18040         PR driver/31107
18041         * doc/invoke.texi (%:print-asm-header): Document.
18042         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
18043         and -ftarget-help.
18044         (static_spec_functions): Add print-asm-header.
18045         (main): Print a banner before the --target-help linker options.
18046         (print_asm_header_spec_function): New function.
18047
18048 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
18049
18050         PR target/31403
18051         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
18052         (movsf_ie): Likewise.
18053
18054 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
18055
18056         * doc/extend.texi ([Type Traits]): Adjust per N2255.
18057
18058 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
18059
18060         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an
18061         exception for divide-by-zero.
18062         (__umodsi3, __modsi3): Likewise.
18063
18064 2007-04-25  Dirk Mueller  <dmueller@suse.de>
18065
18066         * c-typeck.c (build_compound_expr): Annotate warning()
18067         call with OPT_Wunused_value.
18068         * tree-ssa.c (warn_uninit): Annotate warning with
18069         OPT_Wunintialized.
18070         * c-common.c (handle_sentinel_attribute): Annotate warning
18071         call with OPT_Wattributes.
18072
18073 2007-04-25  Thiemo Seufer  <ths@mips.com>
18074
18075         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
18076         (mips16): Fix typo.
18077         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
18078         on to the assembler.  Improve handling of -mno-mips16.  Add handling
18079         of -mno-mips3d, -mno-dsp, -mno-dspr2.
18080         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
18081         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
18082         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
18083
18084 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
18085
18086         PR target/31680
18087         * config/i386/winnt.c (i386_pe_file_end): Strip only
18088         USER_LABEL_PREFIX when writing export name.
18089
18090 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
18091
18092         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
18093         sh/elf.h, vx-common.h and vxworks.h.
18094         * config/sh/sh.h: Include config/vxworks-dummy.h.
18095         (SUBTARGET_OVERRIDE_OPTIONS): Define.
18096         (OVERRIDE_OPTIONS): Use it.
18097         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
18098         (vxworks_picreg): New pattern.
18099         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
18100         VXWORKS_OS_CPP_BUILTINS.
18101         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
18102         to their VXWORKS_* equivalents.
18103         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
18104         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
18105         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
18106         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
18107         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
18108         -mrtp/-fPIC multilibs.
18109         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
18110         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
18111         (MULTILIB_OSDIRNAMES): Delete.
18112
18113 2007-04-25  Anatoly Sokolov <aesok@post.ru>
18114
18115         PR target/18989
18116         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
18117
18118 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
18119
18120         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
18121         rounding mode to be specified by the caller.
18122         (real_to_mpfr) Likewise.
18123         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
18124         include new arguments.
18125         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
18126
18127 2007-04-24  Ian Lance Taylor  <iant@google.com>
18128
18129         PR tree-optimization/31605
18130         * tree-vrp.c (set_value_range): Check that min and max are not
18131         both overflow infinities.
18132         (set_value_range_to_value): New static function.
18133         (extract_range_from_binary_expr): Call set_value_range_to_value.
18134         (extract_range_from_cond_expr): Likewise.
18135         (extract_range_from_expr): Likewise.
18136         (extract_range_from_unary_expr): Likewise.  Don't create a range
18137         which overflows on both sides.
18138         (vrp_meet): Check for a useless range.
18139         (vrp_visit_phi_node): If we see a constant which looks like an
18140         overflow infinity, turn off the TREE_OVERFLOW flag.
18141
18142 2007-04-24  Ian Lance Taylor  <iant@google.com>
18143
18144         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
18145
18146 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
18147
18148         PR diagnostic/25923
18149         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
18150         diagnostic message is being built.
18151         * tree-pretty-print.c (dump_generic_node): Only write the
18152         formatted text into BUFFER's stream if we are not building a
18153         diagnostic message.
18154         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
18155         dump_generic_node.
18156         * Makefile.in (toplev.o): Depend on tree-pass.h.
18157
18158 2007-04-24  Ian Lance Taylor  <iant@google.com>
18159
18160         PR tree-optimization/31602
18161         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
18162         conditionals in the copied loop header.
18163         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
18164         warnings if TREE_NO_WARNING is set.
18165         * doc/invoke.texi (Warning Options): Clarify that
18166         -Wstrict-overflow does not warn about loops.
18167
18168 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
18169
18170         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
18171         expand on the comment about _Decimal128 arguments and check the
18172         integer result of the modulus operation; for 64-bit ELF ABI, ensure
18173         that _Decimal128 argument uses even/odd register pair.
18174         (function_arg): Ditto.
18175
18176 2007-04-24  Hui-May Chang <hm.chang@apple.com>
18177
18178         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
18179         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
18180
18181 2007-04-24  Richard Guenther  <rguenther@suse.de>
18182             Olga Golovanevsky  <olga@il.ibm.com>
18183
18184         * fold-const.c (multiple_of_p): Check for bottom
18185         to be zero.
18186
18187 2007-04-24  Richard Henderson  <rth@redhat.com>
18188
18189         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
18190         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
18191         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
18192         looking for non-zero bits shifted out.  Avoid a recursive call
18193         when constructing the scalar.
18194         (__floatundisf): Likewise.
18195
18196 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
18197
18198         * dwarf2out.c (field_byte_offset): Move the existing logic
18199         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
18200         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
18201
18202 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
18203
18204         PR target/31641
18205         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant
18206         length argument of 0 for memset.
18207         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
18208         unsigned shift instead of the signed variant.
18209
18210 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
18211
18212         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
18213         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
18214         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
18215         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
18216         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
18217         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
18218         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
18219         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
18220         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
18221         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
18222         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
18223         "mul<mode>3", "div<mode>3"): Insn definitions added.
18224         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
18225         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
18226         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
18227         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
18228         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
18229         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
18230         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
18231         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
18232         TARGET_FLOAT_FORMAT): Macro definitions removed.
18233         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
18234         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
18235         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
18236         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
18237         (s390_gen_rtx_const_DI): Function removed.
18238         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
18239
18240 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
18241
18242         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
18243         over an external ffs function.
18244
18245 2007-04-24  Chao-ying Fu  <fu@mips.com>
18246             Richard Sandiford  <richard@nildram.co.uk>
18247
18248         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
18249         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
18250         (smadd_widen_optab, umadd_widen_optab): Define.
18251         * optabs.c (init_optabs): Initialize smadd_widen_optab and
18252         umadd_widen_optab.
18253         * genopinit.c (optabs): Fill in smadd_widen_optab and
18254         umadd_widen_optab.
18255         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
18256         and umadd_widen_optab to implement multiply-add sequences.
18257         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
18258         (<u>maddsidi4): ...this.  Extend condition to include
18259         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
18260         of operand 0 to "ka" and use the three-operand form of madd<u>
18261         for TARGET_DSPR2.
18262         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
18263         to define_expands.
18264         * config/mips/constraints.md (ka): New register constraint.
18265
18266 2007-04-24  Jan Hubicka  <j@suse.cz>
18267
18268         Revert:
18269
18270         2007-04-23  Jan Hubicka  <jh@suse.cz>
18271         * function.c (init_function_start): Don't init line number info.
18272         (expand_function_end): Update.
18273         (reset_block_changes, record_block_change, finalize_block_changes,
18274         check_block_change, free_block_changes): Kill.
18275         * function.h (reset_block_changes, record_block_change,
18276         finalize_block_changes, check_block_change, free_block_changes):
18277         Remove prototypes.
18278         (struct function): Remove ib_boundaries_block.
18279         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
18280         Use curr_insn_locator to initialize locator.
18281         (emit_line_note): Remove.
18282         * cfgexpand.c (expand_gimple_cond_expr): Update.
18283         (construct_exit_block): Likewise.
18284         (tree_expand_cfg): Initialize/finalize locators.
18285         * expr.c (expand_expr_real): Update.
18286         * cfglayout.c (line_locators_locs, line_locators_lines,
18287         file_locators_locs, file_locators_files): Remove.
18288         (set_block_levels): Move to cfgexpand.c.
18289         (insn_locators_initialize): Remove.
18290         (pass_insn_locators_initialize): Remove.
18291         (locations_locators_locs, locations_locators_vals): New static vars.
18292         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
18293         Likewise.
18294         (insn_locators_alloc, insn_locators_finalize,
18295         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
18296         New functions.
18297         (locator_location): New.
18298         (locator_line, locator_file): Rewrite.
18299         * rtl.h (emit_line_note): Kill.
18300         (insn_locators_alloc, insn_locators_finalize,
18301         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
18302         Declare.
18303         * tree-inline.c (initialize_cfun): Do not initialize
18304         ib_boundaries_block.
18305         * passes.c (pass_insn_locators_initialize): Remove.
18306
18307 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
18308
18309         * doc/invoke.texi: Removed leading '-' from option index entries.
18310
18311 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
18312
18313         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
18314         Use phi_nodes_ptr.
18315         (create_phi_node): Use set_phi_nodes.
18316         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
18317         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
18318         (combine_blocks): Use bb_stmt_list and set_bb_stmt_list.
18319         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
18320         (bsi_start, bsi_last): Use bb_stmt_list.
18321         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
18322         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
18323         Traverse the statements using tsi iterator.
18324         * basic-block.h (struct basic_block_def): Fields stmt_list
18325         and phi_nodes moved to ...
18326         (struct tree_bb_info): ... new structure.
18327         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
18328         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
18329         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
18330         (tree_verify_flow_info): Verify that il.tree is not set for
18331         entry and exit block.
18332         (tree_split_block): Use set_bb_stmt_list.
18333
18334 2007-04-23  Mike Stump  <mrs@apple.com>
18335
18336         * config/i386/i386.c (ix86_tune_features
18337         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
18338         nocona and core2.
18339
18340 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
18341
18342         * config/i386/i386.md (prefix_extra): New attribute.
18343         (length): Add prefix_extra.
18344
18345         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
18346         (sse2_movntv2di): Likewise.
18347         (sse2_cvtps2dq): Likewise.
18348         (sse2_cvtpd2pi): Likewise.
18349         (sse2_cvttpd2pi): Likewise.
18350         (*sse2_cvtpd2ps): Likewise.
18351         (*add<mode>3): Likewise.
18352         (sse2_ssadd<mode>3): Likewise.
18353         (sse2_usadd<mode>3): Likewise.
18354         (*sub<mode>3): Likewise.
18355         (sse2_sssub<mode>3): Likewise.
18356         (sse2_ussub<mode>3): Likewise.
18357         (*mulv8hi3): Likewise.
18358         (*smulv8hi3_highpart): Likewise.
18359         (*umulv8hi3_highpart): Likewise.
18360         (sse2_umulv2siv2di3): Likewise.
18361         (sse2_pmaddwd): Likewise.
18362         (ashr<mode>3): Likewise.
18363         (lshr<mode>3): Likewise.
18364         (ashl<mode>3): Likewise.
18365         (sse2_ashlti3): Likewise.
18366         (sse2_lshrti3): Likewise.
18367         (*umaxv16qi3): Likewise.
18368         (*smaxv8hi3): Likewise.
18369         (*uminv16qi3): Likewise.
18370         (*sminv8hi3): Likewise.
18371         (sse2_eq<mode>3): Likewise.
18372         (sse2_gt<mode>3): Likewise.
18373         (*and<mode>3): Likewise.
18374         (sse2_nand<mode>3): Likewise.
18375         (*ior<mode>3): Likewise.
18376         (*xor<mode>3): Likewise.
18377         (sse2_packsswb): Likewise.
18378         (sse2_packssdw): Likewise.
18379         (sse2_packuswb): Likewise.
18380         (sse2_punpckhbw): Likewise.
18381         (sse2_punpcklbw): Likewise.
18382         (sse2_punpckhwd): Likewise.
18383         (sse2_punpcklwd): Likewise.
18384         (sse2_punpckhdq): Likewise.
18385         (sse2_punpckldq): Likewise.
18386         (sse2_punpckhqdq): Likewise.
18387         (sse2_punpcklqdq): Likewise.
18388         (*sse2_pinsrw): Likewise.
18389         (*sse2_pextrw): Likewise.
18390         (sse2_pshufd_1): Likewise.
18391         (sse2_uavgv16qi3): Likewise.
18392         (sse2_uavgv8hi3): Likewise.
18393         (sse2_psadbw): Likewise.
18394         (sse2_pmovmskb): Likewise.
18395         (*sse2_maskmovdqu): Likewise.
18396         (*sse2_maskmovdqu_rex64): Likewise.
18397         (sse4a_extrqi): Likewise.
18398         (sse4a_extrq): Likewise.
18399         (sse3_lddqu): Set prefix_rep.
18400         (sse3_addsubv4sf3): Likewise.
18401         (sse3_haddv4sf3): Likewise.
18402         (sse3_hsubv4sf3): Likewise.
18403         (sse_cvtss2si): Likewise.
18404         (sse_cvtss2si_2): Likewise.
18405         (sse_cvtss2siq): Likewise.
18406         (sse_cvtss2siq_2): Likewise.
18407         (sse_cvttss2si): Likewise.
18408         (sse_cvttss2siq): Likewise.
18409         (sse2_cvttps2dq): Likewise.
18410         (sse3_movshdup): Likewise.
18411         (sse3_movsldup): Likewise.
18412         (sse2_cvtsd2si): Likewise.
18413         (sse2_cvtsd2si_2): Likewise.
18414         (sse2_cvtsd2siq): Likewise.
18415         (sse2_cvtsd2siq_2): Likewise.
18416         (sse2_cvttsd2si): Likewise.
18417         (sse2_cvttsd2siq): Likewise.
18418         (*sse2_cvtpd2dq): Likewise.
18419         (*sse2_cvttpd2dq): Likewise.
18420         (sse2_pshuflw_1): Likewise.
18421         (sse2_pshufhw_1): Likewise.
18422         (sse4a_insertqi): Likewise.
18423         (sse4a_insertq): Likewise.
18424         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
18425         (ssse3_phadddv4si3): Likewise.
18426         (ssse3_phaddswv8hi3): Likewise.
18427         (ssse3_phsubwv8hi3): Likewise.
18428         (ssse3_phsubdv4si3): Likewise.
18429         (ssse3_phsubswv8hi3): Likewise.
18430         (ssse3_pmaddubswv8hi3): Likewise.
18431         (ssse3_pmulhrswv8hi3): Likewise.
18432         (ssse3_pshufbv16qi3): Likewise.
18433         (ssse3_psign<mode>3): Likewise.
18434         (ssse3_palignrti): Likewise.
18435         (abs<mode>2): Likewise.
18436         (ssse3_phaddwv4hi3): Set prefix_extra.
18437         (ssse3_phadddv2si3): Likewise.
18438         (ssse3_phaddswv4hi3): Likewise.
18439         (ssse3_phsubwv4hi3): Likewise.
18440         (ssse3_phsubdv2si3): Likewise.
18441         (ssse3_phsubswv4hi3): Likewise.
18442         (ssse3_pmaddubswv4hi3): Likewise.
18443         (ssse3_pmulhrswv4hi3): Likewise.
18444         (ssse3_pshufbv8qi3): Likewise.
18445         (ssse3_psign<mode>3): Likewise.
18446         (ssse3_palignrdi): Likewise.
18447         (abs<mode>2): Likewise.
18448         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
18449         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
18450         (sse2_pmovmskb): Set mode to SI instead of V2DF.
18451
18452 2007-04-23  Nick Clifton  <nickc@redhat.com>
18453
18454         * params.def: Fix formatting of emacs local variables.
18455
18456 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
18457
18458         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
18459         move if inter-unit move isn't allowed.
18460         Don't split moving the first element of V2DI to DI to inter-unit
18461         move if inter-unit move isn't allowed.
18462
18463 2007-04-23  Richard Guenther  <rguenther@suse.de>
18464
18465         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
18466         and CDI_POST_DOMINATORS separately.
18467
18468 2007-04-23  Nick Clifton  <nickc@redhat.com>
18469
18470         * c.opt (Wformat-contains-nul): Add warning attribute.
18471
18472 2007-04-23  Jan Hubicka  <jh@suse.cz>
18473
18474         * function.c (init_function_start): Don't init line number info.
18475         (expand_function_end): Update.
18476         (reset_block_changes, record_block_change, finalize_block_changes,
18477         check_block_change, free_block_changes): Kill.
18478         * function.h (reset_block_changes, record_block_change,
18479         finalize_block_changes, check_block_change, free_block_changes):
18480         Remove prototypes.
18481         (struct function): Remove ib_boundaries_block.
18482         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
18483         Use curr_insn_locator to initialize locator.
18484         (emit_line_note): Remove.
18485         * cfgexpand.c (expand_gimple_cond_expr): Update.
18486         (construct_exit_block): Likewise.
18487         (tree_expand_cfg): Initialize/finalize locators.
18488         * expr.c (expand_expr_real): Update.
18489         * cfglayout.c (line_locators_locs, line_locators_lines,
18490         file_locators_locs, file_locators_files): Remove.
18491         (set_block_levels): Move to cfgexpand.c.
18492         (insn_locators_initialize): Remove.
18493         (pass_insn_locators_initialize): Remove.
18494         (locations_locators_locs, locations_locators_vals): New static vars.
18495         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
18496         Likewise.
18497         (insn_locators_alloc, insn_locators_finalize,
18498         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
18499         New functions.
18500         (locator_location): New.
18501         (locator_line, locator_file): Rewrite.
18502         * rtl.h (emit_line_note): Kill.
18503         (insn_locators_alloc, insn_locators_finalize,
18504         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
18505         Declare.
18506         * tree-inline.c (initialize_cfun): Do not initialize
18507         ib_boundaries_block.
18508         * passes.c (pass_insn_locators_initialize): Remove.
18509
18510 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18511
18512         PR middle-end/31448
18513         * expr.c (reduce_to_bit_field_precision): Handle
18514         CONST_INT rtx's.
18515
18516 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
18517
18518         PR tree-optimization/24659
18519         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
18520         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
18521         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
18522         * genopinit.c (optabs): Rename vec_pack_mod_optab
18523         to vec_pack_trunc_optab.
18524         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
18525         early for scalar floating point operands for NOP_EXPR.
18526         (vectorizable_type_promotion): Ditto.
18527         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
18528         vec_pack_trunc_optab.
18529         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
18530
18531         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
18532         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
18533         Rename from VEC_PACK_MOD_EXPR.
18534         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
18535         * expr.c (expand_expr_real_1): Ditto.
18536         * tree-inline.c (estimate_num_insns_1): Ditto.
18537         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
18538
18539         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
18540         (vec_unpacks_lo_v4sf): Ditto.
18541         (vec_pack_trunc_v2df): Ditto.
18542         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
18543         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
18544         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
18545
18546         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
18547         vec_pack_mod_v8hi.
18548         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
18549
18550         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
18551         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
18552         packing of floating point operands.
18553         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
18554         represent unpacking of floating point operands.
18555         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
18556         [vec_unpacks_hi]: Ditto.
18557         [vec_unpacks_lo]: Ditto.
18558
18559 2007-04-22  Jan Hubicka  <jh@suse.cz>
18560
18561         * final.c (rest_of_handle_final): Call
18562         targetm.asm_out.constructor/targetm.asm_out.destructor
18563         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
18564         proper priority via decl_*_priority_insert.
18565         * c-common.c (c_expand_body): Likewise.
18566
18567 2007-04-22  Richard Guenther  <rguenther@suse.de>
18568
18569         PR tree-optimization/29789
18570         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
18571         (rewrite_reciprocal): New helper split out from
18572         determine_invariantness_stmt.
18573         (rewrite_bittest): Likewise.
18574         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
18575         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
18576         is not.
18577
18578 2007-04-22  Revital Eres  <eres@il.ibm.com>
18579
18580         * loop-unroll.c (var_to_expand): New field to support also
18581         insns of the form x = something + x.
18582         (analyze_insn_to_expand_var): Use it.
18583         (expand_var_during_unrolling): Likewise.
18584
18585 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
18586
18587         * predict.c: Include pointer-set.h.
18588         (bb_predictions): New variable.
18589         (tree_predicted_by_p, tree_predict_edge,
18590         remove_predictions_associated_with_edge): Use bb_predictions map
18591         instead of bb->predictions.
18592         (clear_bb_predictions, assert_is_empty): New functions.
18593         (combine_predictions_for_bb): Use bb_predictions map.  Call
18594         clear_bb_predictions.
18595         (tree_estimate_probability): Create and free bb_predictions map.
18596         * Makefile.in (predict.o): Add pointer-set.h dependency.
18597         * basic-block.h (struct basic_block_def): Remove predictions
18598         field.
18599         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
18600
18601 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
18602
18603         PR target/31480
18604         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
18605         is null.
18606
18607 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18608
18609         * timevar.c (timevar_print): Change reference of --disable-checking to
18610         --enable-checking=release.  Also warn if assert checking is disabled.
18611
18612 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18613
18614         PR C/30265
18615         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
18616         decl as addressable if the compound literal was marked as
18617         addressable.
18618         Mark the decl as a gimple register if it is a complex or
18619         vector decl and does not live in memory.
18620
18621 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18622
18623         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
18624         (GENERIC_NEXT): New function macro.
18625         (PHI_CHAIN): Use phi_node's new chain variable.
18626         (tree_phi_node): Change tree_common to tree_base
18627         and add the chain field.
18628         * tree-phinodes.c (make_phi_node): Don't set
18629         TREE_TYPE on the new node.
18630         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
18631         instead of checking GIMPLE_TUPLE_P in chain_next.
18632         * tree-vect-transform.c
18633         (get_initial_def_for_induction): Look at
18634         PHI_RESULT_TREE for the type of the phi node.
18635         (update_vuses_to_preheader): Use PHI_CHAIN
18636         instead of TREE_CHAIN on the phi node.
18637         * tree-ssa-structalias.c (compute_points_to_sets):
18638         Likewise.
18639         (ipa_pta_execute): Likewise.
18640
18641 2007-04-21  Richard Guenther  <rguenther@suse.de>
18642
18643         PR middle-end/31136
18644         * fold-const.c (fold_unary): Call fold_convert_const on the
18645         original tree.
18646
18647 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
18648
18649         * gcse.c (store_killed_in_insn): Handle PARALLELs.
18650         (store_killed_in_pat): New.
18651
18652 2007-04-20  Richard Henderson  <rth@redhat.com>
18653
18654         PR target/31628
18655         * config/i386/i386.c (type_has_variadic_args_p): Look for any
18656         TREE_LIST with a void_type_node value, not void_list_node exactly.
18657
18658 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
18659
18660         * doc/standards.texi: Re-arrange into language-specific
18661         subsections. Add a C++ section, documenting which standards we
18662         support.
18663
18664 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
18665
18666         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
18667         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
18668
18669 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
18670
18671         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
18672         ecrti.o and crtbegin.o.
18673         (LIB_DEFAULT_SPEC): Include -lc.
18674         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
18675
18676 2007-04-20  Richard Henderson  <rth@redhat.com>
18677
18678         PR target/28623
18679         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
18680         argument; update all callers.
18681         (get_unaligned_offset): New.
18682         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
18683         get_unaligned_address, just pass on the address directly.
18684         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
18685         the subreg in the helper patterns.
18686         (unaligned_extendqidi_le): Use get_unaligned_offset.
18687         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
18688         (unaligned_extendhidi_be): Likewise.
18689         (unaligned_extendhidi): Tidy.
18690         * config/alpha/alpha-protos.h: Update.
18691
18692 2007-04-20  Richard Henderson  <rth@redhat.com>
18693
18694         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
18695         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
18696         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
18697         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
18698         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
18699         (CPP_SPEC): Don't include %(cpp_subtarget).
18700         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
18701         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
18702         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
18703
18704 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
18705
18706         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
18707         for __builtin_ia32_cmpordss.
18708
18709         PR tree-optimization/31632
18710         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
18711         and arg1 for optimizations of comparison against min/max values.
18712         Fold arg0 to arg1's type for optimizations of comparison against
18713         min+1 and max-1 values.
18714
18715 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
18716
18717         * reload.c (combine_reloads): When trying to use a dying register,
18718         check whether it's uninitialized and don't use if so.
18719
18720 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
18721
18722         * fold-const.c: Remove prototypes for native_encode_expr and
18723         native_interpret_expr.
18724         (native_encode_expr): Make non-static.
18725         (native_interpret_expr): Likewise.
18726         * tree.h: Add prototypes for the above.
18727
18728 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
18729
18730         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
18731         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
18732         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
18733         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
18734         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
18735         Add length attributes.
18736
18737 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
18738
18739         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
18740         not that it is 1.
18741
18742         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
18743         __STDC_WANT_DEC_FP__.
18744
18745 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
18746
18747         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
18748         for long double compatibility.
18749         * configure: Regenerate.
18750
18751 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
18752
18753         PR rtl-optimization/29841
18754         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
18755         trap instructions.
18756         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
18757         that may cause control flow transfer from being moved.
18758
18759 2007-04-18  Jan Hubicka  <jh@suse.cz>
18760
18761         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
18762         types.
18763
18764 2007-04-18  Eric Christopher  <echristo@apple.com>
18765
18766         * config/rs6000/darwin.md (load_macho_picbase): Use link register
18767         only. Update operands.
18768         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
18769         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
18770         link register to pic register.
18771
18772 2007-04-18  Dirk Mueller  <dmueller@suse.de>
18773
18774         PR diagnostic/31227
18775         * tree-vrp.c (search_for_addr_array): New.
18776         (check_array_bounds): Suppress warning about
18777         address taken of array refs if its not de-referenced.
18778
18779 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
18780
18781         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
18782         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
18783
18784         * tree-vectorizer.h (NITERS_KNOWN_P): New.
18785         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
18786         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
18787
18788         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
18789         dump print.
18790         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
18791         print message.
18792         (vect_analyze_scalar_cycles): Fix indentation.
18793         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
18794         (vect_mark_relevant): Include phis in relevance analysis.
18795
18796         * tree-vect-transform.c (vect_transform_loop): Add an assert.
18797
18798 2007-04-18  Anatoly Sokolov <aesok@post.ru>
18799
18800         * config/avr/avr.c (ptrreg_to_str): Replace error() with
18801         output_operand_lossage().
18802
18803 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
18804
18805         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
18806         the unused code for reduction without adjust-in-epilog to simplify the
18807         function.
18808
18809 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
18810
18811         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
18812         (S390_TDC_NEGATIVE_ZERO): New constant.
18813         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
18814         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
18815         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
18816         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
18817         (S390_TDC_POSITIVE_INFINITY): New constant.
18818         (S390_TDC_NEGATIVE_INFINITY): New constant.
18819         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
18820         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
18821         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
18822         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
18823         (S390_TDC_INFINITY): New constant.
18824         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
18825         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
18826         optimization for UNSPEC_CCZ_TO_INT.
18827         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
18828         ("*ccz_to_int"): New insn.
18829         ("isinf<mode>2"): New insn.
18830         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
18831         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
18832         (UNSPEC_CCZ_TO_INT): New constant.
18833
18834 2007-04-18  Richard Guenther  <rguenther@suse.de>
18835
18836         PR tree-optimization/19431
18837         PR tree-optimization/21463
18838         * tree-pass.h (pass_phiprop): Declare.
18839         * passes.c (init_optimization_passes): New phiprop pass.
18840         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
18841         (phivn_valid_p): New helper function.
18842         (phiprop_insert_phi): Likewise.
18843         (propagate_with_phi): Likewise.
18844         (tree_ssa_phiprop): New propagator propagating loads
18845         through phi nodes if profitable.
18846
18847 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
18848
18849         * tree-vect-analyze.c (process_use): New function.
18850         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
18851         Check phis in all bbs.
18852         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
18853         assert.
18854
18855 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
18856
18857         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
18858         we use REG_EQUAL.
18859
18860 2007-04-17  Anatoly Sokolov <aesok@post.ru>
18861
18862         PR target/30483
18863         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
18864         error().
18865
18866 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
18867
18868         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
18869         on "0".
18870         (sse_vmmulv4sf3): Likewise.
18871         (sse2_vmaddv2df3): Likewise.
18872         (sse2_vmmulv2df3): Likewise.
18873
18874 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
18875
18876         PR rtl-optimization/31360
18877         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
18878         (target_reg_cost): New.
18879         (init_set_costs): Initialize target_reg_cost.  Add comments
18880         regarding the rationale of the costs.
18881         (global_cost_for_size): Renamed to...
18882         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
18883         of register pressure.
18884         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
18885         estimate_reg_pressure_cost.  Add number of ivs.
18886         (determine_set_costs): Dump target_reg_cost.
18887         * loop-invariant.c (gain_for_invariant): Use
18888         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
18889         (best_gain_for_invariant, find_invariants_to_move): Remove
18890         n_inv_uses.
18891         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
18892         (target_reg_cost): Declare.
18893         (global_cost_for_size): Declaration removed.
18894         (estimate_reg_pressure_cost): Declare.
18895
18896 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
18897
18898         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
18899         regnos into even/odd register pairs.
18900         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
18901         TDmode similar to the other floating point modes.
18902         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
18903         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
18904         define_expand's.
18905         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
18906         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
18907         (movdd_hardfloat64): Use TARGET_MFPGPR.
18908
18909 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
18910
18911         * reload1.c (delete_output_reload): Don't count output in n_inherited.
18912
18913         Revert
18914         2005-01-05  Richard Henderson  <rth@redhat.com>
18915         PR rtl-opt/10692
18916         * reload1.c (do_input_reload): Restrict the optimization deleteing
18917         a previous output reload to RELOAD_FOR_INPUT.
18918
18919 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
18920
18921         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
18922         induc_vec_info_type.
18923         (vectorizable_induction): New function declaration.
18924         * tree-vect-transform.c (get_initial_def_for_induction): No need to
18925         check if already vectorized.  Find first place in BB where new stmts
18926         can be inserted.  Takes only one argument.
18927         (vectorizable_induction): New function.
18928         (vect_transform_stmt): Add case for induc_vec_info_type to call
18929         vectorizable_induction.
18930         (vect_transform_loop): Consider phis for vectorization.
18931         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
18932         condition.
18933         (analyze_operations): Call vectorizable_induction when analyzing phis.
18934         Fix comment.
18935         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
18936         (vect_mark_relevant): Include phis in relevance analysis.
18937         (vect_mark_stmts_to_be_vectorize): Likewise.
18938         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
18939
18940 2007-04-16  Lawrence Crowl  <crowl@google.com>
18941
18942         * doc/invoke.texi (Debugging Options): Add documentation for the
18943         -femit-struct-debug options -femit-struct-debug-baseonly,
18944         -femit-struct-debug-reduced, and
18945         -femit-struct-debug-detailed[=...].
18946
18947         * c-opts.c (c_common_handle_option): Add
18948         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
18949         and OPT_femit_struct_debug_detailed_.
18950         * c.opt: Add specifications for
18951         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
18952         and -femit-struct-debug-detailed[=...].
18953         * opts.c (set_struct_debug_option): Parse the
18954         -femit-struct-debug-... options.
18955         * opts.c (matches_main_base, main_input_basename,
18956         main_input_baselength, base_of_path, matches_main_base): Add
18957         variables and functions to compare header base name to compilation
18958         unit base name.
18959         * opts.c (should_emit_struct_debug): Add to determine to emit a
18960         structure based on the option.
18961         (dump_struct_debug) Also disabled function to debug this
18962         function.
18963         * opts.c (handle_options): Save the base name of the
18964         compilation unit.
18965
18966         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
18967         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
18968         This hook indicates if a type is generic.  Set it by default
18969         to "never generic".
18970         * langhooks.h (struct lang_hooks_for_types): Add a new hook
18971         to determine if a struct type is generic or not.
18972         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
18973         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
18974         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
18975         with live C++ hook.
18976
18977         * flags.h (enum debug_info_usage): Add an enumeration to describe
18978         a program's use of a structure type.
18979         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
18980         to indicate the program's usage of the type.  Filter structs based
18981         on the -femit-struct-debug-... specification.
18982         (gen_type_die): Split into two routines, gen_type_die and
18983         gen_type_die_with_usage.  gen_type_die is now a wrapper
18984         that assumes direct usage.
18985         (gen_type_die_with_usage): Replace calls to gen_type_die
18986         with gen_type_die_with_usage adding the program usage of
18987         the referenced type.
18988         (dwarf2out_imported_module_or_decl): Suppress struct debug
18989         information using should_emit_struct_debug when appropriate.
18990
18991 2007-04-16  Ian Lance Taylor  <iant@google.com>
18992
18993         PR tree-optimization/31522
18994         * tree-vrp.c (vr_phi_edge_counts): New static variable.
18995         (vrp_initialize): Allocate vr_phi_edge_counts.
18996         (vrp_visit_phi_node): Don't push to infinity if we saw a new
18997         executable edge.  Drop test for all constants.
18998         (vrp_finalize): Free vrp_phi_edge_counts.
18999
19000         * doc/cpp.texi (Common Predefined Macros): Clarify description of
19001         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
19002
19003         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
19004         predecessors at head rather than tail.
19005
19006 2007-04-16  Matthias Klose  <doko@debian.org>
19007
19008         * config/alpha/linux.h (CPP_SPEC): Define.
19009         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
19010
19011 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
19012
19013         * function.h: Remove sequence_stack extern declaration.
19014
19015 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
19016
19017         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
19018         TARGET_FIDOA.
19019         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
19020         defined.
19021
19022 2007-04-16  Anatoly Sokolov <aesok@post.ru>
19023
19024         * config/avr/avr.c (avr_arch_types): Rearranging  array.
19025         (enum avr_arch): Add.
19026         (avr_mcu_types): Use avr_arch enumeration constants instead of
19027         numbers.
19028         * config/avr/avr.h (LINK_SPEC): Simplify.
19029
19030 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
19031
19032         * config/m68k/m68k.c (m68k_libcall_value,
19033         m68k_function_value): Use macros for register names more.
19034
19035         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
19036         instead.
19037         (M68K_REGNAME): Use A6_REG.
19038         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
19039
19040 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
19041
19042         PR middle-end/28071
19043         * sched-int.h (struct deps): Split field 'pending_lists_length' into
19044         'pending_read_list_length' and 'pending_write_list_length'.  Update
19045         comment.
19046         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
19047         to handle two length counters instead of one.  Update all uses.
19048         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
19049         two length counters instead of one.
19050         * sched-rgn.c (propagate_deps): Update to handle two length counters
19051         instead of one.
19052
19053 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
19054
19055         PR target/31582
19056         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
19057         copy of source, pass it to ix86_expand_vector_set and return
19058         it as target.
19059
19060 2007-04-16  David Ung  <davidu@mips.com>
19061             Joseph Myers  <joseph@codesourcery.com>
19062
19063         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
19064         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
19065         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
19066         Add 74K processor information.
19067         * config/mips/mips.md: Include 74k.md.
19068         (cpu): Add 74kc,74kf,74kx.
19069         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
19070         * config/mips/74k.md: New.
19071         * doc/invoke.texi (MIPS Options): Document 74K support.
19072
19073 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
19074
19075         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
19076         vectorizable_* functions.
19077         * tree-vect-transform.c (vectorizable_call): Add check for
19078         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
19079         (vectorizable_store): likewise.
19080         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
19081         Add comments.
19082         (vectorizable_operation, vectorizable_type_demotion): Likewise.
19083         (vectorizable_type_promotion, vectorizable_load): Likewise.
19084         (vectorizable_live_operation, vectorizable_condition): Likewise.
19085         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
19086         STMT_VINFO_LIVE_P.
19087         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
19088
19089 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
19090
19091         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
19092         register numbers more.
19093         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
19094         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
19095         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
19096         FUNCTION_VALUE_REGNO_P): Likewise.
19097         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
19098         STATIC_CHAIN_REGNUM): Likewise.
19099         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
19100         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
19101         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
19102         * config/m68k/m68k.md (FP_REG): New.
19103
19104 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
19105
19106         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
19107         alignment on fido.
19108
19109 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
19110
19111         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
19112         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
19113         comment typos.
19114
19115 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
19116
19117         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
19118         cold loops.
19119
19120 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19121
19122         PR c/31520
19123         * c-decl.c (finish_decl): Grab the type of the decl after the call
19124         to store_init_value.
19125
19126 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
19127
19128         * common.opt (fforward-propagate): Fix "Optimization" annotation.
19129
19130 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
19131
19132         PR c++/25874
19133         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free
19134         dominators, post dominators and cleanup cfg before returning.
19135
19136 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
19137
19138         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
19139         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
19140
19141 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
19142
19143         * config.gcc: Recognize fido.
19144         * config/m68k/m68k-devices.def (fidoa): New.
19145         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
19146         __mfido__.
19147         (FL_FIDOA, TARGET_FIDOA): New.
19148         * config/m68k/m68k.opt (mfidoa): New.
19149
19150 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19151
19152         PR middle-end/31322
19153         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
19154         when a personality function is used.
19155
19156 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
19157
19158         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
19159
19160 2007-04-13  Mike Stump  <mrs@apple.com>
19161
19162         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
19163         we can...
19164         * config/darwin.opt (fapple-kext): Make C++ only.
19165         * config/darwin.c (darwin_override_options): Remove code to ensure
19166         -fapple-kext is given for C++ only.
19167
19168 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
19169
19170         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
19171         * config/mips/mips.c (override_options): Call
19172         SUBTARGET_OVERRIDE_OPTIONS, if defined.
19173
19174 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
19175
19176         * config/i386/i386.opt (msvr3-shlib): Removed.
19177
19178         * doc/invoke.texi: Remove -msvr3-shlib.
19179
19180 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
19181
19182         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
19183         with "popcnt" instruction.
19184
19185 2007-04-13  Richard Guenther  <rguenther@suse.de>
19186
19187         PR tree-optimization/21258
19188         * tree-vrp.c (compare_case_labels): New helper.
19189         (find_switch_asserts): New function.
19190         (find_assert_locations): Call it for SWITCH_EXPRs.
19191
19192 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
19193
19194         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
19195         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
19196         check is now implied in X87_FLOAT_MODE_P.
19197         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
19198         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
19199         (fix_trunc<mode>_i386_fisttp): Ditto.
19200         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
19201         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
19202         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
19203         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
19204         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
19205         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
19206         (unnamed_splitters): Ditto.
19207         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
19208         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
19209         FIRST_SSE_REG for local functions when SSE math is enabled or
19210         for functions with sseregparm attribute.
19211         (standard_80387_constant_p): Return -1 if mode is not
19212         X87_FLOAT_MODE_P.
19213         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
19214         (ix86_expand_compare): Ditto.
19215         (ix86_expand_carry_flag_compare): Ditto.
19216         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
19217         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
19218         DECIMAL_FLOAT_MODE_P.
19219         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
19220         of SCALAR_FLOAT_MODE_P.
19221         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
19222         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
19223         checks before FLOAT_MODE_P.
19224         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
19225         before FLOAT_MODE_P.
19226         [DIV]: Ditto.
19227         [NEG]: Ditto.
19228         [ABS]: Ditto.
19229         [SQRT]: Ditto.
19230         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
19231
19232 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
19233             Charles Wilson  <libtool@cwilson.fastmail.fm>
19234
19235         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
19236         (libgcc.mvars): Don't depend on them.
19237         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
19238         * exec-tool.in: New.
19239
19240 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
19241
19242         * doc/invoke.text (--help): Document --help=common.
19243
19244 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
19245
19246         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
19247
19248 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
19249
19250         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
19251         * genemit.c (main): Emit #include "integrate.h".
19252         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
19253         (LOADGP_RTP): New mips_loadgp_style.
19254         * config/mips/mips.h: Include config/vxworks-dummy.h.
19255         (TARGET_RTP_PIC): New macro.
19256         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
19257         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
19258         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
19259         for TARGET_RTP_PIC.
19260         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
19261         -mvxworks-pic when using -mrtp and a PIC option.
19262         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
19263         for RTP PIC.
19264         (mips_symbolic_constant_p, mips_symbolic_address_p)
19265         (mips_symbol_insns): Handle SYMBOL_HALF.
19266         (override_options): Warn about -G and -mrtp being used together.
19267         Initialize mips_lo_relocs[SYMBOL_HALF].
19268         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
19269         (mips_emit_loadgp): Handle LOADGP_RTP.
19270         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
19271         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
19272         (tablejump): Handle function-relative case table entries if
19273         TARGET_RTP_PIC.
19274         * config/mips/predicates.md (symbol_ref_operand): New predicate.
19275
19276 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
19277
19278         * config/mips/mips.md (load_call<mode>): Allow any general register.
19279         destination.
19280         (sibcall_value_internal, sibcall_value_multiple_internal)
19281         (call_value_internal, call_value_split, call_value_multiple_internal)
19282         (call_value_multiple_split): Remove constraints from operand 0.
19283
19284 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
19285
19286         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
19287         rather than loadgp_noshared.
19288         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
19289         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
19290         gen_loadgp.
19291         * config/mips/mips.md (loadgp): Rename to...
19292         (loadgp_newabi): ...this.
19293         (loadgp_noshared): Rename to...
19294         (loadgp_absolute): ...this.
19295
19296 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
19297
19298         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
19299         false for locally-binding symbols.
19300         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
19301
19302 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
19303
19304         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
19305         (SYMBOL_GOT_PAGE_OFST): ...this.
19306         (SYMBOL_GOT_GLOBAL): Rename to...
19307         (SYMBOL_GOT_DISP): ...this.
19308         (SYMBOL_GOTOFF_GLOBAL): Rename to...
19309         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
19310         * config/mips/mips.c (mips_global_symbol_p): New function.
19311         (mips_symbol_binds_local_p): Likewise.
19312         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
19313         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use
19314         mips_global_symbol_p and mips_symbol_binds_local_p.
19315         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
19316         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
19317         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
19318         SYMBOL_GOTOFF_DISP.
19319         (mips_ok_for_lazy_binding_p): New function.
19320         (mips_load_call_address, mips_expand_call): Use it.
19321         (mips_dangerous_for_la25_p): Likewise.
19322         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
19323         (*got_disp<mode>): Use got_disp_operand instead of
19324         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
19325         SYMBOL_GOTOFF_GLOBAL.
19326         (*got_page<mode>): Use got_page_ofst_operand instead of
19327         local_got_operand.
19328         * config/mips/predicates.md (const_call_insn_operand): Use
19329         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
19330         (global_got_operand): Rename to...
19331         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
19332         SYMBOL_GOT_GLOBAL.
19333         (local_got_operand): Rename to...
19334         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
19335         of SYMBOL_GOT_LOCAL.
19336
19337 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
19338
19339         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
19340         TARGET_CALL_CLOBBERED_GP.
19341         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
19342         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
19343         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
19344         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
19345         of TARGET_ABICALLS && !TARGET_NEWABI.
19346         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
19347         * config/mips/mips.c (mips_load_call_address): Check
19348         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
19349         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
19350         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
19351         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
19352         TARGET_ABICALLS && TARGET_NEWABI.
19353         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
19354         TARGET_ABICALLS.
19355         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
19356         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
19357         TARGET_ABICALLS && TARGET_NEWABI.
19358         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
19359         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
19360         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
19361         whether indirect calls must use $25.
19362         (mips_extra_live_on_entry): Check TARGET_GOT instead of
19363         TARGET_ABICALLS.
19364         * config/mips/mips.md (jal_macro): Check flag_pic and
19365         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
19366         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
19367         instead of TARGET_ABICALLS.
19368         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
19369         TARGET_ABICALLS && TARGET_OLDABI.
19370         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
19371         (sibcall): In the comment above the define_insn, mention
19372         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
19373         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
19374         instead of TARGET_ABICALLS.
19375
19376 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
19377
19378         * doc/md.texi (Blackfin family constraints): Document PA and PB.
19379         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
19380         (MACFLAGS_MATCH_P): New macro.
19381         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
19382         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
19383         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
19384         the other MACFLAG constants.
19385         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
19386         (flag_machi): Tighten constraints.  Renumber some of the operands.
19387         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
19388         output template.
19389         (flag_machi_parts_acconly): New pattern.
19390         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
19391         used.
19392         (flag_macinit1hi): Tighten constraints.
19393         (flag_mul_macv2hi_parts_acconly): New pattern.
19394
19395         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
19396         Use a more efficient implementation.
19397         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
19398         inline sequences when not optimizing for size.
19399
19400         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
19401         movhi_high2low): Delete, merge functionality into...
19402         (packv2hi): ... this pattern.
19403
19404         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
19405         * config/bfin/bfin.opt (msim): New option.
19406         (mcpu=): New option.
19407         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
19408         (bfin_cpu_t): Typedef of enum bfin_cpu.
19409         (bfin_cpu_type): New declaration.
19410         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
19411         -msim and -mcpu= options.
19412         (LIB_SPEC): Likewise.
19413         * config/bfin/bfin.c (bfin_cpu_type): Define.
19414         (bfin_handle_option): Handle -mcpu= option.
19415         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
19416         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
19417         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
19418
19419 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
19420
19421         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
19422         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
19423         (powerpc-wrs-vxworksae): Use ${tm_file}.
19424         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
19425         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
19426         * config/i386/vx-common.h: New file.
19427
19428 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
19429
19430         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
19431         of crt0.o%s.
19432
19433 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
19434
19435         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
19436         ldxtr.
19437
19438 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
19439
19440         PR c++/31078
19441         PR c++/31103
19442         * c-common.c (c_build_qualified_type): Set canonical type
19443         appropriately.
19444
19445 2007-04-12  Richard Guenther  <rguenther@suse.de>
19446
19447         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
19448         lower bound and element size if lower bound is not zero
19449         or either of the ARRAY_REF operands is set.
19450
19451 2007-04-12  Richard Guenther  <rguenther@suse.de>
19452
19453         PR tree-optimization/24689
19454         PR tree-optimization/31307
19455         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
19456         indices by value.
19457         * gimplify.c (canonicalize_addr_expr): To be consistent with
19458         gimplify_compound_lval only set operands two and three of
19459         ARRAY_REFs if they are not gimple_min_invariant.  This makes
19460         it never at this place.
19461         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
19462
19463 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19464
19465         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
19466         null before emitting a .nsubspa directive.
19467
19468 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
19469
19470         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
19471         need_to_partition_p if there are no memory statements in the
19472         function.
19473
19474 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
19475
19476         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
19477         (gcd_of_steps_may_divide_p): New function.
19478         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
19479
19480 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
19481
19482         * reload.c (find_reloads_toplev, find_reloads_address,
19483         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
19484         not a pointer equality test, to decide if we need to call
19485         push_reg_equiv_alt_mem.
19486
19487 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
19488
19489         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
19490         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps):
19491         New.
19492         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
19493
19494 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
19495
19496         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
19497         vector to be positive.
19498
19499 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
19500
19501         PR 30735
19502         PR 31090
19503         * doc/invoke.texi: Document --params max-aliased-vops and
19504         avg-aliased-vops.
19505         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
19506         debug_memory_partitions): Move to tree-flow.h
19507         * params.h (AVG_ALIASED_VOPS): Define.
19508         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
19509         users.
19510         (mp_info_t): Likewise.
19511         (get_mem_sym_stats_for): New.
19512         (set_memory_partition): Move from tree-flow-inline.h.
19513         (mark_non_addressable): Only clear the set of symbols for the
19514         partition if it exists.
19515         (dump_memory_partitions): Move from tree-ssa-operands.c
19516         (debug_memory_partitions): Likewise.
19517         (need_to_partition_p): New.
19518         (dump_mem_ref_stats): New.
19519         (debug_mem_ref_stats): New.
19520         (dump_mem_sym_stats): New.
19521         (debug_mem_sym_stats): New.
19522         (update_mem_sym_stats_from_stmt): New.
19523         (compare_mp_info_entries): New.
19524         (mp_info_cmp): Call it.
19525         (sort_mp_info): Change argument to a list of mem_sym_stats_t
19526         objects.
19527         (get_mpt_for): Move from tree-ssa-operands.c.
19528         (find_partition_for): New.
19529         (create_partition_for): Remove.
19530         (estimate_vop_reduction): New.
19531         (update_reference_counts): New.
19532         (build_mp_info): New.
19533         (compute_memory_partitions): Refactor.
19534         Document new heuristic.
19535         Call build_mp_info, update_reference_counts,
19536         find_partition_for and estimate_vop_reduction.
19537         (compute_may_aliases): Populate virtual operands before
19538         calling debugging dumps.
19539         (delete_mem_sym_stats): New.
19540         (delete_mem_ref_stats): New.
19541         (init_mem_ref_stats): New.
19542         (init_alias_info): Call it.
19543         (maybe_create_global_var): Remove alias_info argument.
19544         Get number of call sites and number of pure/const call sites
19545         from gimple_mem_ref_stats().
19546         (dump_alias_info): Call dump_memory_partitions first.
19547         (dump_points_to_info_for): Show how many times a pointer has
19548         been dereferenced.
19549         * opts.c (decode_options): For -O2 set --param
19550         max-aliased-vops to 500.
19551         For -O3 set --param max-aliased-vops to 1000 and --param
19552         avg-aliased-vops to 3.
19553         * fortran/options.c (gfc_init_options): Remove assignment to
19554         MAX_ALIASED_VOPS.
19555         * tree-flow-inline.h (gimple_mem_ref_stats): New.
19556         * tree-dfa.c (dump_variable): Dump memory reference
19557         statistics.
19558         Dump NO_ALIAS* settings.
19559         (referenced_var_lookup): Tidy.
19560         (mem_sym_stats): New.
19561         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
19562         and ORIG are different SSA names for a memory partition.
19563         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
19564         * tree-flow.h (struct mem_sym_stats_d): Define.
19565         (mem_sym_stats_t): Define.
19566         (struct mem_ref_stats_d): Define.
19567         (struct gimple_df): Add field mem_ref_stats.
19568         (enum noalias_state): Define.
19569         (struct var_ann_d): Add bitfield noalias_state.
19570         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
19571         debug_mem_ref_stats, debug_memory_partitions,
19572         debug_mem_sym_stats): Declare.
19573         * tree-ssa-structalias.c (update_alias_info): Update call
19574         sites, pure/const call sites and asm sites in structure
19575         returned by gimple_mem_ref_stats.
19576         Remove local variable IS_POTENTIAL_DEREF.
19577         Increase NUM_DEREFS if the memory expression is a potential
19578         dereference.
19579         Call update_mem_sym_stats_from_stmt.
19580         If the memory references memory, call
19581         update_mem_sym_stats_from_stmt for all the direct memory
19582         symbol references found.
19583         (intra_create_variable_infos): Set noalias_state field for
19584         pointer arguments according to the value of
19585         flag_argument_noalias.
19586         * tree-ssa-structalias.h (struct alias_info): Remove fields
19587         num_calls_found and num_pure_const_calls_found.
19588         (update_mem_sym_stats_from_stmt): Declare.
19589         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
19590         Set default value to 100.
19591         (PARAM_AVG_ALIASED_VOPS): Define.
19592
19593 2007-04-11  Richard Guenther  <rguenther@suse.de>
19594
19595         PR middle-end/31530
19596         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
19597         a * -b + c as c - a * b if we honor sign dependent rounding.
19598
19599 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
19600
19601         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
19602         bfin_expand_strmov.
19603         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
19604         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
19605         variables.
19606         (initialize_trampoline): Don't use old-style function definition.
19607         (bfin_secondary_reload): Mark IN_P argument as unused.
19608
19609 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
19610
19611         PR tree-optimization/31343
19612         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
19613         (build_polynomial_chrec): Return a scalar when the evolution is zero.
19614         * testsuite/gcc.dg/vect/pr31343.c: New.
19615
19616 2007-04-10  Eric Christopher  <echristo@apple.com>
19617
19618         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
19619         * config/i386/i386.md (*cmpfp0): Use.
19620         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
19621         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
19622         (fix_trunc<mode>_i386_fisttp): Ditto.
19623         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
19624         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
19625         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
19626         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
19627         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
19628         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
19629         (unnamed_splitters): Ditto.
19630         * config/i386/i386.c (output_fix_trunc): Assert that
19631         we're not being passed a TFmode operand.
19632
19633 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
19634
19635         PR tree-optimization/31526
19636         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
19637         n_basic_blocks to find newly added blocks.
19638
19639 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
19640
19641         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
19642         alternative.
19643         (fix_trunc<mode>si_sse): Ditto.
19644         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
19645         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
19646         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
19647         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
19648         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
19649         expander using SSEMODEF mode macro.
19650         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
19651         expander using SSEMODEF mode macro.
19652         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
19653         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
19654         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
19655         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
19656         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
19657         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
19658         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
19659         Macroize insn using X87MODEF mode macro.
19660
19661 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
19662
19663         * config/i386/sse.md (sse2_pinsrw): Removed.
19664         (sse2_pextrw): Renamed to ...
19665         (*sse2_pextrw): This.
19666
19667 2007-04-09  Jan Hubicka  <jh@suse.cz>
19668
19669         PR target/27869
19670         * config/i386/sse.md
19671         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
19672         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
19673         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
19674         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
19675
19676 2007-04-09  Jan Hubicka  <jh@suse.cz>
19677
19678         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
19679         multiple fields of union.
19680
19681 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
19682
19683         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
19684         (create_preheaders): Check that loops are available.
19685         (fix_loop_structure): Clean up, improve comments.
19686         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
19687         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
19688         state flags.
19689         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
19690         * predict.c (tree_estimate_probability): Do not call
19691         calculate_dominance_info.  Call create_preheaders.
19692         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
19693         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
19694         flags.
19695         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
19696         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
19697         * tree-cfg.c (tree_split_edge): Make an assert more precise.
19698         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
19699         arguments.
19700
19701 2007-04-08  Jan Hubicka  <jh@suse.cz>
19702
19703         * tree.h (maybe_fold_offset_to_component_ref): Declare.
19704         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
19705         * fold-const.c (fold_unary): Use it.
19706
19707 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19708
19709         * varasm.c (assemble_variable): Remove call to
19710         lang_hooks.decls.prepare_assemble_variable.
19711         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
19712         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
19713         * langhooks.h (lang_hooks_for_decls): Remove
19714         prepare_assemble_variable.
19715
19716 2007-04-08  Mike Stump  <mrs@apple.com>
19717
19718         * config/i386/i386.c: Use inc/dec on Core2.
19719
19720 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
19721
19722         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
19723         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
19724         lhd_tree_inlining_end_inlining): Remove.
19725         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
19726         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
19727         end_inlining hooks.
19728         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
19729         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
19730         lhd_tree_inlining_end_inlining): Remove prototypes.
19731         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
19732         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
19733         LANG_HOOKS_TREE_INLINING_START_INLINING,
19734         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
19735
19736         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
19737         not set it.
19738
19739 2007-04-08  Anatoly Sokolov <aesok@post.ru>
19740
19741         PR target/29932
19742         * config/avr/predicates.md (io_address_operand): Delete predicate.
19743         (low_io_address_operand): Don't use 'mode' argument.
19744         (higth_io_address_operand): Rename ...
19745         (high_io_address_operand): ... to this. Don't use 'mode' argument.
19746         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
19747         for above change.
19748
19749 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
19750
19751         Revert change removing staticp.
19752
19753 2007-04-07  Anatoly Sokolov <aesok@post.ru>
19754
19755         PR target/30289
19756         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
19757         earlyclobber.
19758
19759 2007-04-07  Bruce Korb  <bkorb@gnu.org>
19760
19761         * c.opt: Add -Wformat-contains-nul.
19762         * c-format.c (set_Wformat): Set warn_format_contains_nul to the
19763           -Wformat setting.
19764         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
19765         the NUL byte warning.
19766
19767 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
19768
19769         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
19770
19771 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
19772
19773         * tree.c (staticp): No longer use staticp langhook.
19774         * langhooks.c (lhd_staticp): Removed.
19775         * langhooks.h (struct lang_hooks): Remove staticp.
19776         * c-common.c (c_staticp): Remove.
19777         * c-common.h (c_staticp): Ditto.
19778         * langhooks-defs.h (lhd_staticp): Ditto.
19779         (LHD_HOOKS_STATICP): Ditto
19780         * tree.h (gcc_assert_lowered): New macro.
19781
19782 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
19783
19784         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
19785         argument "reliable".
19786         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
19787         Add argument "reliable".  Propagate it through calls.
19788         (infer_loop_bounds_from_undefined): Derive number of iterations
19789         estimates from references in blocks that do not dominate loop latch.
19790         (gcov_type_to_double_int): New function.
19791         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
19792         and expected_loop_iterations_unbounded.
19793         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
19794         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
19795         * tree-data-ref.c (estimated_loop_iterations): Export.
19796         (get_references_in_stmt): Fix -- do not return addresses of local
19797         objects.
19798         * cfgloop.h (expected_loop_iterations_unbounded,
19799         estimated_loop_iterations): Declare.
19800
19801 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
19802
19803         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
19804
19805 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
19806
19807         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
19808         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
19809         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
19810         Use output_387_reg_move().
19811         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
19812         expander using X87MODEF12 mode macro.
19813         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
19814         choosing register preferences.  Use output_387_reg_move().
19815         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
19816         instead of "x".  Use output_387_reg_move().
19817         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
19818         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
19819         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
19820         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
19821         Use output_387_reg_move().
19822         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
19823         mode macro.
19824         (*truncxf?f_i387 splitter): Ditto.
19825
19826 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
19827
19828         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
19829         LANG_HOOKS_SAFE_FROM_P.
19830         * expr.c (safe_from_p): Remove langhook call.
19831         * langhooks.h (lang_hooks): Remove safe_from_p.
19832         (lhd_safe_from_p): Remove prototype.
19833         * langhooks.c (lhd_safe_from_p): Remove.
19834
19835 2007-04-06  Jan Hubicka  <jh@suse.cz>
19836
19837         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
19838         functions.
19839
19840 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
19841
19842         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
19843         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
19844         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
19845         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
19846         alternative.
19847         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
19848         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
19849
19850 2007-04-05  Richard Henderson  <rth@redhat.com>
19851
19852         * config/alpha/alpha.c (print_operand) [+]: Remove.
19853         (alpha_end_function): Print nop if call at end of function.
19854         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
19855         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
19856         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
19857         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
19858         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
19859         the call pattern. Update peepholes to match.
19860
19861 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
19862
19863         * doc/extend.texi (Other Builtins): Add decimal float variants
19864         of signbit.
19865         * builtins.def: Ditto.
19866         * builtins.c (expand_builtin): Ditto.
19867
19868 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
19869             H.J. Lu  <hongjiu.lu@intel.com>
19870
19871         PR target/31478
19872         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
19873         of V8HImode when calling ix86_binary_operator_ok.
19874         (sse2_pmaddwd): Call ix86_binary_operator_ok.
19875         (sdot_prodv8hi): Operands 1 and 2 must be register.
19876
19877 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
19878
19879         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
19880         initialize align to silence bogus warning.
19881
19882 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
19883
19884         PR middle-end/22156
19885         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
19886         all_no_warning.
19887         (struct sra_walk_fns): Remove use_all parameter from use.
19888         (sra_hash_tree): Handle BIT_FIELD_REFs.
19889         (sra_elt_hash): Don't hash bitfld blocks.
19890         (sra_elt_eq): Skip them in parent compares as well.  Handle
19891         BIT_FIELD_REFs.
19892         (sra_walk_expr): Don't maintain or pass down use_all_p.
19893         (scan_use): Remove use_all parameter.
19894         (scalarize_use): Likewise.  Re-expand assignment to
19895         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
19896         output, and re-scalarize after output.  Don't mark anything
19897         for no warning.
19898         (scalarize_ldst): Adjust.
19899         (scalarize_walk_gimple_modify_statement): Likewise.
19900         (build_element_name_1): Handle BIT_FIELD_REFs.
19901         (instantiate_element): Don't warn for any element whose parent
19902         is used as a whole.
19903         (instantiate_missing_elements_1): Return the sra_elt.
19904         (canon_type_for_field): New.
19905         (try_instantiate_multiple_fields): New.
19906         (instantiate_missing_elemnts): Use them.
19907         (mark_no_warning): Removed.
19908         (generate_one_element_ref): Handle BIT_FIELD_REFs.
19909         (REPLDUP, sra_build_elt_assignment): New.
19910         (generate_copy_inout): Use them.
19911         (generate_element_copy): Likewise.  Handle bitfld differences.
19912         (generate_element_zero): Don't recurse for blocks.  Use
19913         sra_build_elt_assignment.
19914         (generate_one_element_int): Take elt instead of var.  Use
19915         sra_build_elt_assignment.
19916         (generate_element_init_1): Adjust.
19917         (scalarize_use, scalarize_copy): Use REPLDUP.
19918         (scalarize_ldst): Move assert before dereference.
19919         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
19920
19921 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
19922
19923         * regmove.c: Fix unused variable warnings due to previous commit.
19924
19925 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
19926
19927         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
19928         (regmove_bb_head): Remove.
19929         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
19930         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
19931         problems with fixup_match_1.
19932         Don't initialize/free regmove_bb_head.
19933
19934         (reg_is_remote_constant_p): If an insn is in the same basic block
19935         but not before INSN, consider it remote, too.
19936
19937 2007-04-05  Anatoly Sokolov <aesok@post.ru>
19938
19939         PR target/25448
19940         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
19941         DECL_ASSEMBLER_NAME, not the DECL_NAME.
19942
19943 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
19944
19945         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
19946         (CONDITIONAL_REGISTER_USAGE): Likewise.
19947
19948 2007-04-04  Richard Henderson  <rth@redhat.com>
19949
19950         * config/alpha/lib1funcs.asm: Remove unused file.
19951
19952 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
19953
19954         PR other/31356
19955         * opts.c (print_specific_help): Fix --help=<language>
19956         header line.
19957         (common_handle_option): Support --help=common.
19958
19959 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
19960
19961         PR other/31353
19962         * gcc.c (main): Do not run the linker if
19963         print_subprocess_help indicates that it shouldn't be
19964         run.
19965
19966 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
19967
19968         PR doc/31355
19969         * doc/invoke.texi (--help=): Document <languages> value, fix
19970         formatting in tables of values.
19971
19972 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
19973
19974         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
19975         dllimport attribute of virtual methods.
19976
19977 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
19978
19979         * config/score/crti.asm: Change _bss_start to __bss_start.
19980         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
19981         (OUTGOING_REG_PARM_STACK_SPACE) update.
19982         * config/score/score.opt: add options to make backend support
19983         score5, score5u, score7 and score7d.
19984         * config/score/score.md: Likewise.
19985         * config/score/misc.md: Likewise.
19986         * config/score/mac.md: Likewise.
19987         * doc/invoke.texi: Likewise.
19988         * doc/md.texi: update constraints define.
19989
19990 2007-04-03  Richard Henderson  <rth@redhat.com>
19991
19992         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
19993         an appropriate type, use the mode instead.
19994
19995 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
19996
19997         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
19998         Set the default --with-arch setting to mips2.
19999         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
20000         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
20001         (MULTILIB_OSDIRNAMES): Delete.
20002         (MULTILIB_DIRNAMES): Define.
20003         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
20004         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
20005         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
20006         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
20007         VXWORKS_OS_CPP_BUILTINS.
20008         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
20009         (MIPS_DEBUGGING_INFO): Undefine.
20010         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
20011
20012 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
20013
20014         PR middle-end/30704
20015         * fold-const.c (native_encode_real): Encode real.c provided longs
20016         as a series of 32-bit native integers.
20017         (native_interpret_real): Interpret buffer as a series of 32-bit
20018         native integers.
20019
20020 2007-04-03  Richard Guenther  <rguenther@suse.de>
20021
20022         * genpreds.c (write_insn_constraint_len): Write function
20023         optimized for CONSTRAINT_LEN implementation.
20024         (write_tm_preds_h): Output insn_constraint_len inline and
20025         use it for CONSTRAINT_LEN.
20026         (write_insn_preds_c): Don't output insn_constraint_len.
20027         * doc/md.texi (define_register_constraint): Document multi-letter
20028         constraints shall have the same length if they start with the same
20029         letter.
20030
20031 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
20032
20033         PR target/31175
20034         * config/i386/i386.md (isinf<mode>2): Expand only when
20035         TARGET_C99_FUNCTIONS is set.
20036
20037 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
20038
20039         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
20040         (x86_64-*-linux*): Ditto.
20041         * config/i386/i386.opt (mpc): New option.
20042         * config/i386/i386.c (overrride_options): Handle
20043         ix87_precision_string.
20044         * config/i386/crtprec.c: New file.
20045         * config/i386/t-crtpc: Ditto.
20046         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
20047         and -mpc80 options.
20048         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
20049         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
20050         crtprec32.o, crtprec64.o and crtprec80.o.
20051
20052         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
20053         and -mpc80 options.
20054         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
20055
20056 2007-04-02  Eric Christopher  <echristo@apple.com>
20057
20058         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
20059         limitations on darwin.
20060
20061 2007-04-02  Anatoly Sokolov <aesok@post.ru>
20062
20063         PR target/31137
20064         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
20065
20066 2007-04-02  Dave Korn  <dave.korn@artimi.com>
20067
20068         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
20069
20070 2007-04-02  Dave Korn  <dave.korn@artimi.com>
20071
20072         * libgcc2.h (exception_descriptor): Don't forward-declare.
20073         (__get_eh_table_language, __get_eh_table_version): Delete
20074         prototypes of long-dead functions.
20075
20076 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
20077
20078         * ebitmap.h: New file
20079         * ebitmap.c: New file
20080         * Makefile.in (ebitmap.o): New target.
20081
20082 2007-04-01  Jan Hubicka  <jh@suse.cz>
20083
20084         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
20085         before very first instruction.
20086
20087 2007-04-01  Jan Hubicka  <jh@suse.cz>
20088
20089         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
20090         waring on 64bit hosts.
20091         * bitmap.h: Fix typo in bitmap_head_def.
20092
20093 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
20094
20095         PR rtl-optimization/31391
20096         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
20097         into a DELETED_LABEL note, and the label is in an empty basic
20098         block, update BB_END as well as BB_HEAD.
20099
20100 2007-04-01  Richard Henderson  <rth@redhat.com>
20101
20102         PR tree-optimization/31169
20103         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
20104         to varying if the range is outside [0,  prec-1].
20105
20106 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
20107
20108         PR target/31388
20109         * config/mips/mips.md (load_const_gp): New insn.
20110         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
20111         the MIPS16 GP pseudo register if no_new_pseudos.
20112         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
20113
20114 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20115
20116         PR target/31364
20117         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
20118         secureplt.
20119         (call_value): Likewise.
20120
20121 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
20122             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20123
20124         PR 14737
20125         * doc/invoke.texi: (optimization options): Reword description
20126         of -ffast-math. Document its primary purpose.
20127
20128 2007-03-31  Richard Guenther  <rguenther@suse.de>
20129
20130         * omp-low.c (splay-tree.h): Include.
20131         (lookup_decl): Replace splay-tree usage by pointer-map.
20132         (maybe_lookup_decl): Likewise.
20133         (new_omp_context): Likewise.
20134         (delete_omp_context): Likewise.
20135         * gimplify.c (splay-tree.h): Include.
20136         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
20137         pointer-map.
20138         (remap_ssa_name): Likewise.
20139         (remap_decl): Likewise.
20140         (remap_type_1): Likewise.
20141         (remap_type): Likewise.
20142         (copy_body_r): Likewise.
20143         (expand_call_inline): Likewise.
20144         (clone_body): Likewise.
20145         (copy_tree_r): Likewise.
20146         (remap_save_expr): Likewise.
20147         (unsave_r): Likewise.
20148         (unsave_expr_now): Likewise.
20149         (tree_function_versioning): Likewise.
20150         (build_duplicate_type): Likewise.
20151         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
20152         (struct copy_body_data): Replace splay-tree by pointer-map.
20153         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
20154         not $(SPLAY_TREE_H).
20155         (gimplify.o): Depend on $(SPLAY_TREE_H).
20156         (omp-low.p): Likewise.
20157
20158 2007-03-31  Anatoly Sokolov <aesok@post.ru>
20159
20160         * config/avr/predicates.md (even_register_operand,
20161         odd_register_operand): New predicates.
20162         * config/avr/avr.md (movw peephole2): New.
20163         (movw_r peephole2): New.
20164
20165 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
20166
20167         * tree.h (get_signed_or_unsigned_type): New.
20168         * fold-const.c (operand_equal_for_comparison_p): Use
20169         get_signed_or_unsigned_type instead of
20170         lang_hooks.types.signed_or_unsigned_type.
20171         * expr.c (store_expr): Ditto.
20172         * langhooks.c (get_signed_or_unsigned_type): New.
20173         (lhd_signed_or_unsigned_type): New.
20174         * langhooks.h (lhd_signed_or_unsigned_type): New.
20175         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
20176
20177 2007-03-30  Richard Henderson  <rth@redhat.com>
20178
20179         * tree-ssa-loop-ivopts.c: Include target.h.
20180         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
20181         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
20182         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
20183         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
20184
20185 2007-03-30  Richard Henderson  <rth@redhat.com>
20186             Kai Tietz  <kai.tietz@onevision.com>
20187
20188         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
20189         default for 64-bit.
20190         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
20191         (TARGET_64BIT_MS_ABI): New.
20192         (DBX_REGISTER_NUMBER): Handle 64-bit.
20193         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
20194         (LONG_TYPE_SIZE): Force to 32.
20195         (REG_PARM_STACK_SPACE): New.
20196         (OUTGOING_REG_PARM_STACK_SPACE): New.
20197         (REGPARM_MAX, SSE_REGPARM_MAX): New.
20198         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
20199         (STACK_BOUNDARY): Use 128 for 64-bit.
20200         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
20201         Add 64-bit implementation.
20202         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
20203         argument unused.
20204         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
20205         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
20206         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
20207         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
20208         (ix86_handle_cconv_attribute): Don't warn when ignoring if
20209         TARGET_64BIT_MS_ABI.
20210         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
20211         (ix86_pass_by_reference): Likewise.
20212         (ix86_function_value_regno_p): Likewise.
20213         (ix86_build_builtin_va_list): Likewise.
20214         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
20215         (function_arg_advance_ms_64): New.
20216         (function_arg_advance): Call it.
20217         (function_arg_ms_64): New.
20218         (function_arg): Call it.
20219         (function_value_ms_64): New.
20220         (ix86_function_value_1): Call it.
20221         (return_in_memory_ms_64): New.
20222         (ix86_return_in_memory): Call it.
20223         (setup_incoming_varargs_ms_64): New.
20224         (ix86_setup_incoming_varargs): Call it.
20225         (ix86_expand_prologue): Handle 64-bit stack probing.
20226         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
20227         (output_pic_addr_const): Likewise.
20228         (x86_this_parameter): Likewise.
20229         (x86_output_mi_thunk): Likewise.
20230         (x86_function_profiler): Likewise.
20231         (TARGET_STRICT_ARGUMENT_NAMING): New.
20232         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
20233         (TARGET_64BIT_MS_ABI): New.
20234         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
20235         * config/i386/i386.md (allocate_stack_worker): Remove.
20236         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
20237         describe the clobber of eax without a match_scratch.
20238         (allocate_stack_worker_postreload): Remove.
20239         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
20240         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
20241         (allocate_stack_worker_rex64_postreload): Remove.
20242         (allocate_stack): Handle 64-bit.
20243         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
20244         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
20245         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
20246         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
20247         (STANDARD_STARTFILE_PREFIX_1): Likewise.
20248         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
20249         * config.build (x86_64-*-mingw*): New host.
20250         * config.host (x86_64-*-mingw*): New host.
20251         * config.gcc (x86_64-*-mingw*): New target.
20252         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
20253
20254 2007-03-30  Richard Henderson  <rth@redhat.com>
20255             Kai Tietz  <kai.tietz@onevision.com>
20256
20257         * c-pragma.c (struct def_pragma_macro_value): New.
20258         (struct def_pragma_macro): New.
20259         (pushed_macro_table): New.
20260         (dpm_hash, dpm_eq): New.
20261         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
20262         (init_pragma): Install them.
20263         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
20264
20265 2007-03-30  Anatoly Sokolov <aesok@post.ru>
20266
20267         * config/avr/avr.c (avr_override_options): Clear
20268         'flag_delete_null_pointer_checks'.
20269
20270 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
20271
20272         PR c++/26099
20273         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
20274         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
20275         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
20276         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
20277         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
20278         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
20279         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
20280         C++ extensions.
20281         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
20282
20283 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
20284
20285         * regmove.c: Move all of pass_stack_adjustments from here...
20286         * combine-stack-adj.c: ...to this new file.
20287         * Makefile.in: Add rules for combine-stack-adj.o.
20288
20289 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
20290
20291         PR tree-optimization/31383
20292         * tree-data-ref.c (affine_function_equal_p): Do not require the
20293         vectors to have the same length.
20294
20295 2007-03-30  Jan Hubicka  <jh@suse.cz>
20296
20297         PR middle-end/30700
20298         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
20299         availablility; add more sanity checking; ask varpool only about
20300         VAR_DECL.
20301
20302 2007-03-29  Richard Henderson  <rth@redhat.com>
20303
20304         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
20305         to decide, but __SIZEOF_LONG_LONG__.
20306
20307 2007-03-29  Richard Henderson  <rth@redhat.com>
20308
20309         * emutls.c (struct __emutls_array): New.
20310         (emutls_destroy): Use it instead of casting element 0 from void*.
20311         (__emutls_get_address): Likewise.
20312
20313 2007-03-29  Richard Henderson  <rth@redhat.com>
20314
20315         * varasm.c (initializer_constant_valid_p): Don't deny
20316         DECL_DLLIMPORT_P on functions.
20317
20318         * config/i386/cygming.h: Remove function declarations.
20319         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
20320         (ASM_OUTPUT_LABELREF): Remove.
20321         (COMMON_ASM_OP): Remove.
20322         (ASM_OUTPUT_COMMON): Remove.
20323         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
20324         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
20325         (ASM_DECLARE_FUNCTION_NAME): Likewise.
20326         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
20327         Rename from TARGET_ENCODE_SECTION_INFO.
20328         * config/i386/netware.h: Likewise.
20329         * config/i386/i386-protos.h: Update.
20330         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
20331         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
20332         (legitimate_constant_p): Reject dllimports.
20333         (dllimport_map, get_dllimport_decl): New.
20334         (legitimize_dllimport_symbol): New.
20335         (legitimize_address, ix86_expand_move): Use it.
20336         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
20337         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
20338         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
20339         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
20340         * config/i386/predicates.md (constant_call_address_operand): Only
20341         accept symbols; reject dllimport_p symbols.
20342         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
20343         i386_pe_maybe_record_exported_symbol.
20344         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
20345         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
20346         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
20347         trust the setting of DECL_DLLIMPORT_P.
20348         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
20349         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
20350         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
20351         tidy the argument scanning loop.
20352         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
20353         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
20354         (i386_pe_strip_name_encoding): Remove.
20355         (i386_pe_binds_local_p): New.
20356         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
20357         (i386_pe_output_labelref): Remove.
20358         (i386_pe_asm_output_aligned_decl_common): New.
20359         (i386_pe_maybe_record_exported_symbol): Rename from
20360         i386_pe_record_exported_symbol; check for dllexported symbols.
20361
20362 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
20363
20364         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
20365         add comment explaining why vsnprintf cannot be used.
20366
20367 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
20368
20369         PR tree-optimization/30666
20370         * tree.c (build_complex_type): When creating type names for DWARF2
20371         debug info, create TYPE_DECLs for TYPE_NAME instead of
20372         IDENTIFIER_NODEs.
20373         (build_common_tree_nodes_2): Use build_complex_type when building
20374         predefined complex types, to preserve canonical types.
20375
20376 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
20377
20378         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
20379         (noce_get_alt_condition): Look at it to determine whether to
20380         reverse the condition or not.
20381         (noce_get_condition): Substitute the truth for lies.
20382         (noce_find_if_block): Set the then_else_reversed field.
20383
20384 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
20385
20386         * config/fr30/fr30.md (movdi): Do not accept immediates as the
20387         destination of this insn.
20388         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
20389         than calling gen_rtx_SET directly.  Use r0 to hold the value of
20390         'address + 4' rather than a stack based temporary which can be
20391         mis-optimized away.
20392
20393 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
20394
20395         * config/s390/s390.c (s390_secondary_input_reload_class,
20396         s390_secondary_output_reload_class): Functions removed.
20397         (s390_secondary_reload): New function.
20398         (TARGET_SECONDARY_RELOAD): Target macro defined.
20399         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
20400         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
20401         * config/s390/s390.md ("reload_outti", "reload_outdi",
20402         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
20403         "reload_out<mode>"): Expanders removed.
20404         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
20405         "reload<mode>_nonoffmem_out"): Expanders added.
20406
20407 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
20408
20409         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair
20410         action if SRC->DEST replacement failed anyway.
20411
20412 2007-03-28  Mike Stump  <mrs@apple.com>
20413
20414         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
20415         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
20416         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
20417
20418 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
20419
20420         * config.gcc: Accept barcelona as a variant of amdfam10.
20421         * config/i386/i386.c (override_options): Likewise.
20422         * doc/invoke.texi: Likewise.
20423
20424 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
20425
20426         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
20427         offsets for BIT_FIELD_REF and COMPONENT_REF.
20428
20429 2007-03-28  Richard Guenther  <rguenther@suse.de>
20430
20431         * tree.c (is_global_var): Move ...
20432         * tree-flow-inline.h (is_global_var): ... here.
20433         * tree.h (is_global_var): Remove declaration.
20434
20435 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
20436
20437         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
20438         option.
20439         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
20440         * config/i386/i386.c (ix86_tune_features): Initialize new
20441         tuning option.
20442         * config/i386/predicates.md (promotable_binary_operator): Use
20443         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
20444
20445 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
20446
20447         PR target/31380
20448         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
20449
20450 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
20451
20452         * config/fr30/fr30.md (movsi_internal): Change destination
20453         constraint from m to V and add m to the end.
20454
20455 2007-03-28  Christian Bruel  <christian.bruel@st.com>
20456
20457         * config/sh/sh.md (movsi_i): Fix type attribute.
20458
20459 2007-03-28  Christian Bruel  <christian.bruel@st.com>
20460
20461         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
20462         (movsf_ie): Likewise.
20463
20464 2007-03-28  Christian Bruel  <christian.bruel@st.com>
20465
20466         * config.gcc: Add sh4-300 to multilib.
20467         * config/sh/t-mlib-sh4-300: New file.
20468
20469 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
20470
20471         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
20472         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
20473         fix_trunc<mode>di2.
20474         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
20475         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
20476         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
20477         "fixuns_trunctddi2"): Whitespace fix.
20478
20479 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
20480
20481         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
20482         the definition of struct sh_args.
20483         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
20484         CALL_COOKIE_INT_REG_GET): Likewise.
20485
20486 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
20487
20488         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
20489         transformations are applied successfully.
20490
20491 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
20492
20493         * tree.c (tree_contains_struct): Permit 512 tree codes.
20494         * tree.h (tree_contains_struct): Ditto.
20495         (MAX_TREE_CODES): Ditto.
20496         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
20497         SPARE member to store remaining padding bits.
20498
20499 2007-03-27  Anatoly Sokolov <aesok@post.ru>
20500
20501         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
20502         architecture.
20503
20504 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
20505
20506         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
20507         * configure: Regenerate.
20508
20509         * configure: Regenerate using the correct version of autoconf.
20510
20511 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
20512
20513         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
20514         pointer regs.
20515         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
20516         regs to "__SP_L__" and "__SP_H__".
20517
20518 2007-03-27  Richard Guenther  <rguenther@suse.de>
20519
20520         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
20521         computations with it with a HOST_WIDE_INT variable.
20522
20523 2007-03-26  Mike Stump  <mrs@apple.com>
20524
20525         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
20526         objective-c-header, objective-c++-header and objc++-cpp-output
20527         support.
20528         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
20529
20530 2007-03-26  Richard Henderson  <rth@redhat.com>
20531
20532         PR target/31361
20533         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
20534         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
20535         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
20536         IX86_BUILTIN_PSRLQ128): New.
20537         (ix86_init_mmx_sse_builtins): Add them.
20538         (ix86_expand_builtin): Expand them.
20539         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
20540         operand 2 be TImode.
20541         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
20542         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
20543         _mm_srli_epi64): Mark __B const.
20544         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
20545         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
20546         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
20547         new two-vector shift builtins.
20548
20549 2007-03-26  Ian Lance Taylor  <iant@google.com>
20550
20551         PR tree-optimization/31345
20552         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
20553         [+INF, +INF(OVF)] into VARYING.
20554
20555 2007-03-26  Zack Weinberg  <zackw@panix.com>
20556
20557         * gengtype-parse.c: New file.
20558         * gengtype-yacc.y: Delete.
20559         * gengtype-lex.l: Don't include gengtype-yacc.h.
20560         Define YY_DECL and yyterminate appropriately for recursive
20561         descent parser.  yylval is now a string out-parameter to yylex.
20562         (HWS, EOID): New shorthand.
20563         (IWORD): Add a couple more types.
20564         (yylex): Add a setup stanza.  Remove the complex rules for
20565         detecting GTY'ed types and typedefs; replace with simple
20566         keyword detectors.  Adjust everything for the changed
20567         definition of yylval.  Ignore all pp-directives, not just #define.
20568         (yyerror): Delete.
20569         (parse_file): Rename yybegin; do not call yyparse.
20570         (yyend): New.
20571         * gengtype.c (xasprintf): Export again.
20572         (this_file): New.  Use everywhere __FILE__ was being used.
20573         (get_lang_bitmap): Special case types defined in gengtype.c.
20574         (do_typedef, new_structure): Suppress definition of certain types.
20575         (new_structure): Improve diagnostics of duplicate definitions.
20576         Make sure location_s is associated with input.h.
20577         (nreverse_pairs, define_location_structures): New functions.
20578         (main): Improve tagging of kludge types.  Remove old kludges
20579         for input.h types; use define_location_structures.
20580         * gengtype.h: Update prototypes.  Define token codes here.
20581         * Makefile.in: Remove all references to gengtype-yacc.
20582         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
20583         and gengtype.
20584         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
20585         add GTY((skip)) to the field that's only conditionally there.
20586         * doc/install.texi: Document that Bison is no longer required
20587         unless building treelang.
20588
20589         * gengtype.c: Don't include gtyp-gen.h.
20590         (srcdir): Declare here.
20591         (base_files, lang_dir_names): Allocate dynamically.
20592         (gt_files, num_gt_files, num_lang_dirs): New globals.
20593         (measure_input_list, read_input_line, read_input_list)
20594         (set_lang_bitmap): New functions.
20595         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
20596         simplify, relying on read_input_list to set up the bitmaps.
20597         (main): Arguments are no longer unused.  Check for correct number
20598         of command line arguments, set srcdir and srcdir_len, then call
20599         read_input_list, before doing anything else.  No need to worry
20600         about duplicates in main loop.
20601         * configure.ac: Simplify the calculation of all_gtfiles.
20602         Put language tags in there.  Don't set or substitute
20603         all_gtfiles_files_langs or all_gtfiles_files_frags.
20604         * Makefile.in: Revamp the way gengtype is invoked, now that it
20605         takes a file on its command line with a much simpler format.
20606         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
20607         (GTFILES): Remove duplicates and C source files.
20608         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
20609         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
20610         * configure: Regenerate.
20611
20612         * gengtype.h: Remove all type definitions to gengtype.c; leave
20613         only definitions of options_p, type_p, and pair_p as opaque
20614         pointers.  Update prototypes.
20615         * gengtype.c: Many type definitions moved here from gengtype.h.
20616         Consolidate type definitions at the top of the file.
20617         (xvasprintf): Delete.
20618         (xasprintf): Make static.
20619         (create_nested_pointer_option): Add 'next' parameter.
20620         (create_field_all, create_field_at): New functions.
20621         (create_field): Now a thin wrapper around create_field_all.
20622         (create_optional_field): Rename create_optional_field_ and add
20623         line argument.  Original name is now a macro which supplies
20624         __LINE__.
20625         (oprintf): Use vsnprintf directly.
20626         (close_output_files): Use fatal rather than perror/exit.
20627         (note_def_vec, note_def_vec_alloc): Use create_field_at.
20628         (main): Set progname.  Don't use exit.
20629         * gengtype-yacc.y (struct_fields): Use create_field_at.
20630         (option, optionseqopt): Delete.
20631         (optionseq): Consolidate productions from option here so we
20632         can use the first argument to create_option.
20633
20634         * gengtype-lex.l: Distinguish unions from structures in the
20635         token type.  Don't call find_structure; return the tag as a string.
20636         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and
20637         ENT_UNION.  Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is
20638         string.  Reorganize typedef_struct production accordingly.
20639         Use create_nested_ptr_option.
20640         * gengtype.c (create_nested_ptr_option): New function.
20641         * gengtype.h: Declare it.
20642
20643         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
20644         (string_type): Don't declare.
20645         (do_scalar_typedef): Declare.
20646         (create_scalar_type): Update prototype.
20647         * gengtype.c (string_type): Make static.
20648         (scalar_nonchar, scalar_char): New.
20649         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
20650         (resolve_typedef): Use scalar_nonchar for error recovery.
20651         (create_scalar_type): Remove name_len field.  Return scalar_char
20652         or scalar_nonchar as appropriate.
20653         (adjust_field_type): Look at scalar_is_char boolean to decide whether
20654         to use string_type.
20655         (throughout): Use scalar_nonchar instead of calling
20656         create_scalar_type, whenever possible.
20657         (main): Initialize scalar_char and scalar_nonchar before calling
20658         gen_rtx_next.
20659         * gengtype-lex.l: Adjust for removal of second argument to
20660         create_scalar_type.  Use yylval.s instead of yylval.t when
20661         returning SCALAR.
20662         * gengtype-yacc.y: Type of SCALAR is string.  Call
20663         create_scalar_type from type:SCALAR rule.  Adjust for removal of
20664         second argument to create_scalar_type.
20665
20666         * vec.h: Remove all #if IN_GENGTYPE blocks.
20667         Add comment saying that changes may require adjustments to gengtype.
20668         * gengtype.c: Don't include coretypes.h or tm.h.
20669         Add comment to inclusion of errors.h.
20670         (note_def_vec, note_def_vec_alloc): New functions.
20671         * gengtype.h: Declare new functions.
20672         * gengtype-lex.l: Don't include coretypes.h.
20673         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
20674         Delete.
20675         (update_lineno): Remove unnecessary prototype.
20676         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
20677         (VEC rule): Just return VEC_TOKEN.
20678         * gengtype-yacc.y (VEC_TOKEN): New token type.
20679         (type): Add a production for VEC(a,b).
20680         * Makefile.in: Update dependencies.
20681
20682         * gengtype-lex.l: Remove rules for parsing pointer-to-function
20683         typedefs that use the old PARAMS macro.
20684
20685         * gengtype-lex.l: Remove all rules and states relating to yacc
20686         input files.
20687         * gengtype-yacc.y: Similarly.
20688         * gengtype.c (note_yacc_type): Delete function.
20689         * gengtype.h: Update prototypes.
20690
20691 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
20692
20693         * tree-pretty-print.c (dump_generic_node): Report precision of
20694         unnamed integer types.
20695
20696 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
20697
20698         * ifcvt.c (noce_try_store_flag_constants): Don't check
20699         no_new_pseudos here.
20700         (noce_try_store_flag_constants): Don't check no_new_pseudos.
20701         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
20702         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
20703         noce_try_sign_mask): Likewise.
20704         (if_convert): Check no_new_pseudos here.
20705
20706         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
20707         Remove prototypes.
20708         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
20709         (noce_get_condition): Handle new then_else_reversed argument.
20710         (noce_init_if_info): Remove, fold into noce_find_if_block.
20711         (noce_process_if_block): Take a struct noce_if_info as the
20712         argument.  Don't set up one based on ce_if_info.  Update pointer
20713         references accordingly.
20714         (cond_move_process_if_block): Likewise.
20715         (process_if_block): Removed.
20716         (find_if_block): Removed.  Move functionality two new functions,
20717         noce_find_if_block and cond_exec_find_if_block.
20718         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
20719         blocks and the symmetric IF-ELSE-JOIN case.
20720         (cond_exec_find_if_block): Also new function mostly based on old
20721         find_if_block and process_if_block.
20722         (find_if_header): Replace find_if_block call with separately
20723         guarded calls to noce_find_if_block and cond_exec_find_if_block.
20724         (find_cond_trap): Update noce_get_condition call.
20725         (dead_or_predicable): Likewise.
20726
20727 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
20728
20729         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
20730         Remove.
20731         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
20732         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
20733         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
20734         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
20735         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
20736         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
20737         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
20738         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
20739         __builtin_ia32_psrad128 builtins.
20740
20741 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
20742
20743         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
20744         * config/i386/constraints.md
20745         (define_constraint "I"): Use IN_RANGE macro.
20746         (define_constraint "J"): Ditto.
20747         (define_constraint "K"): Ditto.
20748         (define_constraint "M"): Ditto.
20749         (define_constraint "N"): Ditto.
20750         (define_constraint "O"): Ditto.
20751         * config/i386/predicates.md
20752         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
20753         (define_predicate "const_0_to_3_operand"): Ditto.
20754         (define_predicate "const_0_to_7_operand"): Ditto.
20755         (define_predicate "const_0_to_15_operand"): Ditto.
20756         (define_predicate "const_0_to_63_operand"): Ditto.
20757         (define_predicate "const_0_to_255_operand"): Ditto.
20758         (define_predicate "const_1_to_31_operand"): Ditto.
20759         (define_predicate "const_2_to_3_operand"): Ditto.
20760         (define_predicate "const_4_to_7_operand"): Ditto.
20761
20762 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
20763
20764         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
20765         in SImode for save_world.
20766         * config/rs6000/altivec.md (save_world, restore_world): Convert to
20767         LR hard reg.
20768
20769 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
20770
20771         PR tree-optimization/30784
20772         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
20773         BIT_FIELD_REF.
20774
20775 2007-03-25  Revital Eres  <eres@il.ibm.com>
20776
20777         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
20778           Fold movement_possibility function into it.
20779
20780 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
20781
20782         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
20783         (load_macho_picbase_{si,di}): Convert to LR hard reg.
20784         (call_indirect_nonlocal_darwin64): Same.
20785         (call_nonlocal_darwin64): Same.
20786         (call_value_indirect_nonlocal_darwin64): Same.
20787         (call_value_nonlocal_darwin64): Same.
20788         (sibcall_nonlocal_darwin64): Same.
20789         (sibcall_value_nonlocal_darwin64): Same.
20790         (sibcall_symbolic_64): Same.
20791         (sibcall_value_symbolic_64): Same.
20792         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
20793         LR pseudo.
20794         (rs6000_emit_load_toc_table): Same.
20795         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
20796         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
20797         (mull_call): Same.
20798         (divss_call): Same.
20799         (divus_call): Same.
20800         (quoss_call): Same.
20801         (quous_call): Same.
20802         (load_toc_v4_pic_si): Same
20803         (load_toc_v4_PIC_1): Same.
20804         (load_toc_v4_PIC_1b): Same.
20805         (call_indirect_aix{32,64}): Same.
20806         (call_value_indirect_aix{32,64}): Same.
20807         (call): Same.
20808         (call_value): Same.
20809         (call_local{32,64}): Same.
20810         (call_value_local{32,64}): Same.
20811         (call_indirect_nonlocal_aix{32,64}): Same.
20812         (call_nonlocal_aix{32,64}): Same.
20813         (call_value_indirect_nonlocal_aix{32,64}): Same.
20814         (call_value_nonlocal_aix{32,64}): Same.
20815         (call_indirect_nonlocal_sysv<mode>): Same.
20816         (call_nonlocal_sysv<mode>): Same.
20817         (call_value_indirect_nonlocal_sysv<mode>): Same.
20818         (call_value_nonlocal_sysv<mode>): Same.
20819         (sibcall): Same.
20820         (sibcall_local{32,64}): Same.
20821         (sibcall_value_local{32,64}): Same.
20822         (sibcall_nonlocal_aix{32,64}): Same.
20823         (sibcall_value_nonlocal_aix{32,64}): Same.
20824         (sibcall_nonlocal_sysv<mode>): Same.
20825         (sibcall_value): Same.
20826         (sibcall_value_nonlocal_sysv<mode>): Same.
20827
20828 2007-03-24  Paul Brook  <paul@codesourcery.com>
20829
20830         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
20831         * config/arm/linux-eabi.h: Remove legacy syscall hack.
20832
20833 2007-03-24  Richard Henderson  <rth@redhat.com>
20834
20835         * config/ia64/constraints.md: New file.
20836         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
20837         satisfies_constraint_?.
20838         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
20839         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
20840         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
20841         ia64_output_mi_thunk): Likewise.
20842         (ia64_const_ok_for_letter_p): Remove.
20843         (ia64_const_double_ok_for_letter_p): Remove.
20844         (ia64_extra_constraint): Remove.
20845         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
20846         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
20847         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
20848         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
20849         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
20850         EXTRA_MEMORY_CONSTRAINT): Remove.
20851         * config/ia64/ia64.md: Include constriants.md.  Replace
20852         CONST_OK_FOR_? with satisfies_constraint_?.
20853
20854 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
20855             H.J. Lu  <hongjiu.lu@intel.com>
20856
20857         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
20858         DPD or BID name.
20859         (name macros): Use DPD_BID_NAME to convert names properly.
20860
20861         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
20862         decimal floating point format.
20863         (init_floating_libfuncs): Change decimal functions so that they
20864         have a "bid_" prefix if the decimal system uses the BID format,
20865         and "dpd_" prefix if the decimal system uses the DPD format.
20866         (init_interclass_conv_libfuncs): Ditto.
20867         (init_intraclass_conv_libfuncs): Ditto.
20868
20869         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
20870         using the BID format.
20871
20872         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
20873         whether we are using the BID decimal format.
20874         * configure: Regenerate.
20875
20876         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
20877         the compiler has decimal floating point enabled.  Define
20878         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
20879         instead of DPD.
20880
20881         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
20882         using the BID format.
20883
20884         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
20885         whether we are using the BID decimal format.
20886         * configure: Regenerate.
20887
20888         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
20889         the compiler has decimal floating point enabled.  Define
20890         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
20891         instead of DPD.
20892
20893         * doc/install.texi (--enable-decimal-float): Document BID and DPD
20894         options, and that it is enabled for i386/x86_64 systems.
20895
20896         * Makefile.in (enable_decimal_float): New.
20897         (DECNUMFMT): New.
20898         (DECNUMINC): Add  -I$(DECNUMFMT).
20899         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
20900         to $(DECNUMFMT) from $(DECNUM).
20901
20902         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
20903         Substitute enable_decimal_float.
20904         * configure: Regenerated.
20905
20906         PR other/30529
20907         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
20908         unsigned long.
20909
20910         * configure.ac: Enable decimal float for x86_64-*-linux*.
20911         * configure: Regenerated.
20912
20913         PR other/30530
20914         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
20915         decimal128ClearSign to flip and clear the sign bit in decimal128.
20916         (decimal_real_maxval): Set decimal128SetSign to set the sign
20917         bit in decimal128.
20918
20919 2007-03-23  Ian Lance Taylor  <iant@google.com>
20920
20921         * fold-const.c (fold_binary): Correct warning for X - c >= X.
20922
20923 2007-03-23  Ian Lance Taylor  <iant@google.com>
20924
20925         * tree-dump.c (dump_files): Correct comment.
20926
20927 2007-03-23  Ian Lance Taylor  <iant@google.com>
20928
20929         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
20930
20931 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
20932
20933         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
20934         in cfglayout mode.  Don't go into and out of cfglayout mode.
20935         Link the blocks in the order of the constructed traces.
20936         (rest_of_handle_tracer): Adjust call to tracer.
20937         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
20938         Don't go into cfglayout mode.
20939         (rtl_loop_done): Don't go out of cfglayout mode.
20940         * cfglayout.c (relink_block_chain): New function, split out from...
20941         (fixup_reorder_chain): ...here.  Remove redundant checking.
20942         (cfg_layout_finalize): Don't clear the header, footer, and aux
20943         fields here, move the code to do so to relink_block_chain.  Likewise
20944         for free_original_copy_tables.
20945         * rtl.h (tracer): Update prototype.
20946         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
20947         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
20948         mode.  Use relink_block_chain to serialize the CFG according to the
20949         new basic block order.  Move targetm.cannot_modify_jumps_p check from
20950         here...
20951         (gate_handle_reorder_blocks): ...to here.
20952         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
20953         from here...
20954         (gate_duplicate_computed_gotos): ...to here.
20955         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
20956         something always changes when going into and out of cfglayout mode.
20957         Perform an expensive cfg cleanup while going into cfglayout mode.
20958         Always update liveness information on HAVE_conditional_execution
20959         targets.  Reserialize the basic blocks and go out of cfglayout mode.
20960         * reg-stack.c: Include cfglayout.h.
20961         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
20962         the call to reorder_basic_blocks.
20963         * basic-block.h (reorder_basic_blocks): Update prototype.
20964         (relink_block_chain): New prototype.
20965         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
20966
20967 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
20968
20969         * config/mips/mips.md (type, hazard, *movdi_32bit,
20970         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
20971         *movhi_internal, *movqi_internal, *movsf_hardfloat,
20972         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
20973         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
20974         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
20975         applicable.
20976         (movcc): Change first xfer to multi.
20977         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
20978         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
20979         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
20980         config/mips/generic.md: Change reservations using "xfer" to use
20981         "mfc,mtc".
20982         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
20983         using match_operand.
20984         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
20985         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
20986         examining mode.
20987         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
20988
20989 2007-03-22  Richard Henderson  <rth@redhat.com>
20990
20991         * config/i386/i386.c: Remove unnecessary function declarations.
20992         Move targetm definition, and all related macros, to the end of
20993         the file.  Resort some functions to put definitions before uses.
20994         (ix86_attribute_table): Make static.  Move to end of file.
20995         (ix86_gimplify_va_arg): Make static.
20996
20997 2007-03-22  Richard Henderson  <rth@redhat.com>
20998
20999         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
21000         don't increase local_regparm with force_align_arg_pointer check.
21001         (ix86_function_sseregparm): Assert 32-bit.
21002         (type_has_variadic_args_p): New.
21003         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
21004         type_has_variadic_args_p.
21005         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
21006         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
21007         use memset instead.  Do maybe_vaarg check first; skip attribute
21008         tests if true; skip attribute tests for 64-bit.
21009         (construct_container): Remove TARGET_DEBUG_ARG.
21010         (function_arg_advance_32, function_arg_advance_64): Split out ...
21011         (function_arg_advance): ... from here.
21012         (function_arg_32, function_arg_64): Split out ...
21013         (function_arg): ... from here.
21014         (ix86_pass_by_reference): Tidy.
21015         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
21016         (function_value_32): New, from parts of ix86_function_value
21017         and ix86_value_regno.
21018         (function_value_64): New, from parts of ix86_function_value
21019         and ix86_libcall_value.
21020         (ix86_function_value_1): New.
21021         (ix86_function_value, ix86_libcall_value): Use it.
21022         (return_in_memory_32, return_in_memory_64): Split out ...
21023         (ix86_return_in_memory): ... from here.
21024         (ix86_struct_value_rtx): Skip for 64-bit.
21025         (ix86_libcall_value, ix86_value_regno): Remove.
21026         (setup_incoming_varargs_64): Split out ...
21027         (ix86_setup_incoming_varargs): ... from here.
21028         (ix86_va_start): Remove TARGET_DEBUG_ARG.
21029         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
21030         * config/i386/i386-protos.h (ix86_function_value): Remove.
21031         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
21032
21033 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21034
21035         PR other/23572
21036         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
21037         infinities not supported, otherwise emit warning if -Woverflow. On
21038         underflow, emit warning if -Woverflow.
21039         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
21040         and 0 otherwise.
21041         * real.h (real_from_string): Update declaration
21042
21043 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
21044             Richard Henderson  <rth@redhat.com>
21045
21046         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
21047         * calls.c (compute_argument_block_size, expand_call,
21048         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
21049         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
21050         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
21051         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
21052         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
21053         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
21054         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
21055         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
21056         Set to 1.
21057
21058 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
21059
21060         * c-incpath.c (add_sysroot_to_chain): New.
21061         (merge_include_chains): Add sysroot argument.  Call
21062         add_sysroot_to_chain if sysrooted.
21063         (register_include_chains): Update call to merge_include_chains.
21064         * doc/cppopts.texi: Document use of '=' in include directory
21065         arguments.
21066
21067 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
21068
21069         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
21070         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
21071         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
21072         insn pattern using X87MODEF12 mode macro.
21073
21074 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
21075
21076         * regmove.c (regmove_optimize): Use reg_mentioned_p
21077         instead of reg_overlap_mentioned_p for DST.
21078
21079 2007-03-21  Mike Stump  <mrs@apple.com>
21080
21081         * c.opt: Fixup for Objective-C/C++.
21082
21083 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
21084
21085         * explow.c (convert_memory_address): Fold memory reference when
21086         POINTERS_EXTEND_UNSIGNED < 0
21087
21088 2007-03-21  Richard Henderson  <rth@redhat.com>
21089
21090         PR target/31245
21091         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
21092         * config/i386/mmintrin.h (__m64): Likewise.
21093         * config/i386/xmmintrin.h (__m128): Likewise.
21094
21095 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
21096
21097         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
21098         (VXWORKS_OS_CPP_BUILTINS): Define.
21099         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
21100         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
21101
21102 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
21103
21104         * rtl.h (constant_pool_reference_p): Delete.
21105         (find_constant_src): Declare.
21106         * rtlanal.c (find_constant_src): New function.
21107         * simplify-rtx.c (constant_pool_reference_p): Delete.
21108         * config/i386/i386.md: Use find_constant_src instead of
21109         constant_pool_reference_p/avoid_constant_pool_reference pairs.
21110
21111 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
21112
21113         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
21114         * c-cppbuiltin.c (c_cpp_builtins): Define them.
21115
21116 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
21117
21118         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
21119         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
21120         (arm_elf_asm_constructor): Use it.
21121         (arm_elf_asm_destructor): New function.
21122
21123 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
21124
21125         * jump.c (mark_jump_label): Treat SEQUENCE specially.
21126
21127 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
21128
21129         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
21130
21131 2007-03-19  Andrew Haley  <aph@redhat.com>
21132
21133         PR tree-optimization/31264
21134         * tree-vrp.c (register_edge_assert_for_1): Don't look though
21135         VIEW_CONVERT_EXPRs.
21136
21137 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
21138
21139         PR rtl-optimization/30907
21140         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
21141         (fwprop_init): Always call loop_optimizer_initialize.
21142         (fwprop_done): Always call loop_optimizer_finalize.
21143         (fwprop): We always have loop info now.
21144         (gate_fwprop_addr): Remove.
21145         (pass_fwprop_addr): Use gate_fwprop as gate.
21146
21147         PR rtl-optimization/30841
21148         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
21149         df_chain_alloc): Call df_reorganize_refs unconditionally.
21150         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
21151         refs_organized to refs_organized_size.
21152         (df_ref_create_structure): Use refs_organized_size instead of
21153         bitmap_size if refs had been organized, and keep refs_organized_size
21154         up-to-date.
21155         * df.h (struct df_ref_info): Change refs_organized to
21156         refs_organized_size.
21157         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
21158         bitmap_size.
21159
21160 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
21161
21162         * except.c (output_function_exception_table): Do not reference the
21163         EH personality routine for functions that do not require an
21164         exception table.
21165
21166 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
21167
21168         PR c/30762
21169         * c-typeck.c (convert_for_assignment): Call comptypes for
21170         RECORD_TYPE or UNION_TYPE.
21171
21172         PR inline-asm/30505
21173         * reload1.c (reload): Do invalid ASM checking after
21174         cleanup_subreg_operands.
21175
21176 2007-03-19  Jeff Law  <law@redhat.com>
21177
21178         * tree-cfg.c (find_taken_edge): Tighten conditions for
21179         optimizing computed gotos.
21180
21181 2007-03-19  Michael Matz  <matz@suse.de>
21182
21183         * builtins.c (expand_builtin_sync_operation,
21184         expand_builtin_compare_and_swap,
21185         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
21186         correctly.
21187
21188         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
21189         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
21190         for operand 3.
21191
21192 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
21193
21194         * doc/tm.texi: Add brackets around the return type of
21195         TARGET_SECONDARY_RELOAD.
21196
21197 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21198         Richard Guenther  <rguenther@suse.de>
21199
21200         PR tree-optimization/31254
21201         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
21202         Use handled_component_p () where appropriate.  Continue
21203         propagating into the rhs if we propagated into an INDIRECT_REF
21204         on the lhs.
21205
21206 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
21207
21208         * config/s390/s390.md (op_type attribute): RRR instruction type added.
21209         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
21210         (xde, xdee): Mode attributes adjusted to support DFP modes.
21211         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
21212         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
21213         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
21214         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
21215         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
21216         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
21217         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
21218         numbers.
21219         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
21220         "movsf"): Insn definitions removed.
21221         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
21222         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
21223         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
21224         definitions added.
21225         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
21226         "reload_in<mode>", "reload_out<mode>"): Expander added.
21227         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
21228         Expander removed.
21229
21230 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
21231
21232         * config/s390/s390.md: Only non-functional changes.  Renamed
21233         FPR mode macro to BFP all over the file.
21234
21235 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
21236
21237         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
21238         (op_type attribute): RRF instruction type added.
21239         (fT0): New mode attribute.
21240         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
21241         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
21242         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new
21243         instruction no secondary memory is needed when moving DFmode values
21244         between GPRs and FPRs.
21245
21246 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
21247
21248         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
21249         inverted and documentation adjusted.
21250         ("mhard-dfp", "msoft-dfp"): New options.
21251         * config/s390/s390.c (s390_handle_arch_option): New architecture
21252         switch: z9-ec.
21253         (override_options): Sanity checks for the new options added.
21254         * config.gcc: New architecture switch: z9-ec.
21255         * config/s390/s390.h (processor_flags): PF_DFP added.
21256         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
21257         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
21258         when the bit is NOT set so remove it from the defaults.
21259
21260 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
21261
21262         * genemit.c (main): Print include statement for dfp.h.
21263         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
21264         is not available.
21265
21266 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
21267
21268         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
21269
21270 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
21271
21272         PR target/31022
21273         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
21274         instead of PATTERN.
21275
21276 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21277
21278         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
21279         attr_length_call, output_call, output_indirect_call): Cleanup
21280         formatting of targetm calls.
21281
21282 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
21283
21284         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
21285
21286 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21287
21288         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
21289         reservation, bypass and anti-bypass descriptions for these
21290         instructions.  Update move patterns.
21291         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
21292         TYPE_FPSTORE.
21293
21294 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
21295
21296         * tree-vect-transform.c (get_initial_def_for_induction): Replace
21297         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
21298         (get_initial_def_for_reduction): Likewise.
21299
21300 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
21301
21302         Fix PR tree-optimization/29922
21303         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
21304         (get_representative): Removed.
21305         (value_dies_in_block_x): Update for rvuse removal.
21306         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
21307         (compute_antic_aux): Handle when PHI nodes appear in
21308         non-single-successors.
21309         (dump_bitmap_of_names): Removed.
21310         (compute_antic_safe): Renamed and removed rvuse calculation.
21311         Calculate only antic safe.
21312         (insert_into_preds_of_block): Remove assert.
21313         (execute_pre): Update for renamed functions.
21314         (defer_or_phi_translate_block): New function.
21315
21316 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
21317
21318         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
21319         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
21320         typos.
21321         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
21322         Follow spelling conventions.
21323
21324         * tree-data-ref.h: Remove the prototype for analyze_array.
21325
21326 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
21327
21328         PR tree-optimization/31041
21329         * tree-vect-transform.c (get_initial_def_for_induction): Call
21330         force_gimple_operand.
21331
21332 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
21333
21334         * ipa-type-escape.c (look_for_casts) : Revert code to use
21335         handled_component_p due to ada test a-numaux.adb.
21336
21337 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
21338
21339         * final.c (final_scan_insn): Alter the condition of a
21340         conditional trap if we have nonstandard CC.
21341
21342 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
21343
21344         * configure.ac: Remove excess quoting from asm line 0 test.
21345         * configure: Rebuilt.
21346
21347 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21348
21349         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
21350         * c-common.c (convert_and_check): Move warning logic to...
21351         (warnings_for_convert_and_check): ...here. Define.
21352         * c-common.h (warnings_for_convert_and_check): Declare.
21353
21354 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21355
21356         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
21357         (output_call): Likewise.
21358
21359 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
21360
21361         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
21362
21363 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
21364
21365         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
21366
21367 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
21368
21369         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
21370         opteron, athlon-64 and athlon-fx processor_alias_table entries.
21371
21372 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
21373
21374         PR tree-optimization/31183
21375         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
21376         Use double_int instead of unsigned int for representing access_strides.
21377         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
21378
21379 2007-03-16  Richard Guenther  <rguenther@suse.de>
21380
21381         PR tree-optimization/31146
21382         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
21383         to allow recursion of forward_propagate_addr_expr.
21384         (forward_propagate_addr_into_variable_array_index): Likewise.
21385         (forward_propagate_addr_expr): Likewise.
21386         (tree_ssa_forward_propagate_single_use_vars): Likewise.
21387         (forward_propagate_addr_expr_1): Recurse on simple copies
21388         instead of propagating into them.  Do so for useless conversions
21389         as well.
21390         (forward_propagate_addr_expr): Clean up unused statements after
21391         recursion.
21392
21393 2007-03-16  Richard Guenther  <rguenther@suse.de>
21394
21395         * builtins.c (expand_builtin_cexpi): Use the right argument
21396         for the expansion via cexp.
21397
21398 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
21399
21400         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
21401         * configure: Rebuilt.
21402
21403 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
21404
21405         PR debug/29906
21406         * dwarf2out.c (force_type_die): Adjust comment.
21407         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
21408
21409 2007-03-15  DJ Delorie  <dj@redhat.com>
21410
21411         * config/frv/predicates.md (minmax_operator): Don't check operands
21412         here.
21413
21414 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
21415
21416         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
21417         Update constant estimates of number of iterations.
21418         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
21419         argument renamed to "realistic".
21420         (compute_estimated_nb_iterations): Removed.
21421         (record_niter_bound): New function.
21422         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
21423         call record_nonwrapping_iv with upper = false.
21424         (infer_loop_bounds_from_signedness): Pass upper argument to
21425         record_nonwrapping_iv.
21426         (estimate_numbers_of_iterations_loop): Do not call
21427         compute_estimated_nb_iterations.  Record estimate based on profile
21428         information.  Initialize the constant estimates of number of
21429         iterations.
21430         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
21431         estimates.
21432         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
21433         number of iterations is too small.
21434         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
21435         (EST_NOT_AVAILABLE): Removed.
21436         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
21437         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
21438         fields.
21439
21440 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
21441
21442         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
21443         Handle NE_EXPR guards.
21444
21445 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21446
21447         PR c++/24924
21448         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
21449         Set also -pedantic-errors by default for the  preprocessor unless
21450         -fpermissive is given.
21451
21452 2007-03-15  Richard Guenther  <rguenther@suse.de>
21453
21454         PR middle-end/29719
21455         PR middle-end/31161
21456         * builtins.c (expand_builtin_cexpi): As a fallback if we
21457         don't have builtins for sincos or cexp create a function
21458         declaration for cexp and expand to a call to that.
21459         (expand_builtin_int_roundingfn): Always fall
21460         back to floor/ceil and its variants even if they may be
21461         not available.
21462
21463 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
21464
21465         PR middle-end/31159
21466         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
21467         jump tables, move the call to delete_dead_jumptables from here...
21468         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
21469         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
21470         don't allow merging of blocks that try_redirect_by_replacing_jump
21471         also does not handle when not optimizing.
21472
21473 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
21474             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
21475
21476         * config/i386/i386.md (x86_sahf_1): Correctly handle
21477         HAVE_AS_IX86_SAHF.
21478
21479 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
21480
21481         PR target/31167
21482         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
21483         x86_64_general_operand as operand[2] predicate.  Remove "iF"
21484         from operand constraints and use "e" constraint instead.
21485         (*subti3_1, *subti3_1 splitter): Ditto.
21486         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
21487         operand[1] predicate.
21488
21489 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
21490
21491         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
21492         arrays, multiply the access strides by the size of the sub-array.
21493         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
21494
21495 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
21496
21497         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
21498         the configured assembler supports the sahf mnemonic.
21499         * configure: Regenerate.
21500         * config.in: Regenerate.
21501
21502         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
21503         emit "sahf" or ".byte\t0x9e" as asm template.
21504
21505 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
21506
21507         PR 31018
21508         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
21509         option to replace hard coded TARGET_xxx in md file.
21510         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
21511         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
21512         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
21513         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
21514         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
21515         (X86_TUNE_NOT_VECTORMODE): Ditto.
21516         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
21517         (TUNE_AVOID_VECTOR_DECODE): Ditto.
21518         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
21519         (TUNE_SLOW_IMUL_IMM8): Ditto.
21520         (TUNE_MOVE_M1_VIA_OR): Ditto.
21521         (TUNE_NOT_UNPAIRABLE): Ditto.
21522         (TUNE_NOT_VECTORMODE): Ditto.
21523
21524         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
21525         options.
21526
21527         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
21528         tuning options instead of hard coded TARGET_xxx.
21529         (fix ssemode peephole2's): Ditto.
21530         (imul peephole2's): Ditto.
21531         (movsi_or): Ditto.
21532         (movdi_or_rex64): Ditto.
21533         (move peephole2): Ditto.
21534         (not peephole2's): Ditto.
21535
21536 2007-03-14  Dirk Mueller  <dmueller@suse.de>
21537
21538         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
21539         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
21540         * c-parser.c (c_parser_if_body): Always add an empty statement in case
21541         of empty body.
21542         * c-parser.c (c_parser_do_statement): Warn about empty body in
21543         do/while statement.
21544         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
21545         * doc/invoke.texi (-Wempty-body): Update documentation.
21546
21547 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21548
21549         PR c/21438
21550         * c-common.h (warn_for_div_by_zero): Declare.
21551         * c-common.c (warn_for_div_by_zero): Define.
21552         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
21553         warning.
21554
21555 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
21556
21557         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
21558         to PREFIX and STANDARD_PREFIX.
21559
21560 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
21561             Phil Edwards  <phil@codesourcery.com>
21562
21563         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
21564         (__gthread_once_t): Remove busy field for RTPs.
21565         (__GTHREAD_ONCE_INIT): Update accordingly.
21566
21567 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
21568
21569         * doc/invoke.texi: Document VxWorks options.
21570
21571 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
21572
21573         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
21574
21575 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
21576
21577         PR tree-optimization/30590
21578         * tree-nrv.c (tree_nrv): Check for the partial update of the
21579         return value.
21580
21581 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
21582
21583         * flags.h (flag_random_seed): Remove declaration, in favor of...
21584         * toplev.h (get_random_seed, set_random_seed): ... these.
21585         * tree.c (get_file_function_name): Use the former.
21586         * opts.c (common_handle_option): Use the latter.
21587         * toplev.c
21588
21589 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
21590
21591         PR middle-end/31127
21592         * cse.c (cse_find_path): Do not bail out if a basic block that
21593         we already visited now becomes part of a path that starts at a
21594         different basic block.  Just disallow this, to make sure we
21595         visit each basic block at most once.
21596
21597 2007-03-13  Jan Hubicka  <jh@suse.cz>
21598
21599         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold
21600         attributes, when profile esitmate is present, calls with very low
21601         frequency are cold.
21602
21603 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
21604
21605         PR tree-optimization/30730
21606         PR tree-optimization/26900
21607         * tree-ssa-loop-niter.c: Include gmp.h.
21608         (bounds): New type.
21609         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
21610         split_to_var_and_offset, determine_value_range,
21611         bound_difference_of_offsetted_base, refine_bounds_using_guard,
21612         bound_difference, bounds_add, bounds_negate,
21613         number_of_iterations_ne_max, dump_affine_iv): New functions.
21614         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
21615         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
21616         difference of initial and final value of control iv to validate
21617         results.
21618         (number_of_iterations_cond): Add loop parameter.  Determine bounds
21619         on the difference of the extremes of the control iv.  Add dumps.
21620         (expand_simple_operations): Handle phi nodes.
21621         (simplify_using_initial_conditions): Do not record used conditions.
21622         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
21623         Do not set additional_info.
21624         (implies_nonnegative_p, implies_ge_p): Removed.
21625         (derive_constant_upper_bound): Do not use parameter `additional'.
21626         (record_estimate): Parameter `additional' removed.  Parameter
21627         `i_bound' added.  Do not call derive_constant_upper_bound.
21628         (record_nonwrapping_iv): Use derive_constant_upper_bound to
21629         bound the number of iterations estimate.
21630         (estimate_numbers_of_iterations_loop): Pass the estimate from
21631         the number of iterations analysis to record_estimate.
21632         * tree.h (multiple_of_p): Declare.
21633         * tree-scalar-evolution.c (expression_expensive_p): Removed.
21634         (scev_const_prop): Do not check expression_expensive_p.
21635         * fold-const.c (multiple_of_p): Exported.
21636         * double-int.c (double_int_mask): Exported.
21637         * double-int.h (double_int_mask): Declare.
21638         * tree-flow.h (struct tree_niter_desc): Removed additional_info
21639         field.  Added max field.
21640
21641 2007-03-13  David Taylor  <taylor@candd.org>
21642
21643         PR driver/12448:
21644         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
21645         default -MQ.
21646
21647 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21648
21649         PR target/31123
21650         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
21651         two unamed patterns.
21652
21653 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
21654
21655         * config/i386/i386.opt (mcx16, msahf): New options.
21656         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
21657         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
21658
21659         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
21660         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
21661         Output -mcx16 and -msahf options when corresponding bit is set.
21662
21663         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
21664         and -msahf options.
21665
21666 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
21667
21668         * configure.ac: Test for assembler tolerance to # 0 "".
21669         * configure, config.in: Rebuilt.
21670         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
21671
21672 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
21673
21674         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
21675
21676         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
21677         (handle_syscall): Handle direct system calls.
21678         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
21679
21680 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
21681
21682         * doc/invoke.texi: Fix cpp.info cross-reference.
21683         * doc/passes.texi: Fix gcc.info cross-reference.
21684
21685 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
21686
21687         PR tree-optimization/30835
21688         * lambda-code.c (can_convert_to_perfect_nest): Check whether
21689         bb_for_stmt is not NULL before accessing it.
21690
21691 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
21692
21693         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
21694         some multilibs.
21695
21696 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
21697
21698         PR 30635
21699         * doc/install.texi: Document --enable-stage1-languages
21700
21701 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
21702
21703         * tree-pass.h (pass_into_cfg_layout_mode,
21704         pass_outof_cfg_layout_mode): Declare.
21705         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
21706         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
21707         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
21708         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
21709
21710 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
21711
21712         * c-decl.c (warn_variable_length_array): New function.
21713         Refactored from grokdeclarator to handle warn_vla
21714         and handle unnamed array case.
21715         (grokdeclarator): Refactored VLA warning case.
21716         * c.opt (Wvla): New flag.
21717         * doc/invoke.texi (Wvla): New warning.
21718
21719 2007-03-12  Richard Henderson  <rth@redhat.com>
21720
21721         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
21722         (TARGET_SECTION_TYPE_FLAGS): New.
21723
21724 2007-03-12  Richard Henderson  <rth@redhat.com>
21725
21726         * config/darwin.c (machopic_reloc_rw_mask): New.
21727         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
21728         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
21729
21730 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
21731
21732         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
21733         * cppdefault.h (cpp_PREFIX): Document.
21734         (cpp_PREFIX_len): Likewise.
21735         (cpp_EXEC_PREFIX): New variable.
21736         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
21737         * c-incpath.c (add_standard_paths): Correct logic for relocating
21738         paths within prefix.
21739
21740 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
21741
21742         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
21743         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
21744         mode macro.
21745         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
21746         fix_truncdfdi_sse using SSEMODEF mode macro.
21747         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
21748         fix_truncdfsi_sse using SSEMODEF mode macro.
21749         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
21750         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
21751
21752 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
21753
21754         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
21755         elfos.h to tm_file.
21756
21757 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
21758
21759         * tree.h : Add multiple_of_p declaration.
21760         * fold-const.c (multiple_of_p): Make multiple_of_p public.
21761         * ipa-type-escape.c (results_of_malloc): Redundant.
21762         (visited_stmts): New. Visited stmt for walk_use_def_chains.
21763         (cast_type): Extended with new members.
21764         (check_cast): Returns cast_type.
21765         (cast): New structure for data of walk_use_def_chains.
21766         (is_malloc_result, is_cast_from_non_pointer_1,
21767         is_cast_from_non_pointer,
21768         is_array_access_through_pointer_and_index): New functions.
21769         (look_for_casts): Returns cast types.
21770         (check_call): Returns void.
21771         (okay_pointer_operation): Use support of pointer plus index,
21772         pointer plus constant and allow all multiplications.
21773
21774 2007-03-11  Richard Guenther  <rguenther@suse.de>
21775
21776         PR tree-optimization/31115
21777         * tree-vrp.c (extract_range_from_binary_expr): Make sure
21778         the shift count is positive and non-anti-range for RSHIFT_EXPR.
21779         A shift count of zero is not special as with *_DIV_EXPR.
21780         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
21781         direction.
21782
21783 2007-03-11  Ian Lance Taylor  <iant@google.com>
21784
21785         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
21786         the *_DIV_EXPR codes correctly with overflow infinities.
21787
21788 2007-03-11  Ira Rosen  <irar@il.ibm.com>
21789
21790         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
21791         indicate success/failure of the analysis. Add negation to subtrahend
21792         in case of subtraction. Fail if both operands contain constants.
21793         (create_data_ref): Fail if analyze_offset fails.
21794
21795 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
21796
21797         * config/i386/i386.md (frndintxf2): Rename to ...
21798         (rintxf2): ... this. Remove expander having same name.
21799         (rintsf2, rintdf2): Implement using SSEMODEF macro.
21800         (roundsf2, rounddf2): Ditto.
21801         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
21802         (lround<mode>di2, lround<mode>si2): Ditto.
21803
21804 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
21805
21806         * lower-subreg.c: Include except.h.
21807         (decompose_multiword_subregs): Verify that the only control flow
21808         insns we can split are loads to multi-words pseudos.
21809         Handle breaking such blocks after splitting, instead of calling
21810         find_many_sub_basic_blocks.
21811
21812         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
21813         on the new basic block.  Add a lengthy comment explaining why we
21814         thought this was necessary.
21815         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
21816
21817 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
21818
21819         PR c++/30924
21820         * tree.c (walk_type_fields): Recurse into the element type of
21821         ARRAY_TYPEs if there is a pointer set.
21822
21823 2007-03-10  Dirk Mueller  <dmueller@suse.de>
21824
21825         * c-common.c (warn_logical_operator): Fix condition.
21826
21827 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
21828
21829         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
21830         quotation mark.
21831         * config/darwin.c (machopic_select_section): Remove superfluous
21832         argument in call to categorize_decl_for_section.  Remove unused
21833         variable shlib.
21834
21835 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
21836
21837         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
21838         defined.
21839         * configure: Regenerate.
21840
21841 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
21842
21843         PR target/31101
21844         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
21845         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
21846         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
21847         Add LABEL_NUSES to emitted label.
21848         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
21849         branch probability value to emitted jump insn.
21850         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
21851         Do not check life information and do not re-arrange input operands
21852         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
21853
21854 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
21855
21856         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
21857         the change of decode_asm_operands.
21858
21859 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
21860
21861         * mode-switching.c (create_pre_exit): Skip blockage insn.
21862
21863 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
21864
21865         * tree-pass.h (TODO_update_smt_usage): Remove.
21866         Update all users.
21867         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
21868         argument SOME.
21869         Update all users.
21870
21871 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21872
21873         * pa.c (attr_length_call): Revise condition for long
21874         pc-relative branch.
21875         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long
21876         local calls on the SOM target.  Don't use "LONG_PIC_PCREL" call
21877         sequence on SOM target.
21878
21879 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
21880
21881         * gcc.c: Document %{, in big comment at top.
21882         (input_suffix_matches): Remove special handling for .s and
21883         .S.
21884         (input_spec_matches): New.
21885         (handle_braces): Handle %{,.
21886         (validate_switches): ',' indicates a value which is not a switch.
21887         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
21888         to detect assembler input.
21889         * config/i386/sol2.h (CPP_SPEC): Likewise.
21890         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
21891         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
21892         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
21893         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
21894         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
21895         -m64 causes deployment target to default to 10.5.
21896         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
21897
21898 2007-03-09  Richard Henderson  <rth@redhat.com>
21899
21900         PR target/26090
21901         * target.h (targetm.asm.out.reloc_rw_mask): New.
21902         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
21903         (TARGET_ASM_OUT): Use it.
21904         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
21905         * varasm.c (categorize_decl_for_section): Remove shlib argument;
21906         use the new reloc_rw_mask target hook instead.
21907         (default_section_type_flags_1): Merge into...
21908         (default_section_type_flags): ... here.
21909         (decl_readonly_section_1): Merge into...
21910         (decl_readonly_section): ... here.
21911         (default_elf_select_section_1): Merge into...
21912         (default_elf_select_section): ... here.
21913         (default_unique_section_1): Merge into...
21914         (default_unique_section): ... here.
21915         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
21916         (default_select_rtx_section): Use it.
21917         (default_elf_select_rtx_section): Likewise.
21918         * output.h: Update to match.
21919         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
21920         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
21921         (TARGET_ASM_RELOC_RW_MASK): New.
21922         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
21923         to categorize_decl_for_section.
21924         (x86_64_elf_unique_section): Likewise.
21925         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
21926         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
21927         (TARGET_ASM_RELOC_RW_MASK): New.
21928         * config/ia64/ia64.c (ia64_rwreloc_select_section,
21929         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
21930         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
21931         (TARGET_RWRELOC): Remove.
21932         (ia64_section_type_flags): Adjust call to default_section_type_flags.
21933         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
21934         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
21935         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
21936         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
21937         (rs6000_xcoff_select_section): Use decl_readonly_section.
21938         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
21939         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
21940         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
21941         (TARGET_SECTION_TYPE_FLAGS): Remove.
21942         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
21943
21944 2007-03-09  Roger Sayle  <roger@eyesopen.com>
21945
21946         * fold-const.c (fold_comparison): Remove compile-time evaluation of
21947         complex constant equality/inequality comparisons for here.
21948         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
21949         known at compile-time or can be simplified to a scalar comparison.
21950         (fold_relational_const): Move compile-time evaluation of complex
21951         constant equality/inequality comparisons to here.
21952
21953 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
21954
21955         PR rtl-optimization/30643
21956         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
21957         dest_addr_elt.
21958         (fold_rtx): Recurse, like before 2006-11-03.
21959
21960 2007-03-09  DJ Delorie  <dj@redhat.com>
21961
21962         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
21963         m32c-pragma.o.
21964
21965 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
21966
21967         PR tree-optimization/30375
21968         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
21969         LHS of statements is not the same.
21970         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
21971
21972 2007-03-09  Chao-ying Fu  <fu@mips.com>
21973
21974         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
21975         REV 2.
21976         * doc/invoke.texi (-mdspr2): Document new option.
21977         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
21978         New unspec for DSP REV 2.
21979         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
21980         these instructions are extended in DSP REV 2.
21981         (mips-dspr2.md): Include.
21982         * config/mips/mips.opt (mdspr2): New option.
21983         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
21984         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
21985         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
21986         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
21987         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
21988         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
21989         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
21990         and 2 builtins.
21991         (bdesc_map): Add one field of unsupported_target_flags.
21992         (bdesc_arrays): Update entries to have extra fields.  Add
21993         dsp_32only_bdesc.
21994         (mips_init_builtins): Initialize new function types.
21995         Check unsupported_target_fileds to filter out builtins.
21996         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
21997         TARGET_DSPR2.
21998         (ASM_SPEC): Pass mdspr2 to the assembler.
21999         * config/mips/mips-dspr2.md: New file.
22000
22001 2007-03-09  Sa Liu  <saliu@de.ibm.com>
22002
22003         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
22004
22005 2007-03-09  Ian Lance Taylor  <iant@google.com>
22006
22007         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
22008         argument) like -Wstrict-overflow=2.
22009         * doc/invoke.texi (Warning Options): Update documentation.
22010
22011 2007-03-09  Dirk Mueller  <dmueller@suse.de>
22012
22013         PR c++/17946
22014         * doc/invoke.texi (-Wlogical-op): Document.
22015         * common.opt (-Wlogical-op): New.
22016         * c-common.h (warn_logical_operator): Declare.
22017         * c-common.c (warn_logical_operator): Define.
22018         * c-typeck.c (parser_build_binary_op): Call
22019         warn_logical_operator.
22020
22021 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
22022
22023         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
22024         * final.c (final_scan_insn): Test for non-"" file name.
22025
22026 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
22027
22028         * doc/loop.texi: Document the Omega linear constraints solver.
22029         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
22030         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
22031         omega-hash-table-size, omega-max-keys, and
22032         omega-eliminate-redundant-constraints.
22033         * tree-pass.h (pass_check_data_deps): Declared.
22034         * omega.c: New.
22035         * omega.h: New.
22036         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
22037         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
22038         pass_check_data_deps): New.
22039         * tree-data-ref.c (init_data_ref): Remove declaration.
22040         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
22041         (analyze_array): Renamed init_array_ref, move up initializations.
22042         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
22043         Removed arguments that are set to NULL.
22044         (analyze_indirect_ref): Correct indentation, correct call to
22045         init_pointer_ref.
22046         (object_analysis): Call init_array_ref instead of analyze_array.
22047         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
22048         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
22049         of DR_ACCESS_FNS_ADDR.
22050         (init_omega_eq_with_af, omega_extract_distance_vectors,
22051         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
22052         ddr_consistent_p): New.
22053         (compute_affine_dependence): Check consistency of ddrs when
22054         flag_check_data_deps is passed.
22055         (analyze_all_data_dependences): Uncomment.
22056         (tree_check_data_deps): New.
22057         * tree-data-ref.h: Include omega.h.
22058         (DR_ACCESS_FNS_ADDR): Removed.
22059         (data_dependence_relation): Add inner_loop.
22060         (DDR_INNER_LOOP): New.
22061         * common.opt (fcheck-data-deps): New.
22062         * tree-flow.h (tree_check_data_deps): Declare.
22063         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
22064         (OBJS-common): Depend on omega.o.
22065         (omega.o): Define.
22066         * passes.c (pass_check_data_deps): Scheduled.
22067         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
22068         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
22069         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
22070         PARAM_VECT_MAX_VERSION_CHECKS,
22071         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
22072
22073 2007-03-09  Richard Guenther  <rguenther@suse.de>
22074
22075         PR tree-optimization/30904
22076         PR middle-end/31058
22077         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
22078         the same way as *_DIV_EXPR.
22079
22080 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
22081
22082         * recog.c (decode_asm_operands): No mixed declarations and code.
22083
22084 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
22085
22086         * rtl.def (ASM_INPUT): Add location.
22087         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
22088         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
22089         (decode_asm_operands): Add loc operand.
22090         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
22091         * stmt.c (expand_asm): Rename to...
22092         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
22093         gen_rtx_ASM_INPUT_loc.
22094         (expand_asm_expr): Adjust.
22095         * recog.c (decode_asm_operands): Add loc operand.
22096         (check_asm_operands, extract_insn): Adjust.
22097         * reload1.c (maybe_fix_stack_asms): Likewise.
22098         * final.c (asm_insn_count): Likewise.
22099         (final_scan_insn): Output # line before and after asm.
22100
22101 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
22102
22103         * tree-ssa-structalias.c (variable_info): Remove
22104         finished_solution.
22105         (new_var_info): Ditto.
22106         (shared_bitmap_info_t): New structure.
22107         (shared_bitmap_table): New variable.
22108         (shared_bitmap_hash): New function.
22109         (shared_bitmap_eq): Ditto
22110         (shared_bitmap_lookup): Ditto.
22111         (shared_bitmap_add): Ditto.
22112         (merge_smts_into): Change to take bitmap directly.
22113         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
22114         (init_alias_vars): Init shared bitmap hashtable.
22115         (delete_points_to_sets): Delete shared bitmap hashtable.
22116         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
22117         is_aliased removal as a change that was still necessary was
22118         deleted.
22119
22120 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
22121
22122         * config/i386/i386.h (override_options): Conditionally disable
22123         x86_sahf for 64bit targets only.
22124
22125 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22126
22127         PR C/31072
22128         * c-decl.c (merge_decls): Don't call make_var_volatile.
22129         * varasm.c (make_var_volatile): Remove.
22130         * output.h (make_var_volatile): Remove.
22131
22132 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
22133
22134         PR tree-optimization/31085
22135         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
22136
22137 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22138
22139         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
22140         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
22141         ATTR_CONST_NOTHROW_LIST.
22142
22143         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
22144         FIX_TRUNC_EXPR.
22145
22146 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
22147
22148         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
22149
22150 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
22151
22152         PR 31013
22153         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
22154         is declared.
22155         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
22156         passed, use shared libgcc.
22157
22158 2007-03-08  Roger Sayle  <roger@eyesopen.com>
22159
22160         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
22161         instead of calling build2 with a GIMPLE_MODIFY_STMT.
22162         (honor_protect_cleanup_actions, lower_try_finally_switch):
22163         Likewise.
22164         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
22165         ifc_temp_var): Likewise.
22166         * tree-inline.c (setup_one_parameter): Likewise.
22167         * tree-mudflap.c (mf_decl_cache_locals,
22168         mf_build_check_statement_for): Likewise.
22169         * tree-nested.c (init_tmp_var, save_tmp_var,
22170         finalize_nesting_tree_1): Likewise.
22171         * tree-outof-ssa.c (insert_copy_on_edge,
22172         insert_backedge_copies): Likewise.
22173         * tree-profile.c (tree_gen_edge_profiler,
22174         tree_gen_ic_profiler): Likewise.
22175         * tree-scalar-evolution.c (scev_const_prop): Likewise.
22176         * tree-sra.c (sra_build_assignment): Likewise.
22177         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
22178         * tree-ssa-math-opts.c (insert_reciprocals,
22179         execute_cse_sincos_1): Likewise.
22180         * tree-tailcall.c (adjust_accumulator_values,
22181         adjust_return_value): Likewise.
22182         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
22183         * tree-vect-transform.c (vect_create_data_ref_ptr,
22184         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
22185         vect_create_epilog_for_reduction, vectorizable_reduction,
22186         vectorizable_call, vectorizable_conversion,
22187         vectorizable_assignment, vectorizable_operation,
22188         vectorizable_type_demotion, vect_gen_widened_results_half,
22189         vect_permute_store_chain, vectorizable_store,
22190         vect_setup_realignment, vect_permute_load_chain,
22191         vectorizable_load, vectorizable_condition,
22192         vect_create_cond_for_align_checks): Likewise.
22193         * tree-vrp.c (build_assert_expr_for): Likewise.
22194
22195 2007-03-08  Ian Lance Taylor  <iant@google.com>
22196
22197         * tree-vrp.c: Include "intl.h".
22198         (usable_range_p): New static function.
22199         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
22200         overflowed values, juts set *strict_overflow_p.
22201         (compare_values): Only return -2 if one of the operands is not a
22202         constant.
22203         (compare_ranges): Call usable_range_p.
22204         (compare_range_with_value): Likewise.
22205         (vrp_evaluate_conditional_warnv): Rename from
22206         vrp_evaluate_conditional.  Make static.  Change all callers.
22207         (vrp_evaluate_conditional): New function.
22208         (simplify_div_or_mod_using_ranges): Issue warning about reliance
22209         on signed overflow.
22210         (simplify_abs_using_ranges): Likewise.
22211         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
22212         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
22213         within_stmt parameter.
22214         * tree-ssa-propagate.c (fold_predicate_in): Update call to
22215         vrp_evaluate_conditional.
22216         * tree-ssa-threadedge.c
22217         (record_temporary_equivalences_from_stmts_at_dest): Change
22218         simplify parameter to take a second tree parameter.
22219         (simplify_control_stmt_condition): Likewise.
22220         (thread_across_edge): Likewise.
22221         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
22222         (thread_across_edge): Likewise.
22223         * Makefile.in (tree-vrp.o): Depend upon intl.h.
22224
22225 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
22226
22227         * config/i386/i386.h (TARGET_SAHF): New define.
22228         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
22229         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
22230         (x86_sahf): New global variable.
22231         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
22232         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
22233         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
22234         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
22235         for 64-bit.
22236         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
22237         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
22238         when expanding fcomi/sahf based tests.
22239         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
22240         expanding sahf based alternative. Emit sahf based sequence when
22241         optimizing for code size.
22242         * config/i386/i386.md (x86_sahf_1): Do not disable for
22243         TARGET_64BIT, enable for TARGET_SAHF.
22244
22245 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
22246
22247         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
22248         spurious whitespace from error message.
22249
22250 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
22251
22252         PR c++/30852
22253         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
22254
22255 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
22256
22257         * c-decl.c (grokdeclarator): Disable warnings for anonymous
22258         bitfields.
22259         * tree-sra.c (instantiate_element): Propagate disabled warnings
22260         from the element itself to the created variable.
22261
22262 2007-03-07  Richard Henderson  <rth@redhat.com>
22263
22264         PR target/30848
22265         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
22266         silently fix up the stack in the case of a missing register.
22267
22268 2007-03-07  Paul Brook  <paul@codesourcery.com>
22269
22270         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
22271
22272 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
22273
22274         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
22275         New.
22276         (phase1_vrs): Use them.
22277         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
22278         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
22279         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
22280         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
22281         __gnu_Unwind_Restore_WMMXC if required.
22282         (_Unwind_VRS_Pop): Implement iWMMXt support.
22283         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
22284         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
22285         gnu_Unwind_Save_WMMXC): Define.
22286
22287 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
22288
22289         * config/vxworks.h (vxworks_override_options): Declare.
22290         (VXWORKS_OVERRIDE_OPTIONS): Use it.
22291         * config/vxworks.c: Include target.h and toplev.h.
22292         (vxworks_override_options): New function.
22293         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
22294
22295 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
22296
22297         * config/s390/s390.c (override_options): Don't emit an error when
22298         -mstack-size is used without providing -mstack-guard.
22299         (s390_emit_prologue): Choose stack_guard value automatically if not
22300         provided via command line.
22301         * doc/invoke.texi: Adjust description of -mstack-guard and
22302         -mstack-size.
22303
22304 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
22305
22306         * config/i386/i386.c (output_set_got): Add a GOT initialization
22307         sequence for VxWorks PIC.
22308         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
22309         around labels as well as symbols.  Use gotoff_operand instead
22310         of local_symbolic_operand.
22311         (legitimize_pic_address): Use gotoff_operand instead of
22312         local_symbolic_operand.  Use @GOT accesses for labels as
22313         well as symbols.
22314         (ix86_output_addr_diff_elt): Use PC-relative rather than
22315         GP-relative offsets for VxWorks PIC.
22316         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
22317         no_new_pseudos.  Check whether the returned register is op0.
22318         * config/i386/i386.md (tablejump): Use PC-relative rather than
22319         GP-relative offsets for VxWorks PIC.
22320         * config/i386/predicates.md (gotoff_operand): New predicate.
22321
22322 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
22323
22324         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
22325         before defining.
22326         * config/vxworks-dummy.h: New file.
22327         * config/i386/i386.h: Include it.
22328
22329 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
22330
22331         * dwarf2out.c (is_inlined_entry_point): New
22332         (add_high_low_attributes): Emit DW_AT_entry_pc along with
22333         DW_AT_ranges if the first subblock is the entry point.
22334
22335 2007-03-06  David Daney  <ddaney@avtrex.com>
22336
22337         * doc/install.texi (mips-*-*): Change recommended binutils
22338         version.
22339
22340 2007-03-06  Anatoly Sokolov <aesok@post.ru>
22341
22342         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
22343         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
22344         devices.
22345         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
22346         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
22347
22348 2007-03-06  Jan Hubicka  <jh@suse.cz>
22349
22350         * errors.h (warning, error, fatal, internal_error): Mark as cold.
22351         * predict.c (maybe_hot_bb): Cold functions are never hot; hot
22352         functions are hot.
22353         (probably_cold_bb_p): Cold functions are cold.
22354         (probably_never_executed_bb_p): Cold functions are cold.
22355         (tree_bb_level_predictions): Predict calls to cold functions as not
22356         taken.
22357         (compute_function_frequency): Check hot/cold attributes.
22358         * function.h (function_frequency): Update comments.
22359         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
22360         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
22361         (c_common_att): Add cold and hot.
22362
22363         * doc/extend.texi (hot,cold attributes): Document.
22364
22365 2007-03-06  Andrew Haley  <aph@redhat.com>
22366
22367         * function.c (expand_function_end): Move blockage to just after we
22368         emit the label for the naked return from the function.
22369
22370 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
22371
22372         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
22373         before redefining.
22374
22375 2007-03-06  Jan Hubicka  <jh@suse.cz>
22376
22377         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
22378         loaded for constant large models.  Non-large 64bit PIC can do.
22379         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
22380         * cmodel.h: Add LARGE PIC.
22381         * i386.md (UNSPEC_PLTOFF): New.
22382         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other
22383         unspecs as needed.
22384         (*call_1_rex64): Disable for large models.
22385         (*call_1_rex64_large): New.
22386         (*call_value_1_rex64): Disable for large models.
22387         (*call_value_1_rex64_large): New.
22388         (set_rip_rex4): New.
22389         (set_got_offset_rex64): New.
22390         * predicates.md (constant_call_address_operand): For large model
22391         constant calls are not possible.
22392         * i386-protos.h (construct_plt_address): Declare.
22393         * i386.c (override_options): Accept large models.
22394         (ix86_expand_prologue): Expand large PIC GOT pointer load.
22395         (legitimate_constant_p): Add new UNSPECs.
22396         (legitimate_pic_operand_p): Likewise.
22397         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
22398         (legitimize_pic_address): Do easy RIP relative way for TLS only for
22399         non-large model.
22400         (output_pic_addr_const): Add PLTOFF.
22401         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
22402         (ix86_expand_move): Legitimize pic address when in PIC mode.
22403         (construct_plt_address): New function.
22404         (ix86_expand_call): Offload the address to register and use GOT
22405         pointer for large model.
22406         * invoke.texi (mcmodel=large): Update documentation.
22407
22408 2007-03-06  Richard Henderson  <rth@redhat.com>
22409
22410         * config/i386/i386.c (x86_use_leave, x86_push_memory,
22411         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
22412         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
22413         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
22414         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
22415         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
22416         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
22417         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
22418         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
22419         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
22420         x86_partial_reg_dependency, x86_memory_mismatch_stall,
22421         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
22422         x86_sse_partial_reg_dependency, x86_sse_split_regs,
22423         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
22424         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
22425         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
22426         x86_schedule, x86_use_bt, x86_pad_returns,
22427         x86_use_xchgb): Merge into ...
22428         (ix86_tune_features): ... here.  New array.
22429         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
22430         x86_bswap): Merge into ...
22431         (ix86_arch_features): ... here.  New array.
22432         (x86_3dnow_a): Remove.
22433         (x86_accumulate_outgoing_args): Make static.
22434         (x86_arch_always_fancy_math_387): Make static.
22435         (ix86_tune_mask, ix86_arch_mask): Move ...
22436         (override_options): ... to local variables here.  Apply the
22437         appropriate mask to each element of ix86_arch_features and
22438         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
22439         as were done in the old macros.
22440         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
22441         * config/i386/i386.h (x86_use_leave, x86_push_memory,
22442         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
22443         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
22444         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
22445         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
22446         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
22447         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
22448         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
22449         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
22450         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
22451         x86_partial_reg_dependency, x86_memory_mismatch_stall,
22452         x86_accumulate_outgoing_args, x86_prologue_using_move,
22453         x86_epilogue_using_move, x86_decompose_lea,
22454         x86_arch_always_fancy_math_387, x86_shift1,
22455         x86_sse_partial_reg_dependency, x86_sse_split_regs,
22456         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
22457         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
22458         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
22459         x86_use_incdec, x86_pad_returns, x86_bswap,
22460         x86_partial_flag_reg_stall): Remove.
22461         (enum ix86_tune_indices): New.
22462         (ix86_tune_features): New.
22463         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
22464         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
22465         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
22466         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
22467         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
22468         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
22469         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
22470         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
22471         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
22472         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
22473         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
22474         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
22475         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
22476         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
22477         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
22478         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
22479         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
22480         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
22481         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
22482         TARGET_EXT_80387_CONSTANTS): Use it.
22483         (enum ix86_arch_indices): New.
22484         (ix86_arch_features): New.
22485         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
22486         TARGET_BSWAP): Use it.
22487         (ix86_tune_mask, ix86_arch_mask): Remove.
22488
22489 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
22490
22491         PR bootstrap/31020
22492         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
22493         Define using $${sysroot_headers_suffix}.
22494         * configure: Regenerate.
22495         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
22496         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
22497         defined.
22498         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
22499         * gcc.c (print_sysroot_headers_suffix): New.
22500         (option_map): Include --print-sysroot-headers-suffix.
22501         (display_help): Mention -print-sysroot-headers-suffix.
22502         (process_command): Handle -print-sysroot-headers-suffix.
22503         (do_spec_1): Append multilib directory to include-fixed path if
22504         sysroot suffixes in use.
22505         (main): Handle -print-sysroot-headers-suffix.
22506         * Makefile.in (start.encap): Don't depend on xlimits.h
22507         (xlimits.h): Remove.
22508         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
22509         limits.h for each multilib in fixinc_list.
22510         (fixinc_list, s-fixinc_list): New.
22511         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
22512         generate them for each multilib in fixinc_list.
22513         (stmp-fixproto): Use include-fixed.  Run fixproto for each
22514         multilib in fixinc_list.
22515         (mostlyclean): Don't remove xlimits.h.
22516         (clean): Remove include-fixed.
22517         (real-install-headers-tar, real-install-headers-cpio,
22518         real-install-headers-cp): Don't copy include, only include-fixed.
22519         (install-mkheaders): Depend on fixinc_list.  Don't depend on
22520         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
22521         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
22522         SYSTEM_HEADER_DIR setting in mkheaders.conf.
22523
22524 2007-03-06  Jan Hubicka  <jh@suse.cz>
22525
22526         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
22527         NANs easilly.
22528
22529 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
22530
22531         * configure.ac: Allow tm_file to contain build-directory files.
22532         * configure: Regenerate.
22533         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
22534         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
22535         * config/m68k/print-sysroot-suffix.sh: New file.
22536
22537 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
22538
22539         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
22540         of pic_offset_table_rtx if reload_completed.
22541         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
22542         PIC_OFFSET_TABLE_REGNUM.
22543         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
22544         return true.
22545         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
22546         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
22547
22548 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
22549
22550         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
22551         functions that call eh_return.
22552
22553 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
22554
22555         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
22556         functions that need a constant pool.
22557
22558 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
22559
22560         PR target/28181
22561         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
22562         (m68k_preferred_reload_class): Likewise.
22563         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
22564         (SECONDARY_RELOAD_CLASS): Define.
22565         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
22566         (LIMIT_RELOAD_CLASS): Delete.
22567         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
22568         registers from storing bytes.
22569         (m68k_secondary_reload_class): New function.
22570         (m68k_preferred_reload_class): Likewise.
22571
22572 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
22573
22574         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
22575         leaf functions.
22576         (m68k_expand_prologue): Likewise.
22577
22578 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
22579
22580         * config/m68k/m68k-protos.h (output_sibcall): Declare.
22581         (mips_expand_epilogue): Add a bool parameter.
22582         (m68k_legitimize_sibcall_address): Declare.
22583         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
22584         (m68k_expand_epilogue): Add a parameter to select between sibling
22585         and normal epilogues.  Only generate a return for the latter.
22586         (m68k_ok_for_sibcall_p): New function.
22587         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
22588         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
22589         (sibcall_value, *sibcall_value): Likewise.
22590         (*call, *call_value): Require !SIBLING_CALL_P.
22591         (epilogue): Update call to m68k_expand_epilogue.
22592         (sibcall_epilogue): New pattern.
22593         * config/m68k/predicates.md (const_call_operand): Say that this
22594         predicate applies to sibling calls too.
22595         (sibcall_operand): New predicate.
22596
22597 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
22598
22599         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
22600         alternatives as movsi_cf.
22601         (movsf_cf_hard): Add commentary.
22602
22603 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
22604             Richard Sandiford  <richard@codesourcery.com>
22605
22606         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
22607         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
22608         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
22609         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
22610         as being live on exit from an interrupt function.
22611         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
22612         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
22613         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
22614         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
22615         (m68k_interrupt_function_p): Globalize.
22616         (m68k_compute_frame_layout): Remove reverse mask code.
22617         (m68k_emit_movem, m68k_set_frame_related): New functions.
22618         (m68k_output_function_prologue): Delete in favor of...
22619         (m68k_expand_prologue): ...this new function.
22620         (m68k_output_function_epilogue): Delete in favor of...
22621         (m68k_expand_epilogue): ...this new function.
22622         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
22623         functions.
22624         (print_operand): Handle %?.
22625         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
22626         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
22627         (prologue, epilogue): New patterns.
22628         (return): Turn into a define_expand.
22629         (*return): New pattern, derived from old "return" pattern.  Use rte
22630         rather than rts for interrupt functions.  Only use rtd if the pop
22631         count is nonzero.
22632         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
22633         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
22634         (link, *link, unlink, *unlink, load_got): Likewise.
22635
22636 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
22637
22638         PR target/23482
22639         PR target/17114
22640         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
22641         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
22642         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
22643         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
22644         and m68k_matches_u_p.
22645         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
22646         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
22647         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
22648         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
22649         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
22650         (REG_STRICT_P): New macro.
22651         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
22652         PCREL_GENERAL_OPERAND_OK.
22653         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
22654         m68k_legitimate_base_reg_p.
22655         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
22656         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
22657         (PIC_CASE_VECTOR_ADDRESS): Update comment.
22658         * config/m68k/m68k.c (m68k_address): New structure.
22659         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
22660         (m68k_decompose_index, m68k_legitimate_constant_address_p)
22661         (m68k_jump_table_ref_p, m68k_decompose_address)
22662         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
22663         (m68k_matches_u_p): New functions.
22664         (print_operand_address): Rewrite to use m68k_decompose_index.
22665
22666 2007-03-05  David Taylor  <dtaylor@emc.com>
22667
22668         * gcc.c: Correct copyright date in --version output.
22669
22670 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22671
22672         * pa.md: In unamed move patterns, disparge copies between general
22673         and floating point registers using '?' modifier.  Don't include 'f'
22674         constraint for register preferences in DImode, SImode, HImode and
22675         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
22676         Remove constraints for copies between general and floating registers
22677         in soft-float DFmode pattern.
22678         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
22679         floating register.
22680         (movsf): Likewise.
22681
22682 2007-03-05  Mike Stump  <mrs@apple.com>
22683
22684         * c-common.c (targetcm): Add.
22685         * c-opts.c (c_common_handle_option): Handle language specific
22686         target options.
22687         * opts.c (handle_option): Verify language for target options, if
22688         any are given.
22689         * opth-gen.awk: Add CL_LANG_ALL.
22690         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
22691         (TARGETCM_INITIALIZER): Add.
22692         * target.h (struct gcc_targetcm): Add.
22693         (targetcm): Add.
22694         * targhooks.c (default_handle_c_option): Add.
22695         * targhooks.h (default_handle_c_option): Add.
22696         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
22697
22698         * config/darwin.opt (iframework): Add.
22699         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
22700         * config/darwin-c.c (handle_c_option): Add.
22701         (TARGET_HANDLE_C_OPTION): Add.
22702         (targetcm): Add.
22703         * doc/invoke.texi (Darwin Options): Add -iframework.
22704
22705 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22706
22707         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
22708         conversion.
22709
22710 2007-03-05  Ian Lance Taylor  <iant@google.com>
22711
22712         * c.opt (fgnu89-inline): New option.
22713         * c-opts.c (c_common_post_options): Set default value for
22714         flag_gnu89_inline.
22715         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
22716         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
22717         inline functions.
22718         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
22719         (grokdeclarator, start_function): Likewise.
22720         * c-cppbuiltin.c (c_cpp_builtins): Define either
22721         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
22722         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
22723         (C Dialect Options): Document -fgnu89-inline.
22724         * doc/extend.texi (Function Attributes): Explain what the
22725         gnu_inline attribute does.
22726         * doc/cpp.texi (Common Predefined Macros): Document
22727         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
22728
22729 2007-03-05  Ian Lance Taylor  <iant@google.com>
22730
22731         PR tree-optimization/31034
22732         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
22733         half-range if the other side is an overflow infinity.
22734
22735 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
22736
22737         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
22738         (bfin*-linux-uclibc*): New configuration.
22739         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
22740         defining.
22741         * config/bfin/linux.h: New file.
22742         * config/bfin/libgcc-bfin.ver: New file.
22743         * config/bfin/t-bfin-uclinux: New file.
22744         * config/bfin/t-bfin-linux: New file.
22745         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
22746         (TARGET_OS_CPP_BUILTINS): New macro.
22747
22748 2007-03-05  Richard Guenther  <rguenther@suse.de>
22749
22750         * fold-const.c (fold_binary): Remove duplicate folding
22751         of comparison of non-null ADDR_EXPR against null.
22752
22753 2007-03-05  Richard Guenther  <rguenther@suse.de>
22754             Dorit Nuzman  <dorit@il.ibm.com>
22755
22756         PR tree-optimization/26420
22757         * tree-vectorizer.c (vectorize_loops): Bail out early if there
22758         are no loops in the function.  Only print the number of
22759         vectorized loops if it is greater than zero or we are supposed
22760         to print information about unvectorized loops.
22761
22762 2007-03-05  Revital Eres  <eres@il.ibm.com>
22763
22764         * gcc.dg/var-expand1.c: New test.
22765         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
22766         when an accumulator is expanded.
22767
22768 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22769
22770         PR other/30465
22771         * c-common.c (convert_and_check): Don't give warnings for
22772         conversion if 'expr' already overflowed.
22773
22774 2007-03-04  Roger Sayle  <roger@eyesopen.com>
22775
22776         PR middle-end/30744
22777         * fold-const.c (fold_comparison): Enforce type consistency when
22778         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
22779
22780 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
22781
22782         * tree-ssa-address.c (create_mem_ref): Do not put an expression
22783         containing a cast to the base of TARGET_MEM_REF.
22784
22785 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
22786
22787         * tree.c (tree_contains_struct_check_failed): Remove spurious
22788         whitespace from error message.
22789
22790 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
22791
22792         PR target/30406
22793         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
22794         instead of precision.
22795
22796 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
22797             Nathan Sidwell  <nathan@codesourcery.com>
22798
22799         * emit-rtl.c (find_auto_inc): New.
22800         (try_split): recreate REG_INC notes,
22801         Use regular for loops rather than whiles.
22802
22803 2007-03-03  Andreas Schwab  <schwab@suse.de>
22804
22805         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
22806         * configure: Regenerate.
22807
22808 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22809
22810         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
22811         flag_rounding_math, not flag_unsafe_math_optimizations.
22812
22813         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
22814         fold_build2.
22815         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
22816         alpha_fold_vector_minmax): Likewise.
22817         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
22818         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
22819
22820 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
22821
22822         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
22823         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
22824         if the lhs has side-effects.
22825         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
22826
22827 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
22828
22829         * config/i386/i386.h (TUNEMASK): Remove define.
22830         (ARCHMASK): Remove define.
22831         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
22832          Use ix86_arch_mask variable instead of ARCHMASK.
22833         * config/i386/i386.c (override_options): Ditto.
22834         (standard_80387_constant_p): Ditto.
22835
22836 2007-03-02  Ian Lance Taylor  <iant@google.com>
22837
22838         Used signed infinities in VRP.
22839         * tree-vrp.c (uses_overflow_infinity): New static function.
22840         (supports_overflow_infinity): New static function.
22841         (make_overflow_infinity): New static function.
22842         (negative_overflow_infinity): New static function.
22843         (positive_overflow_infinity): New static function.
22844         (is_negative_overflow_infinity): New static function.
22845         (is_positive_overflow_infinity): New static function.
22846         (is_overflow_infinity): New static function.
22847         (overflow_infinity_range_p): New static function.
22848         (compare_values_warnv): New function split out of compare_values.
22849         (compare_value): Call it.
22850         (set_value_range_to_nonnegative): Add overflow_infinity
22851         parameter.  Change caller.
22852         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
22853         Change callers.
22854         (vrp_expr_computes_nonzero): Likewise.
22855         (compare_ranges, compare_range_with_value): Likewise.
22856         (compare_name_with_value, compare_names): Likewise.
22857         (vrp_evaluate_conditional): Likewise.
22858         (set_value_range): Handle infinity
22859         (vrp_operand_equal_p, operand_less_p): Likewise.
22860         (extract_range_from_assert): Likewise.
22861         (vrp_int_const_binop): Likewise.
22862         (extract_range_from_binary_expr): Likewise.
22863         (extract_range_from_unary_expr): Likewise.
22864         (extract_range_from_comparison): Likewise.
22865         (extract_range_from_expr): Likewise.
22866         (dump_value_range): Likewise.
22867         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
22868         (test_for_singularity): Likewise.
22869         (vrp_int_const_binop): Remove inline qualifier.
22870         (adjust_range_with_scev): Add comment.
22871         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
22872
22873 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
22874
22875         * tree-ssa-structalias.c (could_have_pointers): Tidy.
22876         (get_constraint_for): Likewise.
22877         (do_structure_copy): Likewise.
22878         (find_func_aliases): Fix references to MODIFY_EXPR.
22879         (intra_create_variable_infos): Tidy.
22880         * tree-ssa-operands.c (add_virtual_operand): Add argument
22881         IS_CALL_SITE.
22882         When adding members of alias sets, if IS_CALL_SITE is true and
22883         the symbol is not call-clobbered, skip it.
22884         Adjust all callers.
22885
22886 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
22887
22888         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
22889         entry by means of emit_insn_at_entry.
22890
22891 2007-03-02  Richard Henderson  <rth@redhat.com>
22892
22893         * expr.h (promoted_input_arg): Remove decl.
22894         * function.c (promoted_input_arg): Merge into ...
22895         * combine.c (setup_incoming_promotions): ... only caller.
22896         Rearrange to avoid double loop.
22897
22898 2007-03-02  Ben Elliston  <bje@au.ibm.com>
22899             Peter Bergner  <bergner@vnet.ibm.com>
22900             Janis Johnson  <janis187@us.ibm.com>
22901
22902         * config/rs6000/dfp.md: New file.
22903         * config/rs6000/rs6000.md: Include dfp.md.
22904         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
22905         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
22906         and TDmode decimal float modes in FP registers.
22907         (num_insns_constant): Likewise.
22908         (rs6000_legitimate_offset_address_p): Likewise.
22909         (rs6000_legitimize_address): Likewise.
22910         (rs6000_legitimize_reload_address): Likewise.
22911         (rs6000_legitimate_address): Likewise.
22912         (rs6000_emit_move): Likewise.
22913         (function_arg_boundary): Likewise.
22914         (function_arg_advance): Likewise.
22915         (rs6000_darwin64_record_arg_recurse): Likewise.
22916         (function_arg): Likewise.
22917         (rs6000_gimplify_va_arg): Likewise.
22918         (rs6000_split_multireg_move): Likewise.
22919         (rs6000_output_function_epilogue): Likewise.
22920         (rs6000_output_function_epilogue): Likewise.
22921         (rs6000_register_move_cost): Likewise.
22922         (rs6000_function_value): Likewise.
22923         (rs6000_libcall_value): Likewise.
22924
22925 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
22926
22927         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
22928
22929 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
22930
22931         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
22932         Use $MULTIDIR to choose between the kernel and RTP headers,
22933         and use $WIND_BASE and $WIND_USR to locate them.
22934
22935 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
22936
22937         * config/i386/i386.c (override_options): Put initialization of
22938         ix86_tune_mask and ix86_arch_mask to the correct place.
22939
22940 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
22941             Michael Meissner  <michael.meissner@amd.com>
22942
22943         PR target/31019
22944         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
22945         (ARCHMASK): Define.
22946         (TARGET_CMOVE): Use ARCHMASK.
22947         (TARGET_CMPXCHG): Ditto.
22948         (TARGET_CMPXCHG8B): Ditto.
22949         (TARGET_XADD): Ditto.
22950         (TARGET_BSWAP): Ditto.
22951         * config/i386/i386.c (ix86_tune_mask): New global variable.
22952         (ix86_arch_mask): Ditto.
22953         (override_options): Initialize ix86_tune_mask and
22954         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
22955         target_flags.
22956
22957 2007-03-02  Ben Elliston  <bje@au.ibm.com>
22958
22959         PR 30992
22960         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
22961
22962 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
22963
22964         * target.h (init_dwarf_reg_sizes_extra): New target hook.
22965         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
22966         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
22967         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
22968         hook.
22969         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
22970         rs6000_init_dwarf_reg_sizes_extra): New.
22971         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
22972         SPE register high parts.
22973
22974 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
22975
22976         * Makefile.in: Add install-pdf target as
22977         copied from automake v1.10 rules.
22978         * configure.ac: Add install-pdf to target list.
22979         * configure: Regenerate.
22980
22981 2007-03-01  Paul Brook  <paul@codesourcery.com>
22982
22983         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
22984         modes to LDRD for DImode.
22985         (output_move_double): Fixup out of range ldrd/strd.
22986         (vfp_secondary_reload_class): Rename...
22987         (coproc_secondary_reload_class): ... to this.  Add wb argument.
22988         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
22989         coproc_secondary_reload_class for CLASS_IWMMXT.
22990         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
22991         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
22992
22993 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
22994
22995         * tree-ssa-loop-prefetch.c (determine_unroll_factor): Bound the
22996         unroll factor by the estimated number of iterations.
22997         (loop_prefetch_arrays): Do not prefetch in loops that iterate less
22998         than prefetch latency.
22999
23000         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
23001         decode_caches_intel, detect_caches_intel): New functions.
23002         (host_detect_local_cpu): Use detect_caches_amd and
23003         detect_caches_intel.
23004
23005 2007-03-01  Richard Henderson  <rth@redhat.com>
23006
23007         * expr.c (emit_move_complex_push): Export.
23008         (emit_move_complex_parts): Split out from ...
23009         (emit_move_complex): ... here.
23010         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
23011         * config/i386/i386.md (movcdi): New.
23012
23013 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
23014
23015         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
23016         size of mode1 to check for tieable modes in MMX case.
23017
23018 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
23019
23020         * Makefile.in (rtlanal.o): Depend on tree.h.
23021         * rtl.h (offset_within_section_p, split_const): Declare.
23022         * rtlanal.c: Include tree.h.
23023         (offset_within_block_p): New function, taken from
23024         mips_offset_within_object_p.
23025         (split_const): New function, taken from mips_split_const.
23026         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
23027         Declare.
23028         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
23029         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
23030         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
23031         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
23032         (m68k_illegitimate_symbolic_constant_p): New function.
23033         * config/m68k/m68k.md (movsi): Remove misleading predicates.
23034         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
23035         symbolic constant that might be outside the symbol's section,
23036         move the symbol first and then add the offset.
23037         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
23038         Override.
23039         * config/mips/mips.c (mips_split_const): Delete.
23040         (mips_offset_within_object_p): Delete.
23041         (mips_symbolic_constant_p): Use offset_within_section_p and
23042         split_const instead of mips_offset_within_object_p and
23043         mips_split_const.
23044         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
23045         (mips_legitimize_const_move, print_operand_reloc)
23046         (mips_dangerous_for_la25_p): Use split_const instead of
23047         mips_split_const.
23048
23049 2007-02-28  Eric Christopher  <echristo@apple.com>
23050
23051         * Makefile.in (install-include-dir): Don't rm -rf include.
23052
23053 2007-02-28  Richard Guenther  <rguenther@suse.de>
23054
23055         PR middle-end/30364
23056         * fold-const.c (fold_binary): Do not associate expressions
23057         with more than one variable for integer types that do not wrap.
23058
23059 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
23060
23061         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
23062         Delete, and replace with...
23063         (fold_builtin_call_array): This.  Update callers to use it.
23064         * fold-const.c (fold_build_call_list): Delete, and replace with...
23065         (fold_build_call_array): This.
23066         (fold_build_call_list_initializer): Delete, and replace with...
23067         (fold_build_call_array_initializer): This.
23068         * tree.h: Update declarations to reflect above changes.
23069
23070         * c-typeck.c (build_function_call): Store converted arguments
23071         in a stack-allocated array instead of building a list.
23072         (convert_arguments): Store arguments in the array passed in as an
23073         argument, and return the actual number of arguments.
23074         * c-format.c: (check_function_format): Pass arguments in an
23075         array instead of a list.
23076         * c-common.c (check_function_nonnull): Likewise.
23077         (check_function_sentinel): Likewise.
23078         (check_function_arguments): Likewise.
23079         * c-common.h: Update declarations to reflect above changes.
23080
23081 2007-02-28  Jan Hubicka  <jh@suse.cz>
23082
23083         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
23084         PRED_NEGATIVE_RETURN): Update outcomes.
23085
23086 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
23087
23088         * calls.c (emit_library_call_value_1): Handle partial registers
23089         correctly when building up CALL_INSN_FUNCTION_USAGE.
23090
23091 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23092
23093         * pa/predicates.md (move_src_operand): Allow zero for mode.
23094         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
23095         move pattern.
23096
23097 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
23098
23099         PR target/30970
23100         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
23101         *movv2df_internal): Enable pattern only for valid operand
23102         combinations.
23103         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
23104         tie only 128bit modes. For MMX registers, tie only 64bit modes.
23105
23106 2007-02-27  Mike Stump  <mrs@apple.com>
23107
23108         * config/darwin-crt3.c: Avoid compilation when compiling for a
23109         kext multilib.
23110
23111 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
23112
23113         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
23114         FIXED_INCLUDE_DIR.
23115         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
23116         for fixed headers and limits.h.
23117         (install-include-dir, install-headers-tar, install-headers-cpio,
23118         install-headers-cp, real-install-headers-tar,
23119         real-install-headers-cpio, real-install-headers-cp): Handle
23120         include-fixed as well as include.
23121         (install-mkheaders): Don't install files that go only in include
23122         not include-fixed.
23123         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
23124         from GCC_INCLUDE_DIR.
23125         * gcc.c (process_command): Remove special -BstageN/ handling.
23126         (do_spec_1): Add include-fixed directories.
23127
23128 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
23129
23130         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
23131         _smulsi3_highpart.
23132         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
23133         New functions.
23134         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
23135         patterns.
23136
23137 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
23138
23139         * c-common.c (get_priority): Add check for
23140         SUPPORTS_INIT_PRIORITY.
23141
23142 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
23143
23144         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
23145
23146         * config/bfin/bfin.c: Include "cfglayout.h".
23147         (MAX_LSETUP_DISTANCE): New macro.
23148         (struct loop_info): New members incoming, incoming_src and
23149         incoming_dest.  Delete member predecessor.
23150         (length_for_loop): New function.
23151         (bfin_optimize_loop): Handle more different loop structures.
23152         (bfin_discover_loop): Rework detection of predecessor blocks by
23153         examining incoming edges.
23154         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
23155         bfin_reorg_loops.
23156         (bfin_reorder_loops): New function.
23157         (bfin_reorg_loops): Use these three new functions.
23158
23159         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
23160         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
23161         (CONSTRAINT_LEN): Add entry for 'q'.
23162         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
23163         Add 'q' constraints.
23164         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
23165         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
23166
23167         * config/bfin/bfin.md (add_with_carry): New pattern.
23168         (s_or_u, su_optab, su_modifier): New code macros/attrs.
23169         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
23170         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
23171         support unsigned multiplies too.  Removed incorrect commutativity from
23172         operand 1 constraint where appropriate.
23173         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
23174         patterns.
23175         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
23176         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
23177         New patterns.
23178         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
23179         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
23180         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
23181         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
23182         usmulhisi_hh_huh): New patterns.
23183
23184         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
23185         lshifthi3): Fix output template to use half reg for operand 2.
23186
23187         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
23188         instead of R2.
23189
23190         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
23191
23192 2007-02-27  Andreas Schwab  <schwab@suse.de>
23193
23194         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
23195
23196 2007-02-27  Jan Hubicka  <jh@suse.cz>
23197
23198         * predict.c (last_basic_block_p): Remove.
23199         (tree_estimate_probability): Update return heuristic for commonized
23200         return blocks.
23201
23202 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
23203
23204         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
23205
23206 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
23207
23208         * doc/include/gcc-common.texi (versionsubtitle): New macro.
23209         * doc/cpp.texi: Standardize title page.
23210         * doc/cppinternals.texi: Likewise.
23211         * doc/gcc.texi: Standardize title page, remove version number
23212         from copyright page.
23213         * doc/gccint.texi: Likewise.
23214         * doc/install.texi: Standardize title page, add table of
23215         contents.
23216
23217 2007-02-26  Jan Hubicka  <jh@suse.cz>
23218
23219         * predict.def: Set outcomes according to more recent results.
23220         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
23221         Remove dead predictors.
23222         * predict.c (return_prediction): Fix pasto.
23223
23224 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
23225
23226         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
23227         change; avoid a memory leak when returning early.
23228
23229 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
23230
23231         * c-decl.c (static_ctors): Move to c-common.c.
23232         (static_dtors): Likewise.
23233         (finish_function): Use c_record_cdtor_fn.
23234         (build_cdtor): Move to c-common.c.
23235         (c_write_global_declarations): Use c_build_cdtor_fns.
23236         * c-common.h (static_ctors): Declare.
23237         (static_dtors): Likewise.
23238         (c_record_cdtor_fn): Likewise.
23239         (c_build_cdtor_fns): Likewise.
23240         * c-common.c (static_ctors): New variable.
23241         (static_dtors): Likewise.
23242         (c_record_cdtor_fn): New function.
23243         (build_cdtor): Move from c-decl.c
23244         (c_build_cdtor_fns): New function.
23245
23246         * output.h (assemble_addr_to_section): Declare.
23247         (get_cdtor_priority_section): Likewise.
23248         * varasm.c (assemble_addr_to_section): New function.
23249         (get_cdtor_priority_section): Likewise.
23250         (default_named_section_asm_out_destructor): Use them.
23251         (destor_dtor_section_asm_out_destructor): Likewise.
23252         (default_named_section_asm_out_constructor): Likewise.
23253         (default_ctor_section_asm_out_constructor): Likewise.
23254         * config.gcc (*-*-vxworks*): Include vxworks.o.
23255         * config/t-vxworks (vxworks.o): New target.
23256         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
23257         (TARGET_ASM_CONSTRUCTOR): Define.
23258         (TARGET_ASM_DESTRUCTOR): Likewise.
23259         (vxworks_asm_out_constructor): Declare.
23260         (vxworks_asm_out_destructor): Likewise.
23261
23262         * c-common.c (get_priority): Check that we have not just an
23263         INTEGER_CST, but an integer constant with integeral type.
23264
23265 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
23266
23267         PR tree-optimization/30938
23268         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
23269         use &dt[nargs-1] instead of &dt[nargs] in the call to
23270         vect_is_simple_use().
23271
23272 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
23273
23274         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
23275         from register elimination as PRE_MODIFY / POST_MODIFY increments.
23276         Do not attempt to handle MEM inside auto-inc expressions.
23277         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
23278         of a register modified by an auto-inc expression.  However, do handle
23279         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
23280         (elimination_effects): Prohibit elimination of a register modified
23281         by an auto-inc expression.  Disable register elimination rules whose
23282         target register is modified by an auto-inc expression with variable
23283         increment.
23284
23285 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
23286
23287         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
23288         off-by-one error.
23289         (array_at_struct_end_p): New function.
23290         (idx_infer_loop_bounds): Use it.
23291         (estimate_numbers_of_iterations_loop): Export.
23292         * predict.c (predict_loops): Use estimated_loop_iterations_int.
23293         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
23294         (tree_estimate_probability): Call record_loop_exits.
23295         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
23296         (estimated_loop_iterations, estimated_loop_iterations_int,
23297         estimated_loop_iterations_tree): New functions.
23298         (analyze_siv_subscript_cst_affine,
23299         compute_overlap_steps_for_affine_1_2,
23300         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
23301         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
23302         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
23303         (PRED_LOOP_ITERATIONS_GUESSED): New.
23304         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
23305         * cfgloop.h (estimate_numbers_of_iterations_loop,
23306         estimated_loop_iterations_int): Declare.
23307
23308 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
23309
23310         * doc/extend.texi: Document optional priority argument to
23311         constructors and destructors.
23312         * tree.c (init_priority_for_decl): Adjust GTY markers.
23313         (init_ttree): Use priority-info hash functions for
23314         init_priority_for_decl.
23315         (tree_map_eq): Rename to ...
23316         (tree_map_base_eq): ... this.
23317         (tree_map_marked_p): Rename to ...
23318         (tree_map_base_marked_p): ... this.
23319         (tree_map_base_hash): New function.
23320         (decl_init_priority_lookup): Rework.
23321         (decl_fini_priority_lookup): New function.
23322         (decl_priority_info): New function.
23323         (decl_init_priority_insert): Use it.
23324         (decl_fini_priority_insert): Likewise.
23325         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
23326         hierarchy.
23327         (decl_restrict_base_insert): Likewise.
23328         (decl_debug_expr_insert): Likewise.
23329         (decl_value_expr_lookup): Likewise.
23330         (decl_value_expr_insert): Likewise.
23331         * tree.h (priority_type): New type.
23332         (decl_init_priority_lookup): Use priority_type.
23333         (decl_fini_priority_lookup): New function.
23334         (decl_init_priority_insert): Use priority_type.
23335         (decl_fini_priority_insert): New function.
23336         (DECL_HAS_INIT_PRIORITY): Tweak comments.
23337         (DECL_INIT_PRIORITY): Likewise.
23338         (SET_DECL_INIT_PRIORITY): Add comment.
23339         (DECL_FINI_PRIORITY): New macro.
23340         (SET_DECL_FINI_PRIORITY): Likewise.
23341         (DEFAULT_INIT_PRIORITY): Document.
23342         (MAX_INIT_PRIORITY): Likewise.
23343         (MAX_RESERVED_INIT_PRIORITY): Likewise.
23344         (tree_map_base): New type.
23345         (tree_map_base_eq): New function.
23346         (tree_map_base_hash): Likewise.
23347         (tree_map_base_marked_p): Likewise.
23348         (tree_map): Inherit from tree_map_base.
23349         (tree_map_eq): Make it a macro.
23350         (tree_map_marked_p): Likewise.
23351         (tree_int_map): Inherit from tree_map_base.
23352         (tree_int_map_eq): Make it a macro.
23353         (tree_int_map_hash): Likewise.
23354         (tree_int_map_marked_p): Likewise.
23355         (tree_priority_map): New type.
23356         (tree_priority_map_eq): New macro.
23357         (tree_priority_map_hash): Likewise.
23358         (tree_priority_map_marked_p): Likewise.
23359         * varasm.c (emults_decl): Adjust for refactoring of tree_map
23360         hierarchy.
23361         (emutls_common_1): Likewise.
23362         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
23363         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
23364         of tree_map hierarchy.
23365         * tree-cfg.c (move_stmt_r): Likewise.
23366         (new_label_mapper): Likewise.
23367         * c-tree.h (c_expand_body): Move to ...
23368         * c-common.h (c_expand_body): ... here.
23369         * c-decl.c (c_expand_body): Move to ...
23370         * c-common.c (c_expand_body): ... here.
23371         (c_common_attribute_table): Allow 1 argument for the constructor
23372         and destructor attributes.
23373         (get_priority): New function.
23374         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
23375         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
23376
23377 2007-02-24  Jan Hubicka  <jh@suse.cz>
23378
23379         PR middle-end/30509
23380         * tree-inline.c (copy_bb): Produce exact copy of EH info when
23381         copying for inlining.
23382
23383 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
23384             Jan Hubicka  <jh@suse.cz>
23385
23386         PR target/30778
23387         * i386.c (counter_mode): New function.
23388         (expand_set_or_movmem_via_loop): Use it.
23389         (expand_movmem_epilogue): Likewise; fix pasto.
23390         (ix86_expand_movmem): Do emit guard even for constant counts.
23391         (ix86_expand_setmem): Likewise.
23392
23393 2007-02-25  Nick Clifton  <nickc@redhat.com>
23394
23395         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
23396         (JUMP_TABLES_IN_TEXT_SECTION): Define.
23397
23398 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
23399
23400         PR target/30770
23401         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
23402         count argument with 0x10, not with 0x16.
23403         (expand_setmem_epilogue): Ditto.
23404
23405 2007-02-24  Mike Stump  <mrs@apple.com>
23406
23407         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
23408         symbols.
23409
23410 2007-02-24  Richard Guenther  <rguenther@suse.de>
23411
23412         PR middle-end/30951
23413         * fold-const.c (fold_binary): Fold x +- CST op x for
23414         EQ_EXPR and NE_EXPR.
23415
23416 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23417
23418         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
23419
23420 2007-02-24  Jan Hubicka  <jh@suse.cz>
23421
23422         * cgraphunit.c (decide_is_function_needed): Honor
23423         -fkeep-inline-functions.
23424
23425 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23426
23427         * builtins.c (fold_builtin_modf): New.
23428         (fold_builtin_2): Use it.
23429
23430 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
23431
23432         * loop-iv.c (implies_p): Detect additional cases where A implies B.
23433         (determine_max_iter): Take additional LOOP arg; all callers changed.
23434         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
23435         one using simplifications.
23436         (simplify_using_initial_values): Return if the expression becomes
23437         invalid due to altered regs.
23438
23439 2007-02-23  DJ Delorie  <dj@redhat.com>
23440
23441         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
23442
23443 2007-02-23  Mike Stump  <mrs@apple.com>
23444
23445         * tlink.c (scan_linker_output): Parse linker messages from
23446         darwin9's linker better.
23447
23448 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
23449
23450         PR debug/29614
23451         * varpool.c (varpool_assemble_pending_decls): Set
23452         varpool_last_needed_node to null.
23453
23454 2007-02-23  DJ Delorie  <dj@redhat.com>
23455
23456         * config/i386/i386.c (ix86_data_alignment): Don't specify an
23457         alignment bigger than the object file can handle.
23458
23459 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
23460
23461         PR target/30825
23462         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
23463         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
23464         (*movsf_1): Penalize MMX moves.
23465
23466 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
23467
23468         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
23469         2^32-1 or more times unless flag_unsafe_loop_optimizations.
23470
23471         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
23472
23473 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23474
23475         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
23476         (fold_builtin_1): Use them.
23477         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
23478         BUILT_IN_SIGNIFICAND.
23479
23480 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
23481
23482         * config/i386/i386.c (bdesc_1arg): Initialize
23483         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
23484         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
23485         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
23486         and IX86_BUILTIN_MOVSLDUP.
23487
23488 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
23489
23490         PR rtl-optimization/30841
23491         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
23492
23493 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23494
23495         * builtins.c (fold_builtin_frexp): New.
23496         (fold_builtin_2): Use it.
23497
23498 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
23499
23500         * doc/invoke.texi (Spec Files): Document getenv spec function.
23501
23502         * gcc.c (getenv_spec_function): New function.
23503         (static_spec_functions): Add it.
23504         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
23505         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
23506         header files.
23507
23508 2007-02-22  Michael Matz  <matz@suse.de
23509
23510         PR c++/29433
23511         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
23512         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
23513
23514 2007-02-22  Ian Lance Taylor  <iant@google.com>
23515
23516         PR debug/30898
23517         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
23518         (mem_loc_descriptor): Call it.
23519
23520 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
23521             Ira Rosen  <irar@il.ibm.com>
23522
23523         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
23524
23525 2007-02-22  Ira Rosen  <irar@il.ibm.com>
23526
23527         PR tree-optimization/30843
23528         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
23529         stores only after all the group is vectorized.
23530
23531 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
23532
23533         PR tree-optimization/30858
23534         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
23535         in the reduction cycle have a single use in the loop.
23536         * tree-vectorizer.h (relevant): Add documentation.
23537
23538 2007-02-20  Mike Stump  <mrs@apple.com>
23539
23540         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
23541         * configure: Regenerate.
23542
23543 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
23544
23545         Change the defaults of some parameters and options.
23546         * config/spu/spu-protos.h (spu_optimization_options): Declare.
23547         * config/spu/spu.c (spu_optimization_options): Add.
23548         (spu_override_options): Change params in spu_optimization_options.
23549         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
23550
23551         Register 127 is only 16 byte aligned when used as a frame pointer.
23552         * config/spu/spu-protos.h (spu_init_expanders): Declare.
23553         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
23554         HARD_FRAME_POINTER_REGNUM.
23555         (spu_legitimate_address): Use regno_aligned_for_reload.
23556         (regno_aligned_for_load): HARD_FRAME_POINTER_REGNUM is only 16 byte
23557         aligned when frame_pointer_needed is true.
23558         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
23559         to 8 bits.
23560         * config/spu/spu.h (INIT_EXPANDERS): Define.
23561
23562         Make sure shift and rotate instructions have valid immediate operands.
23563         * config/spu/predicates.md (spu_shift_operand): Remove.
23564         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
23565         * config/spu/constraints.md (W, O): Extend range.
23566         * config/spu/spu.md (umask, nmask): Define.
23567         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
23568         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
23569         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
23570         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
23571         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
23572         (lshr<mode>3_reg): Fix rtl description.
23573
23574         Make sure mulhisi immediate operands are valid.
23575         * config/spu/predicates.md (imm_K_operand): Add.
23576         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
23577
23578         Generate constants using fsmbi and andi.
23579         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
23580         (print_operand, spu_split_immediate, classify_immediate,
23581         fsmbi_const_p): Handle IC_FSMBI2.
23582
23583         Correctly handle a CONST_VECTOR containing symbols.
23584         * config/spu/spu.c (print_operand): Handle HIGH correctly.
23585         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
23586         (immediate_load_p): Allow symbols that use 2 instructions to create.
23587         (classify_immediate, spu_builtin_splats): Don't accept a CONST_VECTOR
23588         with symbols when flag_pic is set.
23589         (const_vector_immediate_p): New.
23590         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
23591         accept a CONST_VECTOR with symbols.
23592         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
23593         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
23594         correctly.
23595         * config/spu/spu.md (high, low): Delete.
23596         (low_<mode>): Define.
23597
23598         Remove INTRmode and INTR_REGNUM, which didn't work.
23599         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
23600         of INTR_REGNUM.
23601         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
23602         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
23603         peephole2 pattern): Don't use INTR or 131.
23604         (movintrcc): Delete.
23605         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
23606         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
23607         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
23608         (UNSPEC_SET_INTR): Add.
23609         * config/spu/spu-modes.def (INTR): Remove.
23610
23611         More accurate warnings about run-time relocations.
23612         * config/spu/spu.c (reloc_diagnostic): Test in_section.
23613
23614         Correctly warn about immediate arguments to specific intrinsics.
23615         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
23616         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
23617         the instruction predicate.
23618
23619         Fix tree check errors with latest update.
23620         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
23621         CALL_EXPR_ARG.
23622         (spu_expand_builtin): Use CALL_EXPR_FN.
23623
23624         Add missing specific intrinsics.
23625         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
23626         si_bislede.
23627         * config/spu/spu_internals.h: Ditto.
23628
23629         Fix incorrect operand modifiers.
23630         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu): Remove use of %H.
23631         * config/spu/spu.md (xor<mode>3): Change %S to %J.
23632
23633         Optimize one case of zero_extend of a vec_select.
23634         * config/spu/spu.md (_vec_extractv8hi_ze): Add.
23635
23636         Accept any immediate for hbr.
23637         * config/spu/spu.md (hbr): Change s constraints to i.
23638
23639 2007-02-21  Paul Brook  <paul@codesourcery.com>
23640
23641         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
23642         condexec_count when skipping USE and CLOBBER.
23643
23644 2007-02-21  Nick Clifton  <nickc@redhat.com>
23645
23646         * common.opt (Warray-bounds): Add Warning attribute.
23647         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
23648         Likewise.
23649         (fsized-zeroes): Add Optimization attribute.
23650         (fsplit-wide-types, ftree-scev-cprop): Likewise.
23651         * c.opt (Wc++0x-compat): Add Warning attribute.
23652
23653 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
23654
23655         PR middle-end/30761
23656         * reload1.c (eliminate_regs_in_insn): In the single_set special
23657         case, attempt to re-recognize the insn before falling back to
23658         having reload fix it up.
23659
23660 2007-02-20  Eric Christopher  <echristo@gmail.com>
23661
23662         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
23663         Rewrite accordingly.
23664         (frv_read_iacc_argument): Ditto.
23665         (frv_expand_set_builtin): Take a call instead of arglist, update for
23666         above changes.
23667         (frv_expand_unop_builtin): Ditto.
23668         (frv_expand_binop_builtin): Ditto.
23669         (frv_expand_cut_builtin): Ditto.
23670         (frv_expand_binopimm_builtin): Ditto.
23671         (frv_expand_voidbinop_builtin): Ditto.
23672         (frv_expand_int_void2arg): Ditto.
23673         (frv_expand_prefetches): Ditto.
23674         (frv_expand_voidtriop_builtin): Ditto.
23675         (frv_expand_voidaccop_builtin): Ditto.
23676         (frv_expand_load_builtin): Ditto.
23677         (frv_expand_store_builtin): Ditto.
23678         (frv_expand_mdpackh_builtin): Ditto.
23679         (frv_expand_mclracc_builtin): Ditto.
23680         (frv_expand_mrdacc_builtin): Ditto.
23681         (frv_expand_mwtacc_builtin): Ditto.
23682         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
23683         calls for above.
23684
23685 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
23686
23687         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
23688         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
23689         cmpb instruction.
23690         (HAVE_GAS_DFP): Check for assembler support of decimal floating
23691         point instructions.
23692         * configure: Regenerate.
23693         * config.in: Regenerate.
23694         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
23695         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
23696         masks to power6 and power6x and to POWERPC_MASKS.
23697         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
23698         _ARCH_PWR6.
23699         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
23700         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
23701         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
23702         Access PROTOTYPE as variable, not mask.
23703
23704 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
23705
23706         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
23707         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
23708         * combine.c (adjust_for_new_dest): Use it.
23709         * postreload.c (reload_combine): Likewise.
23710
23711 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
23712
23713         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
23714         notes on an insn with multiple sets, even if single_set returns
23715         non-NULL for that insn.
23716
23717 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23718
23719         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
23720         scalbn and scalbln.
23721
23722 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
23723
23724         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
23725         if user didn't pass it.
23726         * config/i386/darwin.h (CC1_SPEC): Likewise.
23727         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
23728         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
23729         -mmacosx-version-min.
23730
23731 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23732             Uros Bizjak  <ubizjak@gmail.com>
23733
23734         * optabs.h (enum optab_index): Add new OTI_scalb.
23735         (scalb_optab): Define corresponding macro.
23736         * optabs.c (init_optabs): Initialize scalb_optab.
23737         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
23738         patterns.
23739         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
23740         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
23741         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
23742         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
23743         flag_unsafe_math_optimizations is set.
23744
23745         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
23746         to implement scalbf, scalb and scalbl built-ins as inline x87
23747         intrinsics.
23748
23749 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23750             DJ Delorie <dj@redhat.com>
23751
23752         PR other/30824
23753         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
23754         (diagnostic_report_diagnostic): ... here, and turn them into real
23755         errors. If warnings are inhibited, no need to do anything.
23756
23757 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
23758
23759         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
23760         better code generation.
23761
23762 2007-02-20  Ben Elliston  <bje@au.ibm.com>
23763
23764         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
23765
23766 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
23767
23768         * config/alpha/alpha.c, config/alpha/alpha.md,
23769         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
23770         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
23771         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
23772         config/arm/lib1funcs.asm: Follow spelling conventions.
23773
23774         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
23775         config/fr30/fr30.md, config/i386/i386.h,
23776         config/iq2000/iq2000.h, config/iq2000/predicates.md,
23777         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
23778         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
23779         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
23780         config/rs6000/altivec.md, config/rs6000/rs6000.c,
23781         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
23782         config/sparc/sparc.c, config/sparc/sparc.h,
23783         config/sparc/sparc.md, config/spu/constraints.md,
23784         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
23785         conventions.
23786
23787 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
23788
23789         PR target/29943
23790         * varasm.c (use_blocks_for_decl_p): Return false for decls with
23791         alias attribute.
23792
23793 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
23794
23795         * doc/invoke.texi (-ftree-lrs): Remove.
23796
23797 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
23798
23799         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
23800         NULL.
23801
23802 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
23803
23804         * config/ia64/ia64.c (ia64_expand_builtin): Use the
23805         new CALL_EXPR_FN macro for retrieving the function
23806         declaration of the input expression.
23807
23808 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23809
23810         * c.opt (Waddress): New.
23811         * common.opt (Walways-true): Delete.
23812         (Wstring-literal-comparison): Delete.
23813         * doc/invoke.texi (Warning Options): Delete -Walways-true and
23814         -Wstring-literal-comparison. Add -Waddress.
23815         (Waddress): New.
23816         (Walways-true): Delete.
23817         (Wstring-literal-comparison): Delete.
23818         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
23819         consistently instead of -Walways-true in example.
23820         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
23821         * c-typeck.c (parser_build_binary_op): Replace
23822         -Wstring-literal-comparison and -Walways-true with -Waddress.
23823         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
23824         with -Waddress.
23825
23826 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
23827
23828         * tree-cfg.c (dump_function_to_file): Be prepared for functions
23829         without DECL_STRUCT_FUNCTION initialized.
23830
23831 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
23832
23833         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
23834         due to calls to functions taking pointers as parameters.
23835
23836 2007-02-19  Richard Henderson  <rth@redhat.com>
23837
23838         PR debug/29558
23839         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
23840         in memory.
23841
23842 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
23843
23844         * config/s390/s390.c (s390_call_saved_register_used,
23845         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
23846         accessed to the new scheme.
23847
23848 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
23849
23850         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
23851         (cris_print_index, cris_print_operand, cris_print_operand_address)
23852         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
23853         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
23854         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
23855         GET_CODE () == xxx.
23856         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
23857         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
23858         GO_IF_LEGITIMATE_ADDRESS): Ditto.
23859         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
23860         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
23861         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
23862         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
23863         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
23864         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
23865         (uminsi3, call, call_value): Ditto.
23866         (define_split: indir_to_reg_split, unnamed): Ditto.
23867
23868 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
23869
23870         PR tree-optimization/30975
23871         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
23872         wrong assert.
23873
23874 2007-02-18  Eric Christopher  <echristo@gmail.com>
23875
23876         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
23877         Remove use of arglist.
23878         (mips_expand_builtin): Remove use of arglist, pass in expr.
23879         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
23880         (mips_expand_builtin_movtf): Ditto.
23881         (mips_expand_builtin_compare): Ditto.
23882
23883 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
23884
23885         * tree-sra.c (sra_build_assignment): Replace assertion
23886         checking with a comment explaining why it can't be done.
23887
23888 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
23889
23890         PR middle-end/30833
23891         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
23892         during CALL_EXPR representation conversion.
23893         * tree-ssa-propagate.c (set_rhs): Likewise.
23894
23895 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
23896
23897         * tree-sra.c (sra_build_assignment): Disable assertion checking
23898         for now.
23899
23900 2007-02-18  Roger Sayle  <roger@eyesopen.com>
23901
23902         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
23903         instead of calling build2 with a GIMPLE_MODIFY_STMT.
23904         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
23905         Likewise.
23906         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
23907         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
23908         gimplify_init_ctor_eval_range, gimple_push_cleanup,
23909         gimplify_omp_for, gimplify_omp_atomic_pipeline,
23910         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
23911         force_gimple_operand): Likewise.
23912         * ipa-cp.c (constant_val_insert): Likewise.
23913         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
23914         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
23915         perfect_nestify): Likewise.
23916         * langhooks.c (lhd_omp_assignment): Likewise.
23917         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
23918         lower_copyprivate_clauses, lower_send_clauses,
23919         lower_send_shared_vars, expand_parallel_call,
23920         expand_omp_for_generic, expand_omp_for_static_nochunk,
23921         expand_omp_for_static_chunk, expand_omp_sections,
23922         lower_omp_single_copy, lower_omp_for_lastprivate,
23923         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
23924         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
23925         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
23926         Likewise.
23927
23928 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
23929
23930         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
23931         config/sh/sh.md: Follow spelling conventions.
23932
23933         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
23934         config/frv/predicates.md: Follow spelling conventions.
23935
23936         * config/m68k/linux-unwind.h: Fix a comment typo.
23937         * target.h: Follow spelling conventions.
23938
23939 2007-02-18  Roger Sayle  <roger@eyesopen.com>
23940
23941         PR rtl-optimization/28173
23942         * simplify-rtx.c (simplify_binary_operation_1) <IOR>: Optimize
23943         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
23944         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
23945         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
23946         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
23947
23948 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23949
23950         * builtins.c (fold_builtin_load_exponent): New.
23951         (fold_builtin_2): Use it.
23952
23953 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
23954
23955         PR rtl-optimization/30773
23956         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
23957         if we fail to attach a REG_EQUIV note.
23958
23959 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
23960             Roger Sayle  <roger@eyesopen.com>
23961
23962         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
23963
23964 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
23965
23966         * calls.c (initialize_argument_information): Pass original EXP
23967         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
23968         code to split complex arguments here, as part of initializing the
23969         ARGS array.
23970         (expand_call): Remove code that builds a list of arguments and
23971         inserts implicit arguments into it.  Instead, just count how many
23972         implicit arguments there will be so we can determine the size of
23973         the ARGS array, and let initialize_argument_information do the work.
23974         (split_complex_values): Delete unused function.
23975
23976 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
23977
23978         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
23979
23980 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
23981
23982         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
23983         for arg pointer based indexed addressing.
23984
23985 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
23986
23987         * config/ia64/ia64.h, config/ia64/ia64.md,
23988         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
23989         spelling conventions.
23990
23991 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
23992
23993         * config/m68k/m68k.c (split_di): New.
23994         * config/m68k/m68k-protos.h: Declare split_di.
23995         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
23996           Improve predicate handling and split constant shifts.
23997
23998 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
23999
24000         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
24001         parameter for register bitfield operations, general predicates
24002         cleanup
24003
24004 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
24005
24006         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
24007         * config/m68k/linux-unwind.h: New file.
24008
24009 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
24010
24011         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
24012         config/i386/athlon.md, config/ia64/ia64.md,
24013         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
24014         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
24015         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
24016         tree-ssa-loop-niter.c, tree-vect-analyze.c,
24017         tree-vect-transform.c: Fix comment typos.
24018
24019 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
24020
24021         * sched-deps.c (find_insn_list): Remove.
24022         * sched-int.h: Remove the prototype for find_insn_list.
24023
24024 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
24025
24026         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
24027         to linker.
24028         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
24029         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
24030         darwin_rs6000_override_options.
24031         (C_COMMON_OVERRIDE_OPTIONS): Expect
24032         darwin_macosx_version_min to be non-NULL always.
24033         (TARGET_C99_FUNCTIONS): Likewise.
24034         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
24035         (DARWIN_MINVERSION_SPEC): New.
24036         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
24037         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
24038         to cc1*.
24039         (DARWIN_MINVERSION_SPEC): New.
24040         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
24041         value.
24042         * config/darwin-c.c (darwin_cpp_builtins): Expect
24043         darwin_macosx_version_min to be non-NULL always.
24044
24045         * config/rs6000/rs6000.c: Clean up trailing whitespace.
24046
24047 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
24048
24049         * config/i386/i386.h (x86_use_xchgb): New.
24050         (TARGET_USE_XCHGB): New macro.
24051         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
24052         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
24053         Split after reload into bswaphi for shifts of 8.
24054         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
24055         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
24056         or when optimizing for size.
24057
24058 2007-02-16  Richard Guenther  <rguenther@suse.de>
24059             Christian Bruel  <christian.bruel@st.com>
24060
24061         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
24062         DECLs but prefer SSA_NAMEs over DECLs.
24063
24064 2007-02-16  Richard Guenther  <rguenther@suse.de>
24065
24066         * tree-flow-inline.h (single_imm_use_p): Remove.
24067         (zero_imm_uses_p): Likewise.
24068         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
24069         instead of single_imm_use_p.
24070         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
24071         zero_imm_uses_p.
24072
24073 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24074
24075         PR other/27843
24076         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
24077         nested double- and backquotes.
24078
24079 2007-02-15  Roger Sayle  <roger@eyesopen.com>
24080
24081         PR middle-end/30391
24082         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
24083         should be unreachable.
24084         (build2_stat): Allow construction of MODIFY_EXPR at any time.
24085         For the time being redirect GIMPLE_MODIFY_STMT to the new
24086         (renamed) build_gimple_modify_stmt_stat.
24087         (build2_gimple_stat): Rename to...
24088         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
24089         Always build a GIMPLE_MODIFY_STMT node.
24090         * tree.h (build2_gimple, build2_gimple_stat): Delete.
24091         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
24092         declarations.
24093
24094         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
24095         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
24096         * tree-complex.c (set_component_ssa_name, expand_complex_move,
24097         expand_complex_div_wide): Likewise.
24098         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
24099         * tree-ssa-loop-im.c (schedule_sm): Likewise.
24100         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
24101         * tree-ssa-loop-manip.c (create_iv): Likewise.
24102         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
24103         abs_replacement): Likewise.
24104         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
24105         realify_fake_stores): Likewise.
24106
24107         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
24108         node rather than a GIMPLE_MODIFY_STMT node.
24109         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
24110         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
24111         Likewise.
24112         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
24113         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
24114         GIMPLE_MODIFY_STMT.
24115
24116 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24117
24118         PR middle-end/30433
24119         * fold-const.c (fold_comparison): Add back the
24120         folding of constant complex comparisions.
24121
24122 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24123
24124         PR middle-end/30729
24125         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
24126         effects unknown to this function, return early.
24127
24128 2007-02-15  Ian Lance Taylor  <iant@google.com>
24129
24130         * lower-subreg.c (move_eh_region_note): New static function.
24131         (resolve_simple_move): Call it.
24132         (decompose_multiword_subregs): Track blocks for which we resolve a
24133         simple move which is also a control flow insn.  Pass them to
24134         find_many_sub_basic_blocks.
24135         (pass_lower_subreg): Add TODO_verify_flow.
24136         (pass_lower_subreg2): Likewise.
24137
24138 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
24139             Brooks Moses  <brooks.moses@codesourcery.com>
24140             Lee Millward  <lee.millward@codesourcery.com>
24141
24142         * tree.h (enum tree_code_class): Add tcc_vl_exp.
24143         (VL_EXP_CLASS_P): New.
24144         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
24145         TREE_CODE_LENGTH.
24146         (TREE_OPERAND_CHECK_CODE): Likewise.
24147         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
24148         (TREE_RTL_OPERAND_CHECK): Likewise.
24149         (tree_operand_check_failed): Make second parameter the whole tree
24150         instead of its code.  Fixed callers.
24151         (VL_EXP_CHECK): New.
24152         (TREE_OPERAND_LENGTH): New.
24153         (VL_EXP_OPERAND_LENGTH): New.
24154         (CALL_EXPR_FN): New.
24155         (CALL_EXPR_STATIC_CHAIN): New.
24156         (CALL_EXPR_ARGS): New.
24157         (CALL_EXPR_ARG): New.
24158         (call_expr_nargs): New.
24159         (CALL_EXPR_ARGP): New.
24160         (build_nt_call_list): Declare.
24161         (build_vl_exp_stat): Declare.
24162         (build_vl_exp): New.
24163         (build_call_list): Declare.
24164         (build_call_nary): Declare.
24165         (build_call_valist): Declare.
24166         (build_call_array): Declare.
24167         (call_expr_arg): Declare.
24168         (call_expr_argp): Declare.
24169         (call_expr_arglist): Declare.
24170         (fold_build_call_list): Declare.
24171         (fold_build_call_list_initializer): Declare.
24172         (fold_call_expr): Declare to replace fold_builtin.
24173         (fold_builtin_fputs): Update to agree with modified definition.
24174         (fold_builtin_strcpy): Likewise.
24175         (fold_builtin_strncpy): Likewise.
24176         (fold_builtin_memory_chk): Likewise.
24177         (fold_builtin_stxcpy_chk): Likewise.
24178         (fold_builtin_strncpy_chk): Likewise.
24179         (fold_builtin_next_arg): Likewise.
24180         (fold_build_call_expr): Declare.
24181         (fold_builtin_call_list): Declare.
24182         (fold_builtin_call_valist): Declare.
24183         (build_call_expr): Declare.
24184         (validate_arglist): Update to agree with modified definition.
24185         (tree_operand_length): New.
24186         (call_expr_arg_iterator): New.
24187         (init_call_expr_arg_iterator): New.
24188         (next_call_expr_arg): New.
24189         (first_call_expr_arg): New.
24190         (more_call_expr_args_p): New.
24191         (FOR_EACH_CALL_EXPR_ARG): New.
24192
24193         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
24194         and tcc_gimple_stmt.
24195         (tree_code_size): Update documentation.  Use sizeof (tree) rather
24196         than sizeof (char *).
24197         (tree_size): Likewise.  Add case for tcc_vl_exp.
24198         (tree_node_structure): Add case for tcc_vl_exp.
24199         (contains_placeholder_p): Likewise.
24200         (substitute_in_expr): Likewise.
24201         (substitute_placeholder_in_expr): Likewise.
24202         (stabilize_reference_1): Likewise.
24203         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
24204         to diagnose breakage of this interface for constructing CALL_EXPRs.
24205         (build_nt): Add similar assertion here.
24206         (build_nt_call_list): New.
24207         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
24208         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
24209         TREE_CODE_LENGTH.
24210         (get_callee_fndecl): Use new CALL_EXPR accessors.
24211         (tree_operand_check_failed): Change parameters to pass entire node
24212         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
24213         (process_call_operands): New.
24214         (build_vl_exp_stat): New.
24215         (build_call_list): New.
24216         (build_call_nary): New.
24217         (build_call_valist): New.
24218         (build_call_array): New.
24219         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
24220         (call_expr_arglist): New.
24221
24222         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
24223         tcc_vl_exp instead of a fixed-size tcc_expression.
24224
24225         * doc/c-tree.texi (CALL_EXPR): Document new representation and
24226         accessors for CALL_EXPRs.
24227         (AGGR_INIT_EXPR): Likewise.
24228
24229 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
24230             Brooks Moses  <brooks.moses@codesourcery.com>
24231             Lee Millward  <lee.millward@codesourcery.com>
24232
24233         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
24234         (expand_builtin_nonlocal_goto): Change parameter to be entire
24235         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
24236         (expand_builtin_prefetch): Likewise.
24237         (expand_builtin_classify_type): Likewise.
24238         (mathfn_built_in): Return NULL_TREE instead of 0.
24239         (expand_errno_check): Use new CALL_EXPR accessors.
24240         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
24241         Return NULL_RTX instead of 0.
24242         (expand_builtin_mathfn_2): Likewise.
24243         (expand_builtin_mathfn_3): Likewise.
24244         (expand_builtin_interclass_mathfn): Likewise.
24245         (expand_builtin_sincos): Likewise.
24246         (expand_builtin_cexpi): Likewise.
24247         (expand_builtin_int_roundingfn): Likewise.
24248         (expand_builtin_int_roundingfn_2): Likewise.
24249         (expand_builtin_pow): Likewise.
24250         (expand_builtin_powi): Likewise.
24251         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
24252         of arglist, fixing callers appropriately.  Use new CALL_EXPR
24253         accessors and constructors.  Return NULL_RTX instead of 0.
24254         (expand_builtin_strstr): Likewise.
24255         (expand_builtin_strchr): Likewise.
24256         (expand_builtin_strrchr): Likewise.
24257         (expand_builtin_strpbrk): Likewise.
24258         (expand_builtin_memcpy): Likewise.
24259         (expand_builtin_mempcpy): Likewise.
24260         (expand_builtin_mempcpy_args): New.
24261         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
24262         (expand_builtin_memmove_args): New.
24263         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
24264         (expand_movstr): Likewise.
24265         (expand_builtin_strcpy): Likewise.
24266         (expand_builtin_strcpy_args): New.
24267         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
24268         (expand_builtin_strncpy): Likewise.
24269         (expand_builtin_memset): Likewise.
24270         (expand_builtin_memset_args): New.
24271         (expand_builtin_bzero): Similarly to expand_builtin_memset.
24272         (expand_builtin_memcmp): Likewise.
24273         (expand_builtin_strcmp): Likewise.
24274         (expand_builtin_strncmp): Likewise.
24275         (expand_builtin_strcat): Likewise.
24276         (expand_builtin_strncat): Likewise.
24277         (expand_builtin_strspn): Likewise.
24278         (expand_builtin_strcspn): Likewise.
24279         (expand_builtin_args_info): Likewise.
24280         (expand_builtin_va_start): Likewise.
24281         (gimplify_va_arg_expr): Likewise.
24282         (expand_builtin_va_end): Likewise.
24283         (expand_builtin_va_copy): Likewise.
24284         (expand_builtin_frame_address): Likewise.
24285         (expand_builtin_alloca): Likewise.
24286         (expand_builtin_bswap): Likewise.
24287         (expand_builtin_unop): Likewise.
24288         (expand_builtin_fputs): Likewise.
24289         (expand_builtin_expect): Likewise.
24290         (expand_builtin_fabs): Likewise.
24291         (expand_builtin_copysign): Likewise.
24292         (expand_builtin_printf): Likewise.
24293         (expand_builtin_fprintf): Likewise.
24294         (expand_builtin_sprintf): Likewise.
24295         (expand_builtin_init_trampoline): Likewise.
24296         (expand_builtin_signbit): Likewise.
24297         (expand_builtin_fork_or_exec): Likewise.
24298         (expand_builtin_sync_operation): Likewise.
24299         (expand_builtin_compare_and_swap): Likewise.
24300         (expand_builtin_lock_test_and_set): Likewise.
24301         (expand_builtin_lock_release): Likewise.
24302         (expand_builtin): Likewise.
24303         (builtin_mathfn_code): Likewise.
24304
24305         (fold_builtin_constant_p): Pass call arguments individually instead
24306         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
24307         accessors and constructors.  Return NULL_TREE instead of 0.
24308         (fold_builtin_expect): Likewise.
24309         (fold_builtin_classify_type): Likewise.
24310         (fold_builtin_strlen): Likewise.
24311         (fold_builtin_nan): Likewise.
24312         (integer_valued_real_p): Likewise.
24313         (fold_trunc_transparent_mathfn): Likewise.
24314         (fold_fixed_mathfn): Likewise.
24315         (fold_builtin_cabs): Likewise.
24316         (fold_builtin_sqrt): Likewise.
24317         (fold_builtin_cbrt): Likewise.
24318         (fold_builtin_cos): Likewise.
24319         (fold_builtin_cosh): Likewise.
24320         (fold_builtin_tan): Likewise.
24321         (fold_builtin_sincos): Likewise.
24322         (fold_builtin_cexp): Likewise.
24323         (fold_builtin_trunc): Likewise.
24324         (fold_builtin_floor): Likewise.
24325         (fold_builtin_ceil): Likewise.
24326         (fold_builtin_round): Likewise.
24327         (fold_builtin_int_roundingfn): Likewise.
24328         (fold_builtin_bitop): Likewise.
24329         (fold_builtin_bswap): Likewise.
24330         (fold_builtin_logarithm): Likewise.
24331         (fold_builtin_hypot): Likewise.
24332         (fold_builtin_pow): Likewise.
24333         (fold_builtin_powi): Likewise.
24334         (fold_builtin_exponent): Likewise.
24335         (fold_builtin_memset): Likewise.
24336         (fold_builtin_bzero): Likewise.
24337         (fold_builtin_memory_op): Likewise.
24338         (fold_builtin_bcopy): Deleted; call site changed to invoke
24339         fold_builtin_memory_op directly.
24340         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
24341         (fold_builtin_strncpy): Likewise.
24342         (fold_builtin_memcmp): Likewise.
24343         (fold_builtin_strcmp): Likewise.
24344         (fold_builtin_strncmp): Likewise.
24345         (fold_builtin_signbit): Likewise.
24346         (fold_builtin_copysign): Likewise.
24347         (fold_builtin_isascii): Likewise.
24348         (fold_builtin_toascii): Likewise.
24349         (fold_builtin_isdigit): Likewise.
24350         (fold_builtin_fabs): Likewise.
24351         (fold_builtin_abs): Likewise.
24352         (fold_builtin_fmin_fmax): Likewise.
24353         (fold_builtin_carg): Likewise.
24354         (fold_builtin_classify): Likewise.
24355         (fold_builtin_unordered_cmp): Likewise.
24356
24357         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
24358         New functions split out from fold_builtin_1.
24359         (fold_builtin_n): New.
24360         (fold_builtin_varargs): New.
24361         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
24362         instead.
24363         (fold_call_expr): New.
24364         (build_function_call_expr): Rewrite to use new helper function.
24365         (fold_builtin_call_list): New.
24366         (build_call_expr): New.
24367         (fold_builtin_call_valist): New.
24368         (rewrite_call_expr): New.
24369         (validate_arg): New.
24370         (validate_arglist): Change parameter to be entire CALL_EXPR instead
24371         of an arglist.  Change return type to bool.  Use new CALL_EXPR
24372         accessors.
24373
24374         (fold_builtin_strstr): Pass call arguments individually instead
24375         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
24376         accessors and constructors.  Return NULL_TREE instead of 0.
24377         (fold_builtin_strchr): Likewise.
24378         (fold_builtin_strrchr): Likewise.
24379         (fold_builtin_strpbrk): Likewise.
24380         (fold_builtin_strcat): Likewise.
24381         (fold_builtin_strncat): Likewise.
24382         (fold_builtin_strspn): Likewise.
24383         (fold_builtin_strcspn): Likewise.
24384         (fold_builtin_fputs): Likewise.
24385         (fold_builtin_next_arg): Likewise.
24386         (fold_builtin_sprintf): Likewise.
24387
24388         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
24389         NULL_RTX instead of 0.
24390         (expand_builtin_memory_chk): Likewise.
24391         (maybe_emit_chk_warning): Likewise.
24392         (maybe_emit_sprintf_chk_warning): Likewise.
24393
24394         (fold_builtin_object_size): Pass call arguments individually instead
24395         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
24396         accessors and constructors.  Return NULL_TREE instead of 0.
24397         (fold_builtin_memory_chk): Likewise.
24398         (fold_builtin_stxcpy_chk): Likewise.
24399         (fold_builtin_strncpy_chk): Likewise.
24400         (fold_builtin_strcat_chk): Likewise.
24401         (fold_builtin_strcat_chk): Likewise.
24402         (fold_builtin_strncat_chk): Likewise.
24403         (fold_builtin_sprintf_chk): Likewise.
24404         (fold_builtin_snprintf_chk): Likewise.
24405         (fold_builtin_printf): Likewise.
24406         (fold_builtin_vprintf): Likewise.
24407
24408         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
24409         constructors.
24410         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
24411         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
24412         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
24413         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
24414         (fold_unary): Likewise.
24415         (fold_binary): Likewise.
24416         (fold_ternary): Remove CALL_EXPR case, since they are no longer
24417         ternary expressions.
24418         (fold): Add logic for tcc_vl_exp.
24419         (fold_checksum_tree): Make it know about tcc_vl_exp.  Use
24420         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
24421         (fold_build3_stat): Add assertion to flag broken interface for
24422         constructing CALL_EXPRs.
24423         (fold_build_call_list): New.
24424         (fold_build_call_list_initializer): New.
24425         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
24426         constructors.
24427         (fold_strip_sign_ops): Likewise.
24428
24429 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
24430             Brooks Moses  <brooks.moses@codesourcery.com>
24431             Lee Millward  <lee.millward@codesourcery.com>
24432
24433         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
24434         accessors and dump arguments explicitly.
24435
24436         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
24437         TREE_CODE_LENGTH.
24438         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
24439         explicitly.
24440         (print_call_name): Use new CALL_EXPR accessors.
24441
24442         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
24443         CALL_EXPR arguments explicitly instead of as a list.  Use
24444         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
24445
24446         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
24447         (vrp_visit_stmt): Likewise.
24448
24449         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Make it
24450         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
24451         TREE_CODE_LENGTH.
24452         (force_move_till_expr): Likewise.
24453
24454         * targhooks.c (default_external_stack_protect_fail): Use
24455         build_call_expr instead of build_function_call_expr.
24456         (default_hidden_stack_protect_fail): Likewise.
24457
24458         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
24459         build the call.
24460
24461         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
24462         and walk arguments explicitly.
24463
24464         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
24465         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
24466         (expand_simple_operations): Likewise.
24467         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
24468
24469         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
24470         of TREE_CODE_LENGTH.
24471         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
24472
24473         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
24474         instead of TREE_CODE_LENGTH.
24475
24476         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
24477         (tree_ic_transform): Likewise.
24478         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
24479         parameter instead of arglist.  Fix callers.
24480         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
24481         (tree_stringops_transform): Likewise.
24482         (tree_indirect_call_to_profile): Likewise.
24483         (tree_stringops_values_to_profile): Likewise.
24484
24485         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
24486         (eliminate_tail_call): Likewise.
24487
24488         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
24489
24490         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
24491         Use TREE_OPERAND_LENGTH and generalize to handle any number of
24492         operands.
24493         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
24494
24495         * omp-low.c (build_omp_barrier): Use build_call_expr.
24496         (lower_rec_input_clauses): Likewise.
24497         (lower_reduction_clauses): Likewise.
24498         (expand_parallel_call): Likewise.
24499         (maybe_catch_exception): Likewise.
24500         (expand_omp_for_generic): Likewise.
24501         (expand_omp_for_static_nochunk): Likewise.
24502         (expand_omp_sections): Likewise.
24503         (lower_omp_single_simple): Likewise.
24504         (lower_omp_single_copy): Likewise.
24505         (lower_omp_master): Likewise.
24506         (lower_omp_ordered): Likewise.
24507         (lower_omp_critical): Likewise.
24508
24509         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
24510         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
24511
24512         * tree-gimple.c (is_gimple_call_addr): Fix doc.
24513         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
24514         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
24515
24516         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
24517         and generalize to handle any number of operands.
24518         (chrec_contains_undetermined): Likewise.
24519         (tree_contains_chrecs): Likewise.
24520         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
24521
24522         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
24523
24524         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
24525         fold_call_expr instead of fold_builtin.
24526         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
24527         match declarations there.
24528         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
24529         updates.
24530
24531         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
24532         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
24533
24534         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
24535         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
24536
24537         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
24538         accessors.
24539
24540         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
24541         (execute_cse_sincos): Use new CALL_EXPR accessors.
24542
24543         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
24544
24545         * gimple-low.c (lower_function_body): Use build_call_expr.
24546         (lower_builtin_setjmp): Likewise.
24547
24548         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
24549         (set_storage_via_libcall): Likewise.
24550         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
24551         instead of TREE_CODE_LENGTH.
24552         (expand_expr_real_1): Use new CALL_EXPR accessors.
24553
24554         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
24555         generalize to handle any number of operands.
24556         (TB_parent_eq): Likewise.
24557
24558         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
24559         (strip_builtin_expect): Likewise.
24560
24561         * function.c (gimplify_parameters): Use build_call_expr.
24562
24563         * tree-vectorizer.c (vect_is_simple_reduction): Use
24564         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
24565
24566         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
24567         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
24568
24569         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
24570         iterators.
24571
24572         * gimplify.c (build_stack_save_restore): Use build_call_expr.
24573         (gimplify_decl_expr): Likewise.
24574         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
24575         Use new CALL_EXPR iterators.
24576         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
24577         (gimplify_modify_expr_to_memset): Likewise.
24578         (gimplify_variable_sized_compare): Likewise.
24579         (gimplify_omp_atomic_fetch_op): Likewise.
24580         (gimplify_omp_atomic_pipeline): Likewise.
24581         (gimplify_omp_atomic_mutex): Likewise.
24582         (gimplify_function_tree): Likewise.
24583
24584         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
24585         (call_expr_flags): Likewise.
24586         (expand_call): Likewise.
24587
24588         * except.c (expand_builtin_eh_return_data_regno): Pass entire
24589         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
24590         accessors.
24591
24592         * coverage.c (create_coverage): Use build_call_expr.
24593
24594         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
24595         (temp_call_expr_obstack): New.
24596         (pool_copy_list): Delete.
24597         (temp_copy_call_expr): New.
24598         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
24599         CALL_EXPR accessors.  Get rid of special goo for copying argument
24600         lists and use temp_copy_call_expr instead.
24601         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
24602         CALL_EXPR accessors.
24603         (create_expression_by_pieces): Likewise.  Use build_call_array
24604         to construct the result instead of fold_build3.
24605         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
24606         dealing with argument lists.
24607         (init_pre): Remove references to expression_node_pool and
24608         list_node_pool.  Init temp_call_expr_obstack instead.
24609         (fini_pre): Remove references to expression_node_pool and
24610         list_node_pool.
24611
24612         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
24613         and walk arguments explicitly instead of as a list.
24614
24615         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
24616         (mx_register_decls): Likewise.
24617         (mudflap_register_call): Likewise.
24618         (mudflap_finish_file): Likewise.
24619
24620         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
24621         (ipa_callsite_compute_param): Likewise.
24622
24623         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
24624         accessors and constructor.
24625
24626         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
24627         accessors and constructor.
24628         (convert_tramp_reference): Likewise.
24629         (convert_call_expr): Likewise.
24630         (finalize_nesting_tree_1): Likewise.
24631
24632         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
24633         accessors.
24634
24635         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
24636
24637         * tree-inline.c (initialize_inlined_parameters): Pass entire
24638         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
24639         accessors.
24640         (estimate_num_insns_1): Use new CALL_EXPR accessors.
24641         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
24642
24643         * tree-vect-transform.c (vect_create_epilog_for_reduction): Use
24644         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
24645         (vectorizable_reduction): Likewise.
24646         (vectorizable_call): Use new CALL_EXPR iterators.
24647         (vectorizable_conversion): Use build_call_expr.
24648         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
24649         (vect_gen_widened_results_half): Use build_call_expr.
24650         (vect_setup_realignment): Likewise.
24651         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
24652
24653         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
24654         (pass_through_call): Likewise.
24655         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
24656         fold_builtin.
24657
24658         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
24659         (tree_gen_pow2_profiler): Likewise.
24660         (tree_gen_one_value_profiler): Likewise.
24661         (tree_gen_ic_func_profiler): Likewise.
24662         (tree_gen_average_profiler): Likewise.
24663         (tree_gen_ior_profiler): Likewise.
24664
24665         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
24666         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
24667         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
24668
24669         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
24670         of TREE_CODE_LENGTH.
24671
24672         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
24673         of TREE_CODE_LENGTH.
24674
24675         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
24676         constructor.
24677         (convert_to_integer): Likewise.
24678
24679         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
24680         accessors.
24681
24682 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
24683             Brooks Moses  <brooks.moses@codesourcery.com>
24684             Lee Millward  <lee.millward@codesourcery.com>
24685
24686         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
24687         accessors.
24688         * config/frv/frv.c (frv_expand_builtin): Likewise.
24689         * config/s390/s390.c (s390_expand_builtin): Likewise.
24690
24691         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
24692         (sparc_expand_builtin): Use new CALL_EXPR accessors.
24693
24694         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
24695         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
24696         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
24697         (ix86_expand_store_builtin): Likewise.
24698         (ix86_expand_unop_builtin): Likewise.
24699         (ix86_expand_unop1_builtin): Likewise.
24700         (ix86_expand_sse_compare): Likewise.
24701         (ix86_expand_sse_comi): Likewise.
24702         (ix86_expand_vec_init_builtin): Likewise.
24703         (ix86_expand_vec_ext_builtin): Likewise.
24704         (ix86_expand_vec_set_builtin): Likewise.
24705         (ix86_expand_builtin): Use new CALL_EXPR accessors.
24706
24707         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
24708         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
24709
24710         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
24711         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
24712         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
24713
24714         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
24715         build_call_expr.
24716         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
24717         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
24718         arglist.  Use new CALL_EXPR accessors.  Fix callers.
24719         (altivec_expand_abs_builtin): Likewise.
24720         (rs6000_expand_binop_builtin): Likewise.
24721         (altivec_expand_predicate_builtin): Likewise.
24722         (altivec_expand_lv_builtin): Likewise.
24723         (spe_expand_stv_builtin): Likewise.
24724         (altivec_expand_stv_builtin): Likewise.
24725         (rs6000_expand_ternop_builtin): Likewise.
24726         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
24727         (altivec_expand_st_builtin): Likewise.
24728         (altivec_expand_dst_builtin): Likewise.
24729         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
24730         arglist.  Use new CALL_EXPR accessors.  Fix callers.
24731         (altivec_expand_vec_set_builtin): Likewise.
24732         (altivec_expand_vec_ext_builtin): Likewise.
24733         (altivec_expand_builtin): Use new CALL_EXPR accessors.
24734         (spe_expand_builtin): Likewise.
24735         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
24736         arglist.  Use new CALL_EXPR accessors.  Fix callers.
24737         (spe_expand_evsel_builtin): Likewise.
24738         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
24739         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
24740
24741         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
24742         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
24743         (arm_expand_unop_builtin): Likewise.
24744         (arm_expand_builtin): Use new CALL_EXPR accessors.
24745
24746         * config/mips/mips.c (mips_expand_builtin): Use new CALL_EXPR
24747         accessors.
24748
24749         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire
24750         CALL_EXPR instead of arglist.  Use new CALL_EXPR accessors.
24751         Fix callers.
24752         (bfin_expand_unop_builtin): Likewise.
24753         (bfin_expand_builtin): Use new CALL_EXPR accessors.
24754
24755 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
24756             Brooks Moses  <brooks.moses@codesourcery.com>
24757             Lee Millward  <lee.millward@codesourcery.com>
24758
24759         * c-semantics.c (build_stmt): Add internal diagnostic check.
24760
24761         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
24762         accessors.  Print arguments explicitly instead of as a list.
24763
24764         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
24765
24766         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
24767         (c_finish_omp_flish): Likewise.
24768
24769         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
24770         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
24771         instead of TREE_CODE_LENGTH.
24772         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
24773         (c_warn_unused_result): Likewise.
24774
24775 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24776
24777         PR c/26494
24778         * doc/invoke.texi (Warning Options): Remove
24779         -Werror-implicit-function-declaration.
24780         (Wimplicit-function-declaration): Update description.
24781         * opts.c (common_handle_option): Move handling of -Werror=* to...
24782         (enable_warning_as_error): ...here.
24783         * opts.h (enable_warning_as_error): Declare.
24784         * c-decl.c (implicit_decl_warning): Unless
24785         -Wno-implicit-function-declaration is given, emit a pedwarn if
24786         -std=c99 or emit a warning if -Wimplicit-function-declaration.
24787         * c.opt (Wimplicit-function-declaration): Replace
24788         mesg_implicit_function_declaration with
24789         warn_implicit_function_declaration.
24790         * c-opts.c (c_common_handle_option):
24791         -Werror-implicit-function-declaration is exactly equal as
24792         -Werror=implicit-function-declaration.
24793         (set_Wimplicit): Replace mesg_implicit_function_declaration with
24794         warn_implicit_function_declaration.
24795         (c_common_post_options): -Wimplict-function-declaration is enabled
24796         by default by -std=c99, otherwise is disabled by default.
24797         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
24798
24799 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
24800
24801         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
24802         DECL on the rhs to a DECL on the lhs for debug info purposes if the
24803         former is ignored but not the latter.
24804
24805 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
24806
24807         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
24808         is made and the reference doesn't use the alias set of its type,
24809         do not create the temporary using that type.
24810
24811 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
24812
24813         * jump.c: Remove prototypes for delete_computation and
24814         delete_prior_computation.
24815
24816 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
24817
24818         * jump.c (get_label_after): Delete.
24819         (get_label_before, delete_computation, delete_jump,
24820         delete_prior_computation, follow_jumps): Move...
24821         * reorg.c (delete_computation, delete_prior_computation): ... here...
24822         (get_label_before, delete_jump): ... making these static ...
24823         (follow_jumps): ... and simplifying this since it only runs after
24824         reload.
24825         * rtl.h (get_label_after, get_label_before, delete_jump,
24826         follow_jumps): Delete prototypes.
24827
24828 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
24829
24830         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
24831
24832 2007-02-15  Nick Clifton  <nickc@redhat.com>
24833
24834         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
24835         order to prevent it from being munged by the target.
24836
24837 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
24838
24839         * config/i386/i386.md: Remove misleading comment.
24840
24841 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
24842
24843         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
24844         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
24845         invalid patterns.
24846
24847 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
24848
24849         * tree-sra.c (instantiate_missing_elements): Canonicalize
24850         bit-field types.
24851         (sra_build_assignment): New.
24852         (generate_copy_inout, generate_element_copy,
24853         generate_element_zero, generate_one_element_init): Use it.
24854
24855 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
24856
24857         * tree-sra.c (instantiate_missing_elements): Canonicalize
24858         bit-field types.
24859         (sra_build_assignment): New.
24860         (generate_copy_inout, generate_element_copy,
24861         generate_element_zero, generate_one_element_init): Use it.
24862
24863 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
24864
24865         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
24866         limbo die nodes.
24867
24868 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
24869
24870         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
24871         types as aggregates not scalars.
24872         * function.c (assign_stack_temp_for_type): Likewise.
24873
24874 2007-02-14  Roger Sayle  <roger@eyesopen.com>
24875             Zdenek Dvorak  <dvorakz@suse.cz>
24876
24877         * tree-dump.c (dump_switch_p_1): Require exact match of the option
24878         name.
24879
24880 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
24881
24882         * passes.c (next_pass_1): Clear the next field of the copied
24883         pass structure.
24884
24885 2007-02-14  Richard Henderson  <rth@redhat.com>
24886
24887         * tree-sra.c (early_sra): New.
24888         (decl_can_be_decomposed_p): Deny va_list if early_sra.
24889         (tree_sra_early, pass_sra_early): New.
24890         * tree-pass.h (pass_sra_early): Declare.
24891         * passes.c (init_optimization_passes): Use it.
24892
24893 2007-02-14  Richard Guenther  <rguenther@suse.de>
24894
24895         * flags.h (issue_strict_overflow_warning): Convert to a macro.
24896
24897 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
24898
24899          PR tree-optimization/30771
24900         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
24901         also phi nodes.
24902         (vect_analyze_operations): Induction phis can now be marked as
24903         used_in_loop.
24904         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
24905         Update documentation accordingly.
24906
24907 2007-02-14  Nick Clifton  <nickc@redhat.com>
24908
24909         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
24910         most 3 arguments are supported.
24911         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
24912
24913 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
24914
24915         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
24916         Ensure dst->current is valid.
24917
24918 2007-02-13  Paul Brook  <paul@codesourcery.com>
24919
24920         * config.gcc: Add arm*-*-uclinux-*eabi.
24921         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
24922         (SUBTARGET_EXTRA_LINK_SPEC): Define.
24923         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
24924         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
24925         (LINK_SPEC): Define.
24926         (LIB_SPEC): Define.
24927         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
24928         register.
24929         * config/arm/uclinux-eabi.h: New file.
24930         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
24931         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
24932         based targets.
24933
24934 2007-02-13  Ian Lance Taylor  <iant@google.com>
24935
24936         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
24937         * flags.h (warn_strict_overflow): Declare.
24938         (enum warn_strict_overflow_code): Define.
24939         (issue_strict_overflow_warning): New static inline function.
24940         * opts.c (warn_strict_overflow): New variable.
24941         (common_handle_option): Handle OPT_Wstrict_overflow and
24942         OPT_Wstrict_overflow_.
24943         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
24944         OPT_Wall.
24945         * fold-const.c: Include intl.h.
24946         (fold_deferring_overflow_warnings): New static variable.
24947         (fold_deferred_overflow_warning): New static variable.
24948         (fold_deferred_overflow_code): New static variable.
24949         (fold_defer_overflow_warnings): New function.
24950         (fold_undefer_overflow_warnings): New function.
24951         (fold_undefer_and_ignore_overflow_warnings): New function.
24952         (fold_deferring_overflow_warnings_p): New function.
24953         (fold_overflow_warning): New static function.
24954         (make_range): Add strict_overflow_p parameter.  Change all
24955         callers.
24956         (extract_muldiv, extract_muldiv_1): Likewise.
24957         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
24958         tree_expr_nonnegative_p.
24959         (fold_negate_expr): Call fold_overflow_warning.
24960         (fold_range_test): Likewise.
24961         (fold_comparison): Likewise.
24962         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
24963         instead of tree_expr_nonnegative_p.
24964         (tree_expr_nonnegative_warnv_p): Rename from
24965         tree_expr_nonnegative_p, add strict_overflow_p parameter.
24966         (tree_expr_nonnegative_p): New function.
24967         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
24968         strict_overflow_p parameter.
24969         (tree_expr_nonzero_p): New function.
24970         * passes.c (verify_interpass_invariants): New static function.
24971         (execute_one_pass): Call it.
24972         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
24973         warnings.
24974         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
24975         (estimate_numbers_of_iterations): Likewise.
24976         (scev_probably_wraps_p): Likewise.
24977         * tree-ssa-ccp.c: Include "toplev.h".
24978         (evaluate_stmt): Defer fold overflow warnings until we know we are
24979         going to optimize.
24980         (struct fold_stmt_r_data): Add stmt field.
24981         (fold_stmt_r): Defer fold overflow warnings until we know we
24982         optimized.
24983         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
24984         (fold_stmt_inplace): Likewise.
24985         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
24986         (cleanup_control_expr_graph): Defer fold overflow warnings until
24987         we know we are going to optimize.
24988         * tree-cfg.c (fold_cond_expr_cond): Likewise.
24989         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
24990         Likewise.
24991         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
24992         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
24993         * tree-ssa-loop-manip.c (create_iv): Likewise.
24994         * c-typeck.c (build_conditional_expr): Likewise.
24995         (build_binary_op): Likewise.
24996         * tree-vrp.c (vrp_expr_computes_nonzero): Call
24997         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
24998         (extract_range_from_unary_expr): Likewise.
24999         * simplify-rtx.c (simplify_const_relational_operation): Warn when
25000         assuming that signed overflow does not occur.
25001         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
25002         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
25003         (fold_defer_overflow_warnings): Declare.
25004         (fold_undefer_overflow_warnings): Declare.
25005         (fold_undefer_and_ignore_overflow_warnings): Declare.
25006         (fold_deferring_overflow_warnings_p): Declare.
25007         (tree_expr_nonzero_warnv_p): Declare.
25008         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
25009         of warning options.
25010         (Warning Options): Document -Wstrict-overflow.
25011         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
25012         (tree-ssa-ccp.o): Likewise.
25013         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
25014         (fold-const.o): Depend on intl.h.
25015
25016 2007-02-13  Ian Lance Taylor  <iant@google.com>
25017
25018         PR middle-end/30751
25019         * lower-subreg.c (resolve_simple_move): Decompose subregs in
25020         addresses.
25021
25022 2007-02-13  Stuart Hastings  <stuart@apple.com>
25023
25024         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
25025
25026 2007-02-13  Richard Henderson  <rth@redhat.com>
25027
25028         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
25029         handled_component_p before looking for the indirect_ref.
25030
25031 2007-02-13  Richard Henderson  <rth@redhat.com>
25032
25033         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
25034         remove flags clobber.
25035         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
25036         (bswaphi_lowpart): New.
25037         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
25038         remove TARGET_BSWAP test.  Delete expander of the same name.
25039
25040         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
25041         (expand_unop): Use them.
25042
25043 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
25044
25045         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
25046         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
25047         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
25048         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
25049         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
25050         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
25051         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
25052         assembler dialect choice from asm templates.
25053
25054 2007-02-12  Richard Henderson  <rth@redhat.com>
25055
25056         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
25057         (fixuns_trunc<SSEMODEF>si2): Use it.
25058         * config/i386/sse.md (vec_setv4sf_0): Export.
25059         * config/i386/i386.c (ix86_build_const_vector): Export.
25060         (ix86_split_convert_uns_si_sse): Rename from
25061         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
25062         * config/i386/i386-protos.h: Update.
25063
25064 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25065
25066         PR c/29521
25067         * c-typeck.c (c_finish_return): Improve warning message.
25068
25069 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25070
25071         * alias.c (find_symbolic_term): Delete unused function.
25072
25073 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
25074
25075         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
25076         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
25077         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
25078
25079 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
25080
25081         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
25082         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
25083         the function, temporarily point the debug interface to the null one.
25084
25085 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
25086
25087         * dwarf2out.c (round_up_to_align): New static function.
25088         (field_byte_offset): Use it to round the offset.
25089
25090 2007-02-12  Richard Henderson  <rth@redhat.com>
25091
25092         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
25093         (inswl_const): Export.
25094
25095 2007-02-12  Richard Henderson  <rth@redhat.com>
25096
25097         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
25098         result mode of the libcall, convert back to outmode.
25099
25100 2007-02-12  Roger Sayle  <roger@eyesopen.com>
25101
25102         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
25103         (bswapdi2): New define_expand to implement 32-bit implementation.
25104
25105 2007-02-12  Nick Clifton  <nickc@redhat.com>
25106
25107         * doc/invoke.texi (Overall Options): Document --help=.
25108         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
25109         (cc1_options): Pass --help= on to cc1.
25110         (display_help): Add description of --help=.
25111         (process_command): Add code to handle --help=.  Allow translated
25112         --help and --target-help switches to be passed on to compiler
25113         sub-process.
25114         (main): Remove unused if statement.
25115         * opts.c (columns): Remove.
25116         (LEFT_COLUMN): Define.
25117         (wrap_help): Add columns argument.
25118         (print_filtered_help): Change parameters to be an include bitmask,
25119         an exclude bitmask, an any bitmask and the column width.  Move the
25120         code to display the params list here.  Add code to display the
25121         status of options rather than their descriptions if the quiet flag
25122         is not active.
25123         (print_specific_help): Change parameters to be an include bitmask,
25124         an exclude bitmask and an any bitmask.  Move code to look up the
25125         column width here.  Decide upon the title for an options listing.
25126         (common_handle_options): Add code to handle --help=.  Adapt code
25127         for --help and --target-help to use the revised form of the
25128         print_specific_help function.
25129         (print_help): Delete.
25130         (print_param_help): Delete.
25131         (print_switch): Delete.
25132         * opts.h (cl_lang_count): Add prototype.
25133         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
25134         CL_MAX_OPTION_CLASS): New defines.
25135         * optc-gen.awk: Add construction of cl_lang_count.
25136         * c.opt: Add Warning attribute to warning options and Optimization
25137         attribute to optimization options.
25138         * common.opt: Likewise.
25139         Add --help=.
25140         Add -fhelp and -ftarget-help as aliases for the transformed --help
25141         and --target-help options.
25142         * opt-functions.awk: Add code to handle Warning and Optimization
25143         attributes.
25144
25145 2007-02-12  Richard Henderson  <rth@redhat.com>
25146
25147         * config/alpha/constraints.md: New file.
25148         * config/alpha/alpha.c: Include tm-constrs.h.
25149         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
25150         alpha_extra_constraint): Remove.
25151         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
25152         * config/alpha/alpha-protos.h: Update.
25153         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
25154         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
25155         (EXTRA_CONSTRAINT): Remove.
25156         * config/alpha/alpha.md: Include constraints.md.
25157         (adddi splitter): Use satisfies_constraint_*.
25158         * config/alpha/predicates.md (add_operand): Likewise.
25159         (sext_add_operand, addition_operation): Likewise.
25160
25161 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
25162
25163         PR tree-optimization/29145
25164         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
25165         in our handling of restrict qualified pointers.
25166
25167 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25168
25169         PR middle-end/7651
25170         * doc/invoke.texi (Wunused-value): Update description.
25171         (Wextra): Delete item.
25172         * opts.c (set_Wextra): Don't use the value of Wextra to set the
25173         value of Wunused-value.
25174         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
25175         (c_finish_stmt_expr): Don't check extra_warnings.
25176         (emit_side_effect_warnings): The caller is responsible to check
25177         warn_unused_value.
25178
25179 2007-02-11  Roger Sayle  <roger@eyesopen.com>
25180             Matt Thomas  <matt@3am-software.com>
25181
25182         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
25183
25184 2007-02-11  Roger Sayle  <roger@eyesopen.com>
25185
25186         * simplify-rtx.c (simplify_relational_operation_1): Optimize
25187         comparisons of POPCOUNT against zero.
25188         (simplify_const_relational_operation): Likewise.
25189
25190 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25191
25192         * doc/invoke.texi (Wextra): Delete outdated paragraph.
25193
25194 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25195
25196         * dwarf2out.c (root_type): Delete unused function.
25197
25198 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25199
25200         * genattrtab.c (contained_in_p): Delete unused function.
25201         (write_expr_attr_cache): Likewise.
25202
25203 2007-02-11  Jan Hubicka  <jh@suse.cz>
25204
25205         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
25206         previous patch.
25207
25208 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
25209
25210         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
25211         to add the REG_EQ* note.
25212         * see.c (see_merge_one_use_extension): Likewise.
25213         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
25214         turn REG_EQUAL notes into REG_EQUIV notes if the target
25215         register may have more than one set.
25216         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
25217         * gcse.c (try_replace_reg): Likewise.
25218         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
25219         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
25220         more than one REG_EQUIV note.
25221         * reload1.c (gen_reload): Use set_unique_reg_note.
25222
25223 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
25224
25225         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
25226         (ix86_builtin_conversion): New function.
25227
25228 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
25229
25230         PR target/29487
25231         * tree.h (DECL_REPLACEABLE_P): New macro.
25232         * except.c (set_nothrow_function_flags): Likewise.
25233
25234 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
25235             Ira Rosen  <irar@il.ibm.com>
25236             Dorit Nuzman  <dorit@il.ibm.com>
25237
25238         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
25239         * targhooks.c (default_builtin_vectorized_conversion): New.
25240         * targhooks.h (default_builtin_vectorized_function): New declaration.
25241         * target.h (struct vectorize): Add builtin_conversion field.
25242         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
25243         stmt_vec_info_type value.
25244         (vectorizable_conversion): New declaration.
25245         * tree-vect-analyze.c (vect_analyze_operations): Add
25246         vectorizable_conversion call.
25247         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
25248         * tree-vect-transform.c (vectorizable_conversion): New function.
25249         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
25250         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
25251         mode.
25252         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
25253         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
25254         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
25255         or ALTIVEC_BUILTIN_VCFSX.
25256
25257 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25258
25259         PR target/30634
25260         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
25261         CONST_DOUBLE and operand 0 is a hard register.
25262         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
25263         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
25264         is a hard floating-point register.
25265
25266 2007-02-10  Richard Henderson  <rth@redhat.com>
25267             Jakub Jelinek  <jakub@redhat.com>
25268             Alexandre Oliva  <aoliva@redhat.com>
25269
25270         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
25271         * builtin-types.def (BT_WORD): Make unsigned.
25272         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
25273         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
25274         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
25275         * c-decl.c (grokdeclarator): Don't error if !have_tls.
25276         * c-parser.c (c_parser_omp_threadprivate): Likewise.
25277         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
25278         emulated tls.
25279         * expr.c (emutls_var_address): New.
25280         (expand_expr_real_1): Expand emulated tls.
25281         (expand_expr_addr_expr_1): Likewise.
25282         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
25283         * output.h (emutls_finish): Declare.
25284         * toplev.c (compile_file): Call it.
25285         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
25286         address before wrapping in CONST.
25287         * varasm.c (emutls_htab, emutls_object_type): New.
25288         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
25289         (get_emutls_object_name, get_emutls_object_type): New.
25290         (get_emutls_init_templ_addr, emutls_decl): New.
25291         (emutls_common_1, emutls_finish): New.
25292         (assemble_variable): When emulating tls, swap decls; generate
25293         constructor for the emutls objects.
25294         (do_assemble_alias): When emulating tls, swap decl and target name.
25295         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
25296         for emulated tls.
25297         * varpool.c (decide_is_variable_needed): Look at force_output.
25298         Recurse for emulated tls.
25299         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
25300         with decide_is_variable_needed.
25301         * emutls.c: New file.
25302         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
25303         tls_object for real tls.
25304
25305 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
25306
25307         PR rtl-optimization/29599
25308         * reload1.c (eliminate_regs_in_insn): Take the destination
25309         mode into account when computing the offset.
25310
25311 2007-02-09  Stuart Hastings  <stuart@apple.com>
25312             Richard Henderson  <rth@redhat.com>
25313
25314         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
25315         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
25316         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
25317         fixuns_truncdfhi2): New.
25318         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
25319         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
25320         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
25321         (floatunssidf2): Allow nonimmediate source.
25322         * config/i386/sse.md (movdi_to_sse): New.
25323         (vec_concatv2di): Drop '*'.
25324         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
25325         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
25326         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
25327         New.
25328         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
25329         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
25330         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
25331         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
25332         (ix86_build_signbit_mask): Fix decl of v, refactor to call
25333         ix86_build_const_vector.
25334         (x86_emit_floatuns): Rewrite.
25335
25336 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25337
25338         * genautomata.c (longest_path_length): Delete unused function.
25339         (struct state): Delete unused longest_path_length.
25340         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
25341         (get_free_state): Delete unused.
25342
25343 2007-02-09  Jan Hubicka  <jh@suse.cz>
25344
25345         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
25346         * doc/invoke.texi (inline-unit-growth): Update default value.
25347
25348         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
25349         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
25350         (rebuild_cgraph_edges): Likewise.
25351         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
25352         (dump_cgraph_node): Dump frequencies.
25353         (cgraph_clone_edge): Add frequency scales.
25354         (cgraph_clone_node): Add freuqnecy.
25355         * cgraph.h (cgraph_edge): Add freuqnecy argument.
25356         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
25357         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
25358         * tree-pass.h (TODO_rebuild_frequencies): New constant.
25359         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
25360         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
25361         (save_inline_function_body): Likewise.
25362         * ipa-inline.c: inluce rtl.h
25363         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
25364         (cgraph_edge_badness): Use frequencies.
25365         (cgraph_decide_recursive_inlining): Update clonning.
25366         (cgraph_decide_inlining_of_small_function): Dump frequency.
25367         * predict.c (estimate_bb_frequencies): Export.
25368         * predict.h (estimate_bb_frequencies): Declare.
25369         * tree-inline.c (copy_bb): Watch overflows.
25370         (expand_call_inline): Update call of cgraph_create_edge.
25371         (optimize_inline_calls): Use TODO flags to update frequnecies.
25372         * passes.h: Include predict.h
25373         (init_optimization_passes): Move profile ahead.
25374         (execute_function_todo): Handle TODO_rebuild_frequencies.
25375
25376 2007-02-09  Roger Sayle  <roger@eyesopen.com>
25377
25378         * config/alpha/alpha.c (emit_insxl): Force the first operand of
25379         the insbl or inswl pattern into a register.
25380
25381 2007-02-09  Roger Sayle  <roger@eyesopen.com>
25382
25383         * config/ia64/ia64.md (bswapdi2): New define_insn.
25384
25385 2007-02-09  Richard Henderson  <rth@redhat.com>
25386
25387         * config/i386/constraints.md (Ym): New constraint.
25388         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
25389         (movdi_1_rex64): Split sse and xmm general register moves from
25390         memory move alternatives.  Use conditional register constraints.
25391         (movsf_1, movdf_integer): Likewise.
25392         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
25393         (movdf_integer_rex64): New.
25394         (pushsf_rex64): Fix output constraints.
25395         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
25396         (sse2_stored): Likewise.
25397         (sse2_storeq_rex64): New.
25398         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
25399         amd and not generic.
25400         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
25401         for optimize_size.  Remove SF/DFmode hack.
25402
25403 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
25404
25405         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
25406         (bit_SSE4a): New.
25407
25408 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
25409             Richard Sandiford  <richard@codesourcery.com>
25410
25411         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
25412         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
25413         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
25414         m68k/t-mlib to tmake_file.
25415         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
25416         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
25417         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
25418         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
25419         variable is not empty, add t-$m68k_arch_family to tmake_file.
25420         Add t-mlibs to tmake_file.
25421         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
25422         * config/m68k/t-cf: New file.
25423         * config/m68k/t-m68k: Likewise.
25424         * config/m68k/t-mlibs: Likewise.
25425         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
25426         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
25427         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
25428         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
25429         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
25430         Delete.
25431         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
25432         (INSTALL_LIBGCC): Delete.
25433         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
25434         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
25435         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
25436         (M68K_MLIB_CPU): Define.
25437         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
25438         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
25439         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
25440
25441 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
25442             Richard Guenther  <rguenther@suse.de>
25443
25444         PR middle-end/23361
25445         * fold-const.c (fold_comparison): Handle obfuscated comparisons
25446         against INT_MIN/INT_MAX.
25447         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
25448         file if a loop is removed.
25449
25450 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
25451
25452         * calls.c (store_one_arg): Pass correct alignment to
25453         emit_push_insn for non-BLKmode values.
25454         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
25455         unaligned stack slot via a suitably aligned slot.
25456
25457 2007-02-08  DJ Delorie  <dj@redhat.com>
25458
25459         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
25460         warnings.
25461         (legal_subregs): Use unsigned char, make const.
25462         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
25463
25464 2007-02-08  Paul Brook  <paul@codesourcery.com>
25465
25466         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
25467         special interworking needed.
25468
25469 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
25470
25471         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
25472         conditional to __SSE2__.
25473         (Entries below should have been added to first ChangeLog
25474         entry for amdfam10 dated 2007-02-05)
25475         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
25476         defined.
25477         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
25478         defined.
25479         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
25480         defined.
25481
25482 2007-02-08  DJ Delorie  <dj@redhat.com>
25483
25484         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
25485         * config/m32c/m32c.c (legal_subregs): New.
25486         (m32c_illegal_subreg_p): New.
25487         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
25488         unsupported subregs of hard regs.
25489
25490 2007-02-08  Jan Hubicka  <jh@suse.cz>
25491
25492         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
25493         the same one; always update histograms.
25494
25495 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
25496
25497         * passes.c (init_optimization_passes): Tidy comment.
25498
25499 2007-02-08  Roger Sayle  <roger@eyesopen.com>
25500
25501         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
25502         strip zero_extend, bswap and rotates from POCOUNT's argument.
25503         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
25504         zero_extend and rotates from PARITY's argument.
25505         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
25506         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
25507         of an integer constant at compile-time.
25508
25509 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
25510
25511         PR 30562
25512         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
25513         Update all users.
25514         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
25515         users.
25516         (init_alias_info):
25517         * tree-ssa-live.c (remove_unused_locals): Do not remove
25518         TREE_ADDRESSABLE variables.
25519         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
25520         * tree-ssa-operands.c (add_virtual_operand): Remove argument
25521         FOR_CLOBBER.  Update all users.
25522         If VAR has an associated alias set, add a virtual operand for
25523         it if no alias is found to conflict with the memory reference.
25524
25525 2007-02-07  Jan Hubicka  <jh@suse.cz>
25526             Robert Kidd <rkidd@crhc.uiuc.edu>
25527
25528         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
25529
25530 2007-02-07  Ian Lance Taylor  <iant@google.com>
25531
25532         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
25533
25534 2007-02-07  Roger Sayle  <roger@eyesopen.com>
25535
25536         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
25537         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
25538         tablejumpdi, movsi_to_cr_one): Remove constraints from
25539         define_expand's match_operands.
25540
25541 2007-02-07  Roger Sayle  <roger@eyesopen.com>
25542
25543         * global.c (compute_regsets): Move declatation of "i" inside of
25544         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
25545
25546 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
25547
25548         PR c++/30703
25549         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
25550         of INDIRECT_REF <RESULT_DECL>.
25551
25552         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
25553
25554 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
25555             Kaz Kojima  <kkojima@gcc.gnu.org>
25556
25557         PR target/29746
25558         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
25559         properly.
25560         (sh_initialize_trampoline): Add parentheses to avoid a warning.
25561
25562 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
25563
25564         * doc/loop.texi: Document possibility not to perform disambiguation
25565         of loops with multiple latches.
25566         * cfgloopmanip.c (alp_enum_p): Removed.
25567         (add_loop): Handle subloops.  Use get_loop_body_with_size.
25568         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
25569         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
25570         the new forwarder block.
25571         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
25572         Handle the case latch is NULL.
25573         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg
25574         modifications when marking loop exits.
25575         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
25576         be modified.
25577         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
25578         disambiguate_loops_with_multiple_latches.
25579         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
25580         before fix_loop_structure.
25581         * cfgloop.c: Include pointer-set.h and output.h.
25582         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
25583         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
25584         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
25585         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
25586         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
25587         disambiguate_multiple_latches, get_loop_body_with_size,
25588         disambiguate_loops_with_multiple_latches): New functions.
25589         (flow_loop_dump): Dump multiple latch edges.
25590         (flow_loop_nodes_find): Handle loops with multiple latches.
25591         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
25592         (glb_enum_p): Modified.
25593         (get_loop_body): Use get_loop_body_with_size.
25594         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
25595         (AVOID_CFG_MODIFICATIONS): New constant.
25596         (disambiguate_loops_with_multiple_latches, add_loop,
25597         get_loop_body_with_size): Declare.
25598         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
25599
25600 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
25601
25602         PR inline-asm/28686
25603         * global.c (compute_regsets): New function.
25604         (global_alloc): Refactored ELIMINABLE_REGSET
25605         and NO_GLOBAL_ALLOC_REGS computation out.
25606         (rest_of_handle_global_alloc): Call compute_regsets()
25607         for non-optimizing case.
25608
25609 2007-02-06  Richard Henderson  <rth@redhat.com>
25610
25611         * config/i386/constraints.md (Y2): Rename from Y.
25612         (Yi): New constraint.
25613         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
25614         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
25615         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
25616         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
25617         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
25618         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
25619         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
25620         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
25621         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
25622         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
25623         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
25624         vec_extractv2si_1): Change Y constraints to Y2.
25625         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
25626         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
25627         Change Y constraints to Y2.
25628         (sse2_loadld): Change Y constraints to x.
25629
25630 2007-02-06  Roger Sayle  <roger@eyesopen.com>
25631
25632         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
25633         (parity<mode>2): New define_expand using rs6000_emit_parity.
25634         * config/rs6000/rs6000.c (rs6000_emit_popcount,
25635         rs6000_emit_parity): New functions.
25636         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
25637         rs6000_emit_parity): Prototype here.
25638
25639 2007-02-06  Ian Lance Taylor  <iant@google.com>
25640
25641         * lower-subreg.c (simple_move_operand): Reject CONST.
25642         (resolve_clobber): Call validate_change rather than directly
25643         assigning to XEXP (pat, 0).
25644
25645 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
25646
25647         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
25648         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
25649         (tree-cfg.o): Remove hashtab.h dependency.
25650
25651         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
25652         (struct ivopts_data): Change niters to pointer_map_t.
25653         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
25654         (niter_for_exit): Create pointer_map on demand.  Change for
25655         pointer_map API.
25656         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
25657         (free_loop_data): Destroy data->niters if created and reset field.
25658         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
25659         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
25660
25661         * tree-ssa-reassoc.c: Include pointer-set.h.
25662         (bb_rank): Change to long *.
25663         (operand_rank): Change to pointer_map_t.
25664         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
25665         (insert_operand_rank): Accept long.
25666         (operand_entry_hash, operand_entry_eq): Remove.
25667         (get_rank): Return long.  Adjust for changes above.
25668         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
25669         and operand_rank.
25670         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
25671
25672         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
25673         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
25674         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
25675         is not NULL.
25676         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
25677         directly since it cannot be NULL.
25678         (get_vi_for_tree): Rewrite for pointer_map API.
25679         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
25680         (init_alias_vars): Create vi_for_tree as pointer_map.
25681         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
25682
25683         * tree-cfg.c: Don't include hashtab.h.
25684         (edge_to_cases): Declare as pointer_map.
25685         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
25686         Delete.
25687         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
25688         (start_recording_case_labels): Create edge_to_cases as pointer_map.
25689         (end_recoding_case_labels): Cleanup edge_to_cases manually before
25690         destroying it.
25691         (record_switch_edge): Delete.
25692         (get_cases_for_edge): Adjust for pointer_map API, inline
25693         record_switch_edge (rewritten for new API), remove goto.
25694
25695 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
25696
25697         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
25698         * tree-nested.c: Include pointer-set.h.
25699         (var_map_elt, var_map_eq, var_map_hash): Delete.
25700         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
25701         to pointer_map_t's.
25702         (nesting_info_bitmap_obstack): New.
25703         (lookup_field_for_decl): Adjust for pointer_map API.
25704         (lookup_tramp_for_decl): Adjust for pointer_map API.
25705         (get_nonlocal_debug_decl): Adjust for pointer_map API.
25706         (get_local_debug_decl): Adjust for pointer_map API.
25707         (convert_nl_goto_reference): Adjust for pointer_map API.
25708         (convert_nl_goto_receiver): Adjust for pointer_map API.
25709         (create_nesting_tree): Create outside GGC space.  Create bitmap on
25710         the new obstack.  Create field_map and var_map as pointer_maps.
25711         (free_nesting_tree): Adjust for changes to create_nesting_tree.
25712         (root): Delete.
25713         (lower_nested_functions): Move root here, no need to NULL it.
25714         Initialize and release the obstack.
25715
25716 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
25717
25718         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
25719         Remove prototypes and make them non-static.
25720         (struct tree_int_map): Remove.
25721         * tree.h (struct tree_int_map): Move here, turning TO into an
25722         unsigned int.
25723         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
25724
25725         * tree.h (TREE_COMPLEXITY): Remove.
25726         (struct tree_exp): Remove complexity field.
25727         * tree.c (build1_stat): Don't set it.
25728
25729 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
25730             Victor Kaplansky  <victork@il.ibm.com>
25731
25732         * tree-vectorizer.c (vect_is_simple_use): Support induction.
25733         (vect_is_simple_reduction): Support reduction with induction as
25734         one of the operands.
25735         (vect_is_simple_iv_evolution): Fix formatting.
25736         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
25737         formatting.  Don't mark induction phis for vectorization.
25738         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
25739         * tree-vect-transform.c (get_initial_def_for_induction): New function.
25740         (vect_get_vec_def_for_operand): Support induction.
25741         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
25742         induction case.
25743         (vectorizable_reduction): Support reduction with induction as one of
25744         the operands.
25745         (vectorizable_type_demotion): Use def-type of stmt argument rather
25746         than dummy def-type.
25747
25748         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
25749         flag_tree_scev_cprop.
25750         * common.opt (tree-scev-cprop): New flag.
25751
25752         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
25753         call to vect_get_new_vect_var.
25754
25755 2007-02-06  Ira Rosen  <irar@il.ibm.com>
25756
25757         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
25758         vectype is not NULL.
25759         (vect_pattern_recog_1): Likewise.
25760
25761 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25762
25763         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
25764         (fold_negate_expr): Likewise.
25765
25766 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
25767
25768         PR debug/30189
25769         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
25770         even if cv-qualification is the same.
25771
25772 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
25773
25774         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
25775         __enable_execute_stack on completion.
25776
25777 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25778
25779         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
25780         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
25781         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
25782         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
25783         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
25784         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
25785         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
25786         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
25787
25788 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25789
25790         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
25791         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
25792         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
25793         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
25794         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
25795         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
25796         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
25797         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
25798         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
25799         umuldi3_highpart_rex64, umulsi3_highpart_insn,
25800         umulsi3_highpart_zext, smuldi3_highpart_rex64,
25801         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
25802         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
25803         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
25804         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
25805         sqrtextenddfxf2_i387): Added amdfam10_decode.
25806
25807         * config/i386/athlon.md (athlon_idirect_amdfam10,
25808         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
25809         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
25810         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
25811         athlon_ivector_store_amdfam10): New define_insn_reservation.
25812         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
25813         amdfam10.
25814
25815 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25816
25817         * config/i386/athlon.md (athlon_call_amdfam10,
25818         athlon_pop_amdfam10, athlon_lea_amdfam10): New
25819         define_insn_reservation.
25820         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
25821         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
25822         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
25823
25824 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25825
25826         * config/i386/athlon.md (athlon_sseld_amdfam10,
25827         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
25828         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
25829
25830 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25831
25832         * config/i386/athlon.md (athlon_sseins_amdfam10): New
25833         define_insn_reservation.
25834         * config/i386/i386.md (sseins): Added sseins to define_attr type
25835         and define_attr unit.
25836         * config/i386/sse.md: Set type attribute to sseins for insertq
25837         and insertqi.
25838
25839 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25840
25841         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
25842         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
25843         ssecomi_load_amdfam10, ssecomi_amdfam10,
25844         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
25845         define_insn_reservation.
25846         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
25847
25848 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25849
25850         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
25851         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
25852         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
25853         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
25854         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
25855         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
25856         define_insn_reservation.
25857
25858         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
25859         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
25860         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
25861         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
25862         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
25863
25864 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25865
25866         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
25867         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
25868         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
25869         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
25870         athlon_ssemul_load_k8): Added amdfam10.
25871
25872 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25873
25874         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
25875         (x86_sse_unaligned_move_optimal): New variable.
25876
25877         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
25878         m_AMDFAM10.
25879         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
25880         for unaligned vector SSE double/single precision loads for AMDFAM10.
25881
25882 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25883
25884         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
25885         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
25886         Define TARGET_CPU_DEFAULT_amdfam10.
25887         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
25888         (processor_type): Add PROCESSOR_AMDFAM10.
25889
25890         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
25891         processor_type in config/i386/i386.h.
25892         Enable imul peepholes for TARGET_AMDFAM10.
25893
25894         * config.gcc: Add support for --with-cpu option for amdfam10.
25895
25896         * config/i386/i386.c (amdfam10_cost): New variable.
25897         (m_AMDFAM10): New macro.
25898         (m_ATHLON_K8_AMDFAM10): New macro.
25899         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
25900         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
25901         x86_promote_QImode, x86_integer_DFmode_moves,
25902         x86_partial_reg_dependency, x86_memory_mismatch_stall,
25903         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
25904         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
25905         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
25906         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
25907         Enable/disable for amdfam10.
25908         (override_options): Add amdfam10_cost to processor_target_table.
25909         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
25910         processor_alias_table.
25911         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
25912         (ix86_adjust_cost): Add code for amdfam10.
25913
25914 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25915
25916         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
25917         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
25918         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
25919         * config/i386/i386.h: Add builtin definition for SSE4A.
25920         * config/i386/i386.md: Add support for ABM instructions
25921         (popcnt and lzcnt).
25922         * config/i386/sse.md: Add support for SSE4A instructions
25923         (movntss, movntsd, extrq, insertq).
25924         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
25925         Add -march=amdfam10 flag.
25926         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
25927         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
25928         and amdfam10.
25929         * doc/extend.texi: Add documentation for SSE4A builtins.
25930
25931 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
25932
25933         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
25934
25935 2007-02-05  Richard Guenther  <rguenther@suse.de>
25936
25937         * tree-vectorizer.h (vectorizable_function): Add argument type
25938         argument, change return type.
25939         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
25940         * tree-vect-transform.c (vectorizable_function): Handle extra
25941         argument, return vectorized function decl.
25942         (build_vectorized_function_call): Remove.
25943         (vectorizable_call): Handle calls with result and argument types
25944         differing.  Handle loop vectorization factor correctly.
25945         * targhooks.c (default_builtin_vectorized_function): Adjust for
25946         extra argument.
25947         * targhooks.h (default_builtin_vectorized_function): Likewise.
25948         * target.h (builtin_vectorized_function): Add argument type
25949         argument.
25950         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
25951         extra argument, allow vectorizing of lrintf.
25952         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
25953         documentation of target hook.
25954
25955 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
25956
25957         PR target/30665
25958         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
25959         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
25960         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
25961
25962 2007-02-05  Roger Sayle  <roger@eyesopen.com>
25963
25964         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
25965         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
25966         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
25967         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
25968         before canonicalizing sincos to cexpi.
25969         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
25970
25971 2007-02-05  Roger Sayle  <roger@eyesopen.com>
25972
25973         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
25974         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
25975         (alpha_init_builtins): Use alpha_add_builtins to process tables.
25976
25977 2007-02-05  Roger Sayle  <roger@eyesopen.com>
25978
25979         * mips-tfile.c (initialize_init_file): Correct endianness test.
25980
25981 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
25982
25983         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
25984         the 'y' constraint.
25985
25986 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
25987
25988         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
25989         saves in a PARALLEL before the register assignments.
25990
25991 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
25992
25993         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
25994         DWARF_FRAME_RETURN_COLUMN to be a general register.
25995         * dwarf2out.c (init_return_column_size): New function, split from...
25996         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
25997         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
25998         to be nongeneral registers.
25999         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
26000         integer registers.
26001         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
26002         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
26003
26004 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
26005
26006         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
26007
26008 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
26009
26010         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
26011         (remove_path): Use can_remove_branch_p and remove_branch instead
26012         of loop_delete_branch_edge.
26013         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
26014         (tree_transform_and_unroll_loop): Remove dead branches immediately.
26015         Update profile using scale_dominated_blocks_in_loop.
26016         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
26017         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
26018         (can_remove_branch_p, remove_branch): Declare.
26019         * tree-cfg.c (tree_can_remove_branch_p): New function.
26020         (tree_cfg_hooks): Add tree_can_remove_branch_p.
26021         * cfgrtl.c (rtl_can_remove_branch_p): New function.
26022         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
26023
26024 2007-02-05  Jan Hubicka  <jh@suse.cz>
26025
26026         PR middle-end/30696
26027         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
26028         nodes in cgraph, don't remove offline copy of the function.
26029
26030 2007-02-04  Jan Hubicka  <jh@suse.cz>
26031
26032         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
26033         vectors might cause maybe_lookup_element_for_expr to be called
26034         on non-sra-candidate.
26035
26036 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
26037
26038         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
26039         config/bfin/bfin.md, config/bfin/predicates.md: Follow
26040         spelling conventions.
26041
26042 2007-02-04  Richard Guenther  <rguenther@suse.de>
26043
26044         PR middle-end/30636
26045         * fold-const.c (try_move_mult_to_index): Make sure to not
26046         overflow one dimension of a multi-dimensional array access.
26047
26048 2007-02-04  Jan Hubicka  <jh@suse.cz>
26049
26050         * passes.c (init_optimization_passes): Reindent.
26051
26052 2007-02-04  Jan Hubicka  <jh@suse.cz>
26053             Eric Botcazou  <ebotcazou@adacore.com>
26054
26055         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
26056         (execute_fixup_cfg): Break out the abnormal goto code.
26057         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
26058         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
26059         (optimize_inline_calls): Call make_nonlocal_label_edges.
26060
26061 2007-02-04  Jan Hubicka  <jh@suse.cz>
26062
26063         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
26064         true when something was changed.
26065         (rename_ssa_copies): When something was changed, do
26066         TODO_remove_unused_locals.
26067         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
26068         add TODO_remove_unused_locals when instruction was removed.
26069
26070 2007-02-04  Jan Hubicka  <jh@suse.cz>
26071
26072         * ipa-inline.c (try_inline): Improve debug output; work on already
26073         inline edges too.
26074         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
26075         call try_inline for already inlined edges too when flattening;
26076         inline also functions that make callee growth but overall unit size
26077         reduce.
26078
26079 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
26080
26081         * config/m32c/bitops.md, config/m32c/jump.md,
26082         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
26083         config/m32r/m32r.h, config/m32r/m32r.md,
26084         config/m32r/predicates.md, config/m68hc11/larith.asm,
26085         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
26086         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
26087         config/mips/mips-protos.h, config/mips/mips.c,
26088         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
26089         config/mn10300/mn10300.h, config/mn10300/predicates.md,
26090         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
26091         spelling conventions.
26092
26093         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
26094         Follow spelling conventions.
26095
26096 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
26097
26098         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
26099         warn about C++0x compatibility.
26100
26101 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
26102
26103         * config/h8300/h8300.c, config/h8300/h8300.h,
26104         config/h8300/h8300.md: Follow spelling conventions.
26105
26106 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
26107
26108         PR middle-end/30667
26109         * combine.c (try_combine): Do not substitute source operand
26110         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
26111
26112 2007-02-03  Jan Hubicka  <jh@suse.cz>
26113
26114         PR gcov-profile/30650
26115         * value-prof.c (stringop_block_profile): Fix handling of size counter;
26116         do not divide by zero for never executed counters.
26117         (tree_find_values_to_profile): Fix counters.
26118         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
26119
26120 2007-02-03  Ian Lance Taylor  <iant@google.com>
26121
26122         * lower-subreg.c (simple_move_operand): New static function,
26123         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
26124         operands.
26125         (simple_move): Call simple_move_operand.
26126         (find_decomposable_subregs): Add special handling of MEMs.
26127         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
26128         meaning of return value.  If we see a hard register, test whether
26129         it can store a word_mode value.  Change all callers.
26130
26131 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26132
26133         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
26134         ftrapv insns and expanders.
26135         (subdi3): Change define_expand operand 1 to arith11_operand, and
26136         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
26137         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
26138         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
26139         respectively.
26140
26141         PR middle-end/30174
26142         * varasm.c (notice_global_symbol): Treat global objects as weak when
26143         flag_shlib is true.
26144
26145 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26146
26147         * emit-rtl.c (dconstpi): Delete.
26148         (dconstsqrt2): New.
26149         (init_emit_once): Delete dconstpi and init dconstsqrt2.
26150         * real.h (dconstpi): Delete.
26151         (dconstsqrt2): New.
26152         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
26153         (fold_builtin_hypot): Likewise.
26154
26155 2007-02-03  Tom Tromey  <tromey@redhat.com>
26156
26157         PR driver/30246
26158         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
26159         -gcoff3, -gxcoff3, -gvms3 implies -dD.
26160
26161 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
26162
26163         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
26164         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
26165         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
26166         config/rs6000/cell.md, config/rs6000/darwin.h,
26167         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
26168         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
26169         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
26170         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
26171         typos.  Follow spelling conventions.
26172         * doc/invoke.texi: Follow spelling conventions.
26173
26174 2007-02-03  Roger Sayle  <roger@eyesopen.com>
26175
26176         * simplify-rtx.c (simplify_relational_operation_1): Implement some
26177         canonicalization transformations that attempt to simplify integer
26178         constant comparisons to become comparisons against zero.
26179
26180 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26181
26182         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
26183         fabs(x)*sqrt(2).
26184         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
26185         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
26186
26187 2007-02-02  Mike Stump  <mrs@apple.com>
26188
26189         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
26190         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
26191         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
26192         generate a branch island.
26193
26194 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
26195
26196         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
26197         (xtensa_legitimate_address_p): New.
26198         (xtensa_legitimize_address): New.
26199         (xtensa_output_addr_const_extra): New.
26200         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
26201         (BASE_REG_P): New.
26202         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
26203         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
26204         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
26205         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
26206         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
26207         (xtensa_legitimize_address): New.
26208         (xtensa_output_addr_const_extra): New.
26209
26210 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
26211
26212         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
26213
26214 2007-02-02  Ian Lance Taylor  <iant@google.com>
26215
26216         * expmed.c (expand_divmod): Add comment.
26217
26218 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
26219
26220         * emit-rtl.c (renumber_insns): Remove.
26221         * flags.h: Remove the extern for flag_renumber_insns.
26222         * rtl.h: Remove the prototype for renumber_insns.
26223         * toplev.c (flag_renumber_insns): Remove.
26224
26225 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
26226
26227         Revert for x86 darwin:
26228         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
26229
26230         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
26231         code before the following patch under TARGET_MACHO.
26232         (ix86_function_value_regno_p): Likewise.
26233
26234 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26235
26236         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
26237         COMPLEX_EXPR.
26238
26239 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
26240
26241         PR target/29682
26242         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory
26243         loads to general or fp registers.  Add comments.
26244         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
26245
26246 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
26247
26248         * pointer-set.c (insert_aux): Only return insertion slot.
26249         (pointer_set_insert): Adjust.
26250         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
26251         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
26252         pointer_map_traverse): New.
26253         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
26254         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
26255         pointer_map_contains, pointer_map_traverse): Declare.
26256
26257 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
26258
26259         PR middle-end/30473
26260         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
26261         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
26262
26263 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
26264
26265         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
26266
26267         (struct _dep): New type.
26268         (dep_t): New typedef.
26269         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
26270         (DEP_STATUS): New access macro.  The macro with the same name was
26271         renamed to DEP_LINK_STATUS.
26272         (dep_init): Declare function
26273
26274         (struct _dep_link): New type.
26275         (dep_link_t): New typedef.
26276         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
26277         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
26278         (DEP_LINK_STATUS): New macro.
26279         (debug_dep_links): New debug function.
26280
26281         (struct _deps_list): New type.
26282         (deps_list_t): New typedef.
26283         (DEPS_LIST_FIRST): New access macro.
26284         (FOR_EACH_DEP_LINK): New cycle macro.
26285         (create_deps_list, free_deps_list, delete_deps_list): Declare
26286         functions.
26287         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
26288         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
26289         (copy_deps_list_change_con): Ditto.
26290
26291         (move_dep_link): Declare function.
26292
26293         (struct _dep_node): New type.
26294         (dep_node_t): New typedef.
26295         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
26296
26297         (struct haifa_insn_data.back_deps): New field to hold backward
26298         dependencies of the insn.
26299         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
26300         to deps_list_t.
26301         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
26302         Change its type to deps_list_t.
26303         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
26304         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
26305         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
26306
26307         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
26308
26309         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
26310
26311         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration
26312         and all callers.
26313         (dep_cost): Declare.
26314
26315         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
26316         (ds_to_dk, dk_to_ds): New functions.
26317
26318         (init_dep_1): New static function.
26319         (init_dep): New function.
26320         (copy_dep): New static function.
26321
26322         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
26323         functions.
26324         (detach_dep_link): New static function.
26325         (move_dep_link): New function.
26326
26327         (dep_links_consistent_p, dump_dep_links): New static functions.
26328         (debug_dep_links): New debugging function.
26329
26330         (deps_obstack, dl_obstack, dn_obstack): New static variables.
26331
26332         (alloc_deps_list, init_deps_list): New static functions.
26333         (create_deps_list): New function.
26334         (clear_deps_list): New static function.
26335         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
26336         (deps_list_consistent_p, dump_deps_list): New static functions.
26337         (debug_deps_list): New function.
26338         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
26339         functions.
26340         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
26341
26342         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
26343         use new scheduler dependencies lists.
26344         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
26345         (sched_analyze): Ditto.  Initialize dependencies lists.
26346         (add_forw_dep, compute_forward_dependences): Update to use new
26347         scheduler dependencies lists.
26348
26349         (init_dependency_caches): Init deps_obstack.
26350         (free_dependency_caches): Free deps_obstack.
26351
26352         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
26353         new scheduler dependencies lists.
26354         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
26355         (add_back_forw_dep, delete_back_forw_dep): Ditto.
26356
26357         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
26358         Update to use new scheduler dependencies lists.
26359         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
26360         (debug_dependencies): Ditto.
26361         (schedule_region): Update comments.
26362
26363         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
26364         scheduler dependencies lists.
26365         (schedule_ebb): Update comments.
26366
26367         * rtl.def (DEPS_LIST): Remove.
26368
26369         * lists.c (unused_deps_list): Remove.
26370         (free_list): Update assertions.
26371
26372         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
26373         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
26374
26375         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
26376         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
26377
26378         * haifa-sched.c (comments): Update.
26379         (insn_cost1): Remove.  Inline the code into insn_cost ().
26380         (insn_cost): Update to use new scheduler dependencies lists.  Move
26381         processing of the dependency cost to dep_cost ().
26382         (dep_cost): New function.  Use it instead of insn_cost () when
26383         evaluating cost of the dependency.  Use compatible interface to
26384         interact with the target.
26385         (priority): Update to use new scheduler dependencies lists.
26386         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
26387         with greater number of insns that depend on the insn.
26388         (schedule_insn): Update to use new scheduler dependencies lists.  Add
26389         code to free backward dependencies lists.  Inline and optimize code
26390         from resolve_dep () - see PR28071.
26391         (ok_for_early_queue_removal): Update to use new scheduler dependencies
26392         lists.  Update call to targetm.sched.is_costly_dependence hook.
26393
26394         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
26395         scheduler dependencies lists.
26396
26397         (resolve_dep): Remove.  Move the logic to schedule_insn ().
26398         (init_h_i_d): Initialize dependencies lists.
26399
26400         (process_insn_depend_be_in_spec): Rename to
26401         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
26402         dependencies lists.
26403         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
26404         Update to use new scheduler dependencies lists.
26405         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
26406
26407         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
26408         new scheduler dependencies lists.
26409         (build_intra_loop_deps): Ditto.
26410
26411         * target.h (struct _dep): Declare to use in
26412         gcc_target.sched.is_costly_dependence.
26413         (struct gcc_target.sched.adjust_cost): Fix typo.
26414         (struct gcc_target.sched.is_costly_dependence): Change signature to
26415         use single dep_t parameter instead of an equivalent triad.
26416         (struct gcc_target.sched.adjust_cost_2): Remove.
26417
26418         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
26419
26420         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
26421
26422         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
26423         documentation.
26424         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
26425
26426         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
26427         (REG_DEP_TRUE): Document.
26428
26429         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
26430         Change signature to correspond to the targetm.sched.adjust_cost hook.
26431         Update use in TARGET_SCHED_ADJUST_COST_2.
26432         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
26433         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
26434         new scheduler dependencies lists.
26435         (ia64_gen_check): Ditto.
26436
26437         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new
26438         scheduler dependencies lists.
26439
26440         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
26441         signature to correspond to the targetm.sched.is_costly_dependence hook.
26442         (is_costly_group): Update to use new scheduler dependencies lists.
26443
26444         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
26445         instead of INSN_COST () macro.
26446
26447 2007-02-01  Ian Lance Taylor  <iant@google.com>
26448
26449         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
26450
26451 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
26452
26453         * pa.md (tp_load): Correct mfctl instruction syntax.
26454
26455 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
26456
26457         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
26458         altivec_padding_size calculation on AIX.  Improve comment, add
26459         assert to verify that it's right.
26460
26461         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
26462         64-bit.
26463
26464 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
26465
26466         PR inline-asm/28686
26467         * global.c (global_alloc): Add mising initialization of
26468         ELIMINABLE_REGSET.
26469
26470 2007-02-01  Roger Sayle  <roger@eyesopen.com>
26471
26472         * alias.c (init_alias_analysis): Correct whitespace.
26473         * bb-reorder.c (fix_edges_for_rarely_executed_code,
26474         partition_hot_cold_basic_blocks): Likewise.
26475         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
26476         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
26477         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
26478         fold_builtin_snprintf_chk, fold_builtin_printf,
26479         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
26480         do_mpfr_arg3, do_mpfr_sincos): Likewise.
26481         * cfgcleanup.c (cleanup_cfg): Likewise.
26482         * cfgexpand.c (tree_expand_cfg): Likewise.
26483         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
26484         * function.c (get_next_funcdef_no): Likewise.
26485         * gengtype.c (main): Likewise.
26486         * genmodes.c (main): Likewise.
26487         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
26488         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
26489         * ifcvt.c (noce_emit_move_insn): Likewise.
26490         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
26491         Likewise.
26492         * stor-layout.c (get_best_mode): Likewise.
26493         * tree-ssa-loop-niter.c (get_val_for): Likewise.
26494         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
26495         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
26496         perform_var_substitution, solve_graph): Likewise.
26497         * tree-vrp.c (vrp_finalize): Likewise.
26498
26499 2007-02-01  Ian Lance Taylor  <iant@google.com>
26500
26501         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
26502         high part of a paradoxical subreg, return a constant zero.
26503
26504 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
26505
26506         * toplev.c (lang_dependent_init): Call init_set_costs.
26507         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
26508
26509 2007-02-01  Richard Guenther  <rguenther@suse.de>
26510
26511         PR middle-end/30656
26512         * fold-const.c (fold_negate_expr): Allow negating a
26513         constant if overflow does not change.
26514
26515 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26516
26517         * doc/c-tree.texi (Expression trees): Improve markup.
26518         * doc/tm.texi (Register Classes, Addressing Modes)
26519         (Floating Point): Fix spacing after abbreviations.  Fix some
26520         typos.
26521
26522 2007-02-01  Ben Elliston  <bje@au.ibm.com>
26523
26524         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
26525         * doc/contrib.texi: Likewise.
26526         * doc/install.texi: Likewise.
26527
26528 2007-01-31  Richard Henderson  <rth@redhat.com>
26529             Ian Lance Taylor  <iant@google.com>
26530
26531         * lower-subreg.c: New file.
26532         * rtl.def (CONCATN): Define.
26533         * passes.c (init_optimization_passes): Add pass_lower_subreg and
26534         pass_lower_subreg2.
26535         * emit-rtl.c (update_reg_offset): New static function, broken out
26536         of gen_rtx_REG_offset.
26537         (gen_rtx_REG_offset): Call update_reg_offset.
26538         (gen_reg_rtx_offset): New function.
26539         * regclass.c: Revert patch of 2006-03-05, restoring
26540         reg_scan_update.
26541         (clear_reg_info_regno): New function.
26542         * dwarf2out.c (concatn_loc_descriptor): New static function.
26543         (loc_descriptor): Handle CONCATN.
26544         * common.opt (fsplit_wide_types): New option.
26545         * opts.c (decode_options): Set flag_split_wide_types when
26546         optimizing.
26547         * timevar.def (TV_LOWER_SUBREG): Define.
26548         * rtl.h (gen_reg_rtx_offset): Declare.
26549         (reg_scan_update): Declare.
26550         * regs.h (clear_reg_info_regno): Declare.
26551         * tree-pass.h (pass_lower_subreg): Declare.
26552         (pass_lower_subreg2): Declare.
26553         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
26554         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
26555         -fsplit-wide-types.
26556         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
26557         * Makefile.in (OBJS-common): Add lower-subreg.o.
26558         (lower-subreg.o): New target.
26559
26560 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
26561
26562         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
26563
26564 2007-01-31  Anatoly Sokolov <aesok@post.ru>
26565
26566         PR target/19087
26567         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
26568
26569 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26570
26571         PR middle-end/29335
26572         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
26573
26574 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
26575
26576         * cfgloop.h: Include vec-prim.h.
26577         (enum li_flags): Remove LI_ONLY_OLD.
26578         (loop_iterator): Changed.
26579         (fel_next, fel_init): Iterate over loop tree.
26580         (FOR_EACH_LOOP_BREAK): New macro.
26581         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
26582         FOR_EACH_LOOP.
26583         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
26584         * modulo-sched.c (sms_schedule): Ditto.
26585         * tree-vectorizer.c (vectorize_loops): Ditto.
26586         * doc/loop.texi: Update information on loop numbering and behavior of
26587         FOR_EACH_LOOP wrto new loops.
26588         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
26589         add_to_evolution_1): Test nestedness of loops instead of comparing
26590         their numbers.
26591         * tree-chrec.c (chrec_fold_plus_poly_poly,
26592         chrec_fold_multiply_poly_poly, chrec_evaluate,
26593         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
26594         reset_evolution_in_loop): Ditto.
26595         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
26596
26597 2007-01-31  Dirk Mueller  <dmueller@suse.de>
26598
26599         * c-common.c (warn_about_parentheses): Separate warning about
26600         un-parenthized sequence of comparison operators from the one
26601         which is supposed to warn about x <= y <= z.
26602
26603 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
26604
26605         * optabs.h (enum optab_index): Add new OTI_isinf.
26606         (isinf_optab): Define corresponding macro.
26607         * optabs.c (init_optabs): Initialize isinf_optab.
26608         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
26609         patterns.
26610         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
26611         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
26612         using isinf_optab.
26613         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
26614         expand_builtin_interclass_mathfn.
26615         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
26616         * config/i386/i386.md (UNSPEC_FXAM): New constant.
26617         (fxam<mode>2_i387): New insn pattern.
26618         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
26619         built-in functions as x87 inline asm.
26620
26621 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
26622
26623         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
26624
26625 2007-01-30  Eric Christopher  <echristo@apple.com>
26626
26627         * config.gcc: Add geode.
26628
26629 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
26630
26631         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
26632         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
26633         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
26634         value-prof.c: Fix comment typos.
26635
26636 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26637
26638         PR c++/24745
26639         * doc/invoke.texi (Wpointer-arith): Document warning.
26640
26641 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
26642
26643         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
26644         the list of discrepancies from the draft TR.
26645
26646 2007-01-30  Dirk Mueller  <dmueller@suse.de>
26647
26648         PR c++/30601
26649         * doc/invoke.texi (-Wreturn-type): Update description to
26650         match new behavior.
26651
26652 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
26653
26654         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
26655
26656 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
26657
26658         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
26659         to handle optabs that operate on floating point input argument and
26660         output to integer output.
26661         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
26662         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
26663         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
26664         expand_builtin_interclass_mathfn ().
26665         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
26666         (ilogbsi2): Remove.
26667         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
26668         ilogbl built-in functions as x87 intrinsics.
26669
26670 2007-01-30  Richard Guenther  <rguenther@suse.de>
26671
26672         PR middle-end/27657
26673         * dwarf2out.c (reference_to_unused): Query varpool if the
26674         variable was output.
26675
26676 2007-01-30  Richard Guenther  <rguenther@suse.de>
26677
26678         PR middle-end/30313
26679         * passes.c (execute_one_pass): Reset in_gimple_form to not
26680         confuse non-unit-at-a-time mode.
26681
26682 2007-01-29  Roger Sayle  <roger@eyesopen.com>
26683             Richard Guenther  <rguenther@suse.de>
26684
26685         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
26686         avoid undefined behaviour on overflow.  Use force_fit_type_double
26687         to construct the constant with the specified TREE_OVERFLOW.
26688
26689 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
26690
26691         * config/dfp-bit.c: Add parameterized support for fp exceptions.
26692         * config/dfp-bit.h: Ditto.
26693
26694 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26695
26696         * c-decl.c (pop_scope): Replace warnings with call to
26697         warn_for_unused_label.
26698         * c-common.h (warn_for_unused_label): Declare.
26699         * c-common.c (warn_for_unused_label): Define.
26700
26701 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26702
26703         * tree-optimize.c (update_inlined_to_pointers): Delete unused
26704         function.
26705
26706 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
26707
26708         * Makefile.in (USER_H): Remove decfloat.h.
26709         * ginclude/decfloat.h: Delete, moving contents to ...
26710         * ginclude/float.h: Add support for decimal floating point,
26711         guarded by __STDC_WANT_DEC_FP__.
26712
26713 2007-01-29  Mike Stump  <mrs@apple.com>
26714
26715         * doc/gccint.texi (Top): Rename Loop Representation to Loop
26716         Analysis and Representation to resolve case insensitive conflict.
26717         * doc/loop.texi (Loop Analysis and Representation): Likewise.
26718
26719 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
26720
26721         * tree.h (struct tree_memory_tag): Add aliases member.
26722         (MTAG_ALIASES): New macro.
26723         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
26724         (add_may_alias): Remove pointer-set. Update for may_aliases being
26725         a bitmap.
26726         (mark_aliases_call_clobbered): Update for may_aliases being a
26727         bitmap.
26728         (compute_tag_properties): Ditto.
26729         (create_partition_for): Ditto.
26730         (compute_memory_partitions): Ditto.
26731         (dump_may_aliases_for): Ditto.
26732         (is_aliased_with): Ditto.
26733         (add_may_alias_for_new_tag): Ditto.
26734         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
26735         (compute_is_aliased): New function.
26736         (compute_may_aliases): Call compute_is_aliased).
26737         (init_alias_info): Initialize alias_bitmap_obstack.
26738         (union_alias_set_into): New function.
26739         (compute_flow_sensitive_aliasing): Use union_aliases_into.
26740         (have_common_aliases_p): Rewrite to take two bitmaps and use
26741         intersection.
26742         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
26743         Update for bitmaps.
26744         (finalize_ref_all_pointers): Update for add_may_alias changes.
26745         (new_type_alias): Ditto.
26746         * tree-flow-inline.h (may_aliases): Return a bitmap.
26747         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
26748         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
26749         may_aliases being a bitmap.
26750         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
26751         may_aliases now returns a bitmap.
26752         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
26753         being a bitmap.
26754         * tree-ssa-operands.c (add_virtual_operand): Update for
26755         may_aliases being a bitmap.
26756
26757 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
26758
26759         PR tree-optimization/30630
26760         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
26761         variable as changed.
26762
26763 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
26764
26765         PR c++/28266
26766         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
26767         expanded only once even if an error occurs.
26768
26769 2007-01-29  Ben Elliston  <bje@au.ibm.com>
26770
26771         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
26772         (__gcov_average_profiler): Likewise.
26773         (__gcov_ior_profiler): Likewise.
26774         (__gcov_merge_ior): Likewise.
26775
26776 2007-01-28  Jan Hubicka  <jh@suse.cz>
26777
26778         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
26779         * value-prof.c (stringop_block_profile): Likewise.
26780
26781 2007-01-28  Jan Hubicka  <jh@suse.cz>
26782
26783         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall):
26784         Add variant handling histograms; add wrapper.
26785         (clear_storage_via_libcall): Export.
26786         (emit_block_move_hints): Break out from ...; add histograms.
26787         (emit_block_move): ... this one.
26788         (clear_storage_hints): Break out from ...; add histograms.
26789         (clear_storage): ... this one.
26790         (set_storage_via_memset): Handle histogram.
26791         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
26792         (clear_storage_hints, clear_storage_via_libcall): Declare.
26793         (set_storage_via_setmem): Update prototype.
26794         * doc/md.texi (movmem, setmem): Document new arguments.
26795
26796         * value-prof.c (dump_histogram_value, tree_find_values_to_profile):
26797         Add new histograms.
26798         (stringop_block_profile): New global function.
26799         (tree_stringops_values_to_profile): Profile block size and alignment.
26800         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
26801         HIST_TYPE_IOR.
26802         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
26803         (stringop_block_profile): Declare.
26804         * builtins.c: Include value-prof.h.
26805         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
26806         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
26807         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
26808         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
26809         * profile.c (instrument_values): Add new counters.
26810         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
26811         calls.
26812         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
26813         (tree_init_edge_profiler): Build new profilers.
26814         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
26815         (pass_tree_profile): Add dump.
26816         (tree_profile_hooks): Update.
26817         * Makefile.in (LIBGCOV): Add new constants.
26818         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
26819         __gcov_ior_profiler): New.
26820         * i386.md (movmem/setmem expanders): Add new optional arguments.
26821
26822 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
26823
26824         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
26825
26826 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
26827
26828         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
26829         (tree_unswitch_single_loop): Pass eni_size_weights to
26830         tree_num_loop_insns.
26831         * tree-ssa-loop-manip.c: Include tree-inline.h.
26832         (can_unroll_loop_p): Pass eni_size_weights to
26833         tree_num_loop_insns.
26834         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
26835         Pass eni_size_weights to estimate_num_insns.
26836         * tree.h (init_inline_once): Export.
26837         * toplev.c (backend_init): Call init_inline_once.
26838         * cgraphunit.c (cgraph_process_new_functions,
26839         cgraph_analyze_function): Pass eni_inlining_weights to
26840         estimate_num_insns.
26841         * ipa-inline.c (compute_inline_parameters): Ditto.
26842         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
26843         to estimate_num_insns.
26844         (try_unroll_loop_completely): Pass eni_size_weights to
26845         tree_num_loop_insns.
26846         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
26847         ot estimate_num_insns.
26848         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
26849         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
26850         * tree-inline.c (eni_inlining_weights, eni_size_weights,
26851         eni_time_weights): New variables.
26852         (init_inline_once): Initialize them.
26853         (struct eni_data): Mew.
26854         (estimate_num_insns_1, estimate_num_insns): Use weights.
26855         * tree-inline.h (struct eni_weights_d): New.
26856         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
26857         (estimate_num_insns): Declaration changed.
26858         * cfgloop.h (tree_num_loop_insns): Declaration changed.
26859         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
26860         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
26861
26862 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
26863
26864         * tree-data-ref.c (conflict_fn): Assert that the number of affine
26865         relations in the conflict function is valid.
26866
26867 2007-01-27  Ian Lance Taylor  <iant@google.com>
26868
26869         * common.opt: Add fstrict-overflow.
26870         * opts.c (decode_options): Set flag_strict_overflow if -O2.
26871         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
26872         (TYPE_OVERFLOW_UNDEFINED): Define.
26873         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
26874         Replace all uses.
26875         * tree.h (TYPE_TRAP_SIGNED): Don't define.
26876         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
26877         (fold_negate_expr): Likewise.
26878         (make_range): Likewise.
26879         (extract_muldiv_1): Likewise.
26880         (maybe_canonicalize_comparison): Likewise.
26881         (fold_comparison): Likewise.
26882         (fold_binary): Likewise.
26883         (tree_expr_nonnegative_p): Likewise.
26884         (tree_expr_nonzero_p): Likewise.
26885         * tree-vrp.c (compare_values): Likewise.
26886         (extract_range_from_binary_expr): Likewise.
26887         (extract_range_from_unary_expr): Likewise.
26888         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
26889         Likewise.
26890         (nowrap_type_p): Likewise.
26891         * tree-scalar-evolution.c (simple_iv): Likewise.
26892         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
26893         (build_range_check): Likewise.
26894         (extract_muldiv_1): Likewise.
26895         (fold_comparison): Likewise.
26896         * tree-vrp.c (vrp_int_const_binop): Likewise.
26897         (extract_range_from_unary_expr): Likewise.
26898         * convert.c (convert_to_integer): Likewise.
26899         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
26900         (fold_comparison): Likewise.
26901         (fold_binary): Likewise.
26902         * optabs.c (optab_for_tree_code): Likewise.
26903         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
26904         * simplify-rtx.c (simplify_const_relational_operation): Check
26905         flag_strict_overflow and flag_trapv.
26906         (simplify_const_relational_operation): Likewise.
26907         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
26908         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
26909         -fstrict-overflow.
26910
26911 2007-01-27  Roger Sayle  <roger@eyesopen.com>
26912
26913         * tree.c (tree_fold_gcd): Delete.
26914         * tree.h (tree_fold_gcd): Remove prototype.
26915         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
26916         test whether one constant integer is a multiple of another.  Instead
26917         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
26918         * fold-const.c (multiple_of_p): We've determined both TOP and
26919         BOTTOM are integer constants so we can call int_const_binop directly
26920         instead of the more generic const_binop.
26921
26922 2007-01-27  Roger Sayle  <roger@eyesopen.com>
26923
26924         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
26925         1*X check that the constant hasn't overflowed, to preserve the
26926         TREE_OVERFLOW bit.
26927         (round_up): Provide an efficient implementation when rouding-up an
26928         INTEGER_CST to a power-of-two.
26929
26930 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26931
26932         * doc/sourcebuild.texi: Add comma for clarity.
26933         * doc/extend.texi: Fix some typos.
26934         * doc/passes.texi: Likewise.
26935         * doc/cppinternals.texi: Likewise.
26936         * doc/c-tree.texi: Likewise.
26937         * doc/tree-ssa.texi: Likewise.
26938         * doc/install.texi: Likewise.
26939
26940 2007-01-27  Jan Hubicka  <jh@suse.cz>
26941
26942         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
26943         (pass_sra): Do not require alias information.
26944         * passes.c (init_optimization_passes): Add SRA
26945
26946 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
26947
26948         * tracer.c (rest_of_handle_tracer): We already cleaned
26949         up the CFG in tracer() so don't do it here again.
26950         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
26951         cleanup_cfg here, either.  And don't call renumber_insns.
26952
26953         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
26954         and BB_HEAD are in the insn stream here.  Instead make sure
26955         that BB_INSN is valid on all insns.  Also, do check here that
26956         there are no pending branch predictions...
26957         (rtl_verify_flow_info): ...instead of doing it here.  Checks
26958         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
26959         here.
26960
26961 2007-01-26  Roger Sayle  <roger@eyesopen.com>
26962
26963         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
26964         function to simplify/factorize operand order canonicalization.
26965         (ix86_fixup_binary_operands): Reorganize using the above function.
26966         (ix86_binary_operator_ok): Likewise.
26967
26968 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
26969
26970         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
26971         file scope from optimize_attrs.
26972         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
26973         up search.
26974         (optimize_attrs): Clear insn_code_values after freeing it.
26975
26976 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
26977
26978         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
26979         a parts.base assignment.
26980
26981 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
26982
26983         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
26984         (compute_subscript_distance, initialize_data_dependence_relation,
26985         finalize_ddr_dependent, analyze_ziv_subscript,
26986         analyze_siv_subscript_cst_affine,
26987         compute_overlap_steps_for_affine_univar,
26988         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
26989         analyze_siv_subscript, analyze_miv_subscript,
26990         analyze_overlapping_iterations, subscript_dependence_tester_1,
26991         compute_self_dependence, free_dependence_relation): Work
26992         with affine_fn instead of chrecs.
26993         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
26994         common_affine_function, affine_function_base,
26995         affine_function_constant_p, affine_fn_op, affine_fn_plus,
26996         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
26997         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
26998         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
26999         (all_chrecs_equal_p): Removed.
27000         * tree-data-ref.h (affine_fn, conflict_function): New types.
27001         (struct subscript): Change type of conflicting_iterations_in_a
27002         and conflicting_iterations_in_b.
27003
27004 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
27005
27006         PR other/30182
27007         * config/pa/pa.h (TARGET_HPUX_11): New.
27008         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
27009         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
27010
27011 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
27012         Richard Guenther  <rguenther@suse.de>
27013
27014         * tree-ssa-structalias.c (solve_graph): Handle case
27015         we merged the variable to another.
27016
27017 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27018
27019         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
27020         functions.
27021
27022         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
27023         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
27024
27025 2007-01-25  DJ Delorie  <dj@redhat.com>
27026
27027         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
27028         allow changes to modes which don't fit in those registers.
27029
27030         * reload1.c (choose_reload_regs): Check for invalid subregs before
27031         computing their locations, not after.
27032
27033 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
27034
27035         PR 25127
27036         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
27037         save Altivec registers in an eh_return function.
27038         (compute_vrsave_mask): Likewise.
27039         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
27040         for saving Altivec registers.
27041         (rs6000_emit_prologue): Don't allocate stack twice in
27042         eh_return function.  Correct expected value of altivec_save_offset
27043         when using save_world.  Describe save of R0 to stack when using
27044         save_world.  Describe stack pointer adjustment when using
27045         save_world.  Remove duplicated eh_return parameter register saving.
27046         Update sp_offset variable after save_world.
27047         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
27048         darwin-world.asm.
27049         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
27050         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
27051         implies Altivec.
27052
27053 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
27054
27055         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
27056
27057 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
27058
27059         PR other/30182
27060         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
27061         * config/ia64/ia64.c (ia64_init_builtins): Ditto.
27062
27063 2007-01-25  Richard Guenther  <rguenther@suse.de>
27064
27065         * doc/invoke.texi (-Wcoverage-mismatch): Document.
27066         * common.opt (-Wcoverage-mismatch): New warning option.
27067         * coverage.c (get_coverage_counts): Ignore coverage mismatch
27068         if -Wcoverage-mismatch is given.
27069
27070 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
27071
27072         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
27073         (ipcp_driver): Change to static definition.
27074         Add dumping of the ifunctions.
27075         (constant_val_insert): Remove unused parameter. Support for SSA.
27076         (ipcp_propagate_const): Support for SSA.
27077         (ipcp_profile_bb_print): Print only analyzed nodes.
27078         (ipcp_replace_map_create): Remove support for Fortran constant
27079         for now.
27080         * ipa-prop.c (ipa_method_modify_stmt,
27081         ipa_callsite_compute_param): Support for SSA.
27082         * ipa-prop.h (ipcp_driver): Remove declaration.
27083         (IS_VALID_TREE_MAP_INDEX): Add define.
27084
27085 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
27086
27087         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
27088
27089 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27090
27091         PR middle-end/30447
27092         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
27093         constant argument to cabs and do it without checking for
27094         -funsafe-math-optimizations.
27095
27096 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
27097
27098         * c-common.h (RID_FIRST_CXX0X): New.
27099         (RID_LAST_CXX0X): New.
27100         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
27101         by -Wall.
27102         * c.opt (Wc++0x-compat): New.
27103         * doc/invoke.texi (-Wc++0x-compat): Document.
27104
27105 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27106
27107         * builtins.c (fold_builtin_carg): New.
27108         (fold_builtin_1): Use it.
27109
27110 2007-01-24  Jan Hubicka  <jh@suse.cz>
27111
27112         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
27113
27114         * ipa-inline.c (initial_insns, max_insns): Delete.
27115         (compute_max_insns): New function.
27116         (cgraph_decide_inlining_of_small_function): Use it; take minimal
27117         amount of insns as base for code growth.
27118         (cgraph_decide_inlining): Make initial_insns local; do not compute
27119         max_insns.
27120         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
27121         * doc/invoke.texi (inline-unit-growth): Update docs.
27122
27123 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
27124
27125         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
27126         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
27127         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
27128         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
27129         for CPUs that have PTA_CX16 set.
27130
27131         PR middle-end/27416
27132         * gimplify.c (omp_check_private): New function.
27133         (gimplify_scan_omp_clauses): Use it for
27134         firstprivate/lastprivate/reduction.
27135
27136         PR middle-end/30494
27137         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
27138         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
27139
27140         PR middle-end/30421
27141         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
27142         If lower_lastprivate_clauses emits some statements, append them
27143         to dlist rather than body_p and to body_p append an initializer.
27144         (lower_omp_for): Adjust caller.
27145
27146 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
27147
27148         * target.h (globalize_decl_name): New.
27149         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
27150         * output.h (default_globalize_decl_name): New.
27151         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
27152         globalize_label.
27153         (globalize_decl): Ditto.
27154         (default_globalize_decl_name): New.
27155         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
27156         (ia64_handle_version_id_attribute): New.
27157         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
27158         (ia64_asm_output_external): Use globalize_decl_name instead
27159         of globalize_label.
27160         * doc/extend.texi (version_id): New pragma.
27161         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
27162
27163 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
27164
27165         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
27166         _uleb128_t and _Unwind_SWord with _sleb128_t.
27167         * unwind-dw2.c (extract_cie_info, execute_stack_op,
27168         execute_cfa_program, uw_frame_state_for, uw_update_context_1):
27169         Likewise.
27170         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
27171         * unwind-pe.h (read_uleb128, read_sleb128,
27172         read_encoded_value_with_base): Likewise.
27173         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
27174
27175 2007-01-24  Richard Guenther  <rguenther@suse.de>
27176
27177         * builtins.c (expand_builtin_cexpi): Get the fndecl
27178         for cexp in the correct way.
27179
27180 2007-01-24  Jan Hubicka  <jh@suse.cz>
27181
27182         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS
27183         of calls.
27184
27185 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
27186
27187         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
27188         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
27189         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
27190         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
27191         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
27192         __SIZEOF_PTRDIFF_T__.
27193         * doc/cpp.texi: Documentation for the new builtin macros added.
27194
27195 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
27196
27197         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
27198         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
27199         instead of operands[2] to avoid access past the end of array.
27200
27201 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
27202
27203         * reload1.c (emit_reload_insns): Pass the reload register
27204         for a non-spill output reload through forget_old_reloads_1.
27205
27206 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
27207
27208         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
27209         _SOFT_DOUBLE if doubles use software floating-point.
27210         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
27211         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
27212         * config/rs6000/darwin-ldouble.c: Also compile functions for
27213         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
27214         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
27215         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
27216         commented-out long double override.
27217         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
27218         * config/rs6000/eabispe.h: Likewise.
27219         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
27220         long double for non-SPE.
27221         (rs6000_handle_option): Likewise.
27222         (invalid_e500_subreg): Disallow more subregs involding DImode,
27223         DFmode, TImode or TFmode.
27224         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
27225         E500 double.
27226         (legitimate_lo_sum_address_p): Also check for TFmode for E500
27227         double.
27228         (rs6000_legitimize_address): Also handle TFmode for E500 double.
27229         (rs6000_legitimize_reload_address): Also handle TFmode for E500
27230         double.
27231         (rs6000_legitimate_address): Also check for TFmode for E500
27232         double.
27233         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
27234         (spe_build_register_parallel): Handle TFmode and TCmode.
27235         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
27236         double.
27237         (function_arg): Handle TFmode and TCmode for E500 double.
27238         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
27239         in general.
27240         (print_operand): Handle TFmode and TImode for %y.
27241         (rs6000_generate_compare): Handle TFmode comparisons for E500
27242         double.
27243         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
27244         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
27245         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
27246         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
27247         TFmode for E500 double.
27248         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
27249         (floatsidf2): Enable for E500 double.
27250         (movtf_softfloat): Use rs6000_nonimmediate_operand.
27251         (extenddftf2): Change to extenddftf2_fprs.
27252         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
27253         depending on TARGET_E500_DOUBLE.
27254         (extendsftf2): Enable for E500 double.
27255         (trunctfdf2): Enable for E500 double.
27256         (trunctfsf2): Change to trunctfsf2_fprs.
27257         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
27258         depending on TARGET_E500_DOUBLE.
27259         (floatsitf2): Enable for E500 double.
27260         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
27261         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
27262         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
27263         (negtf2): Change to negtf2_internal.
27264         (negtf2): New expander.
27265         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
27266         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
27267         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
27268         (movdi_internal32): Use rs6000_nonimmediate_operand.
27269         (unnamed splitter): Likewise.
27270         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
27271         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
27272         (SPE64TF, DITI): New mode macros.
27273         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
27274         modes.
27275         (frob_tf_ti): New.
27276         (frob_<mode>_di_2): New.
27277         (frob_tf_di_8_2): New.
27278         (frob_di_df): Change to frob_di_<mode>; allow more modes.
27279         (frob_ti_tf): New.
27280         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
27281         more modes.
27282         (frob_ti_<mode>_8_2): New.
27283         (frob_ti_tf_2): New.
27284         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
27285         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
27286         TFmode.
27287         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
27288         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
27289         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
27290         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
27291         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
27292         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
27293         tsttflt_gp): New.
27294
27295 2007-01-23  Ian Lance Taylor  <iant@google.com>
27296
27297         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
27298         insn-*.o first.
27299         (OBJS-archive): Reformat, alphabetize.
27300         (OBJS): Change out_object_file to OBJS-md.
27301
27302 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
27303
27304         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
27305         JUMP_P and CALL_P predicates where applicable.
27306         * config/i386/i386.c: Ditto.
27307         * config/i386/i386.md: Ditto.
27308         * config/i386/mmx.md: Ditto.
27309         * config/i386/predicates.md: Ditto.
27310
27311 2007-01-22  Andreas Schwab  <schwab@suse.de>
27312
27313         * config/m68k/m68k.h: Fix comment.
27314
27315 2007-01-22  Jan Hubicka  <jh@suse.cz>
27316
27317         * passes.c (init_optimization_passes): Do not rerun
27318         pass_early_warn_uninitialized.
27319
27320 2007-01-22  Richard Guenther  <rguenther@suse.de>
27321
27322         PR tree-optimization/30038
27323         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
27324         function.
27325         (execute_cse_sincos_1): Likewise.
27326         (execute_cse_sincos): Likewise.
27327         (gate_cse_sincos): Likewise.
27328         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
27329         the cexpi() canonicalization of sincos().
27330         * tree-pass.h (pass_cse_sincos): Declare.
27331         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
27332
27333 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
27334
27335         PR rtl-optimization/29329
27336         * combine.c (replaced_rhs_insn): Rename to i2mod.
27337         (replaced_rhs_value): Rename to i2mod_new_rhs.
27338         (i2mod_old_rhs): New global variable.
27339         (combine_instructions): Adjust for above change.  Save a copy of
27340         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
27341         note are substituted in the second instruction.
27342         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
27343         ditch the note if it pertains to the second eliminated register
27344         and this register is mentioned in i2mod_old_rhs.
27345
27346         Revert:
27347         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
27348
27349         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
27350         the insn to which the note was originally attached.
27351
27352 2007-01-21  Jan Hubicka  <jh@suse.cz>
27353
27354         * ipa-inline.c (inlining_mode): Comment, move up.
27355         (cgraph_decide_inlining_incrementally): Do not perform inlining
27356         itself; fix handling of flattening of self recursive functions.
27357         (cgraph_find_cycles): Remove.
27358         (cgraph_flatten_node): Remove.
27359         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
27360         (try_inline): New function.
27361         (cgraph_early_inlining): Update call of
27362         cgraph_decide_inlining_incrementally.  Apply inlining here.
27363         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
27364
27365 2007-01-21  Dirk Mueller  <dmueller@suse.de>
27366
27367         PR bootstrap/30511
27368         * tree-vrp.c (check_array_bounds): do not warn
27369         about ADDR_EXPR's of ARRAY_REF's which are immediately
27370         used in binary expressions.
27371
27372 2007-01-21  Ira Rosen  <irar@il.ibm.com>
27373
27374         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
27375         read_write_dep and macros for its access.
27376         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
27377         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
27378         argument, call vect_check_interleaving for every independent pair of
27379         data-refs. Mark loads that access the same memory location as a store
27380         in the loop.
27381         (vect_check_dependences): Remove.
27382         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
27383         call, fix the call to vect_analyze_data_ref_dependence.
27384         (vect_analyze_data_ref_access): For statements that access the same
27385         data-ref, check that they are not stores; for loads, check that there
27386         is no store that access the same location.
27387
27388 2007-01-20  Roger Sayle  <roger@eyesopen.com>
27389             Joseph Myers  <joseph@codesourcery.com>
27390
27391         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
27392         (-fdump-rtl-stack): Likewise.
27393         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
27394         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
27395         (-mpt-fixed): Use @minus{} for minus sign.
27396         (Using Precompiled Headers): Fix under/overfull hbox.
27397
27398 2007-01-20  Jan Hubicka  <jh@suse.cz>
27399
27400         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
27401         place within annotation.
27402
27403 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
27404
27405         * pa.c (output_move_double): Change array size of xoperands to 4.
27406
27407 2007-01-20  Jan Hubicka  <jh@suse.cz>
27408
27409         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
27410         as temporary.
27411
27412 2007-01-19  Ian Lance Taylor  <iant@google.com>
27413
27414         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
27415         constant to unsigned HOST_WIDE_INT before negating.
27416
27417 2007-01-19  Ian Lance Taylor  <iant@google.com>
27418
27419         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
27420         to unsigned.
27421         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
27422         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
27423         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
27424         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
27425         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
27426         (realloc_vdef, realloc_vuse): Change second parameter to
27427         unsigned.
27428         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
27429         fields to unsigned.
27430         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
27431         unsigned. Change x and lim locals to unsigned.
27432         (realloc_vdef, realloc_vuse): Change num_elem parameter to
27433         unsigned.
27434         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
27435         (copy_virtual_operands): Change i and n locals to unsigned.
27436
27437 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27438
27439         PR middle-end/29335
27440         * builtins.c (fold_builtin_1): Handle builtin fdim.
27441
27442 2007-01-20  Jan Hubicka  <jh@suse.cz>
27443
27444         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
27445         * tree-ssa-structalias.c (compute_points_to_sets): Do call
27446         init_alias_heapvars.
27447         (init_alias_heapvars): Initialize only when not already initialized.
27448         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
27449
27450 2007-01-19  Roger Sayle  <roger@eyesopen.com>
27451
27452         * common.opt (fsigned-zeros): New command line option.
27453         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
27454         of flag_unsafe_math_optimizations.
27455         * opts.c (set_fast_math_flags): The -ffast-math command line option
27456         implies -fno-signed-zeros.
27457         (fast_math_flags_set_p): Likewise.
27458
27459         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
27460         the documentation of -ffast-math appropriately.  Wrap long lines.
27461
27462 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
27463
27464         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
27465         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
27466
27467 2007-01-19  Tomas Bily  <tbily@suse.cz>
27468
27469         * cgraphunit.c (cgraph_finalize_function): Updating of pid
27470         * tree-profile.c:
27471         (tree_init_ic_make_global_vars): New function
27472         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
27473         (tree_gen_ic_profiler): New function
27474         (tree_gen_ic_func_profiler): New function
27475         (tree_profiling): Added calling of tree_gen_ic_func_profiler
27476         (tree_profile_hooks): Added hook for indirec/virtual calls
27477         * value-prof.c (tree_find_values_to_profile): New case for
27478         indirect calls
27479         (tree_values_to_profile): Call for determining indirect/virtual
27480         counters
27481         (tree_indirect_call_to_profile): New function
27482         (tree_ic_transform): New function
27483         (tree_ic): New function
27484         (find_func_by_pid): New function
27485         (init_pid_map): New function
27486         (tree_value_profile_transformations): Added check for
27487         indirect/virtual call transformation
27488         * value-prof.h (enum hist_type): New counter type for
27489         indirect/virtual calls
27490         (profile_hooks): Added new hook for profiling indirect/virtual
27491         calls
27492         * profile.c (instrument_values): New case for indirect/virtual
27493         call added
27494         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
27495         (GCOV_COUNTER_V_INDIR): New counter type
27496         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
27497         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
27498         call added
27499         * cgraph.c: Definition of cgraph_max_pid
27500         (cgraph_create_node): Default init of pid attribute
27501         * cgraph.h: Declaration of cgraph_max_pid
27502         (struct cgraph_node): Added pid attribute
27503         * libgcov.c (__gcov_indirect_call_profiler): New function
27504         (__gcov_one_value_profiler_body): New function
27505         (__gcov_one_value_profiler): Body was moved to
27506         __gcov_one_value_profiler_body and calls it
27507
27508 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
27509
27510         * doc/gty.texi (Options): Document the mark_hook option to GTY.
27511         * gengtype.c (write_types_data, write_func_for_structure,
27512         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
27513         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
27514         (walk_type, write_func_for_structure): Generate the mark_hook if
27515         needed.
27516
27517 2007-01-19  Jan Hubicka  <jh@suse.cz>
27518
27519         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
27520         'early' argument take inlining mode argument specifying whether to
27521         inline for size/speeed or all functions; add support for flattening;
27522         improve dumpting.
27523         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
27524
27525 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27526
27527         PR c++/17947
27528         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
27529         the name of the declared identifier.
27530
27531 2007-01-19  Dirk Mueller  <dmueller@suse.de>
27532
27533         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
27534         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
27535         duplicate evaluation.
27536
27537 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
27538
27539         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
27540         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
27541         to XFMode, use acosxf2 and truncate result to requested mode.
27542         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
27543         (asin<mode>2): Similarly, with asin expanders.
27544         (*fscalexf4_i387): Rename from *fscalexf4.
27545         (expNcorexf3): New expander.
27546         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
27547         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
27548         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
27549         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
27550         patterns for SSE math.
27551         (exp10<mode>2): Similarly, with exp10 expanders.
27552         (exp2<mode>2): Similarly, with exp2 expanders.
27553         (expm1<mode>2): Similarly, with expm1 expanders.
27554         (ldexp<mode>3): Similarly, with ldexp expanders.
27555         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
27556         Use gen_truncxf<mode>2_i387_noop to truncate result.
27557
27558 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
27559
27560         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
27561         for ColdFire targets.
27562
27563 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
27564             Richard Sandiford  <richard@codesourcery.com>
27565
27566         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
27567         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
27568         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
27569         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
27570         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
27571         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
27572
27573 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
27574
27575         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
27576         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
27577         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
27578         (*adddi_dilshr32_cf): New pattern.
27579         (adddi3, subdi3): Remove first alternatives.
27580
27581 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
27582
27583         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
27584         implemented using move.l, do not use its cc result for floating-point
27585         comparisons.
27586
27587 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
27588
27589         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
27590         from accepting 's' constraints if flag_pic.
27591
27592 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
27593
27594         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
27595         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
27596         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
27597         condition from TARGET_68881 to TARGET_HARD_FLOAT.
27598
27599 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
27600
27601         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
27602         ColdFire alternatives.
27603         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
27604         * config/m68k/m68k.md (clzsi2): Define for ColdFire
27605         architectures that support ff1 instruction.
27606
27607 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
27608             Julian Brown  <julian@codesourcery.com>
27609
27610         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
27611         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
27612         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
27613         Add commentary.
27614
27615 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
27616
27617         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
27618         and return a bool.
27619         (output_move_const_into_data_reg, output_move_simode_const): Delete.
27620         * config/m68k/m68k.c (const_method, const_int_cost): Take a
27621         HOST_WIDE_INT instead of an rtx.
27622         (m68k_rtx_costs): Update call accordingly.
27623         (output_move_const_into_data_reg): Likewise.  Fix formatting.
27624         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
27625         Return a bool.
27626         (output_move_simode_const): Update calls after above changes.
27627         Rework to use automatic variables and predicates like MEM_P.
27628         * config/m68k/m68k.md (pushexthisi_const): Update call to
27629         valid_mov3q_const.
27630
27631 2007-01-19  Dirk Mueller  <dmueller@suse.de>
27632
27633         * tree-ssa-alias.c (perform_var_substitution): Fix typo
27634         in dump_flags test.
27635
27636 2007-01-19  Richard Guenther  <rguenther@suse.de>
27637
27638         * builtins.c (expand_builtin_cexpi): Fall back to expanding
27639         via cexp in case sincos is not available.
27640
27641 2007-01-19  Richard Guenther  <rguenther@suse.de>
27642
27643         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
27644         * defaults.h (TARGET_HAS_SINCOS): Default to off.
27645         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
27646         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
27647         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
27648         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
27649         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
27650         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
27651
27652 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
27653
27654         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
27655         New insn patterns.
27656         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
27657         (atan2xf3): Directly generate RTL pattern.
27658         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
27659         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
27660         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
27661         disable patterns for SSE math.
27662         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
27663         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
27664         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
27665         disable patterns for SSE math.
27666
27667 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
27668
27669         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
27670
27671 2007-01-18  Roger Sayle  <roger@eyesopen.com>
27672
27673         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
27674         VIEW_CONVERT_EXPR to the same type as it's operand.
27675
27676 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
27677
27678         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
27679         configured for long double 128.
27680
27681 2007-01-18  Mike Stump  <mrs@apple.com>
27682
27683         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
27684         error.
27685
27686 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
27687
27688         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
27689         type correct.
27690
27691 2007-01-18  Jan Hubicka  <jh@suse.cz>
27692
27693         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
27694         greater than NUM_VOP_FREE_BUCKETS.
27695
27696 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
27697
27698         * tree-ssa-structalias.c: Update comments.
27699         (ptabitmap_obstack): Removed.
27700         (pta_obstack): New.
27701         (oldpta_obstack): Ditto.
27702         (stats): Add a few members.
27703         (struct variable_info): Remove node, complex, address_taken, and
27704         indirect_target members. Add oldsolution member.
27705         (new_var_info): Do not initialize removed members.
27706         (constraint_expr_type): Remove INCLUDES.
27707         (constraint_graph): Add size, implicit_preds, rep,
27708         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
27709         (FIRST_REF_NODE): New macro.
27710         (LAST_REF_NODE): Ditto.
27711         (FIRST_ADDR_NODE): Ditto.
27712         (find): New function.
27713         (unite): Ditto.
27714         (dump_constraint): Do not handle INCLUDES.
27715         (insert_into_complex): Do not insert duplicate constraints.
27716         (condense_varmap_nodes): Renamed and rewritten into ...
27717         (merge_node_constraints): This. Also fix bug in handling of
27718         offseted copy constraints.
27719         (clear_edges_for_node): No longer need to deal with preds at all,
27720         or removing associated preds/succs.
27721         (merge_graph_nodes): Deal with indirect_cycles.
27722         Don't deal with predecessors.
27723         (add_implicit_graph_edge): New function.
27724         (add_pred_graph_edge): Ditto.
27725         (add_graph_edge): Don't deal with predecessors.
27726         (build_constraint_graph): Removed.
27727         (build_pred_graph): New function.
27728         (build_succ_graph): Ditto.
27729         (struct scc_info): Removed in_component. Added roots, dfs, and
27730         node_mapping. Remove visited_index, unification_queue.
27731         (scc_visit): Deal with union-find we do now.
27732         Deal with cycles with REF nodes.
27733         (collapse_nodes): Renamed and rewritten to ...
27734         (unify_nodes): This.
27735         (process_unification_queue): Removed.
27736         (topo_visit): Cleanup
27737         (do_da_constraint): Use find.
27738         (do_sd_constraint): Ditto.
27739         (do_ds_constraint): Ditto.
27740         (do_complex_constraint): Ditto.
27741         (init_scc_info): Update for removed and added members.
27742         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
27743         (find_indirect_cycles): This.
27744         (equivalence_class): New variable.
27745         (label_visit): New function.
27746         (perform_variable_substitution): Rewritten.
27747         (free_var_substitution_info): New function.
27748         (find_equivalent_node): Ditto.
27749         (move_complex_constraints): Ditto.
27750         (eliminate_indirect_cycles): Ditto.
27751         (solve_graph): Only propagate changed bits.
27752         Use indirect cycle elimination.
27753         Use find.
27754         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
27755         (tree_id_eq): Renamed to ...
27756         (tree_vi_eq): This. Update for member change
27757         (insert_id_for_tree): Renamed and rewritten to ...
27758         (insert_vi_for_tree): This.
27759         (lookup_id_for_tree): Renamed and rewritten to ...
27760         (lookup_vi_for_tree): This.
27761         (get_id_for_tree): Renamed and rewritten to ...
27762         (get_vi_for_tree): Ditto.
27763         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
27764         (process_constraint): Don't handle INCLUDES.
27765         Remove special ADDRESSOF case.
27766         (find_func_aliases): Rewrite to use vi functions instead of id
27767         ones.
27768         (create_function_info_for): Ditto.
27769         (create_variable_info_for): Ditto.
27770         (intra_create_variable_infos): Ditto.
27771         (merge_smts_into): Ditto.
27772         (find_what_p_points_to): Ditto.
27773         (init_base_vars): Ditto.
27774         (init_alias_vars): Ditto.
27775         (remove_preds_and_fake_succs): New function.
27776         (dump_sa_points_to_info): Dump new stats.
27777         (dump_solution_for_var): Use find.
27778         (set_used_smts): Fix formatting.
27779         (compute_points_to_sets): Updated for new functions.
27780         (ipa_pta_execute): Ditto.
27781
27782 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
27783             Richard Sandiford  <richard@codesourcery.com>
27784
27785         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
27786         parallels.
27787         * calls.c (expand_call): If the return value is a PARALLEL,
27788         extract its first member.
27789         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
27790         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
27791         use FUNCTION_EXTRA_EPILOGUE.
27792         (m68k_function_value): Return a PARALLEL if the return value
27793         is of a pointer type.
27794         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
27795         (FUNCTION_EXTRA_EPILOGUE): Remove.
27796         * config/m68k/m68k.md (D0_REG): New constant.
27797
27798 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
27799
27800         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
27801         output a NOP for empty epilogues.
27802
27803 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
27804
27805         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
27806         before function.  Extend register save check to include all
27807         registers, not just integer ones.
27808
27809 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
27810
27811         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
27812         (m68k_use_return_insn): ...this.
27813         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
27814         * config/m68k/m68k.c (use_return_insn): Rename to...
27815         (m68k_use_return_insn): ...this.
27816         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
27817         of USE_RETURN_INSN.
27818
27819 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
27820
27821         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
27822         nearest even, fix denormal rounding overflow.
27823
27824 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
27825
27826         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
27827         f%$smove and f%$move.
27828         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
27829         (extendsfdf2_cf): Use fdmove instead of f%&move.
27830         (truncdfsf2_cf): Use fsmove instead of f%$smove.
27831         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
27832
27833 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
27834
27835         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
27836         GPR<-GPR moves.
27837
27838 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
27839
27840         * real.h (real_format): Add a canonical_nan_lsbs_set field.
27841         (coldfire_single_format): Declare.
27842         (coldfire_double_format): Likewise.
27843         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
27844         of qnan_msb_set to determine the lower bits of a canonical
27845         NaN significand.
27846         (encode_ieee_double): Likewise.
27847         (encode_ieee_quad): Likewise.
27848         (ieee_single_format): Initialize canonical_nan_lsbs_set.
27849         (mips_single_format): Likewise.
27850         (ieee_double_format): Likewise.
27851         (mips_double_format): Likewise.
27852         (ieee_extended_motorola_format): Likewise.
27853         (ieee_extended_intel_96_format): Likewise.
27854         (ieee_extended_intel_128_format): Likewise.
27855         (ieee_extended_intel_96_round_53_format): Likewise.
27856         (ibm_extended_format): Likewise.
27857         (mips_extended_format): Likewise.
27858         (ieee_quad_format): Likewise.
27859         (mips_quad_format): Likewise.
27860         (vax_f_format): Likewise.
27861         (vax_d_format): Likewise.
27862         (vax_g_format): Likewise.
27863         (i370_single_format): Likewise.
27864         (i370_double_format): Likewise.
27865         (decimal_single_format): Likewise.
27866         (decimal_double_format): Likewise.
27867         (decimal_quad_format): Likewise.
27868         (c4x_single_format): Likewise.
27869         (c4x_extended_format): Likewise.
27870         (real_internal_format): Likewise.
27871         (coldfire_single_format): New real_format.
27872         (coldfire_double_format): Likewise.
27873         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
27874         canonical_nan_lsbs_set.
27875         (pdp11_d_format): Likewise.
27876         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
27877         if TARGET_COLDFIRE_CPU.
27878
27879 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
27880
27881         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
27882         (output_call, m68k_legitimize_call_address): Declare.
27883         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
27884         parenthesees.  Add support for a 'W' constraint.
27885         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
27886         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
27887         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
27888         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
27889         variables.
27890         (override_options): Initialize them.  Do not set flag_no_function_cse
27891         for TARGET_ID_SHARED_LIBRARY.
27892         (m68k_output_pic_call): Delete.
27893         (m68k_legitimize_call_address): New function.
27894         (print_operand): Remove the %o prefix.  Handle the %p prefix.
27895         (output_call): New function.
27896         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
27897         target address from the GOT if symbolic jumps are not allowed.
27898         * config/m68k/m68k.md (call, general_operand): Do not set
27899         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
27900         Merge separate flag_pic and !flag_pic define_insns into...
27901         (*call, *call_value): ...these new patterns.  Match the address
27902         rather than the containing MEM and require it to be a call_operand.
27903         Use output_call to generate the asm template.
27904         * config/m68k/predicates.md (const_call_operand): New predicate.
27905         (call_operand): Likewise.
27906
27907 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
27908
27909         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
27910         (STACK_GROWS_DOWNWARD): Define to 1.
27911         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
27912         comments, emphasizing that these values are only defaults.
27913         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
27914         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
27915
27916 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
27917
27918         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
27919
27920 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
27921             Richard Sandiford  <richard@codesourcery.com>
27922
27923         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
27924         (FP_REGNO_P): New macros.
27925         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
27926         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
27927         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
27928         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
27929
27930 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
27931
27932         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
27933         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
27934         to $tmake_file.
27935         * config/m68k/t-floatlib: New file, extracting common code from...
27936         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
27937         * config/m68k/t-uclinux: Here.
27938         * config/m68k/fpgnulib.c: Do not compile extendeed precision
27939         routines on ColdFire targets.
27940
27941 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
27942
27943         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
27944         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
27945         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
27946         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
27947         explicitly set MOTOROLA to 1.
27948         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
27949
27950 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
27951             Nathan Sidwell  <nathan@codesourcery.com>
27952
27953         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
27954         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
27955         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
27956         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
27957         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
27958         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
27959         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
27960         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
27961         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
27962         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
27963         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
27964         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
27965         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
27966         (DBX_REGISTER_NUMBER): Delete.
27967         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
27968         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
27969         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
27970
27971 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
27972
27973         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
27974         * config/flat.h: New file.
27975         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
27976         OBJECT_FORMAT_FLAT.
27977         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
27978         indirect references for -msep-data or -mid-shared-library.
27979         Do not use PC-relative code addresses either.
27980         * config/m68k/m68k.c (override_options): Restrict -fPIC error
27981         to -mpcrel.
27982         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
27983         for shared libraries and crt1.o for executables.  Use crti.o and
27984         crtbegin.o.
27985         (ENDFILE_SPEC): Use crtend.o and crtn.o.
27986         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
27987         Do not add -elf2flt or -shared-lib-id options here.
27988         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
27989         Pass -shared-lib-id if -mid-shared-library, taking the library
27990         identifier from -mshared-library-id if given, otherwise
27991         defaulting to 0.
27992         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
27993         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
27994         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
27995         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
27996         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
27997         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
27998         and crtend.o.
27999         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
28000         jump sequence for ISA A and ISA A+.
28001         (PICJUMP): Likewise.
28002
28003 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
28004
28005         * config.gcc (m68k-*-uclinux*): Base the port on the common
28006         and m68k GNU/Linux files rather than on the generic ELF ones.
28007         * config/m68k/uclinux.h (TARGET_VERSION): Override.
28008         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
28009
28010 2007-01-18  Julian Brown  <julian@codesourcery.com>
28011             Richard Sandiford  <richard@codesourcery.com>
28012
28013         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
28014         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
28015         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
28016         before redefining.
28017         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
28018         80 unconditionally.
28019         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
28020
28021 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
28022
28023         * doc/install.texi: Document m68k-uclinuxoldabi.
28024         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
28025         * config/m68k/uclinux-oldabi.h: New file, copied from
28026         config/m68k/uclinux.h.
28027
28028 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
28029
28030         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
28031         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
28032         (m32r_compute_frame_size): Use unsigned for regno.
28033         (m32r_reload_lr): Use gen_frame_mem.
28034         (pop): New.
28035         (m32r_output_function_epilogue): Don't output the function epilogue
28036         textually here.
28037         (m32r_expand_epilogue): New.
28038         (direct_return): Return false if the function has the interrupt
28039         attribute.
28040         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
28041         * config/m32r/m32r.md (epilogue): New expander.
28042         (return_lr, return_rte): New insns.
28043         (return): Make it expander.
28044         (return_normal): New expander.
28045
28046 2007-01-18  Josh Conner  <jconner@apple.com>
28047
28048         PR target/30485
28049         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
28050         support for UNLE, UNLT, UNGE, and UNGT.
28051
28052 2007-01-18  Jan Hubicka  <jh@suse.cz>
28053
28054         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
28055         * tree-tailcall (add_virtual_phis): Likewise.
28056         (optimize_tail_call): Return TODOs.
28057         (execute_tail_calls): Return TODOs.
28058         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
28059         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
28060         changed.
28061         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
28062         Cleanup cfg using TODO.
28063         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
28064         * passes.c (execute_function_todo): When cleanup did something, remove
28065         unused locals.
28066         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
28067         (make_edges): Don't cleanup_cfg.
28068
28069 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
28070
28071         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
28072         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
28073         operate on the top of stack.
28074         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
28075         register handling of instructions that output to the second
28076         stack slot.
28077         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
28078         (move_for_stack_reg): Special-case check for dead destination
28079         stack slot for constant load of 1.0 inside UNSPEC_TAN.
28080
28081         * config/i386/i386.md (UNSPEC_TAN): New constant.
28082         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
28083         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
28084         to correctly model move of constant 1.0 to top stack slot.
28085         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
28086         (unnamed peephole2 pattern): Remove corresponding peephole2
28087         pattern that optimizes tan insn and loading of constant 1.0.
28088         (tanxf2): Use fptanxf4_i387.
28089         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
28090         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
28091         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
28092         disable patterns for SSE math.
28093         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
28094         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
28095
28096 2007-01-18  Dirk Mueller  <dmueller@suse.de>
28097             Richard Guenther <rguenther@suse.de>
28098
28099         PR diagnostic/8268
28100         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
28101         * common.opt (Warray-bounds): Add new warning option.
28102         * c-opts.c (c_common_handle_option): Define -Warray-bounds
28103         if -Wall is given.
28104         * Makefile.in: make tree-vrp.o depend on toplev.h
28105         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
28106         is enabled.
28107         (check_array_refs, check_array_bounds, check_array_ref): New.
28108
28109 2007-01-18  Jan Hubicka  <jh@suse.cz>
28110
28111         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
28112         (execute_ssa_ccp): Return flags conditionally.
28113         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
28114         changed.
28115         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
28116
28117 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
28118
28119         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
28120         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
28121
28122         * Makefile.c (GTFILES): Add cfglayout.h.
28123         * gengtype.c (open_base_files): Likewise.
28124         * cfglayout.c (cfg_layout_function_footer,
28125         cfg_layout_function_header) Reindent to make gengtype happy.
28126         * cfglayout.h (cfg_layout_function_footer,
28127         cfg_layout_function_header): Add GTY(()) marker.
28128
28129         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
28130
28131 2007-01-18  Ben Elliston  <bje@au.ibm.com>
28132
28133         * genautomata.c (write_automata): Include xstrerror output in the
28134         error message if writing the DFA description file fails.
28135
28136 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
28137
28138         * config/mips/mips-protos.h (mips_output_external): Make it
28139         return void.
28140         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
28141         * config/mips/mips.c (irix_output_external_libcall): Likewise.
28142         (extern_list): Likewise.
28143         (extern_head): Likewise.
28144         (TARGET_ASM_FILE_END): Likewise.
28145         (mips_file_end): Likewise.
28146         (mips_output_external): Rewritten.
28147
28148 2007-01-18  Ben Elliston  <bje@au.ibm.com>
28149
28150         * genpreds.c (write_insn_preds_c): Only write out the function
28151         body for regclass_for_constraint if we have register constraints.
28152
28153 2007-01-17  Tom Tromey  <tromey@redhat.com>
28154
28155         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
28156         * doc/install.texi (Testing): Use sourceware.org.
28157         (Binaries): Likewise.
28158         (Specific): Likewise.
28159         * doc/contrib.texi (Contributors): Use sourceware.org.
28160
28161 2007-01-17  Anatoly Sokolov <aesok@post.ru>
28162
28163         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
28164         (AVR_ENHANCED): Rename to ...
28165         (AVR_HAVE_MUL): ... new.
28166         (avr_enhanced_p): Rename to ...
28167         (avr_have_mul_p): ... new.
28168         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
28169         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
28170         * config/avr/avr.c (avr_enhanced_p): Rename to ...
28171         (avr_have_mul_p): ... new.
28172         (base_arch_s): Rename 'enhanced' to 'have_mul'.
28173         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
28174         'avr_enhanced_p' and 'enhanced'.
28175         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
28176         AVR_HAVE_MUL instead of AVR_ENHANCED.
28177         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
28178         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
28179         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
28180         instead of AVR_ENHANCED.
28181         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
28182         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
28183         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
28184
28185 2007-01-17  Ian Lance Taylor  <iant@google.com>
28186
28187         * vec.h (VEC_reserve_exact): Define.
28188         (vec_gc_p_reserve_exact): Declare.
28189         (vec_gc_o_reserve_exact): Declare.
28190         (vec_heap_p_reserve_exact): Declare.
28191         (vec_heap_o_reserve_exact): Declare.
28192         (VEC_OP (T,A,reserve_exact)): New static inline function, three
28193         versions.
28194         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
28195         negative parameter.
28196         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
28197         (VEC_OP (T,A,copy)) [all versions]: Likewise.
28198         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
28199         * vec.c (calculate_allocation): Add exact parameter.  Change all
28200         callers.
28201         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
28202         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
28203         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
28204         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
28205         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
28206         (vec_heap_p_reserve_exact): New function.
28207         (vec_heap_o_reserve_exact): New function.
28208
28209 2007-01-17  Jan Hubicka  <jh@suse.cz>
28210
28211         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
28212
28213 2007-01-17  Eric Christopher  <echristo@apple.com>
28214
28215         * config.gcc: Support core2 processor.
28216
28217 2007-01-16  Jan Hubicka  <jh@suse.cz>
28218
28219         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
28220         the names, just unlink the chain so we don't crash on dangling
28221         pointers
28222         to dead SSA names.
28223
28224 2007-01-16  Jan Hubicka  <jh@suse.cz>
28225
28226         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
28227         * tree-pass.h: Reorder to make IPA passes appear toegher.
28228         (pass_early_inline, pass_inline_parameters, pass_apply_inline):
28229         Declare.
28230         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
28231         parameters, do not call early inliner.
28232         * ipa-inline.c: Update comments.  Include tree-flow.h
28233         (cgraph_decide_inlining): Do not compute inlining parameters.
28234         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
28235         be called with function context set up.
28236         (pass_ipa_inline): Remove unreachable functions before pass.
28237         (cgraph_early_inlining): Simplify assuming to be called from the
28238         PM as local pass.
28239         (pass_early_inline): New pass.
28240         (cgraph_gate_ipa_early_inlining): New gate.
28241         (pass_ipa_early_inline): Turn into simple wrapper.
28242         (compute_inline_parameters): New function.
28243         (gate_inline_passes): New gate.
28244         (pass_inline_parameters): New pass.
28245         (apply_inline): Move here from tree-optimize.c
28246         (pass_apply_inline): New pass.
28247         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
28248         transforming.
28249         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
28250         doing them by hand.
28251         (tree_function_versioning): Do not allocate dummy struct function.
28252         * tree-inline.h (optimize_inline_calls): Update prototype.
28253         * tree-optimize.c (execute_fixup_cfg): Export.
28254         (pass_fixup_cfg): Remove
28255         (tree_rest_of_compilation): Do not apply inlines.
28256         * tree-flow.h (execute_fixup_cfg): Declare.
28257         * Makefile.in (gt-passes.c): New.
28258         * passes.c: Include gt-passes.h
28259         (init_optimization_passes): New passes.
28260         (nnodes, order): New static vars.
28261         (do_per_function_toporder): New function.
28262         (execute_one_pass): Dump current pass here.
28263         (execute_ipa_pass_list): Don't dump current pass here.
28264
28265 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
28266
28267         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
28268         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
28269
28270 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
28271
28272         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
28273         (strong_alias): Define.
28274         (__gcc_qmul): Provide non-FMA for soft-float.
28275         (__gcc_qdiv): Same.
28276         (__gcc_qneg): New.
28277         (__gcc_qeq): New.
28278         (__gcc_qle): New.
28279         (__gcc_qge): New.
28280         (__gcc_qunord): New.
28281         (__gcc_stoq): New.
28282         (__gcc_dtoq): New.
28283         (__gcc_qtos): New.
28284         (__gcc_qtod): New.
28285         (__gcc_qtoi): New.
28286         (__gcc_qtou): New.
28287         (__gcc_itoq): New.
28288         (__gcc_utoq): New.
28289         (fmsub): New.
28290         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
28291         soft-float functions.
28292         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
28293         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
28294         about long double soft float.
28295
28296 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
28297             Tehila Meyzels  <tehila@il.ibm.com>
28298
28299         * tree-vectorizer.h (is_pattern_stmt_p): New.
28300         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
28301         formatting (tabs instead of spaces). Cleanup and clarify setting
28302         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
28303         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
28304         (vectorizable_type_demotion): Check that types are integral.
28305         (vectorizable_type_promotion): Likewise.
28306         (vectorizable_store): Fix typo.  Eliminate new-line at end of
28307         comments.
28308
28309 2007-01-16  Jan Hubicka  <jh@suse.cz>
28310
28311         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
28312         cgraph edges too.
28313
28314 2007-01-15  Eric Christopher  <echristo@apple.com>
28315
28316         * ifcvt.c: Include vec.h, vecprim.h.
28317         (check_cond_move_block): New argument regs.
28318         Reorganize. Add registers used to regs.
28319         (cond_move_process_if_block): Use regs set above as
28320         loop bounds.
28321
28322 2007-01-15  Eric Christopher  <echristo@apple.com>
28323
28324         * config/darwin.h: Update copyright.
28325         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
28326         (LINK_COMMAND_SPEC): Add -u.
28327         (LINK_SPEC): Fix umbrella for above.
28328
28329 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
28330
28331         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
28332         glibc CVS.
28333
28334 2007-01-15  Tom Tromey  <tromey@redhat.com>
28335
28336         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
28337         * doc/install.texi (Testing): Don't mention jacks.
28338         (Configuration): Document --enable-java-maintainer-mode.  Move
28339         --with-java-home to libgcj-specific section.  Document
28340         --with-ecj-jar.
28341         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
28342
28343 2007-01-15  Jan Hubicka  <jh@suse.cz>
28344
28345         * tree-ssa-dce.c (DCE_TODOs): New.
28346         (propagate_necessity): Return if something changed.
28347         (eliminate_unnecessary_stmts): Likewise.
28348         (perform_tree_ssa_dce): Return TODO flags when needed.
28349         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
28350
28351 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
28352
28353         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
28354         (fyl2x_extend<mode>xf3_i387): New insn pattern.
28355         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
28356         patterns using X87MODEF12 mode macro.  Extend operand 1
28357         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
28358         (log10<mode>2): Ditto.
28359         (log2<mode>2): Ditto.
28360         (log1p<mode>2): Ditto.
28361         (logb<mode>2): Ditto.
28362         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
28363         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
28364         (*fxtractxf3_i387): Rename from *fxtractxf3.
28365         (fxtract_extend<mode>xf3_i387): New insn pattern.
28366         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
28367         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
28368         and gen_fyl2xxf3_i387().
28369
28370 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
28371
28372         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
28373         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
28374         get_loop_exit_edges.  Changed return type to bool.
28375         * cfgloop.h (fix_loop_placement): Declaration removed.
28376
28377 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
28378
28379         * param.h (MIN_VECT_LOOP_BOUND): New.
28380         * params.def (MIN_VECT_LOOP_BOUND): New.
28381         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
28382         argument - minimum threshold for number of iterations.
28383         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
28384         argument to declaration.
28385         * tree-vect-analyze.c (vect_analyze_operations): Check value of
28386         MIN_VECT_LOOP_BOUND.
28387         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
28388         slpeel_tree_peel_loop_to_edge with additional argument.
28389         (vect_do_peeling_for_alignment): Likewise.
28390         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
28391
28392 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
28393
28394         PR target/30413
28395         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
28396         operands of size 1.
28397
28398 2007-01-14  Jan Hubicka  <jh@suse.cz>
28399
28400         * tree-dfa.c (remove_referenced_var): New function.
28401         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
28402         prune referenced vars list too.
28403         * tree-flow.h (remove_referenced_var): Declare.
28404
28405 2007-01-14  Jan Hubicka  <jh@suse.cz>
28406
28407         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
28408         separately.
28409         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
28410         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
28411         * except.h (verify_eh_throw_table_statements): Kill prototype.
28412         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
28413         into call exrepssions.
28414         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
28415         eh trhow verifier.
28416         * tree-cfg.c: Include pointer-set.h.
28417         (verify_node_sharing): Work on pointer set.
28418         (verify_eh_throw_stmt_node): New.
28419         (verify_stmts): Use pointers sets, verify throw_stmt.
28420
28421 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
28422
28423         * ipa-reference.c (analyze_function): Consider also addresses taken
28424         in phi nodes.
28425
28426 2007-01-12  Roger Sayle  <roger@eyesopen.com>
28427
28428         * c-typeck.c (null_pointer_constant_p): Replace use of
28429         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
28430         (build_c_cast): Likewise.
28431
28432 2007-01-12  Roger Sayle  <roger@eyesopen.com>
28433
28434         * tree.h (force_fit_type_double): Remove unused final argument.
28435         * c-common.c (constant_expression_warning): Replace use of
28436         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
28437         (convert_and_check): Likewise.
28438         (shorten_compare): Update call to force_fit_type_double.
28439         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
28440         * convert.c (convert_to_pointer): Update call to
28441         force_fit_type_double.
28442         * fold-const.c (force_fit_type_double): Remove overflowed_const
28443         argument.
28444         (int_const_binop, fold_convert_const_int_from_int,
28445         fold_convert_const_int_from_real, fold_div_compare,
28446         fold_sign_changed_comparison, fold_unary, fold_negate_const,
28447         fold_abs_const, fold_not_const): Remove the final argument from
28448         calls to force_fit_type_double.
28449
28450 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
28451
28452         * configure.ac: Set insn to "nop" for spu-*-* also.
28453         * configure: Regenerate.
28454
28455 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
28456
28457         * builtins.def : Add BUILT_IN_FREE.
28458
28459 2007-01-12  Jan Hubicka  <jh@suse.cz>
28460
28461         PR tree-optimization/30443
28462         * tree-inline.c (tree_function_versioning): Do not optimize when
28463         cloning for inlining.
28464
28465 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
28466
28467         * doc/loop.texi: Document recording of loop exits.
28468         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
28469         (update_single_exits_after_duplication,
28470         update_single_exit_for_duplicated_loop,
28471         update_single_exit_for_duplicated_loops): Removed.
28472         (duplicate_loop_to_header_edge): Do not call
28473         update_single_exits_after_duplication and
28474         update_single_exit_for_duplicated_loops.
28475         (loop_version): Do not update single_exit information.
28476         (fix_loop_structure): Use record_loop_exits instead of
28477         mark_single_exit_loops.
28478         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
28479         the lists of loop exits.
28480         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
28481         split_edge, merge_blocks): Update the lists of loop exits.
28482         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
28483         loop_optimizer_init.
28484         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
28485         of mark_single_exit_loops.
28486         (loop_optimizer_finalize): Call release_recorded_exits.
28487         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
28488         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
28489         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
28490         update single exit information.
28491         * lambda-code.c (perfect_nestify): Ditto.
28492         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
28493         (mark_single_exit_loops): Removed.
28494         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
28495         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
28496         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
28497         functions.
28498         (get_loop_exit_edges, single_exit): Use recorded exit lists.
28499         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
28500         (verify_loop_structure): Verify consistency of the exit lists.
28501         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
28502         (set_single_exit): Removed.
28503         * cfgloop.h (struct loop_exit): New function.
28504         (struct loop): single_exit_ field replaced by exits field.
28505         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by
28506         LOOPS_HAVE_RECORDED_EXITS.
28507         (struct loops): Added exits hash.
28508         (mark_single_exit_loops, set_single_exit): Declaration removed.
28509         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
28510
28511 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
28512
28513         * doc/invoke.texi: Avoid use of @headitem.
28514
28515 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
28516
28517         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
28518
28519 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
28520
28521         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
28522         list of targets.
28523
28524 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
28525             Richard Sandiford  <richard@codesourcery.com>
28526
28527         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
28528         * config/m68k/m68k.opt: Resort options.
28529         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
28530
28531 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
28532             Richard Sandiford  <richard@codesourcery.com>
28533
28534         * doc/invoke.texi: Document the macros that are defined by
28535         m68k's -mtune and -mhard-float options.
28536         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
28537         (m68k_cpp_cpu_family): Likewise.
28538         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
28539         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
28540         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
28541         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
28542         (m68k_cpp_cpu_family): Likewise.
28543
28544 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
28545
28546         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
28547         macros besides mc68000 as tuning macros.  Use a switch statement
28548         to set them and mcpu32.
28549
28550 2007-01-12  Julian Brown  <julian@codesourcery.com>
28551
28552         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
28553         (TARGET_68040_ONLY): Rename to...
28554         (TARGET_68040): ...this.
28555         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
28556         * config/m68k/m68k.md: Likewise.
28557
28558 2007-01-12  Julian Brown  <julian@codesourcery.com>
28559             Nathan Sidwell  <nathan@codesourcery.com>
28560             Richard Sandiford  <richard@codesourcery.com>
28561
28562         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
28563         the -mcpu= argument associated with the --with-cpu setting.
28564         Define M68K_DEFAULT_TUNE to the default -mtune= option,
28565         if different from the one implied by the -mcpu setting.
28566         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
28567         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
28568         * doc/invoke.texi: Mention ColdFire in the introduction to the
28569         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
28570         -mno-div and -mhard-float options.  Make -m68881 a synonym for
28571         -mhard-float.  Document the previously-undocumented -m5206e,
28572         -m528x, -m5307 and -m5407 options.  Tweak the existing option
28573         documentation for consistency.
28574         * doc/install.texi: Mention new --with-cpu arguments.
28575         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
28576         default CPU if neither -mcpu nor -march are specified.
28577         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
28578         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
28579         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
28580         using m68k_tune to decide between families that implement the
28581         same ISA.  Use m68k_tune to set __mcfv4e__.
28582         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
28583         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
28584         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
28585         (FL_ISA_C, FL_ISA_MMU): New macros.
28586         (MASK_COLDFIRE): Delete.
28587         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
28588         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
28589         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
28590         (TARGET_HARD_FLOAT): Do not define here.
28591         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
28592         (TUNE_68000): New macro.
28593         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
28594         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
28595         (TUNE_CFV2): Redefine in terms of m68k_tune.
28596         (uarch_type, target_device, fpu_type): New enums.
28597         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
28598         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
28599         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
28600         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
28601         (FL_FOR_isa_c): New macros.
28602         (m68k_isa): New enum.
28603         (m68k_target_selection): New structure.
28604         (all_devices, all_isas, all_microarchs): New tables.
28605         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
28606         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
28607         (MASK_ALL_CPU_BITS): Delete.
28608         (m68k_find_selection): New function.
28609         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
28610         Map the legacy target options to a combination of the new ones.
28611         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
28612         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
28613         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
28614         settings.
28615         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
28616         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
28617         properties.
28618         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
28619         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
28620         * config/m68k/m68k-devices.def: New file.
28621
28622 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
28623             Nathan Sidwell  <nathan@codesourcery.com>
28624
28625         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
28626         (SUBTARGET_EXTRA_SPECS): New macros.
28627         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
28628         use %(asm_cpu_spec) instead.
28629         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
28630         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
28631         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
28632         (EXTRA_SPECS): Rename to...
28633         (SUBTARGET_EXTRA_SPECS): ...this.
28634
28635 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
28636             Richard Sandiford  <richard@codesourcery.com>
28637             Julian Brown  <julian@codesourcery.com>
28638
28639         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
28640         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
28641         to the configuration's default CPU.
28642         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
28643         Remove default masks.
28644         (m680[012]0-*-*): Set the default with_cpu to the first part of
28645         the target name.
28646         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
28647         (m68k*-*-linux): Extend the --with-cpu handling to...
28648         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
28649         and m68010.  Don't set target_cpu_default2.
28650         * doc/install.texi: Document --with-cpu for m68k.
28651         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
28652         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
28653         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
28654         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
28655         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
28656         (ASM_SPEC): Remove use of %(asm_cpu_default).
28657         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
28658         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
28659         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
28660         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
28661         __HAVE_FPU__ if TARGET_HARD_FLOAT.
28662         (TARGET_DEFAULT): Delete.
28663         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
28664         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
28665         (CPP_CPU_SPEC): Delete.
28666         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
28667         the appropriate string.
28668         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
28669         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
28670         (ASM_SPEC): Don't use %(asm_default_spec).
28671         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
28672         TARGET_DEFAULT and add MASK_68881.
28673         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
28674
28675 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
28676
28677         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
28678         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
28679         MASK_68010 alongside MASK_68020.
28680         * doc/invoke.texi: Document -m68010.
28681         * config/m68k/m68k.opt (m68010): New.
28682         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
28683         if TUNE_68010.
28684         (TUNE_68010): New macro.
28685         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
28686         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
28687         (M68K_CPU_m68332): Add MASK_68010.
28688         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
28689         fallback definition.
28690         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
28691         defines.
28692         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
28693         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
28694         to all entries that use MASK_68020.
28695         (output_move_simode_const, output_move_himode, output_move_qimode)
28696         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
28697         instead of TARGET_68020 to select clr behavior.  Remove comment
28698         about there being no TARGET_68010.
28699         * config/m68k/m68k.md: Likewise throughout.
28700
28701 2007-01-12  Julian Brown  <julian@codesourcery.com>
28702
28703         * config/m68k/m68k.h (TARGET_ISAB): New macro.
28704         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
28705         * config/m68k/m68k.md: Likewise.
28706
28707 2007-01-12  Julian Brown  <julian@codesourcery.com>
28708
28709         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
28710         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
28711
28712 2007-01-12  Julian Brown  <julian@codesourcery.com>
28713
28714         * config/m68k/m68k.h (TUNE_68040_60): New macro.
28715         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
28716         * config/m68k/m68k.md: Likewise.
28717
28718 2007-01-12  Julian Brown  <julian@codesourcery.com>
28719             Richard Sandiford  <richard@codesourcery.com>
28720
28721         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
28722         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
28723         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
28724         TARGET_CPU32.
28725         (TARGET_CPU32): Rename to...
28726         (TUNE_CPU32): ...this.
28727         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
28728         (TUNE_CFV2): New macros.
28729         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
28730         remove conditions that are implied by TARGET_68020.
28731         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
28732         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
28733         (m68k_output_function_epilogue): Likewise.
28734         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
28735         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
28736         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
28737         non-68000 timings.  Refactor multiplication and division costs.
28738         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
28739         TUNE_CPU32 instead of TARGET_CPU32.
28740         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
28741         and TUNE_68060 instead of TARGET_68060.
28742         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
28743         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
28744         TARGET_CPU32.
28745         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
28746         && !TARGET_COLDFIRE" to choose between moveq and clr.
28747         Likewise in the unnamed movsf pattern.
28748         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
28749         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
28750         ashiftrt pattern.
28751
28752 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
28753
28754         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
28755         of tabbing before backslashes.
28756
28757 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
28758
28759         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
28760         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
28761         (ASM_OUTPUT_INTERNAL_LABEL): Define.
28762
28763 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
28764
28765         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
28766         find_interesting_uses_cond.
28767         (find_interesting_uses_cond): Use extract_cond_operands.
28768         (rewrite_use_compare): Use extract_cond_operands and
28769         force_gimple_operand_bsi.  Do not call update_stmt.
28770         (determine_use_iv_cost_condition): Use extract_cond_operands.
28771         Return cheaper of using original bound and changing the exit bound.
28772
28773 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
28774
28775         PR tree-optimization/29516
28776         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
28777         most_expensive_mult_to_index, addr_to_parts,
28778         create_mem_ref, maybe_fold_tmr): Make the type of
28779         fields of TARGET_MEM_REF sizetype.
28780         (move_fixed_address_to_symbol, move_pointer_to_base):
28781         New functions.
28782         * tree.def (TARGET_MEM_REF): Add comment on types of
28783         the operands.
28784
28785 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
28786
28787         * c-common.c (vector_types_convertible_p): Treat opaque types as
28788         always convertible if they have the same size, but not otherwise.
28789
28790 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
28791
28792         * ifcvt.c (struct noce_if_info): Add comments to the fields.
28793         Remove the b_unconditional field.
28794         (noce_try_sign_mask): Do not look at b_unconditional.
28795         (noce_process_if_block): Do not use merge_if_blocks.  Update
28796         the CFG here.  Do not set b_unconditional.
28797         (cond_move_process_if_block): Likewise.
28798         (find_cond_trap): Likewise.
28799         (check_cond_move_block): Require simple jump insns at the end
28800         of the basic block.
28801
28802 2007-01-11  Jan Hubicka  <jh@suse.cz>
28803
28804         PR tree-optimization/1046
28805         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
28806         when alias info is not ready.
28807         (pass_tail_recursion): Do not require aliasing.
28808         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
28809         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
28810         * tree-ssa-copy.c (pass_copy_prop): Likewise.
28811         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
28812         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
28813         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
28814         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
28815         before inlining.
28816         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
28817         When aliasing is not build, mark statement as volatile.
28818
28819 2007-01-11  Tom Tromey  <tromey@redhat.com>
28820
28821         PR preprocessor/15185, PR preprocessor/20989:
28822         * doc/cppopts.texi <-MT>: Update description of algorithm for
28823         computing default target.
28824         <-M, -MD>: Reword "basename" text.
28825
28826 2007-01-11  Roger Sayle  <roger@eyesopen.com>
28827
28828         * builtins.c (expand_builtin_pow, expand_builtin_powi,
28829         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
28830         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
28831         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
28832         fold_builtin_bswap, real_constp, fold_builtin_pow,
28833         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
28834         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
28835         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
28836         * convert.c (convert_to_pointer): Likewise.
28837         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
28838         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
28839         const_binop, fold_convert_const_int_from_int,
28840         fold_convert_const_int_from_real,
28841         fold_convert_const_real_from_real, sign_bit_p,
28842         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
28843         fold_sign_changed_comparison, fold_unary, fold_comparison,
28844         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
28845         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
28846         * print-tree.c (print_node_brief, print_node): Likewise.
28847         * stor-layout.c (place_field, layout_type): Likewise.
28848         * tree-chrec.c (keep_cast): Likewise.
28849         * tree.c (build_vector, build_real, build_real_from_int_cst,
28850         build_complex): Likewise.
28851
28852 2007-01-11  Roger Sayle  <roger@eyesopen.com>
28853
28854         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
28855         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
28856
28857 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
28858
28859         * configure.ac (strict1_warn): Rename to strict_warn.
28860         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
28861         cc_set_by_configure, quoted_cc_set_by_configure,
28862         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
28863         all_boot_languages, all_stagestuff): Remove.
28864         (target_list): Remove bootstrap targets.
28865         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
28866         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
28867         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
28868         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
28869         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
28870         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
28871         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
28872         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
28873         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
28874         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
28875         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
28876         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
28877         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
28878         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
28879         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
28880         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
28881         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
28882         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
28883         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
28884         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
28885         (mostlyclean): Adjust.
28886         (clean, distclean): Don't mention bootstrap stuff.
28887         * configure: Regenerate.
28888         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
28889         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
28890         treelang/config-lang.in (stagestuff): Remove.
28891         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
28892         stageprofile, stagefeedback, stagestuff): Remove mention.
28893
28894 2007-01-11  Nick Clifton  <nickc@redhat.com>
28895
28896         * config/mcore/predicates.md (mcore_general_movesrc_operand):
28897         Accept CONSTs.
28898         (mcore_general_movdst_operand): Do not accept CONST_INTs.
28899         (mcore_arith_K_S_operand): Run the test for the S constraint not
28900         the test for the M constraint.
28901         (mcore_addsub_operand): Do not accept integer values that are
28902         larger than 32 bits.
28903         * config/mcore/mcore.md: Remove unused constraints from split.
28904         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
28905         (addsi3): Likewise.
28906         (allocate_stack): Likewise.
28907         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
28908         operands to 32 bits.
28909         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
28910         INTVAL.
28911         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
28912         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
28913         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
28914         mcore_output_bclri, mcore_output_andn, output_inline_const,
28915         mcore_output_move, mcore_output_movedouble): Likewise.
28916         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
28917         (output_inline_const): Likewise.
28918         (output_inline_const): Fix format strings used in sprintf
28919         statements.
28920         * config/mcore/mcore-protos.h: Update prototypes for changed
28921         functions in mcore.c.
28922         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
28923         HOST_WIDE_INT and not int.
28924         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
28925         CONST_OK_FOR_N): Likewise.
28926         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
28927         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
28928         an INTVAL.
28929
28930 2007-01-10  Jan Hubicka  <jh@suse.cz>
28931
28932         * tree-vrp.c (remove_range_assertions): Release defs.
28933         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
28934         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
28935
28936 2007-01-10  Paul Brook  <paul@codesourcery.com>
28937
28938         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
28939         * config/arm/arm.md (mulsi3subsi): New insn.
28940
28941 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
28942
28943         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
28944         (tree_transform_and_unroll_loop): New.
28945         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
28946         Declare.
28947
28948 2007-01-10  Robert Kennedy <jimbob@google.com>
28949
28950         * fold-const.c (fold_comparison): Fold comparisons like (x *
28951         1000 < 0) to (x < 0).
28952
28953 2007-01-10  Ian Lance Taylor  <iant@google.com>
28954
28955         * tree-pretty-print.c (dump_generic_node): Print parentheses when
28956         operands have the same priority.
28957
28958 2007-01-10  Tom Tromey  <tromey@redhat.com>
28959
28960         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
28961         (fold_binary): Likewise.
28962         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
28963         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
28964         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
28965         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
28966         * langhooks.h (struct lang_hooks): Removed field
28967         'can_use_bit_fields_p'.
28968
28969 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
28970
28971         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
28972
28973 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
28974
28975         * function.c (get_last_funcdef_no): New function.
28976         * function.h (get_last_funcdef_no): Declare.
28977         * tree-inline.c (initialize_cfun): Add initialization.
28978         (tree_function_versioning): Cleanup.
28979
28980 2007-01-10  Jan Hubicka  <jh@suse.cz>
28981
28982         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
28983         PHIs.
28984
28985 2007-01-10  Sa Liu  <saliu@de.ibm.com>
28986             Ben Elliston  <bje@au.ibm.com>
28987
28988         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
28989         for SAVE_NONLOCAL and Pmode for any other save level.
28990         * spu-protos.h (spu_restore_stack_block): Declare.
28991         * spu.md (save_stack_block): Remove.
28992         (restore_stack_block): Call spu_restore_stack_block.
28993         * spu.c (spu_restore_stack_block): New function.
28994         (spu_expand_epilogue): Remove old comment.
28995
28996 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
28997
28998         PR tree-optimization/30322
28999         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
29000         (cand_value_at): Return the value as aff_tree.
29001         (may_eliminate_iv): Convert the bound from aff_tree to tree.
29002         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
29003         aff_combination_mult): New functions.
29004         (aff_combination_add): Use aff_combination_add_cst.
29005         (aff_combination_convert): Allow conversions to a wider type.
29006         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
29007         * tree-affine.h (aff_combination_mult): Declare.
29008
29009 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
29010
29011         * doc/tm.texi: Update documentation to reflect reality of exec
29012         and start file search behaviours. Update copyright year.
29013         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
29014         header file directories.
29015
29016 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
29017
29018         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
29019         (*cosxf2): Rename to cosxf2_i387.
29020         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
29021         using X87MODEF12 mode macro. Rename patterns to
29022         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
29023         for SSE math.
29024         (*cosdf2, *cossf2): Ditto.
29025         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
29026         to match extended input operands.
29027         (sincos<mode>3): New expander.
29028         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
29029         insn patterns and corresponding splitters.
29030
29031 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
29032
29033         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
29034         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
29035
29036 2007-01-09  Nicolas Pitre  <nico@cam.org>
29037
29038         PR target/30173
29039         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
29040
29041 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
29042
29043         * target.h (struct gcc_target): New field library_rtti_comdat.
29044         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
29045         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
29046         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
29047         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
29048
29049 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
29050
29051         * doc/invoke.texi (Optimize Options): Correct description of -O0.
29052
29053 2007-01-08  Richard Guenther  <rguenther@suse.de>
29054
29055         * tree.h (force_fit_type_double): Export.
29056         (force_fit_type): Remove.
29057         * fold-const.c (force_fit_type_double): New function.
29058         (force_fit_type): Remove.
29059         (int_const_binop): Use it.
29060         (fold_convert_const_int_from_int): Likewise.
29061         (fold_convert_const_int_from_real): Likewise.
29062         (fold_div_compare): Likewise.
29063         (fold_sign_changed_comparison): Likewise.
29064         (fold_unary): Likewise.
29065         (fold_negate_const): Likewise.
29066         (fold_abs_const): Likewise.
29067         (fold_not_const): Likewise.
29068         * c-common.c (shorten_compare): Use force_fit_type_double.
29069         * convert.c (convert_to_pointer): Likewise.
29070
29071 2007-01-08  Richard Guenther  <rguenther@suse.de>
29072
29073         * tree.h (build_int_cst_wide_type): Export.
29074         * tree.c (build_int_cst_wide_type): New function.
29075         (build_int_cst_wide): Fix comment.
29076         * builtins.c (fold_builtin_object_size): Use build_int_cst
29077         to build -1 or 0 of the correct type.  Use fit_double_type
29078         to check for overflow.
29079         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
29080         to build the mask.
29081         (decode_field_reference): Likewise.
29082         (all_ones_mask_p): Likewise.
29083         (native_interpret_int): Use build_int_cst_wide_type.
29084         (fold_binary): Use build_int_cst_type to build an all-ones
29085         value.
29086         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
29087
29088 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
29089
29090         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
29091
29092 2007-01-09  Ben Elliston  <bje@au.ibm.com>
29093
29094         * genautomata.c (STATS_OPTION): New option.
29095         (stats_flag): New flag.
29096         (gen_automata_option): Handle it.
29097         (initiate_automaton_gen): Ditto.
29098         (write_automata): Output statistics only if stats_flag is
29099         set. Likewise, output time statistics only if time_flag is set.
29100         * doc/md.texi (Processor pipeline description): Document new flag.
29101
29102 2007-01-08  Richard Guenther  <rguenther@suse.de>
29103
29104         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
29105         * tree.c (build_int_cst_type): Likewise.
29106         (size_in_bytes): Don't call force_fit_type on the result.
29107         (int_fits_type_p): Use fit_double_type.
29108         * fold-const.c (fit_double_type): New function.
29109         (force_fit_type): Use it.
29110         * tree.h (fit_double_type): Export.
29111
29112 2007-01-08  Jan Hubicka  <jh@suse.cz>
29113
29114         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
29115         * ipa.c (function_and_variable_visibility): Fix return type.
29116
29117 2007-01-08  Richard Guenther  <rguenther@suse.de>
29118
29119         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
29120         of offset to build the index.
29121         * tree-pretty-print.c (dump_generic_node): Don't build negated
29122         const just for printing.
29123         * c-pretty-print.c (pp_c_integer_constant): Likewise.
29124         * builtins.c (fold_builtin_int_roundingfn): Check if result
29125         fits the type by using force_fit_type and comparing the result.
29126         * predict.c (predict_loops): Use compare_tree_int for comparison.
29127         * tree.c (build_int_cst): Fall back to integer_type_node for
29128         NULL_TREE type.
29129         (build_int_cst_wide): Assert type is non-null.
29130
29131 2007-01-08  Roberto Costa  <roberto.costa@st.com>
29132
29133         * tree-vrp.c (extract_range_from_cond_expr): New.
29134         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
29135         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
29136         as expressions.
29137         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
29138         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
29139         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
29140         used as expressions.
29141         * tree-object-size.c (cond_expr_object_size): New.
29142         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
29143
29144 2007-01-08  Jan Hubicka  <jh@suse.cz>
29145
29146         * tree-ssa-forwprop.c (forward_propagate_into_cond,
29147         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
29148         statement.
29149
29150 2007-01-08  Richard Guenther  <rguenther@suse.de>
29151
29152         PR tree-optimization/23603
29153         * tree-vrp.c (set_value_range_to_truthvalue): New function.
29154         (extract_range_from_binary): Fall back to truthvalue instead of
29155         varying for TRUTH_*_EXPR.
29156         (extract_range_from_comparison): Fall back to truthvalue instead of
29157         varying.
29158         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
29159         if all visited PHI values were constant.
29160
29161 2007-01-08  Jan Hubicka  <jh@suse.cz>
29162
29163         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
29164         (cgraph_analyze_function): break out from ...
29165         (cgraph_finalize_compilation_unit): ... here.
29166         (cgraph_expand_function): Remove forgoten commented out line.
29167         (cgraph_optimize): Analyze functions.
29168
29169 2007-01-08  Jan Hubicka  <jh@suse.cz>
29170
29171         * tree-pas.h (TODO_remove_function): New flag.
29172         (TODO_update*): Renumber.
29173         (pass_ipa_increase_alignment,
29174         pass_ipa_function_and_variable_visibility): New passes.
29175         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
29176         (cgraph_function_and_variable_visibility): Move to ipa.c
29177         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
29178         cgraph_increase_alignment.
29179         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
29180         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
29181         calling tree-inline.
29182         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
29183         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
29184         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
29185         (gate_increase_alignment): New function.
29186         (pass_ipa_increase_alignment): New pass.
29187         * ipa.c: Inline tree-pass.h and timevar.h
29188         (function_and_variable_visibility): Move here from cgraphunit.c
29189         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
29190         * passes.c (init_optimization_passes): Add the two new passes.
29191         (execute_todo): Handle cgraph_remove_functions.
29192
29193 2007-01-08  Nick Clifton  <nickc@redhat.com>
29194
29195         * config/frv/predicates.md (reg_or_0_operand): Accept
29196         CONST_DOUBLEs.
29197
29198 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
29199
29200         * config/bfin/rtems.h, config/bfin/t-rtems: New.
29201         * config.gcc: Add bfin*-rtems*.
29202
29203 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
29204
29205         * c.opt: Add -flax-vector-conversions.
29206         * c-typeck.c (convert_for_assignment): Pass flag to
29207         vector_types_convertible_p to allow emission of note.
29208         (digest_init): Likewise.
29209         * c-opts.c: Handle -flax-vector-conversions.
29210         * c-common.c (flag_lax_vector_conversions): New.
29211         (vector_types_convertible_p): Unless -flax-vector conversions
29212         has been passed, disallow conversions between vectors with
29213         differing numbers of subparts and/or element types.  If such
29214         a conversion is disallowed, possibly emit a note on the first
29215         occasion only to inform the user of -flax-vector-conversions.
29216         The new last argument specifies this.
29217         * c-common.h (flag_lax_vector_conversions): New.
29218         (vector_types_convertible_p): Add extra argument.
29219         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
29220         char_type_node for V*QI type vectors.
29221         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
29222         Update to satisfy new typechecking rules.
29223         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
29224         C and C++ variants.
29225         * doc/invoke.texi (C Dialect Options): Document
29226         -flax-vector-conversions.
29227
29228 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
29229
29230         PR tree-optimization/29877
29231         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
29232         a register variable on the RHS to not be replaceable.
29233
29234 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
29235         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
29236         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
29237         const_simm15, const_pow2, const_npow2): Added.
29238         * config/score/misc.md (insv, extv, extzv, movmemsi,
29239         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
29240         * config/score/score.c (score_address_cost, score_select_cc_mode):
29241         Added.
29242         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
29243         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
29244         Update score_print_operand.
29245         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
29246         Adjust register allocate order and update some macro define.
29247         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
29248         mdx_block_move_straight, mdx_block_move_loop_head,
29249         mdx_block_move_loop_body, mdx_block_move_loop_foot,
29250         mdx_block_move_loop, mdx_block_move): Added.
29251         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
29252         mdp_limm): Updated and fix some bug and typo.
29253         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
29254         (movsf, movdf, doloop_end): Added.
29255
29256 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
29257
29258         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
29259         config/arm/thumb2.md: Fix comment typos.
29260         * doc/extend.texi: Fix a typo.
29261
29262 2007-01-07  Eric Christopher  <echristo@apple.com>
29263
29264         * configure.ac: Check for __stack_chk_fail for darwin.
29265         * configure: Regenerate.
29266
29267 2007-01-07  Richard Guenther  <rguenther@suse.de>
29268
29269         * tree-vrp.c (extract_range_from_assert): CSE calls to
29270         compare_values where possible.
29271         (extract_range_from_unary_expr): Likewise.
29272
29273 2007-01-07  Anatoly Sokolov <aesok@post.ru>
29274
29275         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
29276         * config/avr/avr.c (call_insn_operand): Delete function.
29277         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
29278         instead of register number. Use predicates.
29279         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
29280         call_insn_operand): Add.
29281
29282 2007-01-06  Jan Hubicka  <jh@suse.cz>
29283
29284         * tree-pass.h (pass_build_cgraph_edges): Declare.
29285         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
29286         (visited_nodes): Remove.
29287         (cgraph_create_edges): Move to cgraphbuild.c; rename to
29288         build_cgrpah_edges; make visited_nodes local.
29289         (cgraph_process_new_functions): DO not call initialize_inline_failed.
29290         (record_references_in_initializer): Move to cgraphbuild.c
29291         (initialize_inline_failed, rebuild_cgraph_edges,
29292         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
29293         (verify_cgraph_node): Make visited_nodes local.
29294         (cgraph_analyze_function): Do not call cgraph_create_edges and
29295         initialize_inline_failed.
29296         (cgraph_expand_function): Do not call cgraph_lower_function;
29297         assert that function is already lowered.
29298         * Makefile.in (cgraphbuild.o): New.
29299         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
29300         at the end of lowering passes.
29301
29302 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
29303
29304         * ifcvt.c (cond_move_convert_if_block): New function, code
29305         factored out from...
29306         (cond_move_process_if_block): ...here.  Call the new function
29307         on the THEN and ELSE blocks.
29308         (merge_if_block): Do not copy global_live_at_end, merge_blocks
29309         already takes care of this.
29310
29311 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
29312
29313         PR c/19978
29314         * tree.h (TREE_OVERFLOW_P): New.
29315         * c-typeck.c (parser_build_unary_op): Warn only if result
29316         overflowed and operands did not.
29317         (parser_build_binary_op): Likewise.
29318         (convert_for_assignment): Remove redundant overflow_warning.
29319         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
29320
29321 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
29322
29323         * c-typeck.c (store_init_value): Split over two lines to follow
29324         the GNU coding style.
29325
29326 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
29327
29328         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
29329         __GXX_EXPERIMENTAL_CXX0X__.
29330         * doc/cpp.texi: Same.
29331
29332 2007-01-05  Richard Guenther  <rguenther@suse.de>
29333
29334         PR middle-end/27826
29335         * tree.c (get_narrower): Do not construct COMPONENT_REFs
29336         with mismatched types.  Instead explicitly build a
29337         conversion NOP_EXPR.
29338
29339 2007-01-05  Ian Lance Taylor  <iant@google.com>
29340
29341         * c-common.c (decl_with_nonnull_addr_p): New function.
29342         (c_common_truthvalue_conversion): Call it.
29343         * c-typeck.c (build_binary_op): Likewise.
29344         * c-common.h (decl_with_nonnull_addr_p): Declare.
29345
29346 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
29347
29348         PR c/30360
29349         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
29350         denom against 0.0.
29351
29352 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
29353
29354         * doc/install.texi (Final install): Document the fact that
29355         the GNAT runtime should not be stripped.
29356
29357 2007-01-04  Jan Hubicka  <jh@suse.cz>
29358
29359         * tree-inline.c (fold_marked_statements): Update operand caches
29360         and EH after folding
29361
29362 2007-01-04  Ian Lance Taylor  <iant@google.com>
29363
29364         * c-common.c (check_function_nonnull): Whitespace fix.
29365
29366 2007-01-04  Jan Hubicka  <jh@suse.cz>
29367
29368         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
29369         comitted older version of patch.
29370         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
29371         function, celanup cfg and collect garbage.
29372
29373 2007-01-04  Mike Stump  <mrs@apple.com>
29374
29375         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
29376         (clean): Likewise.
29377
29378 2007-01-04  Eric Christopher  <echristo@apple.com>
29379
29380         * libgcc2.c (__bswapsi2): Use SItype.
29381         (__bswapdi2): Use DItype.
29382         * libgcc2.h: Update for above.
29383
29384 2007-01-04  Paul Brook  <paul@codesourcery.com>
29385
29386         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
29387         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
29388         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
29389         umulsidi3, umulsidi3adddi, smulsi3_highpart,
29390         umulsi3_highpart): Make conditional on !arm_arch6.
29391         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
29392         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
29393         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
29394         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
29395         umulsi3_highpart_v6): New insns.
29396
29397 2007-01-04  Roger Sayle  <roger@eyesopen.com>
29398
29399         * fold-const.c (fold_convert): When casting an expression to void,
29400         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
29401         have a type.  Instead of attempting to build a NOP_EXPR, return
29402         these "special" trees directly.
29403
29404 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
29405
29406         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
29407         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
29408         rs6000_cost->fp not 0 as adjustment for outer NEG.
29409
29410 2007-01-04  Jan Hubicka  <jh@suse.cz>
29411
29412         * cgraph.c (cgraph_release_function_body): New function.
29413         (cgraph_remove_node): Use it.
29414         * cgraph.h (cgraph_release_function_body): Declare.
29415         * cgraphunit.c (cgraph_expand_function): Use it.
29416         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
29417         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
29418         is initialized and while compilation of other function is running.
29419         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
29420         statement CFG annotations from here to ...
29421         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
29422
29423 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
29424
29425         * cfgloop.h (enum li_flags): Make the constants powers of two.
29426
29427 2007-01-04  Jan Hubicka  <jh@suse.cz>
29428
29429         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
29430         set.
29431         (fold_marked_statements): New function.
29432         (optimize_inline_calls, tree_function_versioning): Fold new statements.
29433         * tree-inline.h (copy_body_data): Add statements_to_fold.
29434
29435 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
29436
29437         * config.gcc: Mention libgcc/config.host.
29438         * Makefile.in: Update comments mentioning libgcc.
29439         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
29440         (all.cross, start.encap, rest.encap, rest.cross): Update
29441         dependencies for libgcc move.
29442         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
29443         (clean-target, clean-target-libgcc): Delete.
29444         (srcdirify, GCC_EXTRA_PARTS): New macros.
29445         (libgcc-support, libgcc.mvars): New rules.
29446         (distclean): Remove mention of mklibgcc.
29447         (install): Don't reference INSTALL_LIBGCC.
29448         (install-common): Don't reference EXTRA_PARTS.
29449         (install-libgcc, install-multilib): Delete rules.
29450         * mklibgcc.in: Delete file.
29451         * doc/configfiles.texi: Don't mention mklibgcc.
29452
29453         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
29454         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
29455         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
29456         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
29457         (mklibgcc, ldblspecs): Likewise.
29458
29459         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
29460         (posixpre.def): Use $(T).
29461         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
29462         (SHLIB_SRC, SHLIB_INSTALL): Delete.
29463         (SHLIB_LINK): Make dummy.
29464         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
29465
29466         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
29467
29468         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
29469         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
29470         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
29471         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
29472
29473         * configure.ac (all_outputs): Remove mklibgcc.
29474         * configure: Regenerated.
29475
29476 2007-01-03  Josh Conner  <jconner@apple.com>
29477
29478         PR middle-end/29683
29479         * calls.c (compute_argument_addresses): Set stack and stack_slot
29480         for partial args, too.
29481         (store_one_arg): Use locate.size.constant for the size when
29482         generating a save_area.
29483
29484 2007-01-03  Robert Kennedy <jimbob@google.com>
29485
29486         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
29487         whose definitions are deleted due to basic block merging.
29488
29489 2007-01-03  Paul Brook  <paul@codesourcery.com>
29490
29491         PR target/16634
29492         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
29493         functions.
29494         (use_return_insn): Return 0 for Thumb interrupt functions.
29495         (print_multi_reg): Add rfe argument for IRQ returns.
29496         (arm_output_epilogue): Pop interrupt return address directly into PC.
29497         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
29498
29499 2007-01-03  Paul Brook  <paul@codesourcery.com>
29500
29501         Merge from sourcerygxx-4_1.
29502         * config/arm/thumb2.md: New file.
29503         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
29504         Thumb-2.
29505         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
29506         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
29507         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
29508         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
29509         tables.
29510         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
29511         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
29512         comptibility.
29513         * config/arm/ieee754-sf.S: Ditto.
29514         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
29515         (thumb1_base_register_rtx_p): ... to this.
29516         (thumb_index_register_rtx_p): Rename...
29517         (thumb1_index_register_rtx_p): ... to this.
29518         (thumb_output_function_prologue): Rename...
29519         (thumb1_output_function_prologue): ... to this.
29520         (thumb_legitimate_address_p): Rename...
29521         (thumb1_legitimate_address_p): ... to this.
29522         (thumb_rtx_costs): Rename...
29523         (thumb1_rtx_costs): ... to this.
29524         (thumb_compute_save_reg_mask): Rename...
29525         (thumb1_compute_save_reg_mask): ... to this.
29526         (thumb_final_prescan_insn): Rename...
29527         (thumb1_final_prescan_insn): ... to this.
29528         (thumb_expand_epilogue): Rename...
29529         (thumb1_expand_epilogue): ... to this.
29530         (arm_unwind_emit_stm): Rename...
29531         (arm_unwind_emit_sequence): ... to this.
29532         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
29533         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
29534         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
29535         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
29536         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
29537         thumb2_output_casesi): New functions.
29538         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
29539         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
29540         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
29541         THUMB2_WORK_REGS): Define.
29542         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
29543         arm_condexec_mask, arm_condexec_masklen)): New variables.
29544         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
29545         (arm_override_options): Check new CPU capabilities.
29546         Set new architecture flag variables.
29547         (arm_isr_value): Handle v7m interrupt functions.
29548         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
29549         Thumb-2.
29550         (const_ok_for_arm): Handle Thumb-2 constants.
29551         (arm_gen_constant): Ditto.  Use movw when available.
29552         (arm_function_ok_for_sibcall): Return false for v7m interrupt
29553         functions.
29554         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
29555         (thumb_find_work_register, arm_load_pic_register,
29556         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
29557         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
29558         print_multi_reg, output_mov_long_double_fpa_from_arm,
29559         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
29560         output_mov_double_fpa_from_arm, output_move_double,
29561         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
29562         output_return_instruction, arm_output_function_prologue,
29563         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
29564         arm_output_mi_thunk, thumb_set_return_address): Ditto.
29565         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
29566         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
29567         (arithmetic_instr, shift_op): Use arm_shift_nmem.
29568         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
29569         '!' and 'L'.
29570         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
29571         (thumb_expand_prologue): Use thumb_set_frame_pointer.
29572         (arm_file_start): Output directive for unified syntax.
29573         (arm_unwind_emit_set): Handle stack alignment instruction.
29574         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
29575         Add v6t2, v7, v7a, v7r and v7m.
29576         (RETLDM): Add Thumb-2 code.
29577         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
29578         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
29579         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
29580         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
29581         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
29582         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
29583         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
29584         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
29585         ADJUST_INSN_LENGTH): Define.
29586         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
29587         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
29588         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
29589         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
29590         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
29591         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
29592         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
29593         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
29594         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
29595         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
29596         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
29597         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
29598         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
29599         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
29600         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
29601         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
29602         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
29603         cortex-m3.
29604         * config/arm/arm-tune.md: Regenerate.
29605         * config/arm/arm-protos.h: Update prototypes.
29606         * config/arm/vfp.md: Enable patterns for Thumb-2.
29607         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
29608         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
29609         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
29610         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
29611         * config/arm/libunwind.S: Add Thumb-2 code.
29612         * config/arm/constraints.md: Update include Thumb-2.
29613         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
29614         * config/arm/ieee754-df.S: Ditto.
29615         * config/arm/bpabi.S: Ditto.
29616         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
29617         * config/arm/predicates.md (low_register_operand,
29618         low_reg_or_int_operand, thumb_16bit_operator): New.
29619         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
29620         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
29621         * config/arm/t-arm-elf: Add armv7 multilib.
29622         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
29623         Include thumb2.md.
29624         (UNSPEC_STACK_ALIGN, ce_count): New.
29625         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
29626         arm_zero_extendsidi2, arm_zero_extendqidi2): New
29627         insns/expanders.
29628         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
29629         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
29630         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
29631         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
29632         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
29633         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
29634         insns.
29635         * doc/extend.texi: Document ARMv7-M interrupt functions.
29636         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
29637
29638 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
29639
29640         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
29641         (struct _Unwind_Context): Rename args_size to flags, remove
29642         signal_frame field, add a new args_size field and version field.
29643         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
29644         _Unwind_IsExtendedContext): New inline functions.
29645         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
29646         Assume by_value array is only present if _Unwind_IsExtendedContext.
29647         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
29648         _Unwind_IsSignalFrame.
29649         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
29650         (uw_update_context_1): Use _Unwind_SetSignalFrame.
29651         (uw_init_context_1): Initialize context->flags to
29652         EXTENDED_CONTEXT_BIT.
29653         * config/rs6000/linux-unwind.h (frob_update_context): Use
29654         _Unwind_SetSignalFrame.
29655
29656 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
29657
29658         PR middle-end/30353
29659         * gimplify.c (gimplify_modify_expr_complex_part): Move below
29660         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
29661         the value.
29662
29663 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
29664
29665         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
29666         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
29667         RET, AT_SP): Remove.
29668         * config/i386/i386.md (*sse_prologue_save_insn): Use return
29669         instead of RET.
29670
29671         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
29672         * cfgbuild.c (find_basic_blocks): Likewise.
29673         * cfgrtl.c (rtl_create_basic_block): Likewise.
29674         * function.c (temp_slots_at_level): Likewise.
29675         * reg-stack.c (stack_regs_mentioned): Likewise.
29676         * regclass.c (allocate_reg_info): Likewise.
29677         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
29678         set_bb_for_stmt, move_block_to_fn): Likewise.
29679         * tree-complex.c (tree_lower_complex): Likewise.
29680         * vec.h (VEC_safe_grow_cleared): New.
29681
29682         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
29683
29684 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
29685
29686         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
29687         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
29688         to loop_version.
29689         * cfgloopmanip.c (scale_loop_frequencies): Export.
29690         (loopify): Scale the frequencies by prescribed coefficients.
29691         (set_zero_probability): New function.
29692         (duplicate_loop_to_header_edge): Improve updating of frequencies.
29693         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
29694         and frequencies according to arguments.
29695         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
29696         correctly.
29697         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
29698         * modulo-sched.c (sms_schedule): Set probabilities for entering
29699         versioned loop correctly.
29700         * tree-vect-transform.c (vect_transform_loop): Ditto.
29701         * cfgloop.h (loopify, loop_version): Declaration changed.
29702         (scale_loop_frequencies): Declared.
29703
29704 2007-01-02  Jan Hubicka  <jh@suse.cz>
29705
29706         * cgraph.c: Include tree-flow.h
29707         (cgraph_add_new-function): Handle IPA_SSA mode; execute
29708         early_local_passes.
29709         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
29710         * tree-pass.h (pass_all_early_optimizations): Declare.
29711         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
29712         early_local_passes.
29713         (cgraph_analyze_function): Do early_local_passes.
29714         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
29715         Do not add referenced vars.
29716         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
29717         SSA form.
29718         (gate_all_early_local_passes): New gate.
29719         (pass_early_local_passes): Use new gate.
29720         (execute_early_local_optimizations): New functions.
29721         (gate_all_early_optimizations): New gate.
29722         (pass_all_early_optimizations): New pass.
29723         (execute_free_datastructures): Free SSA only when initialized.
29724         (gate_init_datastructures): Init only when optimizing.
29725         (tree_lowering_passes): Do early local passes when called late.
29726         * tree-profile.c (do_tree_profiling): Don't profile functions added
29727         late.
29728         (do_early_tree_profiling, pass_early_tree_profile): Kill.
29729         * tree-cfg.c (update_modified_stmts): Do not update when operands are
29730         not active.
29731         * passes.c (init_optimizations_passes): Reorder so we go into SSA
29732         during early_local_passes.
29733         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
29734
29735
29736 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
29737
29738         * Makefile.in: Update copyright year.
29739
29740 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
29741
29742         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
29743         in $(lang_checks) and check-consistency targets.
29744
29745 2007-01-02  Jan Hubicka  <jh@suse.cz>
29746
29747         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
29748         Do not add referenced vars.
29749         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
29750         are not active.
29751         * passes.c (init_optimization_passes): Put mudflap_2 after
29752         free_datastructures.
29753
29754 2007-01-02  Jan Hubicka  <jh@suse.cz>
29755
29756         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
29757         Set NOTHROW flag on call statements proved to be nothrow.
29758         Update statement of local calls so new pure/const functions are
29759         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
29760         goto receivers.
29761         (tree_rest_of_compilation): Register hooks and initialize bitmap
29762         early. Do not set after_inlining flag.
29763
29764 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
29765
29766         * sbitmap.c (HOST_BITS_PER_LONG_LONG): Change to
29767         HOST_BITS_PER_LONGLONG
29768
29769 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
29770
29771         PR c/19977
29772         * c-typeck.c (store_init_value): Don't emit pedantic overflow
29773         warning for non-static initializers.
29774
29775 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
29776
29777         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
29778         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
29779         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
29780         Always use set_unique_reg_note to add REG_EQUAL notes.
29781
29782 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
29783
29784         Revert:
29785         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
29786
29787         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
29788         * cfgbuild.c (find_basic_blocks): Likewise.
29789         * cfgrtl.c (rtl_create_basic_block): Likewise.
29790         * function.c (temp_slots_at_level): Likewise.
29791         * reg-stack.c (stack_regs_mentioned): Likewise.
29792         * regclass.c (allocate_reg_info): Likewise.
29793         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
29794         set_bb_for_stmt, move_block_to_fn): Likewise.
29795         * tree-complex.c (tree_lower_complex): Likewise.
29796         * vec.h (VEC_safe_grow_cleared): New.
29797
29798 2007-01-02  Ian Lance Taylor  <iant@google.com>
29799
29800         * c-common.c (c_common_truthvalue_conversion): When warning about
29801         using an assignment as a truth value, set TREE_NO_WARNING.
29802
29803 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
29804
29805         PR middle-end/7651
29806         * c.opt (Wold-style-declaration): New.
29807         * doc/invoke.texi (C-only Warning Options): New.
29808         (Wold-style-declaration): Document it.
29809         (Wextra): Enabled by -Wextra.
29810         * c-opts.c (c_common_post_options): Enabled by -Wextra.
29811         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
29812         -Wold-style-declaration.
29813
29814 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
29815
29816         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
29817         * cfgbuild.c (find_basic_blocks): Likewise.
29818         * cfgrtl.c (rtl_create_basic_block): Likewise.
29819         * function.c (temp_slots_at_level): Likewise.
29820         * reg-stack.c (stack_regs_mentioned): Likewise.
29821         * regclass.c (allocate_reg_info): Likewise.
29822         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
29823         set_bb_for_stmt, move_block_to_fn): Likewise.
29824         * tree-complex.c (tree_lower_complex): Likewise.
29825         * vec.h (VEC_safe_grow_cleared): New.
29826
29827 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
29828
29829         * c-common.c (c_common_nodes_and_builtins): Since variants of
29830         void_type_node get built before it is given a name, we need to
29831         give those variants the name, too.
29832         (complete_array_type): We need to work with the canonical main
29833         type of the array, from which we will build the qualified version.
29834         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
29835         * print-tree.c (print_node): Display canonical type information
29836         for each type.
29837         * stor-layout.c (layout_type): When we don't know the
29838         alignment of a type for which we're building an array, we end up
29839         guessing wrong, so make the type require structural equality.
29840         * tree.c (make_node_stat): When we build a new type, it is its
29841         own canonical type.
29842         (build_type_attribute_qual_variant): When building an attribute
29843         variant, its canonical type is the non-attribute variant. However,
29844         if the attributes are target-dependent and they differ, we need to
29845         use structural equality checks for this type.
29846         (build_qualified_type): A qualified type is not equivalent to its
29847         unqualified variant; set the canonical type appropriately.
29848         (build_distinct_type_copy): When building a distinct type from
29849         another type, the new type is its own canonical type.
29850         (build_variant_type_copy): When building a new type variant, we
29851         assume that it is equivalent to the original type.
29852         (build_pointer_type_for_mode): When building a pointer type, also
29853         build a canonical type pointer.
29854         (build_reference_type_for_mode): When building a reference type,
29855         also build a canonical type reference.
29856         (build_index_type): When we can't hash an index type (e.g.,
29857         because its maximum value is negative), the index type requires
29858         structural equality tests.
29859         (build_array_type): Build the canonical form of an array type.
29860         (build_function_type): Function types require structural equality,
29861         because they contain default arguments, attributes, etc.
29862         (build_method_type_directly): Ditto for method types.
29863         (build_offset_type): Build the canonical offset type.
29864         (build_complex_type): Build the canonical vector type.
29865         (make_vector_type): Build the canonical vector type.
29866         * tree.h (TYPE_CANONICAL): New.
29867         (TYPE_STRUCTURAL_EQUALITY_P): New.
29868         (SET_TYPE_STRUCTURAL_EQUALITY): New.
29869         (struct tree_type): Added "canonical" field.
29870         * params.h (VERIFY_CANONICAL_TYPES): New.
29871         * doc/c-tree.texi (TYPE_CANONICAL): Document.
29872         (TYPE_STRUCTURAL_EQUALITY_P): Document.
29873         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
29874         * doc/invoke.texi (verify-canonical-types): Document --param
29875         parameter for verifying canonical types.
29876
29877 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
29878
29879         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
29880         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
29881         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
29882         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
29883         tm_file.
29884         * config/rs6000/e500.h: New.
29885         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
29886         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
29887         Remove.
29888         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
29889         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
29890         TARGET_E500_DOUBLE): Remove.
29891         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
29892         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
29893         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
29894         * config/rs6000/rs6000.c (rs6000_override_options): Use
29895         CHECK_E500_OPTIONS.
29896
29897 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
29898
29899         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
29900         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
29901         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
29902         rs6000_emit_cmove): Don't check TARGET_E500.
29903         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
29904         sordered): Don't check TARGET_E500.
29905
29906 2007-01-01  Eric Christopher  <echristo@apple.com>
29907
29908         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
29909         HARD_REGISTER_NUM_P.
29910
29911 2007-01-01  Roger Sayle  <roger@eyesopen.com>
29912
29913         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
29914         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
29915         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
29916         eq/ne Y".
29917
29918 2007-01-01  Mike Stump  <mrs@apple.com>
29919
29920         * configure.ac: Remove support for building with Apple's gcc-3.1.
29921
29922 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
29923
29924         PR middle-end/30311
29925         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
29926         REG is a hard register.  Do not modify REG before calling
29927         subreg_nregs.
29928         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
29929         multiple of the size of YMODE for certain lowpart cases.
29930
29931 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
29932
29933         PR middle-end/30253
29934         * gimplify (voidify_wrapper_expr): Update for
29935         GIMPLE_MODIFY_STMT.
29936
29937 2007-01-01  Andreas Schwab  <schwab@suse.de>
29938
29939         PR target/29166
29940         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
29941         save of BR0 in extra_spill_size instead of spill_size.
29942         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
29943         area.
29944         (ia64_expand_epilogue): Restore BR0 from its new location.
29945
29946 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
29947
29948         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
29949         Use a temporary variable if the left hand side is not a gimple
29950         register.
29951
29952 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
29953
29954         * gimplify.c (gimplify_return_expr): Make the temporary variable
29955         for the return expression, a gimple register variable.
29956
29957 2007-01-01  Jan Hubicka  <jh@suse.cz>
29958
29959         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
29960         INSN_LIST.
29961
29962 2007-01-01  Mike Stump  <mrs@apple.com>
29963
29964         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
29965         .literal16.
29966         * config/darwin.c (machopic_select_rtx_section): Use
29967         HAVE_GAS_LITERAL16.
29968         (darwin_mergeable_constant_section): Likewise.
29969         * configure: Regenerate.
29970         * config.in: Regenerate.
29971
29972 2007-01-01  Jan Hubicka  <jh@suse.cz>
29973             Andrew Pinski  <pinskia@gmail.com>
29974
29975         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
29976         before starting IPA passes.