OSDN Git Service

bd049569200cb1959b8cdb02b2539becd1245b7d
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-10-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
2
3         * sched-ebb.c: Surround code with '#ifdef INSN_SCHEDULING'.
4         * ddg.c: Ditto.
5         * sched-deps.c: Ditto.  Remove nested #ifdef's INSN_SCHEDULING.
6         * sched-int.h: Surround declarations with '#ifdef INSN_SCHEDULING'.
7         (print_insn): Move declaration to ...
8         * rtl.h (print_insn): ... here.
9
10 2007-10-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
11
12         * config/m68k/m68k.h (m68k_sched_cpu, m68k_sched_attr_opx_type,
13         m68k_sched_attr_opy_type, m68k_sched_attr_size, m68k_sched_attr_op_mem,
14         m68k_sched_branch_type): Move declarations to ...
15         * config/m68/m68k-protos.h: ... here.
16
17 2007-10-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
18
19         * genattrtab.c (main): Rearrange output of insn-attrtab.c headers.
20
21 2007-10-17  Eric B. Weddington  <eweddington@cso.atmel.com>
22
23         * config/avr/avr.c (avr_mcu_types): Add attiny48.
24         * config/avr/avr.h (LINK_SPEC): Likewise.
25         (CRT_BINUTILS_SPECS): Likewsie.
26         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
27
28 2007-10-17  Eric B. Weddington  <eweddington@cso.atmel.com>
29
30         * config/avr/avr.c (avr_mcu_types): Add attiny43u.
31         * config/avr/avr.h (CRT_BINUTILS_SPECS): Likewsie.
32         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
33
34 2007-10-17  Uros Bizjak  <ubizjak@gmail.com>
35
36         PR middle-end/33794
37         * reg-stack.c (move_for_stack_reg): Swap input argument of
38         UNSPEC_TAN insn to the top of the stack.
39
40 2007-10-17  Uros Bizjak  <ubizjak@gmail.com>
41
42         PR target/32961
43         * config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLLWI128,
44         IX86_BUILTIN_PSLLDI128, BUILTIN_PSLLQI128, IX86_BUILTIN_PSRAWI128,
45         IX86_BUILTIN_PSRADI128, IX86_BUILTIN_PSRLWI128,
46         IX86_BUILTIN_PSRLDI128, IX86_BUILTIN_PSRLQI128]: Do not require
47         immediate shift value.
48         config/i386/emmintrin.h (_mm_slli_epi16, _mm_slli_epi32,
49         _mm_slli_epi64, _mm_srai_epi16, _mm_srai_epi32, _mm_srli_epi16,
50         _mm_srli_epi32, _mm_srli_epi64): Remove 'const' from count argument.
51         Remove macros for !__OPTIMIZE__ case.
52
53 2007-10-17  Daniel Berlin  <dberlin@dberlin.org>
54
55         * tree-ssa-structalias.c (rewrite_constraints): Don't test for
56         directness anymore.
57         (perform_var_substitution): Only DFS from real nodes. Don't test
58         for directness.
59         (unite_pointer_equivalences): Fix broken test.
60
61 2007-10-17  Alan Modra  <amodra@bigpond.net.au>
62
63         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Correct
64         altivec sp_offset.  Rearrange sp_offset assignments to
65         correspond to stack adjustments.  Use frame_reg_rtx for
66         SPE register restores.  Correct SPE stack adjustment.
67
68 2007-10-17  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
69
70         * builtins.c (gimplify_va_arg_expr): Use inform for help message.
71         * toplev.c (check_global_declaration_1): Use appropriate warning
72         option instead of unnamed warning.
73         * stor-layout.c (layout_decl): Likewise.
74         * c-typeck.c (build_conditional_expr): Likewise.
75         (build_compound_expr): Fix wrong comment.
76         (build_binary_op): Use appropriate warning option instead of
77         unnamed warning.
78         * cfgexpand.c (tree_expand_cfg): Likewise.
79         * tree-optimize.c (tree_rest_of_compilation): Likewise.
80         * tree-cfg.c (remove_useless_stmts_warn_notreached): Likewise.
81         (execute_warn_function_return): Likewise.
82         * stmt.c (warn_if_unused_value): Likewise.
83
84 2007-10-16  Eric B. Weddington  <eweddington@cso.atmel.com>
85
86         * config/avr/avr.c (avr_mcu_types): Add at90pwm216, at90pwm316.
87         * config/avr/avr.h (LINK_SPEC): Likewise and remove regex for
88         similar devices.
89         (CRT_BINUTILS_SPECS): Likewsie.
90         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
91
92 2007-10-16  Amruth Laxman  <amruth.laxman@nsn.com>
93
94         PR target/33594
95         * config/sparc/sparc.h (LOCAL_ALIGNMENT): Define.
96
97 2007-10-16  Eric Botcazou  <ebotcazou@libertysurf.fr>
98
99         * dce.c (init_dce): Only initialize the obstacks for the fast pass.
100         (fini_dce): Only release them for the fast pass.
101         (end_ud_dce): Delete.
102         (rest_of_handle_ud_dce): Do not modify df_in_progress.
103         Call fini_dce instead of end_ud_dce.
104         (rest_of_handle_fast_dce): Do not modify df_in_progress.
105         (run_fast_df_dce): Reset df_in_progress to false on exit.
106
107 2007-10-16  Paolo Bonzini  <bonzini@gnu.org>
108             Maxim Kuvyrkov  <maxim@codesourcery.com>
109
110         * target.h (unspec_may_trap_p): New target hook.
111         * target-def.h (TARGET_UNSPEC_MAY_TRAP_P): New macro.
112         * targhooks.c (default_unspec_may_trap_p): Default implementation of
113         the hook.
114         * targhooks.h (default_unspec_may_trap_p): Declare it.
115         * doc/tm.texi (TARGET_UNSPEC_MAY_TRAP_P): Document new hook.
116         * rtlanal.c (may_trap_p_1): Use new hook.  Make global.
117         * rtl.h (may_trap_p_1): Declare.
118         
119         * config/ia64/ia64.c (ia64_unspec_may_trap_p): New function to
120         override default hook implementation.
121         (TARGET_UNSPEC_MAY_TRAP_P): Override default implementation of the
122         hook.
123
124 2007-10-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
125
126         * doc/invoke.texi (Wextra): Move it just after Wall, list the
127         options enabled by Wextra and mention Wuninitialized.
128         
129 2007-10-15  Nigel Stephens  <nigel@mips.com>
130
131         * config/mips/mips.h (LOCAL_ALIGNMENT): Define.
132
133 2007-10-15  Jakub Jelinek  <jakub@redhat.com>
134
135         PR tree-optimization/33136
136         * opts.c (decode_options): Don't enable flag_ipa_type_escape.
137
138 2007-10-15  Alexandre Oliva  <aoliva@redhat.com>
139
140         PR tree-optimization/33735
141         PR tree-optimization/33572
142         * tree-inline.c (update_ssa_across_abnormal_edges): Revert
143         2007-10-09's change.
144         * except.c (duplicate_eh_regions): Don't look for prev_try
145         beyond ERT_ALLOWED_EXCEPTIONS with an empty list.
146
147 2007-10-15  Alexandre Oliva  <aoliva@redhat.com>
148
149         PR middle-end/33706
150         * tree-inline.c (copy_bb): Use bsi_replace to replace a
151         __builtin_va_arg_pack-containing call stmt.
152
153 2007-10-15  Razya Ladelsky  <razya@il.ibm.com>
154
155         * matrix-reorg.c (gate_matrix_reorg): Don't comment out whole
156         program flag.
157
158 2007-10-15  Jakub Jelinek  <jakub@redhat.com>
159
160         PR tree-optimization/33619
161         * tree-ssa-ter.c (is_replaceable_p): Return false for all
162         calls.
163
164 2007-10-15  David Edelsohn  <edelsohn@gnu.org>
165
166         * config.gcc (powerpc-ibm-aix5*): Install altivec.h.
167
168 2007-10-15  Richard Guenther  <rguenther@suse.de>
169
170         * fold-const.c (extract_array_ref): Remove.
171         (fold_comparison): Handle POINTER_PLUS_EXPR with the
172         generic address expression comparison folding.  Remove
173         the folding that used extract_array_ref.
174
175 2007-10-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
176
177         PR target/33133
178         * haifa-sched.c (process_insn_forw_deps_be_in_spec): Check if
179         speculation type of insn can be changed before trying to do that.
180
181 2007-10-15  Eric Botcazou  <ebotcazou@libertysurf.fr>
182
183         * dse.c (struct insn_info): Add 'frame_read' field.
184         (scan_insn): For the call to a const function, set frame_read if
185         reload has been run.
186         If the insn reads the frame, kill the frame related stores.
187         (scan_reads_nospill): Likewise.
188
189 2007-10-14  Jason Merrill  <jason@redhat.com>
190
191         * tree-eh.c (optimize_double_finally): Don't assume that the
192         cleanup we're duplicating is only one statement.
193
194 2007-10-14  Kazu Hirata  <kazu@codesourcery.com>
195
196         * config/fixed-bit.c, config/i386/cpuid.h, config/i386/i386.c,
197         config/i386/i386.md, config/i386/sse.md, function.c, jump.c,
198         modulo-sched.c, ra-conflict.c, toplev.c, tree-eh.c, tree-sra.c,
199         tree-ssa-dse.c, tree-vect-analyze.c, tree-vect-patterns.c,
200         tree-vect-transform.c: Fix comment typos.
201         * doc/extend.texi: Fix a typo.
202
203         * c-common.h: Remove the prototype for c_expand_body.
204         * c-tree.h: Remove the prototype for c_disregard_inline_limits.
205         * tree.h: Remove the prototype for fold_build_call_expr.
206
207         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN):
208         Remove.
209         * c-tree.h: Remove the prototype for c_cannot_inline_tree_fn.
210
211 2007-10-13  David Edelsohn  <edelsohn@gnu.org>
212
213         * config/rs6000/aix53.h: New file.
214         * config/rs6000/aix{41,43,51,52}.h (TARGET_ALTIVEC): Define to 0.
215         (TARGET_ALTIVEC_ABI): Same.
216         * config/rs6000/aix.h (TARGET_ALTIVEC): Delete.
217         (TARGET_ALTIVEC_ABI): Delete.
218         * config.gcc (powerpc-ibm-aix5*): Rename to aix5.2.  Add new
219         stanza defaulting to aix5.3.
220
221 2007-10-12  Nathan Froyd  <froydnj@codesourcery.com>
222
223         * config/i386/i386.md (SI_REG, DI_REG): New constants.
224         (strmov): Use defined constants.
225         (cmpstrnsi): Likewise.
226         * config/i386/i386.c (decide_alg): Use defined constants.
227         (ix86_expand_strlen): Likewise.
228
229 2007-10-12  Richard Sandiford  <rsandifo@nildram.co.uk>
230
231         * dse.c (find_shift_sequence): Reinstate "<= UNITS_PER_WORD" condition.
232         * var-tracking.c (micro_operation_def): Update comment on u.loc.
233         (mode_for_reg_attrs, var_lowpart): New functions.
234         (add_uses): Consider recording a lowpart of LOC for MO_USE.
235         (add_stores): Likewise MO_SET and MO_COPY.  If the source of a set
236         or copy is known, set LOC to the SET that performs the set, instead
237         of the destination.
238         (find_src_status, find_src_set_src): Remove LOC parameter.
239         Replace INSN with the source value.
240         (compute_bb_dataflow, emit_notes_in_bb): Check for a SET u.loc when
241         handling MO_SET and MO_COPY.  Update the calls to find_src_status
242         and find_src_set_src.
243
244 2007-10-12  Nathan Froyd  <froydnj@codesourcery.com>
245
246         PR 11001
247         * config/i386/i386.md (strmov): Check for esi and edi usage.
248         * config/i386/i386.c (decide_alg): Check whether we can use a
249         rep prefix and adjust algorithm choice accordingly.
250         (ix86_expand_strlen): Check for eax, ecx, and edi usage.
251
252 2007-10-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
253
254         * config/c4x/c4x.md (mulqi3, mulhi3): Use optab_libfunc.
255
256 2007-10-12  Kenneth Zadeck <zadeck@naturalbridge.com>
257
258         * global.c (build_insn_chain): Formatting fixes.
259
260 2007-10-12  Richard Guenther <rguenther@suse.de>
261
262         * tree-ssa-forwprop.c (forward_propagate_into_cond): For
263         combining both operands require either both have single uses
264         or combining to a constant.
265
266 2007-10-12  Richard Guenther  <rguenther@suse.de>
267
268         PR middle-end/26198
269         * tree-ssa-forwprop.c (can_propagate_from): Do not propagate from
270         a rhs with side-effects or which is a load.
271         (forward_propagate_into_cond): Also try combining both operands.
272
273 2007-10-12  Uros Bizjak  <ubizjak@gmail.com>
274
275         PR tree-optimization/33742
276         * tree-vect-transform.c (vectorizable_operation): Return false
277         if get_vectype_for_scalar_type for scalar_dest can't be determined.
278         (vectorizable_call): Same for rhs_type and lhs_type.
279
280 2007-10-12  Jakub Jelinek  <jakub@redhat.com>
281
282         PR tree-optimization/33645
283         * tree-ssa-live.c (mark_all_vars_used): Add data argument,
284         pass it to walk_tree.
285         (mark_all_vars_used_1): Pass data through to mark_all_vars_used.
286         When calling set_is_used on a VAR_DECL, if data is not NULL and
287         its DECL_UID is in the bitmap, call mark_all_vars_used on its
288         DECL_INITIAL after clearing the bit in bitmap.
289         (remove_unused_locals): Adjust mark_all_vars_used callers.
290         Instead of removing unused global vars from unexpanded_var_list
291         immediately record them in bitmap, call mark_all_vars_used on
292         all used global vars from unexpanded_var_list and only purge
293         global vars that weren't found used even during that step.
294  
295 2007-10-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
296
297         * gthr-posix.h (__gthread_active_init): Create detached instead of
298         joinable thread when testing whether threads are active on hppa-hpux.
299         * gthr-posix95.h (__gthread_active_init): Likewise.
300
301 2007-10-11  Kenneth Zadeck <zadeck@naturalbridge.com>
302
303         PR middle-end/33676
304         * global.c (build_insn_chain): Include insn that occur between
305         basic blocks.
306         
307 2007-10-11  Tom Tromey  <tromey@redhat.com>
308
309         * gengtype-yacc.y: Delete.
310
311 2007-10-11  Uros Bizjak  <ubizjak@gmail.com>
312
313         * config/i386/i386.md (AX_REG, DX_REG, CX_REG): New constants.
314         * config/i386/i386.c (ix86_function_arg_regno_p, function_arg_32,
315         function_value_32, function_value_64, function_value_ms_64,
316         setup_incoming_varargs_64, ix86_expand_prologue, ix86_expand_call,
317         legitimize_tls_address, x86_this_parameter, x86_output_mi_thunk):
318         Use new constants.
319
320 2007-10-11  Richard Guenther  <rguenther@suse.de>
321
322         * gcse.c (hash_scan_set): If the next nonnote insn is in
323         a different basic block insert the set.
324
325 2007-10-11  Richard Guenther  <rguenther@suse.de>
326
327         PR middle-end/33724
328         * tree-cfg.c (one_pointer_to_useless_type_conversion_p): New function.
329         (verify_gimple_expr): Use it to verify pointer-to types for
330         ADDR_EXPRs.
331
332 2007-10-11  Richard Guenther  <rguenther@suse.de>
333
334         PR c/33726
335         * c-typeck.c (build_array_ref): Do not strip qualifiers from
336         the array element type.
337
338 2007-10-11  Eric Botcazou  <ebotcazou@libertysurf.fr>
339
340         PR rtl-optimization/33638
341         * dse.c (struct insn_info): Remove 'stack_read' field,
342         add 'stack_pointer_based' field.
343         (record_store): For a store with non-constant base, record
344         whether it is stack pointer based.
345         (scan_insn): For the call to a const function, remove stack
346         pointer based stores from the list of local active stores.
347         (scan_reads_nospill): Delete code dealing with const functions.
348
349 2007-10-10  Peter Bergner  <bergner@vnet.ibm.com>
350
351         * ra-conflict.c (partial_bitnum, max_bitnum): Change type of variables
352         to HOST_WIDE_INT.
353         (conflict_p, set_conflict, set_conflicts): Likewise.
354         * global.c (global_alloc): Likewise.
355         * ra.h: Update prototypes.
356
357 2007-10-10  Wolfgang Gellerich  <gellerich@de.ibm.com>
358
359         * opth-gen.awk: Fixed generation of comment stating the origin
360           of options.h
361
362 2007-10-10  Kazu Hirata  <kazu@codesourcery.com>
363
364         Revert:
365         2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
366         * longlong.h (count_leading_zeros): Replace '{' and '}' with '%{'
367         and '%}', respectively.
368
369         Revert:
370         2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
371         * config/m68k/m68k.c (print_operand): Handle '{' and '}'.
372         * config/m68k/m68k.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '{'
373         and '}'.
374         * config/m68k/m68k.md: Replace '{' with '%{' where '{' is
375         meant to be output.
376
377         Revert:
378         2007-10-07  Kazu Hirata  <kazu@codesourcery.com>
379         * config/m68k/m68k.c, config/m68k/m68k.md: Use the assembly
380         syntax for ASSEMBLER_DIALECT.
381         * config/m68k/m68k.h (ASSEMBLER_DIALECT): New.
382
383 2007-10-10  Revital Eres  <eres@il.ibm.com>
384
385         * modulo-sched.c (check_nodes_order): Dump the final order of
386         the nodes.
387         (get_sched_window): Add dump info.
388         (calculate_order_params): Dump order params of the nodes.
389
390 2007-10-09  Kenneth Zadeck <zadeck@naturalbridge.com>
391
392         PR middle-end/33669
393         * ra-conflict.c (record_one_conflict_between_regnos, 
394         set_conflicts_for_earlyclobber, global_conflicts): Improved logging.
395         (global_conflicts): Enhanced incorrect check.
396         
397 2007-10-09  Geoffrey Keating  <geoffk@apple.com>
398
399         * dwarf2out.c (output_call_frame_info): FDEs are always emitted
400         if flag_exceptions is not set.
401         * config/darwin.c (darwin_emit_unwind_label): Rewrite to use
402         assemble_name rather than incorrectly emulating it.
403
404         * doc/extend.texi (Deprecated Features): Mention that <? and >? and
405         friends are removed from G++.
406
407 2007-10-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
408
409         * c-opts.c (c_common_handle_option): -Wnontemplate-friend,
410         -Wwrite-strings and -Wmultichar are enabled by default, so Wall
411         enabling them is redundant. Don't check two times for
412         c_dialect_cxx.
413         
414 2007-10-09  H.J. Lu  <hongjiu.lu@intel.com>
415
416         * ra-conflict.c (record_one_conflict_between_regnos): Revert
417         the last change.
418         (set_conflicts_for_earlyclobber): Likewise.
419         (global_conflicts): Likewise.
420
421 2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
422
423         * longlong.h (count_leading_zeros): Replace '{' and '}' with '%{'
424         and '%}', respectively.
425
426 2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
427
428         * config/m68k/m68k.c (print_operand): Handle '{' and '}'.
429         * config/m68k/m68k.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '{'
430         and '}'.
431         * config/m68k/m68k.md: Replace '{' with '%{' where '{' is
432         meant to be output.
433
434 2007-10-09  Richard Guenther  <rguenther@suse.de>
435
436         PR middle-end/33692
437         * gimplify.c (canonicalize_component_ref): Honor qualifiers
438         of referenced structure and component.
439
440 2007-10-09  Kenneth Zadeck <zadeck@naturalbridge.com>
441
442         PR middle-end/33669
443         * ra-conflict.c (record_one_conflict_between_regnos,
444         set_conflicts_for_earlyclobber, global_conflicts): Improved
445         logging.
446         (global_conflicts): Removed incorrect check.
447
448 2007-10-09  Richard Sandiford  <rsandifo@nildram.co.uk>
449
450         PR tree-optimization/33615
451         * tree-ssa-pre.c (compute_avail): Don't call make_values_for_stmt
452         if the statement might throw.  Fix formatting.
453
454 2007-10-09  Richard Sandiford  <rsandifo@nildram.co.uk>
455
456         PR tree-optimization/33615
457         * tree-ssa-loop-im.c (movement_possibility): Return MOVE_IMPOSSIBLE
458         if the rhs might throw.
459
460 2007-10-09  Jan Hubicka  <jh@suse.cz>
461
462         * invoke.texi (align-threshold, align-loop-iterations): Document.
463         * final.c: Include cfgloop.h, params.h
464         (compute_alignments): Dump decisions and compare them with loop
465         structure; honor given parameters.
466         (pass_compute_alignments): New dump file.
467         * params.def (PARAM_ALIGN_THRESHOLD, PARAM_ALIGN_LOOP_ITERATIONS): New.
468         * Makefile.in (final.o): Add dependency on cfgloop.h and params.h
469
470 2007-10-09  James E. Wilson  <wilson@specifix.com>
471
472         PR tree-optimization/33655
473         PR middle-end/22156
474         * tree-sra.c (bitfield_overlaps_p): When fld->element is INTEGER_CST,
475         convert it to bitsizetype before size_binop call.
476
477 2007-10-09  Alexandre Oliva  <aoliva@redhat.com>
478
479         PR tree-optimization/33572
480         * tree-inline.c (update_ssa_across_abnormal_edges): Tolerate
481         the absence of a corresponding edge from the exit block.
482
483 2007-10-09  Alexandre Oliva  <aoliva@redhat.com>
484
485         PR middle-end/22156
486         * tree-sra.c (instantiate_element): Use BYTES_BIG_ENDIAN for
487         bit-field layout.
488         (sra_build_assignment): Likewise.  Set up mask depending on
489         precision, not type.
490         (sra_build_bf_assignment): Use BYTES_BIG_ENDIAN.  Don't overflow
491         computing bit masks.
492         (sra_build_elt_assignment): Don't view-convert from signed to
493         unsigned.
494         (sra_explode_bitfield_assignment): Use bit-field type if
495         possible.  Use BYTES_BIG_ENDIAN.
496
497 2007-10-08  Alexandre Oliva  <aoliva@redhat.com>
498
499         PR middle-end/22156
500         * tree-sra.c (scalarize_lsdt): Fix thinko in testing whether
501         the original stmt can throw.
502         (sra_build_bf_assignment): Fix type mismatch when applying negated
503         mask.
504
505 2007-10-08  Geoffrey Keating  <geoffk@apple.com>
506
507         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Register
508         '#pragma mark' to be executed at preprocessing time.
509
510 2007-10-08  Ollie Wild  <aaw@google.com>
511
512         * varasm.c (compare_constant): Removed call to
513         lang_hooks.expand_constant.
514         (copy_constants): Removed call to lang_hooks.expand_constant.
515         (compute_reloc_for_constant): Removed call to
516         lang_hooks.expand_constant.
517         (output_addressed_constants): Removed call to
518         lang_hooks.expand_constant.
519         (constructor_static_from_elts_p): Removed call to
520         lang_hooks.expand_constant.
521         (output_constant): Removed calls to lang_hooks.expand_constant.
522         * langhooks.h (struct lang_hooks): Removed field expand_constant.
523         * langhooks-def.h (lhd_return_tree): Removed.
524         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
525         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
526         * langhooks.c (lhd_return_tree): Removed.
527
528 2007-10-08  Mark Shinwell  <shinwell@codesourcery.com>
529
530         * combine.c (setup_incoming_promotions): Ensure that
531         arguments that have not undergone mode promotions do not
532         incorrectly get marked as being sign- or zero-extended.
533
534 2007-10-08  Richard Guenther  <rguenther@suse.de>
535
536         PR middle-end/33693
537         PR middle-end/33695
538         PR middle-end/33697
539         * fold-const.c (fold_binary): Use correct types in folding
540         of a * (1 << b) to (a << b).  Likewise for ~A & ~B to ~(A | B)
541         and building of RROTATE_EXPR.
542
543 2007-10-08  Richard Guenther  <rguenther@suse.de>
544
545         PR middle-end/33691
546         PR middle-end/33694
547         PR middle-end/33696
548         * fold-const.c (fold_binary): Use the correct types when
549         folding (A | CST1) & CST2 to (A & CST2) | (CST1 & CST2).
550         (fold_binary): Use the correct types when folding
551         (-A) - B to (-B) - A.
552         (fold_unary): Use the correct types when folding ~(X).
553
554 2007-10-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
555
556         * doc/invoke.texi (Wall): fix formatting issues.
557         
558 2007-10-07  Richard Sandiford  <rsandifo@nildram.co.uk>
559
560         * simplify-rtx.c (simplify_binary_operation_1): Canonicalize
561         truncated shift counts.
562
563 2007-10-07  Kazu Hirata  <kazu@codesourcery.com>
564
565         * config/m68k/m68k.c, config/m68k/m68k.md: Use the assembly
566         syntax for ASSEMBLER_DIALECT.
567         * config/m68k/m68k.h (ASSEMBLER_DIALECT): New.
568
569 2007-10-06  Eric Botcazou  <ebotcazou@adacore.com>
570             Nathan Froyd  <froydnj@codesourcery.com>
571
572         * dwarf2out.c (dwarf2out_frame_init): Check for DWARF2_FRAME_INFO
573         when determining whether to record INCOMING_RETURN_ADDR_RTX.
574
575 2007-10-06  Eric Botcazou  <ebotcazou@adacore.com>
576
577         Revert:
578         2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
579
580         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
581         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
582         the function, temporarily point the debug interface to the null one.
583
584 2007-10-06  Alexandre Oliva  <aoliva@redhat.com>
585
586         PR tree-optimization/33655
587         PR middle-end/22156
588         * tree-sra.c (bitfield_overlaps_p): Handle array and complex
589         elements.
590
591 2007-10-06  Alexandre Oliva  <aoliva@redhat.com>
592
593         PR tree-optimization/33572
594         * tree-cfg.c (verify_stmts): Check for missing PHI defs.
595         * tree-inline.c (update_ssa_across_eh_edges): Renamed to...
596         (update_ssa_across_abnormal_edges): ... this.  Set slots in the
597         return PHI node.
598         (copy_edges_for_bb): Handle nonlocal label edges.
599         (make_nonlocal_label_edges): Deleted.
600         (optimize_inline_calls): Don't call it.
601
602 2007-10-05  Hans-Peter Nilsson  <hp@axis.com>
603
604         * gthr-single.h: Revert last change.
605
606 2007-10-05  Michael Matz  <matz@suse.de>
607
608         PR middle-end/33667
609         * lower-subreg.c (decompose_multiword_subregs): Use
610         validate_unshare_change().
611
612 2007-10-05  Peter Bergner  <bergner@vnet.ibm.com>
613
614         * ra-conflict.c: Include "sparseset.h".
615         (conflicts): Change to HOST_WIDEST_FAST_INT.
616         (allocnos_live): Redefine variable as a sparseset.
617         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE, GET_ALLOCNO_LIVE): Delete macros.
618         (allocno_row_words): Removed global variable.
619         (partial_bitnum, max_bitnum, adjacency_pool, adjacency): New variables.
620         (CONFLICT_BITNUM, CONFLICT_BITNUM_FAST): New defines.
621         (conflict_p, set_conflict_p, set_conflicts_p): New functions.
622         (record_one_conflict_between_regnos): Cache allocno values and reuse.
623         Use set_conflict_p.
624         (record_one_conflict): Update uses of allocnos_live to use
625         the sparseset routines.  Use set_conflicts_p.
626         (mark_reg_store): Likewise.
627         (set_reg_in_live): Likewise.
628         (global_conflicts): Update uses of allocnos_live.
629         Use the new adjacency list to visit an allocno's neighbors
630         rather than iterating over all possible allocnos.
631         Call set_conflicts_p to setup conflicts rather than adding
632         them manually.
633         * global.c: Comments updated.  
634         (CONFLICTP): Delete define.
635         (regno_compare): New function.  Add prototype.
636         (global_alloc): Sort the allocno to regno mapping according to
637         which basic blocks the regnos are referenced in.  Modify the
638         conflict bit matrix to a compressed triangular bitmatrix.
639         Only allocate the conflict bit matrix and adjacency lists if
640         we are actually going to allocate something.
641         (expand_preferences): Use conflict_p.  Update uses of allocnos_live.
642         (prune_preferences): Use the FOR_EACH_CONFLICT macro to visit an
643         allocno's neighbors rather than iterating over all possible allocnos.
644         (mirror_conflicts): Removed function.
645         (dump_conflicts): Iterate over regnos rather than allocnos so
646         that all dump output will be sorted by regno number.
647         Use the FOR_EACH_CONFLICT macro.
648         * ra.h: Comments updated.
649         (conflicts): Update prototype to HOST_WIDEST_FAST_INT.
650         (partial_bitnum, max_bitnum, adjacency, adjacency_pool): Add prototypes.
651         (ADJACENCY_VEC_LENGTH, FOR_EACH_CONFLICT): New defines.
652         (adjacency_list_d, adjacency_iterator_d): New types.
653         (add_neighbor, adjacency_iter_init, adjacency_iter_done,
654         adjacency_iter_next, regno_basic_block): New static inline functions.
655         (EXECUTE_IF_SET_IN_ALLOCNO_SET): Removed define.
656         (conflict_p): Add function prototype.
657         * sparseset.h, sparseset.c: New files.
658         * Makefile.in (OBJS-common): Add sparseset.o.
659         (sparseset.o): New rule.
660
661 2007-10-05  Richard Guenther  <rguenther@suse.de>
662
663         PR middle-end/33666
664         * fold-const.c (fold_unary): Do not fold (long long)(int)ptr
665         to (long long)ptr.
666
667 2007-10-05  Michael Matz  <matz@suse.de>
668
669         PR inline-asm/33600
670         * function.c (match_asm_constraints_1): Check for input
671         being used in the outputs.
672
673 2007-10-05  Richard Guenther  <rguenther@suse.de>
674
675         * tree-cfg.c (verify_gimple_expr): Accept OBJ_TYPE_REF.
676
677 2007-10-05  Richard Sandiford  <rsandifo@nildram.co.uk>
678
679         PR target/33635
680         * config/mips/mips.c (mips_register_move_cost): Rewrite to use
681         subset checks.  Make the cost of FPR -> FPR moves depend on
682         mips_mode_ok_for_mov_fmt_p.
683
684 2007-10-04  Doug Kwan  <dougkwan@google.com>
685
686         * gthr-posix.h (__gthread_cond_broadcast, __gthread_cond_wait,
687         __gthread_cond_wait_recursive): Add to extend interface for POSIX
688         conditional variables. (__GTHREAD_HAS_COND): Macro defined to signify
689         support of conditional variables.
690         * gthr-posix95.h (__gthread_cond_broadcast, __gthread_cond_wait,
691         __gthread_cond_wait_recursive): Add to extend interface for POSIX
692         conditional variables. (__GTHREAD_HAS_COND): Macro defined to signify
693         support of conditional variables.
694         * gthr-single.h (__gthread_cond_broadcast, __gthread_cond_wait,
695         __gthread_cond_wait_recursive): Add to extend interface for POSIX
696         conditional variables.
697         * gthr.h: Update comments to document new interface.
698
699 2007-10-04  Geoffrey Keating  <geoffk@apple.com>
700
701         * cgraphunit.c (cgraph_build_static_cdtor): Don't set
702         DECL_IGNORED_P.
703
704 2007-10-04  Anatoly Sokolov <aesok@post.ru>
705
706         * config/avr/avr.c (expand_epilogue): Don't set RTX_FRAME_RELATED_P.
707
708 2007-10-04  Richard Guenther  <rguenther@suse.de>
709
710         PR middle-end/33641
711         * tree-cfg.c (verify_gimple_expr): Operand one of POINTER_PLUS_EXPR
712         does not need to be of INTEGER_TYPE.
713         (verify_gimple_2): New function split out from ...
714         (verify_gimple_1): ... here.  ICE if there was an error during
715         verification.
716
717 2007-10-04  Michael Matz  <matz@suse.de>
718
719         PR rtl-optimization/33653
720         * dce.c (deletable_insn_p_1): Use volatile_refs_p().
721         * dse.c (scan_insn): Same.
722
723 2007-10-04  Kazu Hirata  <kazu@codesourcery.com>
724
725         * config.gcc: Remove USE_GAS for m68k targets.
726
727 2007-10-04  Richard Guenther  <rguenther@suse.de>
728
729         PR tree-optimization/33627
730         * tree-gimple.h (canonicalize_cond_expr_cond): Declare.
731         * tree-gimple.c (canonicalize_cond_expr_cond): New function,
732         split out from ...
733         * tree-ssa-forwprop.c (combine_cond_expr_cond): ... here.
734         * tree-ssa-ifcombine.c (ifcombine_iforif): Use it.
735
736 2007-10-04  Anatoly Sokolov <aesok@post.ru>
737
738         * config/avr/avr.c (commands_in_file, commands_in_prologues, 
739         commands_in_epilogues): Remove variables.
740         (avr_file_start): Remove unneded initializations of commands_in_file,
741         commands_in_prologues and commands_in_epilogues variables.
742         (avr_file_end): Remove dead code.
743
744 2007-10-04  Kazu Hirata  <kazu@codesourcery.com>
745
746         * config/m68k/m68k.c (m68k_output_movem): Use the MOTOROLA if
747         MOTOROLA is to true.
748
749 2007-10-03  Richard Sandiford  <rsandifo@nildram.co.uk>
750
751         PR target/33635
752         * config/mips/mips-protos.h (mips_split_64bit_move): Rename to...
753         (mips_split_doubleword_move): ...this.
754         * config/mips/mips.c (mips_subword): Extend to handle 64-bit words;
755         use natural endianness for multi-format FPR values.
756         (mips_split_64bit_move): Rename to...
757         (mips_split_doubleword_move): ...this and extend to 64-bit words.
758         Use move_doubleword_fpr* patterns for moves involving FPRs.
759         (mips_save_reg): Update the call to mips_split_64bit_move.
760         (mips_secondary_reload_class): Return NO_REGS for any reload of a
761         nonzero constant into an FPR if the constant can be forced to memory.
762         * config/mips/mips.md: Update the splitter calls to
763         mips_split_64bit_move.
764         (UNSPEC_LOAD_DF_LOW): Rename to...
765         (UNSPEC_LOAD_LOW): ...this.
766         (UNSPEC_LOAD_DF_HIGH): Rename to...
767         (UNSPEC_LOAD_HIGH): ...this.
768         (UNSPEC_STORE_DF_HIGH): Rename to...
769         (UNSPEC_STORE_WORD): ...this.
770         (SPLITF): New mode iterator.
771         (HALFMODE): New mode attribute.
772         (movtf): New expander.
773         (*movtf_internal): New define_insn_and_split.
774         (move_doubleword_fpr<mode>): New expander.
775         (load_df_low, load_df_high, store_df_high, mthc1, mfhc1): Replace
776         with...
777         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
778         (mfhc1<mode>): ...these more general patterns.
779
780 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
781
782         * cfgrtl.c (rtl_block_ends_with_call_p): Skip notes at the end.
783
784 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
785
786         * gcse.c (hash_scan_set): Insert set in insn before note at
787         the end of basic block.
788
789 2007-10-03  Sebastian Pop  <sebastian.pop@amd.com>
790
791         PR tree-optimization/33576
792         * testsuite/gcc.dg/tree-ssa/pr33576.c: New.
793         * tree-loop-linear.c (linear_transform_loops): Call remove_iv.
794         * lambda.h (lambda_loopnest_to_gcc_loopnest): New parameter.
795         (remove_iv): Declared.
796         * lambda-code.c (remove_iv): Not static.
797         (lambda_loopnest_to_gcc_loopnest): New parameter remove_ivs.
798         Don't remove ivs there, save ivs in the buffer.
799
800 2007-10-03  Jason Merrill  <jason@redhat.com>
801
802         PR c++/15764
803         * tree-eh.c (same_handler_p): New fn.
804         (optimize_double_finally): New fn.
805         (refactor_eh_r): New fn.
806         (refactor_eh): New fn.
807         (pass_refactor_eh): New pass.
808         * tree-pass.h: Declare it.
809         * passes.c (init_optimization_passes): Add it.
810
811 2007-10-03  Doug Kwan  <dougkwan@google.com>
812         Richard Guenther  <rguenther@suse.de>
813
814         PR debug/31899
815         * dwarf2out.c (reference_to_unused): Disable sanity checking,
816         be conservative instead.
817
818 2007-10-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
819
820         PR fortran/26682
821         * doc/invoke.texi (-fwhole-program): Document that Fortran
822         doesn't support this option.
823
824 2007-10-02  Richard Sandiford  <rsandifo@nildram.co.uk>
825
826         PR middle-end/33617
827         * expr.c (expand_expr_addr_expr_1): Pass CONSTRUCTORs to
828         expand_expr.
829
830 2007-10-02  David Daney  <ddaney@avtrex.com>
831
832         * config/mips/mips.md (sync_compare_and_swap<mode>): Handle compare
833         against constant zero.
834         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP):  Handle constant zero
835         operand.
836
837 2007-09-02  Kenneth Zadeck <zadeck@naturalbridge.com>
838
839         * ra-conflict.c: New file.
840         * ra.h: New file.
841         * reload.c (push_reload, find_dummy_reload): Change DF_RA_LIVE
842         usage to DF_LIVE usage.
843         (reload): Remove reference to df_get_live_top.
844         * rtlanal.c (subreg_nregs_with_regno): New function.  
845         * df-scan.c (df_def_record_1, df_uses_record): Add code to set
846         DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, and DF_REF_SUBREG flags.
847         (df_has_eh_preds): Removed.
848         (df_bb_refs_collect, df_bb_refs_collect, df_bb_refs_collect,
849         df_exit_block_uses_collect): Changed call from df_has_eh_preds to
850         bb_has_eh_pred.
851         * global.c (allocno, max_allocno, conflicts, allocno_row_words,
852         reg_allocno, EXECUTE_IF_SET_IN_ALLOCNO_SET): Moved to ra.h
853         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE): Moved to ra-conflicts.c.
854         (regs_set, record_one_conflict, record_conflicts, mark_reg_store,
855         mark_reg_clobber, mark_reg_conflicts, mark_reg_death): Deleted.
856         (global_alloc): Turn off rescanning insns after call to
857         global_conflicts and added call to set_preferences.
858         (global_conflicts): Moved to ra-alloc.c.
859         (set_preferences_1, set_preferences): New function.
860         (mirror_conflicts): Changed types for various variables.
861         (mark_elimination): Change DF_RA_LIVE
862         usage to DF_LIVE usage.
863         (build_insn_chain): Rewritten from scratch and made local.
864         (print_insn_chain, print_insn_chains): New functions.
865         (dump_conflicts): Do not print conflicts for fixed_regs.
866         (rest_of_handle_global_alloc): Turn off insn rescanning.
867         * hard-reg-set.h: Fixed comment.
868         * local-alloc.c (update_equiv_regs): Change DF_RA_LIVE
869         usage to DF_LIVE usage and delete refs to TOP sets.
870         (block_alloc): Mark regs as live if they are in the artificial
871         defs at top of block.
872         (find_stack_regs): New function.
873         (rest_of_handle_local_alloc): Changed urec problem to live
874         problem and do not turn off df rescanning.
875         * df.h (DF_UREC, DF_UREC_BB_INFO, DF_LIVE_TOP, DF_RA_LIVE_IN,
876         DF_RA_LIVE_TOP, DF_RA_LIVE_OUT, df_urec_bb_info, df_urec,
877         df_urec_add_problem, df_urec_get_bb_info, df_has_eh_preds): Removed.
878         (DF_CHAIN, DF_NOTE, DF_CHAIN): Renumbered.
879         (DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, DF_REF_SUBREG): New
880         fields in df_ref_flags.  The rest have been renumbered.  
881         * init-regs.c (initialize_uninitialized_regs): Enhanced debugging
882         at -O1.
883         * rtl.h (subreg_nregs_with_regno): New function.
884         * df-problems.c: (df_get_live_out, df_get_live_in,
885         df_get_live_top): Removed reference to DF_RA_LIVE.
886         (df_lr_reset, df_lr_transfer_function, df_live_free_bb_info,
887         df_live_alloc, df_live_reset, df_live_local_finalize,
888         df_live_free): Make top set only if different from in set.
889         (df_lr_top_dump, df_live_top_dump): Only print top set if
890         different from in set.
891         (df_lr_bb_local_compute): Removed unnecessary check.
892         (df_urec_problem_data, df_urec_set_bb_info, df_urec_free_bb_info, 
893         df_urec_alloc, df_urec_mark_reg_change, earlyclobber_regclass, 
894         df_urec_check_earlyclobber, df_urec_mark_reg_use_for_earlyclobber,
895         df_urec_mark_reg_use_for_earlyclobber_1, df_urec_bb_local_compute,
896         df_urec_local_compute, df_urec_init, df_urec_local_finalize, 
897         df_urec_confluence_n, df_urec_transfer_function, df_urec_free, 
898         df_urec_top_dump, df_urec_bottom_dump, problem_UREC,
899         df_urec_add_problem): Removed.
900         (df_simulate_fixup_sets): Changed call from df_has_eh_preds to
901         bb_has_eh_pred. 
902         * Makefile.in (ra-conflict.o, ra.h): New dependencies.
903         * basic_block.h (bb_has_abnormal_pred): New function.
904         * reload1.c (compute_use_by_pseudos): Change DF_RA_LIVE
905         usage to DF_LIVE usage.
906         
907 2007-10-02  Revital Eres  <eres@il.ibm.com>
908
909         * config/rs6000/predicates.md (easy_vector_constant): Return false
910         for 750CL paired vectors.
911         * config/rs6000/paired.md (movv2sf_paired): Fix move of easy
912         vector constant.
913         (vec_initv2sf): Add new description.
914         (vconcatsf): Likewise.
915         * config/rs6000/rs6000-protos.h: Declare paired_expand_vector_init.
916         * config/rs6000/rs6000.c (paired_expand_vector_init): New function.
917
918 2007-10-01  Alexandre Oliva  <aoliva@redhat.com>
919
920         * tree-ssa-sink.c (sink_code_in_bb): Don't stop sinking after
921         sinking the last stmt in a BB.
922
923 2007-10-01  Alexandre Oliva  <aoliva@redhat.com>
924
925         PR middle-end/22156
926         * tree-sra.c (struct sra_elt): Add in_bitfld_block.
927         (sra_hash_tree): Handle BIT_FIELD_REFs.
928         (sra_elt_hash): Don't hash bitfld blocks.
929         (sra_elt_eq): Skip them in parent compares as well.  Handle
930         BIT_FIELD_REFs.
931         (build_element_name_1): Handle BIT_FIELD_REFs.
932         (instantiate_element): Propagate nowarn from parents.  Create
933         BIT_FIELD_REF for variables that are widened by scalarization.
934         Gimple-zero-initialize all bit-field variables that are not
935         part of parameters that are going to be scalarized on entry.
936         (instantiate_missing_elements_1): Return the sra_elt.
937         (canon_type_for_field): New.
938         (try_instantiate_multiple_fields): New.  Infer widest possible
939         access mode from decl or member type, but clip it at word
940         size, and only widen it if a field crosses an alignment
941         boundary.
942         (instantiate_missing_elements): Use them.
943         (generate_one_element_ref): Handle BIT_FIELD_REFs.
944         (scalar_bitfield_p): New.
945         (sra_build_assignment): Optimize assignments from scalarizable
946         BIT_FIELD_REFs.  Use BITS_BIG_ENDIAN to determine shift
947         counts.
948         (REPLDUP): New.
949         (sra_build_bf_assignment): New.  Optimize assignments to
950         scalarizable BIT_FIELD_REFs.
951         (sra_build_elt_assignment): New.  Optimize BIT_FIELD_REF
952         assignments to full variables.
953         (generate_copy_inout): Use the new macros and functions.
954         (generate_element_copy): Likewise.  Handle bitfld differences.
955         (generate_element_zero): Don't recurse for blocks.  Use
956         sra_build_elt_assignment.
957         (generate_one_element_init): Take elt instead of var.  Use
958         sra_build_elt_assignment.
959         (generate_element_init_1): Adjust.
960         (bitfield_overlap_info): New struct.
961         (bitfield_overlaps_p): New.
962         (sra_explode_bitfield_assignment): New.  Adjust widened
963         variables to account for endianness.
964         (sra_sync_for_bitfield_assignment): New.
965         (scalarize_use): Re-expand assignment to/from scalarized
966         BIT_FIELD_REFs.  Explode or sync needed members for
967         BIT_FIELD_REFs accesses or assignments.  Use REPLDUP.
968         (scalarize_copy): Use REPLDUP.
969         (scalarize_ldst): Move assert before dereference.  Adjust EH
970         handling.
971         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
972
973 2007-10-01  Paolo Bonzini  <bonzini@gnu.org>
974
975         * simplify-rtx.c (comparison_result, simplify_relational_operation_1):
976         Rename CR_* constants to CMP_*.  Fix spacing.
977
978 2007-10-01  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
979
980         PR other/33585
981         * Makefile.in (build_html_dir/gccinstall): gccinstall.texi needs
982         to be processed with the special script doc/install.texi2html.
983         
984 2007-09-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
985
986         * doc/invoke.texi (Wall): List the options enabled by Wall.
987         (Wstrict-aliasing): Add missing @option.
988         
989 2007-09-30  Richard Sandiford  <rsandifo@nildram.co.uk>
990
991         * config/mips/mips.c (mips_split_64bit_move): Use gen_rtx_REG_offset
992         rather than gen_lowpart to change a register from DImode to DFmode.
993         (mips_cannot_change_mode_class): Only allow FPRs to change mode if
994         both FROM and TO are integer modes that are no bigger than 4 bytes.
995         (mips_mode_ok_for_mov_fmt_p): New function.
996         (mips_preferred_reload_class): Use it instead of FLOAT_MODE_P.
997         (mips_secondary_reload_class): Tweak formatting and comments.
998         Use reg_class_subset_p instead of direct comparisons with
999         classes.  Only allow direct FPR<->FPR moves for modes that
1000         satisfy mips_mode_ok_for_mov_fmt_p.  Only allow loads and stores
1001         for 4- and 8-byte types.  Handle reloads in which X is an FPR.
1002         * config/mips/mips.md (*movdi_gp32_fp64): Remove f<-f alternative.
1003         (*movdi_64bit): Likewise.
1004         (*movsi_internal): Likewise.
1005         (*movhi_internal): Likewise.
1006         (*movqi_internal): Likewise.
1007
1008 2007-09-30  Diego Novillo  <dnovillo@google.com>
1009
1010         PR 33593
1011         * tree-ssa-ter.c (is_replaceable_p): Return false if STMT may
1012         throw an exception.
1013
1014 2007-09-30  Uros Bizjak  <ubizjak@gmail.com>
1015
1016         PR tree-optimization/33597
1017         * tree-vect-analyze.c (vect_build_slp_tree): Check if optab handler
1018         for LSHIFT_EXPR and RSHIFT_EXPR is available for vec_mode.
1019
1020 2007-09-28  Uros Bizjak  <ubizjak@gmail.com>
1021
1022         * config/i386/i386.c (ix86_expand_move): Use can_create_pseudo_p ()
1023         instead of variants of (!reload_in_progress && !reload_completed).
1024         (x86_expand_vector_move): Ditto.
1025
1026 2007-09-28  Ollie Wild  <aaw@google.com>
1027
1028         Revert
1029         2007-09-27  Ollie Wild  <aaw@google.com>
1030
1031         * varasm.c (compare_constant): Removed call to
1032         lang_hooks.expand_constant.
1033         (copy_constants): Removed call to lang_hooks.expand_constant.
1034         (compute_reloc_for_constant): Removed call to
1035         lang_hooks.expand_constant.
1036         (output_addressed_constants): Removed call to
1037         lang_hooks.expand_constant.
1038         (constructor_static_from_elts_p): Removed call to
1039         lang_hooks.expand_constant.
1040         (output_constant): Removed calls to lang_hooks.expand_constant.
1041         * langhooks.h (struct lang_hooks): Removed field expand_constant.
1042         * langhooks-def.h (lhd_return_tree): Removed.
1043         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
1044         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
1045         * langhooks.c (lhd_return_tree): Removed.
1046
1047 2007-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1048
1049         PR target/33347
1050         * config/spu/spu.c (spu_expand_insv): Call copy_rtx on the second
1051         argument to gen_selb.
1052
1053 2007-09-28  Chao-ying Fu  <fu@mips.com>
1054
1055         * libgcc-std.ver: Add fixed-point routines to GCC_4.3.0 section.
1056         * doc/libgcc.texi (Fixed-point fractional library routines):
1057         Fix typos for neg and cmp functions.
1058
1059 2007-09-28  Michael Matz  <matz@suse.de>
1060
1061         PR rtl-optimization/33552
1062         * function.c (match_asm_constraints_1): Check for overlap in
1063         inputs and replace all occurences.
1064
1065 2007-09-28  Richard Sandiford  <rsandifo@nildram.co.uk>
1066
1067         * config/mips/mips.c (override_options): Fix comment typo.
1068
1069 2007-09-28  Jie Zhang  <jie.zhang@analog.com>
1070
1071         * config.gcc (bfin*-linux-uclibc*): Set extra_parts
1072         to "crtbegin.o crtbeginS.o crtend.o crtendS.o".
1073         * config/bfin/t-bfin-linux (crti.o): Don't build.
1074         (crtn.o): Likewise.
1075         (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
1076         * config/bfin/t-bfin-uclinux (crti.o): Don't build.
1077         (crtn.o): Likewise.
1078         (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
1079
1080 2007-09-27  Ollie Wild  <aaw@google.com>
1081
1082         * varasm.c (compare_constant): Removed call to
1083         lang_hooks.expand_constant.
1084         (copy_constants): Removed call to lang_hooks.expand_constant.
1085         (compute_reloc_for_constant): Removed call to
1086         lang_hooks.expand_constant.
1087         (output_addressed_constants): Removed call to
1088         lang_hooks.expand_constant.
1089         (constructor_static_from_elts_p): Removed call to
1090         lang_hooks.expand_constant.
1091         (output_constant): Removed calls to lang_hooks.expand_constant.
1092         * langhooks.h (struct lang_hooks): Removed field expand_constant.
1093         * langhooks-def.h (lhd_return_tree): Removed.
1094         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
1095         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
1096         * langhooks.c (lhd_return_tree): Removed.
1097
1098 2007-09-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1099
1100         PR middle-end/33436
1101         * expr.c (emit_group_load_1): Split constant double when destination
1102         length is half source length.
1103
1104 2007-09-27  Richard Sandiford  <rsandifo@nildram.co.uk>
1105
1106         * config/mips/mips.h (PTF_AVOID_BRANCHLIKELY): New macro.
1107         (mips_cpu_info): Add tune_flags.
1108         (GENERATE_BRANCHLIKELY): Remove TARGET_SR71K check.
1109         * config/mips/mips.c (mips_cpu_info_table): Add tune_flags fields.
1110         Remove end marker.
1111         (override_options): Remove deprecation code.  Use branch-likely
1112         instructions for optimize_size or if the tuning flags do not
1113         suggest otherwise.  Tweak warning.
1114         (mips_matching_cpu_name_p, mips_parse_cpu): Use ARRAY_SIZE.
1115
1116 2007-09-27  Matthias Klose  <doko@ubuntu.com>
1117
1118         * config/i386/t-linux64 (MULTILIB_OSDIRNAMES): Use ../lib32 as the
1119         multilib osdirname if it exists.
1120         * config/rs6000/t-linux64 (MULTILIB_OSDIRNAMES): Likewise.
1121
1122 2007-09-27  Ian Lance Taylor  <iant@google.com>
1123
1124         PR tree-optimization/33565
1125         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING on
1126         assignments of comparisons.
1127         * tree-ssa-sccvn.c (simplify_binary_expression): Add stmt
1128         parameter.  Change caller.  Defer overflow warnings around call to
1129         fold_binary.
1130         * fold-const.c (fold_undefer_overflow_warnings): Don't warn if
1131         TREE_NO_WARNING is set on the statement.
1132         * tree-ssa-forwprop.c
1133         (tree_ssa_forward_propagate_single_use_vars): Don't test
1134         TREE_NO_WARNING when calling fold_undefer_overflow_warnings.
1135         * tree-cfg.c (fold_cond_expr_cond): Likewise.
1136
1137 2007-09-27  Joseph Myers  <joseph@codesourcery.com>
1138
1139         * config/rs6000/rs6000.c (rs6000_legitimize_address): Do not
1140         reduce offset by units of 0x10000 for SPE vector modes or modes
1141         used with E500 double instructions.
1142
1143 2007-09-04  Paolo Bonzini  <bonzini@gnu.org>
1144
1145         * simplify-rtx.c (comparison_result): New.
1146         (simplify_const_relational_operation): Use it instead of the five
1147         "equal|op[01]ltu?" variables; consequently remove redundant "else"s.
1148         Improve bounds-checking optimizations; remove subsumed POPCOUNT
1149         optimizations.  Extract nonzero_address_p optimizations into a
1150         separate "if" together with optimizations where op1 is const0_rtx.
1151         Optimize comparing an IOR with zero.  Simplify op0 RELOP op0 for
1152         floating-point arguments too when appropriate.  Hoist test for ABS
1153         outside the final switch statement.
1154         * cse.c (fold_rtx): Don't look for an IOR equivalent of
1155         folded_arg0 if we found a constant equivalent.  Remove
1156         transformations done in simplify-rtx.c for "op0 RELOP op0".
1157
1158 2007-09-27  Jakub Jelinek  <jakub@redhat.com>
1159
1160         * builtins.c (expand_builtin, expand_builtin_object_size,
1161         expand_builtin_memory_chk, maybe_emit_chk_warning,
1162         maybe_emit_sprintf_chk_warning): Use new %K format string specifier
1163         for diagnostics.
1164         * expr.c (expand_expr_real_1): Likewise.
1165         * langhooks-def.h (struct diagnostic_info): Add forward decl.
1166         (lhd_print_error_function): Add third argument.
1167         * langhooks.h (struct diagnostic_info): Add forward decl.
1168         (struct lang_hooks): Add third argument to print_error_function.
1169         * diagnostic.h (diagnostic_info): Add abstract_origin field.
1170         (diagnostic_last_function_changed, diagnostic_set_last_function): Add
1171         second argument.
1172         (diagnostic_report_current_function): Likewise.
1173         * toplev.c (announce_function): Pass NULL as second argument to
1174         diagnostic_set_last_function.
1175         * diagnostic.c (diagnostic_report_current_function): Add second
1176         argument, pass it as third argument to lang_hooks.print_error_function.
1177         (default_diagnostic_starter): Pass DIAGNOSTIC as second argument
1178         to diagnostic_report_current_function.
1179         (diagnostic_report_diagnostic): Initialize diagnostic->abstract_origin
1180         and message.abstract_origin.
1181         (verbatim): Initialize abstract_origin.
1182         * pretty-print.h (text_info): Add abstract_origin field.
1183         * pretty-print.c (pp_base_format): Handle %K.
1184         * langhooks.c (lhd_print_error_function): Add third argument.  If
1185         diagnostic->abstract_origin, print virtual backtrace.
1186         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
1187         gcc_cdiag_char_table, gcc_cxxdiag_char_table): Support %K.
1188         (init_dynamic_diag_info): Likewise.
1189
1190 2007-09-26  David Daney  <ddaney@avtrex.com>
1191
1192         PR target/33479
1193         * config/mips/mips.md (sync_compare_and_swap<mode>, sync_old_add<mode>,
1194         sync_new_add<mode>, sync_old_<optab><mode>, sync_new_<optab><mode>,
1195         sync_old_nand<mode>, sync_new_nand<mode>,
1196         sync_lock_test_and_set<mode>): Fix '&' constraint modifiers.
1197         Update length attributes.
1198         (sync_add<mode>, sync_sub<mode>, sync_old_sub<mode>,
1199         sync_new_sub<mode>, sync_<optab><mode>, sync_nand<mode>): Update
1200         length attributes.
1201         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP,
1202         MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND,
1203         MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Add
1204         post-loop sync.
1205
1206 2007-09-26  Richard Guenther  <rguenther@suse.de>
1207
1208         PR tree-optimization/33563
1209         * tree-ssa-dse.c (get_use_of_stmt_lhs): Rename to ...
1210         (get_kill_of_stmt_lhs): ... this.  Re-structure.  Handle
1211         aggregate stores.
1212         (dse_optimize_stmt): Call get_kill_of_stmt_lhs instead of
1213         get_use_of_stmt_lhs.
1214
1215 2007-09-26  Joseph Myers  <joseph@codesourcery.com>
1216
1217         PR c/25309
1218         * c-common.c (complete_array_type): Diagnose too-large arrays and
1219         set type to error_mark_node.
1220
1221 2007-09-26  Richard Guenther  <rguenther@suse.de>
1222
1223         PR tree-optimization/30375
1224         PR tree-optimization/33560
1225         * tree-ssa-dse.c (get_use_of_stmt_lhs): Give up on uses
1226         with calls.
1227
1228         Revert
1229         2006-05-22  Aldy Hernandez  <aldyh@redhat.com>
1230
1231         * tree-ssa-dse.c (aggregate_vardecl_d): New.
1232         (dse_global_data): Add aggregate_vardecl field.
1233         (dse_possible_dead_store_p): New.
1234         Add prev_defvar variable.
1235         Allow immediate uses and previous immediate uses to differ
1236         if they are setting different parts of the whole.
1237         (get_aggregate_vardecl): New.
1238         (dse_record_partial_aggregate_store): New.
1239         (dse_whole_aggregate_clobbered_p): New.
1240         (dse_partial_kill_p): New.
1241         Call dse_maybe_record_aggregate_store().
1242         When checking whether a STMT and its USE_STMT refer to the
1243         same memory address, check also for partial kills that clobber
1244         the whole.
1245         Move some variable definitions to the block where they are used.
1246         (aggregate_vardecl_hash): New.
1247         (aggregate_vardecl_eq): New.
1248         (aggregate_vardecl_free): New.
1249         (aggregate_whole_store_p): New.
1250         (tree_ssa_dse): Initialize and free aggregate_vardecl.
1251         Mark which aggregate stores we care about.
1252
1253 2007-09-25  DJ Delorie  <dj@redhat.com>
1254
1255         PR target/33551
1256         * config/m32c/m32c.c (m32c_immd_dbl_mov): Use INTVAL instead of
1257         XINT.
1258
1259 2007-09-25  Michael Meissner  <michael.meissner@amd.com>
1260
1261         PR target/33524
1262         * config/i386/i386.c (ix86_expand_sse5_unpack): Change to call
1263         gen_sse5_pperm_sign_v4si_v2di and gen_sse5_pperm_zero_v4si_v2di
1264         for vector int32 -> int64 conversions.  Don't write beyond the end
1265         of the allocated vector for int32 -> int64 conversions.
1266
1267 2007-09-25  Revital Eres  <eres@il.ibm.com>
1268
1269         * config/rs6000/paired.h (paired_sel): New.
1270         * config/rs6000/rs6000.c (bdesc_3arg): Add selv2sf4.
1271         (rs6000_expand_ternop_builtin): Pass zero const_double operand
1272         when expanding selv2sf.
1273         * config/rs6000/rs6000.h (rs6000_builtins): Add
1274         PAIRED_BUILTIN_SELV2SF4.
1275
1276 2007-09-25  Joseph Myers  <joseph@codesourcery.com>
1277
1278         PR c/32295
1279         * c-typeck.c (default_conversion): Call require_complete_type
1280         before perform_integral_promotions.
1281         (build_unary_op): Call require_complete_type except for ADDR_EXPR.
1282         (build_c_cast): Call require_complete_type except for casts to
1283         void types.
1284         (convert_for_assignment): Call require_complete_type.
1285
1286 2007-09-25  Revital Eres  <eres@il.ibm.com>
1287
1288         * config/spu/spu.md: Fix doloop pattern.
1289
1290 2007-09-25  Bernd Schmidt  <bernd.schmidt@analog.com>
1291
1292         * config/bfin/bfin.c (expand_prologue_reg_save,
1293         expand_epilogue_reg_restore): Code to save and restore I/M/B/L regs and
1294         ASTAT moved here...
1295         (expand_interrupt_handler_prologue, expand_interrupt_handler_epilogue):
1296         ... from here.  New argument ALL; callers changed.
1297         (n_regs_saved_by_prologue): Count ASTAT for plain saveall functions.
1298         (bfin_expand_prologue, bfin_expand_epilogue): Deal with functions that
1299         have the "saveall" attribute.
1300
1301 2007-09-25  Hans-Peter Nilsson  <hp@bitrange.com>
1302
1303         * config/mmix/mmix.h (FUNCTION_INCOMING_ARG_REGNO_P): Don't define
1304         bogus target macro.
1305         (INCOMING_REGNO, OUTGOING_REGNO): Define.
1306         * config/mmix/mmix.c (mmix_opposite_regno): New function.
1307         * config/mmix/mmix-protos.h (mmix_opposite_regno): Prototype.
1308
1309         * config/mmix/mmix.md ("*cmpcc_folded"): In condition, gate
1310         with REG_P tests before REGNO access.
1311
1312 2007-09-24  DJ Delorie  <dj@redhat.com>
1313
1314         PR target/31482
1315         * config/m32c/cond.md (stzx_reversed_<mode>): Add an output
1316         constraint.
1317         (movqicc_<code>_<mode>): Likewise.
1318         (movhicc_<code>_<mode>): Likewise.
1319
1320 2007-09-24  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1321
1322         PR target/33184
1323         * config/m32c/m32c.c (m32c_eh_return_data_regno): Leave an address
1324         register for reload.
1325
1326 2007-09-24  Danny Smith  <dannysmith@user.sourceforge.net>
1327
1328         PR c++/14688
1329         * config/i386/i386.c (ix86_comp_type_attributes): Check
1330         METHOD_TYPE too.
1331
1332 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
1333
1334         * config/m68k/m68k.h (ASM_OUTPUT_ALIGN_WITH_NOP): New, use
1335         "move.l %a4,%a4" to produce nops.
1336         * config/m68k/m68k.c (override_options): Reset align options,
1337         if neccessary align macro isn't avaible.
1338
1339 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
1340
1341         config/m68k/linux.h (PREFERRED_STACK_BOUNDARY): New.
1342
1343 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
1344
1345         * config/m68k/m68k.c (strict_low_part_peephole_ok): Don't leave
1346         the basic block.
1347         * config/m68k/m68k.md (movsi_m68k): Allow certain constant when
1348         reload is completed.
1349         (peephole pattern): Convert most of them to RTL peephole pattern.
1350
1351 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
1352
1353         * config/m68k/m68k.c (notice_update_cc): Recognize fp compare
1354         (moved from fp compare patterns).
1355         * config/m68k/m68k.md (cmp<mode>, cmp<mode>_68881, cmp<mode>_cf):
1356         Cleanup predicates to relieve reload.
1357         (conditional_trap): Reject conditional trap with fp condition.
1358         * gcc/config/m68k/predicates.md (fp_src_operand): New, reject
1359         certain constants early.
1360
1361 2007-09-24  Roman Zippel <zippel@linux-m68k.org>
1362
1363         * gcc/final.c (final_scan_insn): Remove accidentally duplicated code.
1364
1365 2007-09-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1366
1367         * config.gcc (powerpc*-*-*): --with-cpu=cell is a 64bit CPU.
1368         Allow --with-tune=cell and --with-cpu=cell.
1369
1370 2007-09-24  David Edelsohn  <edelsohn@gnu.org>
1371
1372         * config/rs6000/rs6000-protos.h (rs6000_emit_swrsqrtsf): Declare.
1373         * config/rs6000/rs6000.opt (swdiv): Change option to ...
1374         (recip): this.
1375         * config/rs6000/rs6000.c (rs6000_builtin_reciprocal): New
1376         function.
1377         (TARGET_BUILTIN_RECIPROCAL): Use it.
1378         (rs6000_builtin_expand): Expand recip, recipf, and rsqrtf.
1379         (rs6000_init_builtins): Initialize recip, recipf, and rsqrtf.
1380         (rs6000_emit_swrsqrtsf): New.
1381         * config/rs6000/rs6000.h (rs6000_builtins): Add recip, recipf, and
1382         rsqrtf. 
1383         * config/rs6000/rs6000.md (UNSPEC_RSQRT): Define.
1384         (divsf3): Remove swdiv support.
1385         (recipsf3): New.
1386         (rsqrtsf2): New.
1387         (rsqrt_internal1): New.
1388         (divdf3): Remove swdiv support.
1389         (reciptdf3): New.
1390
1391 2007-09-24  Jakub Jelinek  <jakub@redhat.com>
1392
1393         PR c++/33506
1394         * langhooks.h (struct lang_hooks_for_types): Add type_hash_eq
1395         field.
1396         * langhooks-def.h (LANG_HOOKS_TYPE_HASH_EQ): Define.
1397         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_TYPE_HASH_EQ.
1398         * tree.c (type_hash_eq): For FUNCTION_TYPE use
1399         lang_hooks.type.type_hash_eq in addition to generic tests.
1400
1401 2007-09-24  Pranav Bhandarkar  <pranav.bhandarkar@celunite.com>
1402         Ramana Radhakrishnan  <ramana@hercules.pun.celunite.com>
1403
1404         * tree-inline.h (eni_weights): Add field target_builtin_cost to
1405         reflect the cost per call to a target specific builtin.
1406         * tree-inline.c (estimate_num_insns_1): If it is a CALL_EXPR for a
1407         call to a target specific builtin, then use target_builtin_call_cost.
1408         (init_inline_once): Initialize target_builtin_call_cost field.
1409
1410 2007-09-24  Kai Tietz  <kai.tietz@onevision.com>
1411
1412         PR middle-end/33472
1413         * config/i386/i386.c (return_in_memory_ms_64): Handle return types for
1414         complex types.
1415
1416 2007-09-23  H.J. Lu  <hongjiu.lu@intel.com>
1417
1418         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
1419         * configure: Regenerated.
1420
1421 2007-09-23  Ollie Wild  <aaw@google.com>
1422
1423         * fold-const.c (fold_binary): Fold BIT_AND_EXPR's with a pointer
1424         operand.
1425         (get_pointer_modulus_and_residue): New function.
1426
1427 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
1428
1429         * config/mips/mips.c (build_mips16_call_stub): On 64-bit targets,
1430         combine an SC return value into a single register.
1431
1432 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
1433
1434         * opth-gen.awk (target_flags_explicit): Declare.
1435         * toplev.h (target_flags_explicit): Delete declaration.
1436         * toplev.c (target_flags): Likewise.
1437         * config/mips/mips.h (mips_llsc_setting, mips_llsc): Delete.
1438         (GENERATE_SYNC, GENERATE_LL_SC): Redefine using target_explicit_flags.
1439         Never return true for TARGET_MIPS16.
1440         * config/mips/mips.c (mips_llsc): Delete.
1441         (mips_handle_option): Remove -mllsc handling.
1442         (mips_strip_unspec_address): Tweak comment.
1443         * config/mips/mips.opt (mllsc): Use a target mask.
1444
1445 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
1446
1447         * doc/tm.texi (POINTERS_EXTEND_UNSIGNED): Document extensions to
1448         word_mode as well as Pmode.
1449
1450 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
1451
1452         * function.c (assign_parm_setup_block): Explicitly convert BLKmode
1453         parameters from word_mode to the subword type if such a truncation
1454         is not a no-op.
1455
1456 2007-09-23  Jakub Jelinek  <jakub@redhat.com>
1457
1458         * configure.ac (MAKEINFO): Handle makeinfo version 4.10 and above.
1459         * configure: Regenerated.
1460
1461 2007-09-23  Jan Hubicka  <jh@suse.cz>
1462
1463         * params.def (INLINE_CALL_COST): Set to 12.
1464         * invoke.texi (inline-call-cost): Update default value.
1465
1466 2007-09-23  Eric Botcazou  <ebotcazou@adacore.com>
1467
1468         * config/alpha/alpha.md (movti): Use operand_subword for the split.
1469
1470 2007-09-23  Ayal Zaks  <zaks@il.ibm.com>
1471             Revital Eres  <eres@il.ibm.com>
1472
1473         * modulo-sched.c (doloop_register_get): Rewrite the loop which
1474         checks whether the count_reg is found outside the control part.
1475
1476 2007-09-23  Jakub Jelinek  <jakub@redhat.com>
1477
1478         * expr.c (expand_expr_real_1) <case CALL_EXPR>: Use get_callee_fndecl
1479         instead of checking CALL_EXPR_FN directly to test for builtins.
1480         If error or warning attributes are present, print
1481         error resp. warning.
1482         * c-common.c (handle_error_attribute): New function.
1483         (c_common_attribute_table): Add error and warning
1484         attributes.
1485         * doc/extend.texi: Document error and warning attributes.
1486
1487         * tree.h (block_nonartificial_location): New prototype.
1488         * tree.c (block_nonartificial_location): New function.
1489         * dwarf2out.c (gen_subprogram_die): Add DW_AT_artificial
1490         if artificial attribute is present on abstract inline decl.
1491         * c-common.c (handle_artificial_attribute): New function.
1492         (c_common_attribute_table): Add artificial attribute.
1493         * final.c (override_filename, override_linenum): New variables.
1494         (final_scan_insn): For DBX_DEBUG or SDB_DEBUG, set override_filename
1495         and override_linenum if inside of a block inlined from
1496         __attribute__((__artificial__)) function.
1497         (notice_source_line): Honor override_filename and override_linenum.
1498         * doc/extend.texi: Document __attribute__((__artificial__)).
1499         * config/i386/emmintrin.h: Add __artificial__ attribute to
1500         all __always_inline__ functions.
1501         * config/i386/mmintrin.h: Likewise.
1502         * config/i386/tmmintrin.h: Likewise.
1503         * config/i386/mm3dnow.h: Likewise.
1504         * config/i386/pmmintrin.h: Likewise.
1505         * config/i386/ammintrin.h: Likewise.
1506         * config/i386/xmmintrin.h: Likewise.
1507         * config/i386/smmintrin.h: Likewise.
1508         * config/i386/bmmintrin.h: Likewise.
1509         * config/i386/mmintrin-common.h: Likewise.
1510
1511         PR middle-end/28755
1512         * expr.c (expand_constructor): New function.
1513         (expand_expr_real_1) <case CONSTRUCTOR>: Call it.
1514         (expand_expr_real_1) <case ARRAY_REF>: Call it if VALUE is
1515         CONSTRUCTOR.
1516
1517 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
1518
1519         * config/mips/mips.c (dump_constants_1): Generalize to include
1520         fractional and accumulator modes.
1521
1522 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
1523
1524         * config/mips/mips.h (ISA_HAS_DSP, ISA_HAS_DSPR2): New macros.
1525         * config/mips/mips.c (mips_set_mips16_mode): Don't clear the DSP
1526         flags for MIPS16.
1527         (override_options): Check TARGET_HARD_FLOAT_ABI instead of
1528         TARGET_HARD_FLOAT when testing whether -mpaired-single is
1529         supported.
1530         (mips_conditional_register_usage): Check ISA_HAS_DSP instead of
1531         TARGET_DSP.
1532         * config/mips/constraints.md (ka): Check ISA_HAS_DSPR2 instead of
1533         TARGET_DSPR2.
1534         * config/mips/mips.md (ANYF): Require TARGET_HARD_FLOAT for V2SF.
1535         (mulv2sf3, movv2sf, movv2sf_hardfloat_64bit): Require
1536         TARGET_HARD_FLOAT.
1537         (<u>mulsidi3_32bit_internal, <u>msubsidi4, <u>maddsidi4): Check
1538         ISA_HAS_DSPR2 instead of TARGET_HAS_DSPR2.
1539         * config/mips/mips-dsp.md: Use ISA_HAS_DSP instead of TARGET_HAS_DSP
1540         throughout.
1541         * config/mips/mips-dspr2.md: Likewise ISA_HAS_DSPR2 and
1542         TARGET_HAS_DSPR2.
1543         * config/mips/mips-fixed.md: Use ISA_HAS_DSP and ISA_HAS_DSPR2
1544         instead of TARGET_HAS_DSP and TARGET_HAS_DSPR2.
1545         * config/mips/mips-ps-3d.md: Add TARGET_HARD_FLOAT to V2SF patterns.
1546
1547 2007-09-22  Jason Merrill  <jason@redhat.com>
1548
1549         PR c++/19407
1550         * attribs.c (lookup_attribute_spec): Split out...
1551         (decl_attributes): From here.
1552         * tree.h: Declare it.
1553
1554 2007-09-22  Richard Sandiford  <rsandifo@nildram.co.uk>
1555
1556         * doc/sourcebuild.texi: Document dg-add-options mips16_attribute.
1557
1558 2007-09-22  Eric Botcazou  <ebotcazou@adacore.com>
1559
1560         * tree-inline.c (remap_type_1): Correctly chain variants.
1561
1562 2007-09-22  Richard Guenther  <rguenther@suse.de>
1563
1564         PR tree-optimization/33146
1565         * fold-const.c (fold_binary): Use the original tree
1566         for negating.
1567         * tree.h (STRIP_SIGN_NOPS): Converting from or to pointer
1568         also changes "sign".
1569
1570 2007-09-22  Eric Botcazou  <ebotcazou@adacore.com>
1571
1572         PR target/32325
1573         * except.c (finish_eh_generation): Call commit_edge_insertions if
1574         there are insns queued on the entry edge.
1575         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns on
1576         the entry edge.
1577
1578 2007-09-22  Richard Sandiford  <rsandifo@nildram.co.uk>
1579
1580         * doc/sourcebuild.texi (dg-add-c99-runtime-options): Document.
1581
1582 2007-09-19  Michael Meissner  <michael.meissner@amd.com>
1583
1584         * gcc/config/i386/i386.c: Delete trailing whitespace.
1585         * gcc/config/i386/i386.h: Ditto.
1586         * gcc/config/i386/bmmintrin.h: Ditto.
1587         * gcc/config/i386/sync.md: Ditto.
1588         * gcc/config/i386/ppro.md: Ditto.
1589         * gcc/config/i386/mmx.md: Ditto.
1590         * gcc/config/i386/constraints.md: Ditto.
1591         * gcc/config/i386/sse.md: Ditto.
1592         * gcc/config/i386/athlon.md: Ditto.
1593         * gcc/config/i386/i386.md: Ditto.
1594
1595 2007-09-21  Richard Guenther  <rguenther@suse.de>
1596
1597         PR tree-optimization/33508
1598         * tree-ssa-alias.c (mark_aliases_call_clobbered): Avoid
1599         quadratic loop by keeping a bitmap of variables we have
1600         to clobber all subvariables for.
1601         (set_initial_properties): Likewise.
1602
1603 2007-09-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1604
1605         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Delete.
1606
1607 2007-09-20  Nigel Stephens  <nigel@mips.com>
1608             Chao-ying Fu  <fu@mips.com>
1609
1610         * c-decl.c (finish_declspecs): When _Sat is used without
1611         _Fract or _Accum, set the default type to cts_fract.
1612         This avoids a warning of "type defaults to int".
1613
1614 2007-09-20  Joseph Myers  <joseph@codesourcery.com>
1615
1616         * c-decl.c (check_bitfield_type_and_width): Don't allow _Bool
1617         bit-fields wider than one bit.
1618
1619 2007-09-20  Jakub Jelinek  <jakub@redhat.com>
1620
1621         PR debug/33316
1622         * dwarf2out.c (modified_type_die): Handle TYPE_DECL with NULL
1623         DECL_NAME.
1624         * dbxout.c (dbxout_type): Likewise.
1625
1626         PR c/33238
1627         PR c/27301
1628         * gimplify.c (gimplify_vla_decl): New function.
1629         (gimplify_decl_expr): Move VLA decl handling to gimplify_vla_decl.
1630         Call it.
1631         (gimplify_target_expr): Handle variable length TARGET_EXPRs.
1632
1633 2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
1634
1635         * doc/invoke.texi (-minterlink-mips16): Document.
1636         * config/mips/mips.opt (minterlink-mips16): New option.
1637         * config/mips/mips.c (mips_function_ok_for_sibcall): Handle
1638         -minterlink-mips16
1639
1640 2007-09-20  Joseph Myers  <joseph@codesourcery.com>
1641
1642         * doc/extend.texi (Attribute Syntax): Remove old speculative
1643         future direction.
1644
1645 2007-09-20  Mark Shinwell  <shinwell@codesourcery.com>
1646
1647         * combine.c: Include cgraph.h.
1648         (setup_incoming_promotions): Rework to allow more aggressive
1649         elimination of sign extensions when all call sites of the
1650         current function are known to lie within the current unit.
1651
1652 2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
1653
1654         * dse.c (find_shift_sequence): No-op rework of control flow.
1655
1656 2007-09-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1657
1658         * config/mips/mips.c (build_mips16_call_stub): Tidy.  Fix second
1659         GPR for DCmode on 64-bit targets.  Remove redundant fallback.
1660
1661 2007-09-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1662
1663         * cfgexpand.c (dump_stack_var_partition): Use the correct
1664         index for the offset.
1665
1666 2007-09-19  Joseph Myers  <joseph@codesourcery.com>
1667
1668         * config/mips/sde.h: Switch to GPLv3.
1669
1670 2007-09-19  Eric Botcazou  <ebotcazou@adacore.com>
1671
1672         * tree-sra.c (decide_block_copy): Decide if there are groups.
1673
1674 2007-09-19  Roman Zippel <zippel@linux-m68k.org>
1675
1676         * config/m68k/m68k.c (output_move_himode): Remove jump table
1677         recognition.
1678         config/m68k/m68k.md (lea): Likewise.
1679         * config/m68k/m68k.c (print_operand_address): Use simple pc
1680         relative addressing.
1681
1682 2007-09-19  Bernd Schmidt  <bernd.schmidt@analog.com>
1683
1684         * doc/tm.texi (IS_ASM_LOGICAL_LINE_SEPARATOR): Document new argument.
1685         * final.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Provide two-argument
1686         default definition.
1687         (asm_insn_count): Pass template as second argument to it.
1688         * config/avr/avr.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
1689         * config/pa/pa.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
1690         * config/stormy16/stormy16.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
1691         * config/cris/cris.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
1692         * config/sh/sh.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
1693         (sh_insn_length_adjustment): Pass template as second argument to it.
1694         * config/bfin/bfin.h (IS_ASM_LOGICAL_LINE_SEPARATOR): New macro.
1695
1696         * config/bfin/bfin.md (define_asm_attributes): New.
1697
1698 2007-09-19  Jie Zhang  <jie.zhang@analog.com>
1699
1700         * config.gcc (bfin*-linux-uclibc*): Add ./linux-sysroot-suffix.h
1701         to tm_file.
1702         * config/bfin/print-sysroot-suffix.sh: New.
1703         * config/bfin/t-bfin-elf (EXTRA_PARTS): Remove.
1704         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
1705         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
1706         * config/bfin/t-bfin-uclinux (EXTRA_PARTS): Remove.
1707         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
1708         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
1709         * config/bfin/t-bfin-linux (EXTRA_PARTS): Remove.
1710         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
1711         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
1712         (linux-sysroot-suffix.h): New target.
1713         * config/bfin/bfin.opt (mcsync-anomaly): Use Var instead of Mask.
1714         (mspecld-anomaly): Likewise.
1715         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Renamed from
1716         (enum bfin_cpu): ... this. Add BFIN_CPU_BF522, BFIN_CPU_BF525,
1717         BFIN_CPU_BF527, BFIN_CPU_BF538, BFIN_CPU_BF539, BFIN_CPU_BF542,
1718         BFIN_CPU_BF544, BFIN_CPU_BF548, and BFIN_CPU_BF549.
1719         (bfin_si_revision): Declare.
1720         (bfin_workarounds): Declare.
1721         (WA_SPECULATIVE_LOADS): Define.
1722         (ENABLE_WA_SPECULATIVE_LOADS): Define.
1723         (WA_SPECULATIVE_SYNCS): Define.
1724         (ENABLE_WA_SPECULATIVE_SYNCS): Define.
1725         * config/bfin/elf.h (STARTFILE_SPEC): Rename crt532.o to basiccrt.o.
1726         (LIB_SPEC): Add %s to the linker scripts.
1727         Use proper linker script for bf522, bf525, bf527,
1728         bf538, bf539, bf542, bf544, bf548, and bf549.
1729         * config/bfin/bfin.c (bfin_si_revision): Define.
1730         (bfin_workarounds): Define.
1731         (struct bfin_cpu): New.
1732         (bfin_cpus): New.
1733         (bfin_handle_option): Handle silicon revision part of -mcpu option.
1734         (override_options): Set bfin_workarounds.
1735         (length_for_loop): Replace TARGET_CSYNC_ANOMALY with
1736         ENABLE_WA_SPECULATIVE_SYNCS, TARGET_SPECLD_ANOMALY with
1737         ENABLE_WA_SPECULATIVE_LOADS.
1738         (bfin_reorg): Likewise.
1739         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
1740         macros for bf522, bf525, bf527, bf538, bf539,
1741         bf542, bf544, bf548, and bf549.
1742         Define __SILICON_REVISION__ and __WORKAROUND_* macros if needed.
1743         Don't define __ID_SHARED_LIB__ when -msep-data.
1744         (TARGET_DEFAULT): Define as 0.
1745         (DRIVER_SELF_SPECS): Add -mcpu=bf532 if no -mcpu option.
1746         * doc/invoke.texi (Blackfin Options): Document silicon
1747         revision part of -mcpu option and it now accepts bf522, bf525,
1748         bf527, bf538, bf539, bf542, bf544, bf548, and bf549.
1749
1750 2007-09-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1751
1752         * alias.c (memory_modified_1): Deconstify.
1753         (memory_modified_in_insn_p): Don't use const_note_stores.
1754         * rtl.h (const_note_stores): Delete.
1755         * rtlanal.c (const_note_stores): Likewise.
1756
1757 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1758
1759         * dse.c (find_shift_sequence): Temporarily revert to forbidding
1760         word shifts.
1761
1762 2007-09-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1763
1764         PR target/33388
1765         PR target/33397
1766         * config/fr30/fr30.md (addsi3): Check REG_P() before calling REGNO().
1767         (addsi_small_int): Likewise.
1768         (addsi_big_int): Use rtx_equal_p() instead of REGNO() comparison.
1769         (one_cmplsi2): Likewise.
1770         (negsi2): Delete.
1771         (enter_func): Expand insn using hard_frame_pointer_rtx and
1772         stack_pointer_rtx.
1773         (*enter_func): New.
1774         * config/fr30/fr30.c (fr30_expand_prologue): Check for
1775         hard_frame_pointer_rtx instead of using REGNO() check.
1776         Properly sign extend GEN_INT() argument.
1777
1778 2007-09-18  Roman Zippel <zippel@linux-m68k.org>
1779
1780         * config/m68k/m68k.c (override_options): Remove USE_GAS,
1781         use %. syntax.
1782         (output_dbcc_and_branch, output_scc_di): Replace all jbcc
1783         alternatives with just jcc.
1784         * config/m68k/m68k.md (addsi_lshrsi_31, beq0_di, bne0_di,
1785         bge0_di, blt0_di, bgtu, bltu, bgeu, bleu, bgtu_rev,
1786         bltu_rev, bgeu_rev, bleu_rev, jump, dbne_hi, dbne_si,
1787         dbge_hi, dbge_si): Likewise.
1788
1789 2007-09-18  Roman Zippel <zippel@linux-m68k.org>
1790
1791         * config/m68k/m68k.md (beq, bne, bgt, blt, bge, ble, bordered,
1792         bunordered, buneq, bunge, bungt, bunle, bunlt, bltgt, beq_rev,
1793         bne_rev, bgt_rev, blt_rev, bge_rev, ble_rev, bordered_rev,
1794         bunordered_rev, buneq_rev, bunge_rev, bungt_rev, bunle_rev,
1795         bunlt_rev, bltgt_rev): Replace all fbcc with fjcc.
1796
1797 2007-09-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
1798
1799         * config/m68k/m68k-devices.def (51qe): New device.
1800         * config/m68k/m68k.c (FL_FOR_isa_c): Remove division unit.  Add it
1801         to all uses of FL_FOR_isa_c for compatibility.
1802         (all_microarchs): Add cfv1 microarchitecture.
1803         (m68k_handle_option): Handle m51qe option.
1804         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Handle 51QE.
1805         (TUNE_CFV1): New macro.
1806         (enum uarch_type): Add ucfv1.
1807         * doc/invoke.texi: Document 51qe device and cfv1 microarchitecture.
1808         
1809 2007-09-18  Richard Guenther  <rguenther@suse.de>
1810
1811         PR tree-optimization/31863
1812         * tree-ssa-structalias.c (create_variable_info_for): Always
1813         free the fieldstack.
1814
1815 2007-09-18  Dorit Nuzman  <dorit@il.ibm.com>
1816
1817         * opts.c (decode_options): Enable vectorization under -O3.
1818
1819 2007-09-18  Richard Guenther  <rguenther@suse.de>
1820
1821         PR tree-optimization/33340
1822         * tree-ssa-sccvn.c (set_ssa_val_to): Do not set values to
1823         SSA_NAMEs that occur in abnormal PHI nodes.
1824
1825 2007-09-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1826
1827         * tree-cfg.c (is_ctrl_altering_stmt, tree_block_ends_with_call_p):
1828         Don't use const_get_call_expr_in.
1829         * tree-gimple.c (const_get_call_expr_in): Delete.
1830         * tree-gimple.h (const_get_call_expr_in): Likewise.
1831
1832 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1833
1834         * df-scan.c (df_notes_rescan): Do nothing if the instruction does
1835         not yet have a basic block.
1836         * dse.c (find_shift_sequence): Don't set DF_NO_INSN_RESCAN.
1837
1838 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1839
1840         * config/mips/mips.c (mips_file_start): Add ".previous" directives
1841         to both ".section"s.
1842
1843 2007-09-17  Richard Sandiford  <rsandifo@nildram.co.uk>
1844
1845         * config/mips/mips.c (mips_output_mi_thunk): Use
1846         mips_function_ok_for_sibcall and const_call_insn_operand
1847         to determine if a direct sibcall is allowed.  Use
1848         mips_classify_symbol to determine a global pointer is needed.
1849
1850 2007-09-17  Richard Sandiford  <rsandifo@nildram.co.uk>
1851
1852         * config/mips/mips.md (*clear_upper32): Use "W" as the memory operand.
1853
1854 2007-09-17  Chao-ying Fu  <fu@mips.com>
1855             Nigel Stephens  <nigel@mips.com>
1856
1857         * config/fixed-bit.h: New file.
1858         * config/fixed-bit.c: New file.
1859         * doc/libgcc.texi (Fixed-point fractional library routines): New node.
1860
1861 2007-09-18  Jakub Jelinek  <jakub@redhat.com>
1862
1863         * c-format.h (format_kind_info): Add alloc_char field.
1864         * c-format.c (scanf_flag_specs): Add 'm'.
1865         (scanf_flag_pairs): Add 'a', 'm' pair.
1866         (scan_char_table): Allow 'm' modifier for c, s, [, C and S.
1867         (format_types_orig): Add alloc_char fields.
1868         (check_format_info_main): Rename aflag to alloc_flag.
1869         Handle fki->alloc_char. modifier after width and before length
1870         modifiers.  Move FMT_FLAG_SCANF_A_KLUDGE handling before
1871         length modifiers as well.
1872         * config/sol2-c.c (solaris_format_types): Add alloc_char field.
1873
1874         PR middle-end/33423
1875         * builtins.c (expand_builtin_memory_chk): Handle COMPOUND_EXPRs
1876         returned by build_call_expr.
1877
1878 2007-09-17  Eric Botcazou  <ebotcazou@adacore.com>
1879
1880         * tree-sra.c (maybe_lookup_element_for_expr) <COMPONENT_REF>: Return
1881         NULL for variable-sized records too.
1882         (sra_walk_expr) <COMPONENT_REF>: Stop at variable-sized records too.
1883
1884 2007-09-17  Tom Tromey  <tromey@redhat.com>
1885
1886         * c-decl.c (pushdecl): Don't set DECL_LANG_SPECIFIC.
1887         (c_builtin_function): Likewise.
1888         (grokdeclarator): Likewise.
1889
1890 2007-09-17  Zdenek Dvorak  <ook@ucw.cz>
1891
1892         PR rtl-optimization/26449
1893         * loop-invariant.c (move_invariant_reg): Do not use force_operand.
1894         (seq_insns_valid_p): Removed.
1895
1896 2007-09-17  Eric Botcazou  <ebotcazou@adacore.com>
1897
1898         * tree-nomudflap.c (gate_mudflap): New static function.
1899         (pass_mudflap_1): Use it as gate function.
1900         (pass_mudflap_2): Likewise.
1901
1902 2007-09-17  Jan Hubicka  <jh@suse.cz>
1903
1904         PR middle-end/33348
1905         PR target/33406
1906         * loop-invariant.c (move_invariant_reg): Unshare sequence.
1907
1908 2007-09-17  Victor Kaplansky  <victork@il.ibm.com>
1909
1910         PR tree-optimization/33319
1911         * tree-vect-analyze.c (vect_same_range_drs): New.
1912         (vect_vfa_range_equal): New.
1913         (vect_is_duplicate_ddr): Removed.
1914         (vect_mark_for_runtime_alias_test): Do not perform marking when
1915         optimizing for size or max_param for alias checking is zero.
1916         Move the function before vect_analyze_data_ref_dependence.
1917         (vect_analyze_data_ref_dependence): Add call to
1918         vect_mark_for_runtime_alias_test in two cases when dependence
1919         is not clear.
1920         (vect_analyze_data_ref_dependences): Do not call to
1921         vect_mark_for_runtime_alias_test.
1922         (vect_prune_runtime_alias_test_list): New.
1923         (vect_analyze_loop): Add call to vect_prune_runtime_alias_test_list.
1924         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
1925         Update vec_outside_cost.
1926         (vect_vfa_segment_size): More compact code, use TYPE_SIZE_UNIT.
1927         (vect_create_cond_for_alias_checks): Build the base address of data
1928         reference from DR_GROUP_FIRST_DR.
1929         (vect_loop_versioning): New.
1930         (vect_transform_loop): Add a call to vect_loop_versioning.
1931         Remove factored out code.
1932
1933 2007-09-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1934
1935         PR middle-end/33273
1936         * expr.c (store_expr): Call adjust_address to change mode of dest_mem
1937         to BLKmode.
1938
1939 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
1940
1941         * dse.c (find_shift_sequence): Allow word as well as subword shifts.
1942         Do the tentative shift expansion with the DF_NO_INSN_RESCAN flag set.
1943         Fix the call to insn_rtx_cost.  Skip access sizes that require a
1944         real truncation of the store register.  Use convert_move instead
1945         of gen_lowpart when narrowing the result.
1946         (replace_read): Use convert_move instead of gen_lowpart when
1947         narrowing the store rhs.
1948
1949 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
1950
1951         * config/mips/mips.md (SHORT): Fix long line.
1952         (SUBDI): New mode iterator.  Extend the shift-and-truncate insns
1953         to QImode and HImode.
1954
1955 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
1956
1957         * config/mips/mips.h (POINTERS_EXTEND_UNSIGNED): Define.
1958
1959 2007-09-15  Zdenek Dvorak  <ook@ucw.cz>
1960
1961         * tree-parloops.c: New file.
1962         * tree-ssa-operands.h (free_stmt_operands): Declare.
1963         * tree-ssa-loop-manip.c (split_loop_exit_edge): Return the new basic
1964         block.
1965         * tree-pass.h (pass_parallelize_loops): Declare.
1966         * omp-low.c (expand_omp_parallel, expand_omp_for): Update SSA form for
1967         virtual operands.
1968         (build_omp_regions_1): Allow analysing just a single OMP region and
1969         its subregions.
1970         ( build_omp_regions_root, omp_expand_local): New functions.
1971         (build_omp_regions): Add argument to build_omp_regions_1 call.
1972         * builtins.def (DEF_GOMP_BUILTIN): Initialize OMP builtins when
1973         autoparallelization is run.
1974         * timevar.def (TV_TREE_PARALLELIZE_LOOPS): New.
1975         * tree-ssa-loop.c (gate_tree_parallelize_loops, tree_parallelize_loops,
1976         pass_parallelize_loops): New.
1977         * common.opt (ftree-parallelize-loops): New.
1978         * tree-flow.h (omp_expand_local, tree_duplicate_sese_tail,
1979         parallelize_loops): Declare.
1980         (add_phi_args_after_copy, split_loop_exit_edge): Declaration changed.
1981         * Makefile.in (tree-parloops.o): Added.
1982         * tree-cfg.c (add_phi_args_after_copy_edge, tree_duplicate_sese_tail):
1983         New functions.
1984         (add_phi_args_after_copy_bb): Use add_phi_args_after_copy_edge.
1985         (add_phi_args_after_copy): Call add_phi_args_after_copy_edge for
1986         one extra edge as well.
1987         (tree_duplicate_sese_region): Add argument to add_phi_args_after_copy.
1988         Use VEC_free to free doms vector.
1989         (move_block_to_fn): Update loop info. Remove phi nodes for virtual
1990         operands.  Recompute operand caches in the new function.
1991         (move_sese_region_to_fn): Update loop info.
1992         * passes.c (init_optimization_passes): Add pass_parallelize_loops.
1993         * tree-ssa-operands.c (free_stmt_operands): New function.
1994
1995         * doc/passes.texi: Document autoparallelization.
1996         * doc/invoke.texi (-ftree-parallelize-loops): New option.
1997
1998 2007-09-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1999
2000         PR target/33062
2001         * pa.c (function_value): Use GET_MODE_BITSIZE instead of
2002         TYPE_PRECISION.
2003
2004 2007-09-15  Dorit Nuzman  <dorit@il.ibm.com>
2005
2006         * tree-vect-transform.c (vect_get_vec_defs_for_stmt_copy): check if 
2007         the VEC is not NULL.
2008         (vectorizable_type_demotion, vectorizable_type_promotion): Check that 
2009         get_vectype_for_scalar_type succeeded.
2010         (vectorizable_conversion): Likewise.
2011
2012 2007-09-14  Jan Hubicka  <jh@suse.cz>
2013
2014         * config/i386/i386.md (*floatdi<mode>2_i387): Guard against
2015         TARGET_64BIT.
2016
2017 2007-09-14  Uros Bizjak  <ubizjak@gmail.com>
2018
2019         PR target/33438
2020         * config/i386/i386.md (fmodxf3): Copy operands[2] to temporary
2021         register when operands[2] equals operands[1].
2022         (remainderxf3): Ditto.
2023
2024 2007-09-14  Sandra Loosemore  <sandra@codesourcery.com>
2025             Nigel Stephens  <nigel@mips.com>
2026
2027         * doc/tm.texi (LIBGCC2_UNWIND_ATTRIBUTE): Document.
2028         * unwind-generic.h (LIBGCC2_UNWIND_ATTRIBUTE): Define.
2029         (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE to
2030         declaration.
2031         (_Unwind_ForcedUnwind): Likewise.
2032         (_Unwind_Resume): Likewise.
2033         (_Unwind_Resume_or_Rethrow): Likewise.
2034         (_Unwind_Backtrace): Likewise.
2035         (_Unwind_SjLj_RaiseException): Likewise.
2036         (_Unwind_SjLj_ForcedUnwind): Likewise.
2037         (_Unwind_SjLj_Resume): Likewise.
2038         (_Unwind_SjLj_Resume_or_Rethrow): Likewise.
2039         * unwind.inc (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE
2040         to definition.
2041         (_Unwind_ForcedUnwind): Likewise.
2042         (_Unwind_Resume): Likewise.
2043         (_Unwind_Resume_or_Rethrow): Likewise.
2044         (_Unwind_Backtrace): Likewise.
2045         * unwind-compat.c (_Unwind_Backtrace): Likewise.
2046         (_Unwind_ForcedUnwind): Likewise.
2047         (_Unwind_RaiseException): Likewise.
2048         (_Unwind_Resume): Likewise.
2049         (_Unwind_Resume_or_Rethrow): Likewise.
2050
2051         * config/mips/mips.h (LIBGCC2_UNWIND_ATTRIBUTE): Define to force
2052         nomips16 mode when IN_LIBGCC2 with hard float.
2053
2054 2007-09-14  Richard Sandiford  <rsandifo@nildram.co.uk>
2055
2056         * config/mips/sdemtk.opt: Update to GPLv3.
2057         * config/mips/sdemtk.h: Likewise.
2058
2059 2007-09-14  Nigel Stephens  <nigel@mips.com>
2060
2061         * config.gcc (mips*-*-linux*): Recognise mipsisa32r2 and set
2062         MIPS_ISA_DEFAULT appropriately.  Don't make soft-float the default
2063         for mipsisa32-*-linux*.
2064
2065 2007-09-14  Nigel Stephens  <nigel@mips.com>
2066             David Ung  <davidu@mips.com>
2067             Thiemo Seufer  <ths@mips.com>
2068             Richard Sandiford  <richard@codesourcery.com>
2069
2070         * config.gcc (mips*-sde-elf*): Add support for the SDE C libraries.
2071         * configure.ac: Add a mipssde threading type.
2072         * configure: Regenerate.
2073         * config/mips/sdemtk.h: New file.
2074         * config/mips/t-sdemtk: Likewise.
2075         * config/mips/sdemtk.opt: Likewise.
2076         * gthr-mipssde.h: Likewise.
2077         * config/mips/sde.h (FUNCTION_PROFILER): Move to config/mips/sdemtk.h.
2078         * config/mips/mips.h (MIPS_SAVE_REG_FOR_PROFILING_P): New macro.
2079         (MIPS_ICACHE_SYNC): New macro, split from ...
2080         * config/mips/mips.md (clear_cache): ...here.
2081         * config/mips/mips.c (mips_save_reg_p): Check
2082         MIPS_SAVE_REG_FOR_PROFILING_P on profiled functions.
2083         (build_mips16_function_stub): Use targetm.strip_name_encoding.
2084         (build_mips16_call_stub): Likewise.
2085
2086 2007-09-14  Richard Sandiford  <richard@codesourcery.com>
2087
2088         * Makefile.in (stmp-int-hdrs): Depend on fixinc_list.
2089
2090 2007-09-14  Jakub Jelinek  <jakub@redhat.com>
2091
2092         PR target/32337
2093         * config/ia64/ia64.c (find_gr_spill): Don't decrement
2094         current_frame_info.n_local_regs.  Don't return emitted local
2095         regs.
2096         (ia64_compute_frame_size): Improve unwind hack to put
2097         RP, PFS, FP in that order by allowing some of the registers
2098         been already emitted, as long as they are emitted to the
2099         desired register.
2100
2101 2007-09-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2102
2103         * config/spu/vmx2spu.h (vec_extract, vec_insert, vec_lvlx,
2104         vec_lvlxl, vec_lvrx, vec_lvrxl, vec_promote, vec_splats,
2105         vec_stvlx, vec_stvlxl, vec_stvrx, vec_stvrxl): New intrinsics.
2106
2107 2007-09-13  Eric Christopher  <echristo@apple.com>
2108             Kenneth Zadeck <zadeck@naturalbridge.com>
2109
2110         * dse.c (find_shift_sequence): New function.
2111         (replace_read): Add case to remove read if it requires shift.
2112         * config/i386/i386.c (ix86_expand_prologue): Fixed typo in comment.
2113         
2114 2007-09-13  Tom Tromey  <tromey@redhat.com>
2115
2116         * c-common.c (fname_as_string): Update.
2117         * c-parser.c (c_parser) <lex_untranslated_string>: New field.
2118         (c_lex_one_token): Update.  Add 'parser' argument.
2119         (c_parser_simple_asm_expr): Update.
2120         (c_parser_attributes): Update.
2121         (c_parser_asm_statement): Update.
2122         (c_parser_asm_operands): Update.
2123         (c_parser_peek_token): Update.
2124         (c_parser_peek_2nd_token): Update.
2125         * c-lex.c (c_lex_string_translate): Remove.
2126         (c_lex_return_raw_strings): Likewise.
2127         (c_lex_with_flags): Added 'lex_flags' argument.
2128         (lex_string): Added 'translate' argument.
2129         * c-pragma.h (c_lex_with_flags): Update.
2130         (c_lex_string_translate, c_lex_return_raw_strings): Remove.
2131         (C_LEX_STRING_NO_TRANSLATE): New define.
2132         (C_LEX_RAW_STRINGS): Likewise.
2133
2134 2007-09-13  Bernd Schmidt  <bernd.schmidt@analog.com>
2135
2136         From Jie Zhang:
2137         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_ONES,
2138         BFIN_BUILTIN_CPLX_MUL_16_S40, BFIN_BUILTIN_CPLX_MAC_16_S40,
2139         BFIN_BUILTIN_CPLX_MSU_16_S40, and BFIN_BUILTIN_CPLX_SQU.
2140         (bfin_init_builtins): Initialize __builtin_bfin_ones,
2141         __builtin_bfin_min_fr1x16, __builtin_bfin_max_fr1x16,
2142         __builtin_bfin_min_fr1x32, __builtin_bfin_max_fr1x32,
2143         __builtin_bfin_cmplx_add, __builtin_bfin_cmplx_sub,
2144         __builtin_bfin_cmplx_mul_s40, __builtin_bfin_cmplx_mac_s40,
2145         __builtin_bfin_cmplx_msu_s40 and __builtin_bfin_csqu_fr16.
2146         (bdesc_1arg): Add __builtin_bfin_ones.
2147         (bfin_expand_builtin): Expand __builtin_bfin_cmplx_mul_s40,
2148         __builtin_bfin_cmplx_mac_s40, __builtin_bfin_cmplx_msu_s40,
2149         and __builtin_bfin_csqu_fr16.
2150         * config/bfin/bfin.md (UNSPEC_ONES): New constant.
2151         (ones): New define_insn.
2152         (ssaddhi3_parts): New define_insn.
2153         (sssubhi3_parts): New define_insn.
2154         (flag_mulhi_parts): New define_insn.
2155
2156 2007-09-13  Seongbae Park <seongbae.park@gmail.com>
2157
2158         * common.opt (femit-class-debug-always): Turn off by default.
2159
2160 2007-09-13  Bernd Schmidt  <bernd.schmidt@analog.com>
2161
2162         * config/bfin/bfin.md (reload_outpdi, reload_inpdi): New patterns.
2163         * config/bfin/bfin.c (bfin_secondary_reload): Make sure we use them.
2164
2165 2007-09-13  James E. Wilson  <wilson@specifix.com>
2166
2167         PR tree-optimization/33389
2168         * tree-ssa-operands.c (append_vuse): If ann->in_vdef_list true,
2169         then set build_loads before returning.
2170
2171 2007-09-13  Sandra Loosemore  <sandra@codesourcery.com>
2172             David Ung  <davidu@mips.com>
2173
2174         * config/mips/mips.h (ASM_OUTPUT_REG_PUSH): Replace {d}subu with
2175         {d}addiu and a negative immediate such that it works with MIPS16
2176         instructions.
2177         
2178 2007-09-13  H.J. Lu  <hongjiu.lu@intel.com>
2179
2180         PR bootstrap/33418
2181         * configure.ac (ld_vers): Support Linux linker.
2182         * configure: Regenerated.
2183
2184 2007-09-13  Richard Sandiford  <richard@codesourcery.com>
2185             Sandra Loosemore <sandra@codesourcery.com>
2186
2187         * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Delete.
2188         (SYMBOL_REF_MIPS16_FUNC_P): Delete.
2189         * config/mips/mips.c (mips_attribute_table): Turn mips16 and
2190         nomips16 into decl attributes.
2191         (TARGET_INSERT_ATTRIBUTES): Override.
2192         (TARGET_MERGE_DECL_ATTRIBUTES): Likewise.
2193         (TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P): Always return true.
2194         (mips_mips16_type_p, mips_nomips16_type_p): Delete in favor of...
2195         (mips_mips16_decl_p, mips_nomips16_decl_p): ...these new functions.
2196         (mips_comp_type_attributes): Remove mips16 and nomips16 handling.
2197         (mips_use_mips16_mode_p): Reimplement as a function that takes
2198         a decl and considers only decl attributes.  If the decl is nested
2199         function, use its parent attributes.
2200         (mips_function_ok_for_sibcall): Use mips_use_mips16_mode_p
2201         instead of SYMBOL_REF_MIPS16_FUNC_P.
2202         (mips_set_mips16_mode): Move call to sorry here from old
2203         mips_use_mips16_mode_p.
2204         (mflip_mips16_entry): New structure.
2205         (mflip_mips16_htab): New variable.
2206         (mflip_mips16_htab_hash, mflip_mips16_htab_eq): New functions.
2207         (mflip_mips16_use_mips16_p, mips_insert_attributes): Likewise.
2208         (mips_merge_decl_attributes): New function.
2209         (mips_set_current_function): Reinstate call to mips_set_mips16_mode.
2210         Use mips_use_mips16_mode_p.
2211         (mips_output_mi_thunk): Use mips_use_mips16_mode_p instead of
2212         SYMBOL_REF_MIPS16_FUNC_P.
2213         (mips_encode_section_info): Don't set SYMBOL_FLAG_MIPS16_FUNC.
2214
2215 2007-09-13  Richard Sandiford  <richard@codesourcery.com>
2216
2217         * c-parser.c (c_parser_struct_declaration): Check for a null return.
2218
2219 2007-09-13  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2220
2221         PR driver/33309
2222         * gcc.c (xputenv): Make argument const, and use CONST_CAST.
2223
2224 2007-09-12  Michael Meissner  <michael.meissner@amd.com>
2225             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
2226             Tony Linthicum  <tony.linthicum@amd.com>
2227
2228         * tree.h (function_args_iterator): New type to iterate over
2229         function arguments.
2230         (FOREACH_FUNCTION_ARGS_PTR): Iterator macros for iterating over
2231         function arguments providing a pointer to the argument.
2232         (FOREACH_FUNCTION_ARGS): Iterator macros for iterating over
2233         function arguments providing the argument.
2234         (function_args_iter_init): Inline function to initialize
2235         function_args_iterator.
2236         (function_args_iter_cond_ptr): Inline function to return the next
2237         pointer to hold the argument.
2238         (function_args_iter_cond): Inline function to return the next
2239         argument.
2240         (function_args_iter_cond_next): Advance the function args
2241         iterator.
2242         (stdarg_p): New function, return true if variable argument
2243         function.
2244         (prototype_p): New function, return true if function is
2245         prototyped.
2246         (function_args_count): New function, count the number of arguments
2247         of a function.
2248
2249         * tree.c (stdarg_p): New function, return true if variable
2250         argument function.
2251         (prototype_p): New function, return true if function is
2252         prototyped.
2253
2254         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
2255         (TARGET_ROUND): New macro for the round/ptest instructions which
2256         are shared between SSE4.1 and SSE5.
2257         (OPTION_MASK_ISA_ROUND): Ditto.
2258         (OPTION_ISA_ROUND): Ditto.
2259         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
2260         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
2261
2262         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
2263         (-mfused-madd): New switch to give users control over whether the
2264         compiler optimizes to use the multiply/add SSE5 instructions.
2265
2266         * config/i386/i386.c (m_AMD_MULTIPLE): Rename from
2267         m_ATHLON_K8_AMDFAM10, and change all uses.
2268         (enum pta_flags): Add PTA_SSE5.
2269         (ix86_handle_option): Turn off 3dnow if -msse5.
2270         (override_options): Add SSE5 support.
2271         (print_operand): %Y prints comparison codes for SSE5 com/pcom
2272         instructions.
2273         (ix86_expand_sse_movcc): Add SSE5 support.
2274         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
2275         vector type to the next largest size.
2276         (ix86_expand_sse5_pack): New function to use pperm to pack a
2277         vector type to the next smallest size.
2278         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
2279         (IX86_BUILTIN_FMADDSD): Ditto.
2280         (IX86_BUILTIN_FMADDPS): Ditto.
2281         (IX86_BUILTIN_FMADDPD): Ditto.
2282         (IX86_BUILTIN_FMSUBSS): Ditto.
2283         (IX86_BUILTIN_FMSUBSD): Ditto.
2284         (IX86_BUILTIN_FMSUBPS): Ditto.
2285         (IX86_BUILTIN_FMSUBPD): Ditto.
2286         (IX86_BUILTIN_FNMADDSS): Ditto.
2287         (IX86_BUILTIN_FNMADDSD): Ditto.
2288         (IX86_BUILTIN_FNMADDPS): Ditto.
2289         (IX86_BUILTIN_FNMADDPD): Ditto.
2290         (IX86_BUILTIN_FNMSUBSS): Ditto.
2291         (IX86_BUILTIN_FNMSUBSD): Ditto.
2292         (IX86_BUILTIN_FNMSUBPS): Ditto.
2293         (IX86_BUILTIN_FNMSUBPD): Ditto.
2294         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
2295         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
2296         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
2297         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
2298         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
2299         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
2300         (IX86_BUILTIN_PPERM): Ditto.
2301         (IX86_BUILTIN_PERMPS): Ditto.
2302         (IX86_BUILTIN_PERMPD): Ditto.
2303         (IX86_BUILTIN_PMACSSWW): Ditto.
2304         (IX86_BUILTIN_PMACSWW): Ditto.
2305         (IX86_BUILTIN_PMACSSWD): Ditto.
2306         (IX86_BUILTIN_PMACSWD): Ditto.
2307         (IX86_BUILTIN_PMACSSDD): Ditto.
2308         (IX86_BUILTIN_PMACSDD): Ditto.
2309         (IX86_BUILTIN_PMACSSDQL): Ditto.
2310         (IX86_BUILTIN_PMACSSDQH): Ditto.
2311         (IX86_BUILTIN_PMACSDQL): Ditto.
2312         (IX86_BUILTIN_PMACSDQH): Ditto.
2313         (IX86_BUILTIN_PMADCSSWD): Ditto.
2314         (IX86_BUILTIN_PMADCSWD): Ditto.
2315         (IX86_BUILTIN_PHADDBW): Ditto.
2316         (IX86_BUILTIN_PHADDBD): Ditto.
2317         (IX86_BUILTIN_PHADDBQ): Ditto.
2318         (IX86_BUILTIN_PHADDWD): Ditto.
2319         (IX86_BUILTIN_PHADDWQ): Ditto.
2320         (IX86_BUILTIN_PHADDDQ): Ditto.
2321         (IX86_BUILTIN_PHADDUBW): Ditto.
2322         (IX86_BUILTIN_PHADDUBD): Ditto.
2323         (IX86_BUILTIN_PHADDUBQ): Ditto.
2324         (IX86_BUILTIN_PHADDUWD): Ditto.
2325         (IX86_BUILTIN_PHADDUWQ): Ditto.
2326         (IX86_BUILTIN_PHADDUDQ): Ditto.
2327         (IX86_BUILTIN_PHSUBBW): Ditto.
2328         (IX86_BUILTIN_PHSUBWD): Ditto.
2329         (IX86_BUILTIN_PHSUBDQ): Ditto.
2330         (IX86_BUILTIN_PROTB): Ditto.
2331         (IX86_BUILTIN_PROTW): Ditto.
2332         (IX86_BUILTIN_PROTD): Ditto.
2333         (IX86_BUILTIN_PROTQ): Ditto.
2334         (IX86_BUILTIN_PROTB_IMM): Ditto.
2335         (IX86_BUILTIN_PROTW_IMM): Ditto.
2336         (IX86_BUILTIN_PROTD_IMM): Ditto.
2337         (IX86_BUILTIN_PROTQ_IMM): Ditto.
2338         (IX86_BUILTIN_PSHLB): Ditto.
2339         (IX86_BUILTIN_PSHLW): Ditto.
2340         (IX86_BUILTIN_PSHLD): Ditto.
2341         (IX86_BUILTIN_PSHLQ): Ditto.
2342         (IX86_BUILTIN_PSHAB): Ditto.
2343         (IX86_BUILTIN_PSHAW): Ditto.
2344         (IX86_BUILTIN_PSHAD): Ditto.
2345         (IX86_BUILTIN_PSHAQ): Ditto.
2346         (IX86_BUILTIN_FRCZSS): Ditto.
2347         (IX86_BUILTIN_FRCZSD): Ditto.
2348         (IX86_BUILTIN_FRCZPS): Ditto.
2349         (IX86_BUILTIN_FRCZPD): Ditto.
2350         (IX86_BUILTIN_CVTPH2PS): Ditto.
2351         (IX86_BUILTIN_CVTPS2PH): Ditto.
2352         (IX86_BUILTIN_COMEQSS): Ditto.
2353         (IX86_BUILTIN_COMNESS): Ditto.
2354         (IX86_BUILTIN_COMLTSS): Ditto.
2355         (IX86_BUILTIN_COMLESS): Ditto.
2356         (IX86_BUILTIN_COMGTSS): Ditto.
2357         (IX86_BUILTIN_COMGESS): Ditto.
2358         (IX86_BUILTIN_COMUEQSS): Ditto.
2359         (IX86_BUILTIN_COMUNESS): Ditto.
2360         (IX86_BUILTIN_COMULTSS): Ditto.
2361         (IX86_BUILTIN_COMULESS): Ditto.
2362         (IX86_BUILTIN_COMUGTSS): Ditto.
2363         (IX86_BUILTIN_COMUGESS): Ditto.
2364         (IX86_BUILTIN_COMORDSS): Ditto.
2365         (IX86_BUILTIN_COMUNORDSS): Ditto.
2366         (IX86_BUILTIN_COMFALSESS): Ditto.
2367         (IX86_BUILTIN_COMTRUESS): Ditto.
2368         (IX86_BUILTIN_COMEQSD): Ditto.
2369         (IX86_BUILTIN_COMNESD): Ditto.
2370         (IX86_BUILTIN_COMLTSD): Ditto.
2371         (IX86_BUILTIN_COMLESD): Ditto.
2372         (IX86_BUILTIN_COMGTSD): Ditto.
2373         (IX86_BUILTIN_COMGESD): Ditto.
2374         (IX86_BUILTIN_COMUEQSD): Ditto.
2375         (IX86_BUILTIN_COMUNESD): Ditto.
2376         (IX86_BUILTIN_COMULTSD): Ditto.
2377         (IX86_BUILTIN_COMULESD): Ditto.
2378         (IX86_BUILTIN_COMUGTSD): Ditto.
2379         (IX86_BUILTIN_COMUGESD): Ditto.
2380         (IX86_BUILTIN_COMORDSD): Ditto.
2381         (IX86_BUILTIN_COMUNORDSD): Ditto.
2382         (IX86_BUILTIN_COMFALSESD): Ditto.
2383         (IX86_BUILTIN_COMTRUESD): Ditto.
2384         (IX86_BUILTIN_COMEQPS): Ditto.
2385         (IX86_BUILTIN_COMNEPS): Ditto.
2386         (IX86_BUILTIN_COMLTPS): Ditto.
2387         (IX86_BUILTIN_COMLEPS): Ditto.
2388         (IX86_BUILTIN_COMGTPS): Ditto.
2389         (IX86_BUILTIN_COMGEPS): Ditto.
2390         (IX86_BUILTIN_COMUEQPS): Ditto.
2391         (IX86_BUILTIN_COMUNEPS): Ditto.
2392         (IX86_BUILTIN_COMULTPS): Ditto.
2393         (IX86_BUILTIN_COMULEPS): Ditto.
2394         (IX86_BUILTIN_COMUGTPS): Ditto.
2395         (IX86_BUILTIN_COMUGEPS): Ditto.
2396         (IX86_BUILTIN_COMORDPS): Ditto.
2397         (IX86_BUILTIN_COMUNORDPS): Ditto.
2398         (IX86_BUILTIN_COMFALSEPS): Ditto.
2399         (IX86_BUILTIN_COMTRUEPS): Ditto.
2400         (IX86_BUILTIN_COMEQPD): Ditto.
2401         (IX86_BUILTIN_COMNEPD): Ditto.
2402         (IX86_BUILTIN_COMLTPD): Ditto.
2403         (IX86_BUILTIN_COMLEPD): Ditto.
2404         (IX86_BUILTIN_COMGTPD): Ditto.
2405         (IX86_BUILTIN_COMGEPD): Ditto.
2406         (IX86_BUILTIN_COMUEQPD): Ditto.
2407         (IX86_BUILTIN_COMUNEPD): Ditto.
2408         (IX86_BUILTIN_COMULTPD): Ditto.
2409         (IX86_BUILTIN_COMULEPD): Ditto.
2410         (IX86_BUILTIN_COMUGTPD): Ditto.
2411         (IX86_BUILTIN_COMUGEPD): Ditto.
2412         (IX86_BUILTIN_COMORDPD): Ditto.
2413         (IX86_BUILTIN_COMUNORDPD): Ditto.
2414         (IX86_BUILTIN_COMFALSEPD): Ditto.
2415         (IX86_BUILTIN_COMTRUEPD): Ditto.
2416         (IX86_BUILTIN_PCOMEQUB): Ditto.
2417         (IX86_BUILTIN_PCOMNEUB): Ditto.
2418         (IX86_BUILTIN_PCOMLTUB): Ditto.
2419         (IX86_BUILTIN_PCOMLEUB): Ditto.
2420         (IX86_BUILTIN_PCOMGTUB): Ditto.
2421         (IX86_BUILTIN_PCOMGEUB): Ditto.
2422         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
2423         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
2424         (IX86_BUILTIN_PCOMEQUW): Ditto.
2425         (IX86_BUILTIN_PCOMNEUW): Ditto.
2426         (IX86_BUILTIN_PCOMLTUW): Ditto.
2427         (IX86_BUILTIN_PCOMLEUW): Ditto.
2428         (IX86_BUILTIN_PCOMGTUW): Ditto.
2429         (IX86_BUILTIN_PCOMGEUW): Ditto.
2430         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
2431         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
2432         (IX86_BUILTIN_PCOMEQUD): Ditto.
2433         (IX86_BUILTIN_PCOMNEUD): Ditto.
2434         (IX86_BUILTIN_PCOMLTUD): Ditto.
2435         (IX86_BUILTIN_PCOMLEUD): Ditto.
2436         (IX86_BUILTIN_PCOMGTUD): Ditto.
2437         (IX86_BUILTIN_PCOMGEUD): Ditto.
2438         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
2439         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
2440         (IX86_BUILTIN_PCOMEQUQ): Ditto.
2441         (IX86_BUILTIN_PCOMNEUQ): Ditto.
2442         (IX86_BUILTIN_PCOMLTUQ): Ditto.
2443         (IX86_BUILTIN_PCOMLEUQ): Ditto.
2444         (IX86_BUILTIN_PCOMGTUQ): Ditto.
2445         (IX86_BUILTIN_PCOMGEUQ): Ditto.
2446         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
2447         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
2448         (IX86_BUILTIN_PCOMEQB): Ditto.
2449         (IX86_BUILTIN_PCOMNEB): Ditto.
2450         (IX86_BUILTIN_PCOMLTB): Ditto.
2451         (IX86_BUILTIN_PCOMLEB): Ditto.
2452         (IX86_BUILTIN_PCOMGTB): Ditto.
2453         (IX86_BUILTIN_PCOMGEB): Ditto.
2454         (IX86_BUILTIN_PCOMFALSEB): Ditto.
2455         (IX86_BUILTIN_PCOMTRUEB): Ditto.
2456         (IX86_BUILTIN_PCOMEQW): Ditto.
2457         (IX86_BUILTIN_PCOMNEW): Ditto.
2458         (IX86_BUILTIN_PCOMLTW): Ditto.
2459         (IX86_BUILTIN_PCOMLEW): Ditto.
2460         (IX86_BUILTIN_PCOMGTW): Ditto.
2461         (IX86_BUILTIN_PCOMGEW): Ditto.
2462         (IX86_BUILTIN_PCOMFALSEW): Ditto.
2463         (IX86_BUILTIN_PCOMTRUEW): Ditto.
2464         (IX86_BUILTIN_PCOMEQD): Ditto.
2465         (IX86_BUILTIN_PCOMNED): Ditto.
2466         (IX86_BUILTIN_PCOMLTD): Ditto.
2467         (IX86_BUILTIN_PCOMLED): Ditto.
2468         (IX86_BUILTIN_PCOMGTD): Ditto.
2469         (IX86_BUILTIN_PCOMGED): Ditto.
2470         (IX86_BUILTIN_PCOMFALSED): Ditto.
2471         (IX86_BUILTIN_PCOMTRUED): Ditto.
2472         (IX86_BUILTIN_PCOMEQQ): Ditto.
2473         (IX86_BUILTIN_PCOMNEQ): Ditto.
2474         (IX86_BUILTIN_PCOMLTQ): Ditto.
2475         (IX86_BUILTIN_PCOMLEQ): Ditto.
2476         (IX86_BUILTIN_PCOMGTQ): Ditto.
2477         (IX86_BUILTIN_PCOMGEQ): Ditto.
2478         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
2479         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
2480         (bdesc_ptest): Change OPTION_MASK_ISA_SSE4_1 to
2481         OPTION_MASK_ISA_ROUND for instructions that are shared between
2482         SSE4.1 and SSE5.
2483         (bdesc_2arg): Ditto.
2484         (bdesc_sse_3arg): Ditto.
2485         (enum multi_arg_type): New enum for describing the various SSE5
2486         intrinsic argument types.
2487         (bdesc_multi_arg): New table for SSE5 intrinsics.
2488         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
2489         (ix86_expand_multi_arg_builtin): New function for creating SSE5
2490         intrinsics.
2491         (ix86_expand_builtin): Add SSE5 intrinsic support.
2492         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
2493         operand instructions.
2494         (ix86_expand_sse5_multiple_memory): New function to split the
2495         second memory reference from SSE5 instructions.
2496         (type_has_variadic_args_p): Delete in favor of stdarg_p.
2497         (ix86_return_pops_args): Use stdarg_p to determine if the function
2498         has variable arguments.
2499         (ix86_setup_incoming_varargs): Ditto.
2500         (x86_this_parameter): Ditto.
2501
2502         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
2503         declaration.
2504         (ix86_expand_sse5_pack): Ditto.
2505         (ix86_sse5_valid_op_p): Ditto.
2506         (ix86_expand_sse5_multiple_memory): Ditto.
2507
2508         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
2509         constant for SSE5 support.
2510         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
2511         (UNSPEC_SSE5_TRUEFALSE): Ditto.
2512         (UNSPEC_SSE5_PERMUTE): Ditto.
2513         (UNSPEC_SSE5_ASHIFT): Ditto.
2514         (UNSPEC_SSE5_LSHIFT): Ditto.
2515         (UNSPEC_FRCZ): Ditto.
2516         (UNSPEC_CVTPH2PS): Ditto.
2517         (UNSPEC_CVTPS2PH): Ditto.
2518         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
2519         (PCOM_TRUE): Ditto.
2520         (COM_FALSE_S): Ditto.
2521         (COM_FALSE_P): Ditto.
2522         (COM_TRUE_S): Ditto.
2523         (COM_TRUE_P): Ditto.
2524         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
2525         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
2526         types.
2527         (memory attribute): Ditto.
2528         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
2529         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
2530         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
2531         (floor<mode>2): Ditto.
2532         (ceil<mode>2): Ditto.
2533         (btrunc<mode>2): Ditto.
2534         (nearbyintdf2): Ditto.
2535         (nearbyintsf2): Ditto.
2536         (sse_setccsf): Disable if SSE5.
2537         (sse_setccdf): Ditto.
2538         (sse5_setcc<mode>): New support for SSE5 conditional move.
2539         (sse5_pcmov_<mode>): Ditto.
2540
2541         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
2542         (SSEMODEF4): Ditto.
2543         (SSEMODEF2P): Ditto.
2544         (ssemodesuffixf4): New mode attribute for SSE5.
2545         (ssemodesuffixf2s): Ditto.
2546         (ssemodesuffixf2c): Ditto.
2547         (sserotatemax): Ditto.
2548         (ssescalarmode): Ditto.
2549         (sse_maskcmpv4sf3): Disable if SSE5.
2550         (sse_maskcmpv2df3): Ditto.
2551         (sse_vmmaskcmpv4sf3): Ditto.
2552         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add
2553         instructions.
2554         (sse5_vmfmadd<mode>4): Ditto.
2555         (sse5_fmsub<mode>4): Ditto.
2556         (sse5_vmfmsub<mode>4): Ditto.
2557         (sse5_fnmadd<mode>4): Ditto.
2558         (sse5_vmfnmadd<mode>4): Ditto.
2559         (sse5_fnmsub<mode>4): Ditto.
2560         (sse5_vmfnmsub<mode>4): Ditto.
2561         (sse5i_fmadd<mode>4): Ditto.
2562         (sse5i_fmsub<mode>4): Ditto.
2563         (sse5i_fnmadd<mode>4): Ditto.
2564         (sse5i_fnmsub<mode>4): Ditto.
2565         (sse5i_vmfmadd<mode>4): Ditto.
2566         (sse5i_vmfmsub<mode>4): Ditto.
2567         (sse5i_vmfnmadd<mode>4): Ditto.
2568         (sse5i_vmfnmsub<mode>4): Ditto.
2569         (mulv16qi3): Add SSE5 support.
2570         (mulv4si3): Ditto.
2571         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
2572         (sse2_mulv4si3): Disable if SSE5.
2573         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
2574         (sse4_1_roundps): Ditto.
2575         (sse4_1_roundsd): Ditto.
2576         (sse4_1_roundss): Ditto.
2577         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
2578         be generated.
2579         (sse_maskcmpsf3): Ditto.
2580         (sse_vmmaskcmpv4sf3): Ditto.
2581         (sse2_maskcmpv2df3): Ditto.
2582         (sse2_maskcmpdf3): Ditto.
2583         (sse2_vmmaskcmpv2df3): Ditto.
2584         (sse2_eq<mode>3): Ditto.
2585         (sse2_gt<mode>3): Ditto.
2586         (sse5_pcmov_<mode>): Add SSE5 support.
2587         (vec_unpacku_hi_v16qi): Ditto.
2588         (vec_unpacks_hi_v16qi): Ditto.
2589         (vec_unpacku_lo_v16qi): Ditto.
2590         (vec_unpacks_lo_v16qi): Ditto.
2591         (vec_unpacku_hi_v8hi): Ditto.
2592         (vec_unpacks_hi_v8hi): Ditto.
2593         (vec_unpacku_lo_v8hi): Ditto.
2594         (vec_unpacks_lo_v8hi): Ditto.
2595         (vec_unpacku_hi_v4si): Ditto.
2596         (vec_unpacks_hi_v4si): Ditto.
2597         (vec_unpacku_lo_v4si): Ditto.
2598         (vec_unpacks_lo_v4si): Ditto.
2599         (sse5_pmacsww): New SSE5 intrinsic insn.
2600         (sse5_pmacssww): Ditto.
2601         (sse5_pmacsdd): Ditto.
2602         (sse5_pmacssdd): Ditto.
2603         (sse5_pmacssdql): Ditto.
2604         (sse5_pmacssdqh): Ditto.
2605         (sse5_pmacsdqh): Ditto.
2606         (sse5_pmacsswd): Ditto.
2607         (sse5_pmacswd): Ditto.
2608         (sse5_pmadcsswd): Ditto.
2609         (sse5_pmadcswd): Ditto.
2610         (sse5_pcmov_<move>): Conditional move support on SSE5.
2611         (sse5_phaddbw): New SSE5 intrinsic insn.
2612         (sse5_phaddbd): Ditto.
2613         (sse5_phaddbq): Ditto.
2614         (sse5_phaddwd): Ditto.
2615         (sse5_phaddwq): Ditto.
2616         (sse5_phadddq): Ditto.
2617         (sse5_phaddubw): Ditto.
2618         (sse5_phaddubd): Ditto.
2619         (sse5_phaddubq): Ditto.
2620         (sse5_phadduwd): Ditto.
2621         (sse5_phadduwq): Ditto.
2622         (sse5_phaddudq): Ditto.
2623         (sse5_phsubbw): Ditto.
2624         (sse5_phsubwd): Ditto.
2625         (sse5_phsubdq): Ditto.
2626         (sse5_pperm): Ditto.
2627         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
2628         (sse5_pperm_zero_v16qi_v8hi): Ditto.
2629         (sse5_pperm_sign_v8hi_v4si): Ditto.
2630         (sse5_pperm_zero_v8hi_v4si): Ditto.
2631         (sse5_pperm_sign_v4si_v2di): Ditto.
2632         (sse5_pperm_sign_v4si_v2di): Ditto.
2633         (sse5_pperm_pack_v2di_v4si): Ditto.
2634         (sse5_pperm_pack_v4si_v8hi): Ditto.
2635         (sse5_pperm_pack_v8hi_v16qi): Ditto.
2636         (sse5_perm<mode>): New SSE5 intrinsic insn.
2637         (rotl<mode>3): Ditto.
2638         (sse5_rotl<mode>3): Ditto.
2639         (sse5_ashl<mode>3): Ditto.
2640         (sse5_lshl<mode>3): Ditto.
2641         (sse5_frcz<mode>2): Ditto.
2642         (sse5s_frcz<mode>2): Ditto.
2643         (sse5_cvtph2ps): Ditto.
2644         (sse5_cvtps2ph): Ditto.
2645         (sse5_vmmaskcmp<mode>3): Ditto.
2646         (sse5_com_tf<mode>3): Ditto.
2647         (sse5_maskcmp<mode>3): Ditto.
2648         (sse5_maskcmp_uns<mode>3): Ditto.
2649         (sse5_maskcmp_uns2<mode>3): Ditto.
2650         (sse5_pcom_tf<mode>3): Ditto.
2651         
2652         * config/i386/predicates.md (const_0_to_31_operand): New predicate
2653         to match 0..31.
2654         (sse5_comparison_float_operator): New predicate to match the
2655         comparison operators supported by the SSE5 com instruction.
2656         (ix86_comparison_int_operator): New predicate to match just the
2657         signed int comparisons.
2658         (ix86_comparison_uns_operator): New predicate to match just the
2659         unsigned int comparisons.
2660
2661         * doc/invoke.texi (-msse5): Add documentation.
2662         (-mfused-madd): Ditto.
2663
2664         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
2665
2666         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
2667         mmintrin-common.h.
2668         (x86_64-*-*): Ditto.
2669
2670         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
2671
2672         * config/i386/bmmintrin.h: New file, provide common x86 compiler
2673         intrinisics for SSE5.
2674
2675         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
2676         mmintrin-common.h.
2677
2678         * config/i386/mmintrin-common.h: New file, to contain common
2679         instructions between SSE4.1 and SSE5.
2680
2681         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
2682         FOREACH_FUNCTION_ARGS to iterate over the argument list.
2683         (gen_regparm_prefix): Ditto.
2684
2685         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
2686         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
2687         prototype_p to determine if a function is prototyped.
2688
2689 2007-09-12  Janis Johnson  <janis187@us.ibm.com>
2690
2691         * config/dfp-bit.c (dfp_conversion_exception): New function.
2692         (DFP_TO_DFP) Add new variants to use direct conversions in decNumber.
2693         (DFP_TO_INT): Ditto.
2694         (INT_TO_DFP): Ditto.
2695         * config/dfp-bit.h (DEC_FLOAT_FROM_INT, DEC_FLOAT_TO_INT): New.
2696
2697 2007-09-12  Jakub Jelinek  <jakub@redhat.com>
2698
2699         PR target/32338
2700         * config/ia64/ia64.c (ia64_expand_epilogue): Emit blockage
2701         before sp restoration even when total_size is 0, but
2702         frame_pointer_needed.
2703
2704 2007-09-12  Bob Wilson  <bob.wilson@acm.org>
2705
2706         * config/xtensa/xtensa.c (machine_function): Add vararg_a7_copy.
2707         (xtensa_copy_incoming_a7): Use start_sequence instead of
2708         push_to_sequence.  Stash insns in vararg_a7_copy for builtin_saveregs.
2709         (xtensa_builtin_saveregs): Place code from vararg_a7_copy at the start
2710         of the saveregs sequence.
2711
2712 2007-09-12  Richard Sandiford  <richard@codesourcery.com>
2713
2714         * c-tree.h (grokfield): Add a "tree *" argument.
2715         * c-decl.c (grokdeclarator): Take a pointer to the decl's attributes.
2716         Chain nested decl attributes to it.  Don't call decl_attributes here.
2717         (groktypename): Pass grokdeclarator a pointer to the attribute list.
2718         (start_decl, grokparm, push_parm_decl, start_function): Likewise.
2719         (grokfield): Take a pointer to the decl's attributes and pass
2720         it to grokdeclarator.
2721         * c-parser.c (c_parser_struct_declaration): Update the calls to
2722         grokfield.  Call decl_attributes for anonymous struct and union
2723         fields.
2724
2725 2007-09-12  Jan Hubicka  <jh@suse.cz>
2726
2727         * c-objc-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
2728
2729 2007-09-12  Ira Rosen  <irar@il.ibm.com>
2730
2731         PR tree-optimization/32377
2732         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Distinguish
2733         between positive and negative dependence distance using DDR_REVERSED_P.
2734
2735 2007-09-12  Dorit Nuzman  <dorit@il.ibm.com>
2736
2737         PR tree-optimization/33373
2738         * tree-vect-analyze (vect_determine_vectorization_factor): Call 
2739         TREE_INT_CST_LOW when comparing TYPE_SIZE_UNIT. 
2740
2741 2007-09-12  Jan Hubicka  <jh@suse.cz>
2742
2743         PR target/33393
2744         * i386.md (floatsisf2_mixed_memory, floatsisf2_sse_memory): Disable
2745         for !SSE_MATH
2746
2747 2007-09-12  Christian Bruel  <christian.bruel@st.com>
2748
2749         * sh.h (SH_DBX_REGISTER_NUMBER): Added fpscr, fixed sr/gbr regs.
2750         * linux-unwind.h (SH_DWARF_FRAME_GBR): fixed. 
2751         
2752 2007-09-12  Ira Rosen  <irar@il.ibm.com>
2753
2754         * tree-vect-transform.c (vect_get_slp_defs): Don't build a vector
2755         for oprnd1 if not required.
2756         (vectorizable_operation): Use scalar operand in SLP in case of 
2757         shift with scalar argument.
2758
2759 2007-09-12  Ira Rosen  <irar@il.ibm.com>
2760
2761         * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change default and minimum 
2762         to 1.
2763
2764 2007-09-11  James E. Wilson  <wilson@specifix.com>
2765
2766         * defaults.h (DWARF2_UNWIND_INFO): Don't define if
2767         TARGET_UNWIND_INFO is defined.
2768         * config/ia64/ia64.h (INCOMING_RETURN_ADDR_RTX): Delete undef
2769         after definition.
2770
2771 2007-09-12  Kaz Kojima  <kkojima@gcc.gnu.org>
2772
2773         * config/sh/sh.c (calc_live_regs): Use
2774         current_function_saves_all_registers instead of
2775         current_function_has_nonlocal_label.
2776         (sh_allocate_initial_value): Likewise.
2777         (sh_get_pr_initial_val): Likewise.
2778         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Likewise.
2779         * config/sh/sh.md (load_ra): Likewise.
2780
2781 2007-09-12  Hans-Peter Nilsson  <hp@axis.com>
2782
2783         * config/cris/t-linux (LIMITS_H_TEST): Only define if not inhibit_libc.
2784
2785         PR target/33360
2786         * config/cris/cris.c (cris_expand_pic_call_address): Fix typo in
2787         GET_CODE (x) == CONST_INT to CONST_INT_P (x) transformation.
2788
2789 2007-09-12  Sa Liu  <saliu@de.ibm.com>
2790
2791         * config/spu/spu.c (spu_emit_branch_or_set): Handle NaN values as
2792         operands to DFmode GE or LE compares.
2793
2794 2007-09-12  Bernd Schmidt  <bernd.schmidt@analog.com>
2795
2796         * config/bfin/bfin.h (enum reg_class, REG_CLASS_CONTENTS,
2797         REG_CLASS_NAMES): Add P0REGS.
2798         (REGNO_REG_CLASS): Return it where appropriate.
2799         (REG_CLASS_FROM_CONSTRAINT): Add 'qA'.
2800         (CLASS_LIKELY_SPILLED_P): P0REGS is likely_spilled.
2801         * doc/md.texi (Blackfin family): Document 'q' constraints.
2802
2803 2007-09-11  Steve Kenton  <skenton@ou.edu>
2804
2805         * pa/linux-unwind.h: Guard with inhibit_libc.
2806         * pa/hpux-unwind.h: Likewise.
2807
2808 2007-09-11  David Daney  <ddaney@avtrex.com>
2809
2810         * doc/invoke.texi: Document new MIPS -mllsc and -mno-llsc options.
2811         * doc/install.texi: Document new --with-llsc and --without-llsc
2812         options.
2813         * config.gcc: Handle --with-llsc and --without-llsc configure options.
2814         * config/mips/mips.md (sync, memory_barrier): Wrap sync instrunction
2815         in %| and %- operand codes.  Depend on GENERATE_SYNC instead of
2816         ISA_HAS_SYNC.
2817         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
2818         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
2819         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
2820         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
2821         sync_new_nand<mode>, sync_lock_test_and_set<mode>): Depend on
2822         GENERATE_LL_SC instead of ISA_HAS_LL_SC.
2823         * config/mips/mips.opt (mllsc): New option.
2824         * config/mips/mips.c (mips_llsc): Define variable.
2825         (mips_handle_option): Handle mllsc option.
2826         (override_options): Set mips_print_operand_punct for '|' and '-'.
2827         (print_operand): Add new %| and %- operand codes.
2828         * config/mips/mips.h (mips_llsc_setting): New enum type.
2829         (mips_llsc): Declare.
2830         (OPTION_DEFAULT_SPECS): Add llsc handling.
2831         (GENERATE_SYNC): New macro.
2832         (GENERATE_LL_SC): New macro.
2833         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
2834         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
2835         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Wrap instructions
2836         in %| and %- operand codes.
2837
2838 2007-09-11  Eric Botcazou  <ebotcazou@adacore.com>
2839
2840         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Deal with
2841         TYPE_NONALIASED_COMPONENT like with DECL_NONADDRESSABLE_P.
2842
2843 2007-09-11  Jason Merrill  <jason@redhat.com>
2844
2845         PR middle-end/27945
2846         * stor-layout.c (layout_decl): Do pack variable size fields.    
2847
2848 2007-09-11  Maxim Kuvyrkov  <maxim@codesourcery.com>
2849
2850         * config/m68k/predicates.md (movsi_const0_operand,
2851         non_symbolic_call_operand): New predicates.
2852
2853         * config/m68k/constraints.md (Cs, Ci, C0, Cj, CQ, CW, CZ, CS, Ap, Ac):
2854         New constraints.
2855         * doc/md.texi (Constraints for Particular Machines: Motorola 680x0):
2856         Document constraints N, O, P, R, S, T, Q, U, W, Cs, Ci, C0, Cj, CQ,
2857         CW, CZ, CS, Ap and Ac.
2858
2859         * config/m68k/m68k.md (UNSPEC_IB): New constant.
2860         (constraints.md): New include.
2861         (cpu, type, type1, opx, opy, opx_type, opy_type, size, opx_access,
2862         opx_mem, opy_mem, op_mem, guess, split): New attributes.
2863         (movdf_internal): Name pattern.  Fix to use alternatives.  Add split.
2864         Specify attributes.
2865         (pushdi): Add split.
2866         (tstsi_internal): Name pattern.  Fix to use alternatives.  Specify
2867         attributes.  Split tstsi_internal_68020_cf from it.
2868         (tstsi_internal_68020_cf): New pattern.
2869         (tsthi_internal, tstqi_internal): Name pattern.  Specify attributes.
2870         (tst<mode>_cf): Specify attributea.
2871         (cmpsi_cf): Name pattern.  Specify attributes.
2872         (cmp<mode>_68881, cmp<mode>_cf): Specify type attribute.
2873         (pushexthisi_const): Fix to use alternatives.  Specify
2874         attributes.
2875         (movsi_const0): Split movsi_const0_68000_10 and movsi_const0_68040_60
2876         from it.  Fix to use alternatives.  Specify attributes.
2877         (movsi_const0_68040_10, movsi_const0_68040_60): New patterns.
2878         (movsi_cf, movstrictqi_cf): Fix to use alternatives.  Specify
2879         attributes.
2880         (movsf_cf_soft): Specify attributes.
2881         (movdf_cf_soft): Add split.
2882         (pushasi, zero_extendhisi2_cf, zero_extendqisi2_cfv4,
2883         cfv4_extendhisi2, 68k_extendhisi2, extendqihi2, cfv4_extendqisi2,
2884         68k_extendqisi2, truncdfsf2_cf): Specify attributes.
2885         (truncdfsf2_68881): Name pattern.  Specify attributes.
2886         (floatsi<mode>2_cf, floathi<mode>2_68881, floathi<mode>2_cf,
2887         floatqi<mode>2_68881, floatqi<mode>2_cf, ftrunc<mode>2_cf,
2888         fix<mode>qi2_cf, fix<mode>hi2_cf, fix<mode>si2_cf, adddi_dishl32):
2889         Specify attributes.
2890         (addsi3_5200): Fix to use alternatives.  Specify attributes.
2891         Add splits.
2892         (add<mode>3_cf, subdi_dishl32): Specify attributes.
2893         (subsi3): Add alternative for subq.l.  Specify attributes.
2894         (sub<mode>3_cf, mulhi3, mulhisi3): Specify attributes.
2895         (mulhisisi3_s, mulsi3_68020, mulsi3_cf): Name pattern.  Specify
2896         attributes.
2897         (umulhisi3): Specify attributes.
2898         (mulhisisi3_z): Name pattern.  Specify attributes.
2899         (fmul<mode>3_cf, div<mode>3_cf, negsi2_internal, negsi2_5200,
2900         sqrt<mode>2_68881, clzsi2, one_cmplsi2_5200, subreghi1ashrdi_const32,
2901         subregsi1ashrdi_const32, ashrsi3, subreg1lshrdi_const32, lshrsi3,
2902         bsetmemqi): Specify attributes.
2903         (bsetmemqi_ext): Name pattern.  Specify attributes.
2904         (bclrmemqi): Specify attributes.
2905         (bclrmemqi_ext, scc, sls): Name pattern.  Specify attributes.
2906         (beq, bne, bgt, bgtu, blt, bltu, bge, bgeu, ble, bleu): Specify
2907         attributes.
2908         (beq2, bne2, bgt2, bgtu2, blt2, bltu2, bge2, bgeu2, ble2, bleu2): Name
2909         pattern.  Specify attributes.
2910         (jump): Specify attributes.
2911         (tablejump_internal): Name pattern.  Specify attributes.
2912         (call_value): Split into non_symbolic_call_value,
2913         symbolic_call_value_jsr, symbolic_call_value_bsr.  Fix to use
2914         alternatives.  Specify attributes.
2915         (non_symbolic_call_value, symbolic_call_value_jsr,
2916         symbolic_call_value_bsr): New patterns.
2917         (nop, return, unlink, indirect_jump): Specify attributes.
2918         (trap): Fix condition.  Specify attributes.
2919         (ib): New pattern.
2920
2921         * config/m68k/m68k.c (m68k_symbolic_call_var): New variable.
2922         (override_options): Initialize it.  Initialize m68k_sched_cpu.
2923         (CONST_METHOD): Rename to M68K_CONST_METHOD, move to m68k.h.
2924         (const_method): Make global, rename to m68k_const_method.
2925         (const_int_cost, output_move_const_into_data_reg): Update.
2926         (output_move_double): Parametrize to emit rtl code, rename to
2927         handle_move_double.
2928         (output_reg_adjust, emit_reg_adjust, output_compadr, output_movsi,
2929         emit_movsi): New static functions.
2930         (output_move_double): New function with semantics of old
2931         output_move_double.
2932         (m68k_emit_move_double): New function.
2933         (m68k_sched_cpu): New variable.
2934         (attr_op_type): New enum.
2935         (sched_guess_p): New variable.
2936         (sched_address_type, sched_operand_type, sched_attr_op_type):
2937         New static functions.
2938         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
2939         m68k_sched_attr_size, m68k_sched_attr_op_mem): New functions.
2940         (sched_branch_type): New static variable.
2941         (m68k_sched_branch_type): New function.
2942         * config/m68k/m68k.h (M68K_SYMBOLIC_CALL): New enum.
2943         (m68k_symbolic_call_var): Declare.
2944         (M68K_CONST_METHOD): Rename from CONST_METHOD.  Move here from m68k.c.
2945         (m68k_const_method, m68k_emit_move_double, m68k_sched_cpu,
2946         m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
2947         m68k_sched_attr_size, m68k_sched_attr_op_mem, m68k_sched_branch_type):
2948         Declare.
2949
2950 2007-09-11  Jakub Jelinek  <jakub@redhat.com>
2951
2952         * builtins.def (BUILT_IN_VA_ARG_PACK_LEN): New builtin.
2953         * builtins.c (expand_builtin) <case BUILT_IN_VA_ARG_PACK_LEN>: Issue
2954         error if __builtin_va_arg_pack_len () wasn't optimized out during
2955         inlining.
2956         * tree-inline.c (copy_bb): Replace __builtin_va_arg_pack_len ()
2957         with the number of inline's anonymous arguments.
2958         * doc/extend.texi: Document __builtin_va_arg_pack_len ().
2959
2960 2007-09-11  Zdenek Dvorak  <ook@ucw.cz>
2961
2962         * fold-const.c (extract_muldiv_1): Do not simplify
2963         var * c * c to var.
2964
2965 2007-09-11  Jan Hubicka <jh@suse.cz>
2966
2967         * i386.h (ix86_tune_indices): Add X86_TUNE_INTER_UNIT_CONVERSIONS.
2968         (TARGET_INTER_UNIT_CONVERSIONS): New.
2969         * i386.md (floatsi expanders): Remove redundant check for SImode
2970         source; offload to memory when asked for.
2971         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse
2972         floatdisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
2973         Update conditions;
2974         (floatsisf2_mixed_memory, floatsisf2_sse_memory,
2975         floatsidf2_mixed_memory, floatsidf2_sse_memory
2976         floatdisf2_mixed_memory, floatsisf2_sse_memory,
2977         floatsidf2_mixed_memory, floatsidf2_sse_memory): New.
2978
2979 2007-09-11  Jan Hubicka <jh@suse.cz>
2980
2981         * toplev.c (process_options): all frontends now do unit-at-a-time.
2982         * cgraphunit.c: update comments.
2983         (cgraph_expand_function): call passmanager dirrectly; emit thunks.
2984         * c-decl.c (finish_function): use cgraph_add_new_function.
2985         * function.c (expand_function_end): We are always unit-at-a-time.
2986
2987 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
2988
2989         * config/mips/mips.c (mips_set_mips16_mode): Use separate anchor
2990         settings for MIPS16.
2991         (mips_use_anchors_for_symbol_p): Use default_use_anchors_for_symbol_p.
2992
2993 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
2994
2995         * config/mips/mips.c (mips_symbol_insns_1): Allow LEAs of
2996         SYMBOL_FORCE_TO_MEM constants.
2997         (mips_rtx_costs): Give a cost of 1 to force_to_mem_operands.
2998         (mips16_rewrite_pool_refs_info): New structure.
2999         (mips16_rewrite_pool_constant): New function, split out from...
3000         (mips16_rewrite_pool_refs): ...here.  Take a pointer to a
3001         mips16_rewrite_pool_refs_info structure rather than a pointer
3002         to a constant pool.  Force force_to_mem_operands into memory.
3003         (mips16_lay_out_constants): Update call to mips16_rewrite_pool_refs.
3004         * config/mips/predicates.md (force_to_mem_operand): New predicate.
3005         * config/mips/constraints.md (kf): New constraint.
3006         * config/mips/mips.md (*movdi_64bit_mips16): Add a d <- kf alternative.
3007         (*movsi_mips16): Likewise.
3008
3009 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
3010             Nigel Stephens  <nigel@mips.com>
3011             David Ung  <davidu@mips.com>
3012
3013         * config/mips/mips.h (CONSTANT_POOL_COST): Move to...
3014         * config/mips/mips.c: ...here and set to 4 for TARGET_MIPS16.
3015         (mips16_constant_cost, mips_immediate_operand_p, mips_binary_cost)
3016         (mips_fp_mult_cost, mips_fp_div_cost, mips_sign_extend_cost)
3017         (mips_zero_extend_cost): New functions.
3018         (mips_rtx_costs): Treat COMPARE constants as having zero cost.
3019         Use the new functions.  Tweak many cost estimates, both here
3020         and in the new subroutines.  Return false when the cost of the
3021         operands has not been calculated.  Check for *clear_upper32.
3022         Check for floating-point multiply-add, reciprocal and rsqrt
3023         patterns.  Handle comparison and rotation codes.
3024
3025 2007-09-11  Danny Smith  <dannysmith@users.sourceforge.net>
3026
3027         * config/i386/cygming.h (TARGET_STRIP_NAME_ENCODING): Don't
3028         override default.
3029         * config/i386/i386.c (get_dllimport_decl): Don't strip
3030         FASTCALL_PREFIX.
3031
3032 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
3033
3034         PR c/30013
3035         * config/dfp-bit.c: Don't skip TFmode conversions; move strto*
3036         declarations to top.
3037         (DFP_TO_BFP): Use for either XFmode or TFmode.
3038         (BFP_TO_DFP): Use for either XFmode or TFmode; always use cast
3039         of BFP_VIA_TYPE.
3040         * config/dfp-bit.h: Include float.h.
3041         (LONG_DOUBLE_HAS_XF_MODE, LONG_DOUBLE_HAS_TF_MODE): Define if long
3042         double is one of these modes, rather than using LIBGCC_HAS_*F_MODE
3043         which doesn't mean the same thing.
3044         (BFP_KIND): Use 4 to mean TFmode.
3045         (BFP_FMT): Specify the number of decimal digits based on the
3046         number of mantissa digits.
3047         (BFP_VIA_TYPE): Binary float type to use as cast for sprintf.
3048         (BFP_TO_DFP, DFP_TO_BFP): Define names for TFmode variants.
3049         (STR_TO_BFP): Use strtold for XFmode or TFmode.
3050         (TFtype): Define if TFmode is supported.
3051         * doc/libgcc.texi (Decimal float library routines): Document
3052         TF conversion functions.
3053
3054 2007-09-10  Chao-ying Fu  <fu@mips.com>
3055
3056         * config/mips/mips.c (mips_scalar_mode_supported_p): Declare.
3057         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
3058         (mips_emit_compare): Process fixed-point modes.
3059         (mips_pad_arg_upward): Support fixed-point types.
3060         (override_options): Allow fixed-point modes in accumulators.
3061         (mips_pass_by_reference): Pass DQ, UDQ, DA, and UDA modes in registers.
3062         (mips_vector_mode_supported_p): Support V2HQmode, V2UHQmode, V2HAmode,
3063         V2UHAmode, V4QQmode, and V4UQQmode when TARGET_DSP.
3064         (mips_scalar_mode_supported_p): New function to accept fixed-point
3065         modes if the width is not greater than two BITS_PER_WORD.
3066         * config/mips/mips.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
3067         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
3068         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
3069         LONG_LONG_ACCUM_TYPE_SIZE): Define.
3070         * config/mips/mips.md ("d"): Update mode attribute for fixed-point
3071         modes.
3072         ("IMODE"): New mode attribute.
3073         (mips-fixed.md): Include.
3074         * config/mips/mips-modes.def: Create VECTOR_MODES for FRACT, UFRACT,
3075         ACCUM, UACCUM.
3076         * config/mips/mips-fixed.md: New file.
3077
3078 2007-09-11  Ben Elliston  <bje@au.ibm.com>
3079
3080         * config/spu/spu.md: Formatting fixes.
3081
3082 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
3083
3084         * config/dfp-bit.c (dfp_unary_func): Delete.
3085         (dfp_unary_op): Delete.
3086         (dfp_binary_op): Use decFloat functions instead of decNumber
3087         functions for binary operations.
3088         (d32_binary_op): Convert 32-bit operands to 64 bits for evaluation.
3089         (dnn_binary_op): Call dfp_binary_op with decFloat rather than
3090         DFP_C_TYPE.
3091         (dfp_compare_op): Use decFloat functions insteadof decNumber
3092         functions for comparisons.
3093         (d32_compare_op): Convert 32-bit operands to 64 bits for evaluation.
3094         (dnn_binary_op): Call dfp_compare_op with decFloat rather than
3095         DFP_C_TYPE.
3096         (DFP_ADD, DFP_SUB, DFP_MULTIPLE, DFP_DIVIDE): Use macros for
3097         call to dxx_binary_op and decFloat function.
3098         (DFP_EQ, DFP_NE, DFP_LT, DFP_GT, DFP_LE, DFP_GE): Use macros for
3099         calls to dxx_binary_op and decFloat function.
3100         * config/dfp-bit.h: Include decFloat header files.
3101         (decFloat, DFP_BINARY_OP, DFP_COMPARE_OP, DEC_FLOAT_ADD,
3102         DEC_FLOAT_SUBTRACT, DEC_FLOAT_MULTIPLY, DEC_FLOAT_DIVIDE,
3103         DEC_FLOAT_COMPARE, DEC_FLOAT_IS_ZERO, DEC_FLOAT_IS_NAN,
3104         DEC_FLOAT_IS_SIGNED: Define for each of 3 operand widths.
3105
3106 2007-09-10  Harsha Jagasia <harsha.jagasia@amd.com>
3107             Jan Sjodin <jan.sjodin@amd.com>
3108
3109         * tree-vect-analyze.c (vect_analyze_operations): Change
3110         comparison of loop iterations with threshold to less than
3111         or equal to instead of less than. Reduce
3112         min_scalar_loop_bound by one.
3113         * tree-vect-transform.c (vect_estimate_min_profitable_iters): 
3114         Change prologue and epilogue iterations estimate to vf/2,
3115         when unknown at compile-time. Change versioning guard
3116         cost to taken_branch_cost. If peeling for alignment is
3117         unknown at compile-time, change peel guard costs to one
3118         taken branch and one not-taken branch per peeled loop.
3119         If peeling for alignment is known but number of scalar loop
3120         iterations is unknown at compile-time, change peel guard
3121         costs to one taken branch per peeled loop. Change the cost
3122         model equation to consider vector iterations as the loop
3123         iterations less the prologue and epilogue iterations.
3124         Change outside vector cost check to less than or equal to
3125         zero instead of equal to zero.
3126         (vect_do_peeling_for_loop_bound): Reduce
3127         min_scalar_loop_bound by one.
3128         * tree-vectorizer.h: Add TARG_COND_TAKEN_BRANCH_COST and
3129         TARG_COND_NOT_TAKEN_BRANCH_COST.        
3130         * config/i386/i386.h (processor_costs): Add
3131         scalar_stmt_cost, scalar_load_cost, scalar_store_cost,
3132         vec_stmt_cost, vec_to_scalar_cost, scalar_to_vec_cost,
3133         vec_align_load_cost, vect_unalign_load_cost,
3134         vec_store_cost, cond_taken_branch_cost,
3135         cond_not_taken_branch_cost.
3136         Define macros for x86 costs.
3137         * config/i386/i386.c:
3138         (size_cost): Set scalar_stmt_cost, scalar_load_cost,
3139         scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost,
3140         scalar_to_vec_cost, vec_align_load_cost, 
3141         vect_unalign_load_cost, vec_store_cost,
3142         cond_taken_branch_cost, cond_not_taken_branch_cost to one. 
3143         (i386_cost, i486_cost, pentium_cost, pentiumpro_cost,
3144         geode_cost, k6_cost, athlon_cost, pentium4_cost, nocona_cost, 
3145         core2_cost, generic64_cost, generic32_cost): Set to default
3146         untuned costs.
3147         (k8_cost, amdfam10_cost): Costs for vectorization tuned.
3148         (x86_builtin_vectorization_cost): New.
3149
3150 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
3151             Ben Elliston  <bje@au.ibm.com>
3152
3153         * dfp.c: Include decimal128Local.h; 
3154         (dfp_byte_swap): Remove.
3155         (encode_decimal32, decode_decimal32): Don't handle endianness.
3156         (encode_decimal64, decode_decimal64): Ditto.
3157         (encode_decimal128, decode_decimal128): Ditto.
3158         * config/dfp-bit.c (host_to_ieee32, ieee_to_host_32): Ditto.
3159         (__swap64): Remove.
3160         (host_to_ieee_64, ieee_to_host_64): Don't handle endianness.
3161         (__swap128): Remove
3162         (host_to_ieee_128, ieee_to_host_128): Don't handle endianness.
3163         * Makefile.in (DECNUM_H): Add decimal128Local.h.
3164
3165 2007-09-10  David Daney  <ddaney@avtrex.com>
3166
3167         * config/mips/mips.md (UNSPEC_MEMORY_BARRIER): New entry in
3168         define_constants.
3169         (memory_barrier): Rewrote as an insn that clobbers memory.
3170
3171 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
3172
3173         * config/mips/mips.c (mips_global_pointer): Check
3174         call_really_used_regs instead of call_used_regs.
3175         (mips_save_reg_p): Likewise.  Save all call-saved registers
3176         if current_function_saves_all_registers.  Fix indentation.
3177         No longer treat $18 as a special case.
3178         (compute_frame_size): Guard FPR loop with TARGET_HARD_FLOAT.
3179
3180 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
3181
3182         * config/mips/mips.h (MIPS_ARCH_FLOAT_SPEC): New macro.
3183         * config/mips/mips.c (mips_cpu_info_table): Mention it in the
3184         the introductory comment.
3185         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
3186         (override_options): Don't test for it.
3187         * config/mips/sde.h (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
3188         (DRIVER_SELF_SPECS): Add MIPS_ARCH_FLOAT_SPEC.
3189         * config/mips/vr.h: As for config/mips/sde.h.
3190
3191 2007-09-10  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
3192             Revital Eres  <eres@il.ibm.com>
3193
3194         * target.h (struct gcc_target.sched): New field: sms_res_mii.
3195         (struct ddg): Define.
3196         * target-def.h (TARGET_SCHED_SMS_RES_MII): Define.
3197         (TARGET_SCHED): Add TARGET_SCHED_SMS_RES_MII.
3198         * config/spu/spu.c: Include ddg.h.
3199         (TARGET_SCHED_SMS_RES_MII): Define.
3200         (spu_sms_res_mii): New function to calculate mii.
3201         * modulo-sched (res_MII): Use it.
3202         * doc/tm.texi: Document TARGET_SCHED_SMS_RES_MII.
3203
3204 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
3205
3206         * config/s390/s390.c (s390_dump_pool): Create copy of constant
3207         pool entries since they might hold values that must not be shared.
3208
3209 2007-09-10  Uros Bizjak  <ubizjak@gmail.com>
3210
3211         PR target/33369
3212         * gcc/config/i386/sse.md (ashr<mode>3): Change op2 mode to SImode.
3213         Use 'N' operand constraint for op2.
3214         (lshr<mode>3): Ditto.
3215         (ashl<mode>3): Ditto.
3216         (vec_shl_<mode>): Use const_0_to_255_mul_8_operand predicate for op2.
3217         (vec_shr_<mode>): Ditto.
3218         * gcc/config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLL?128,
3219         IX86_BUILTIN_PSRA*?128, IX86_BUILTIN_PSRL?128]: Convert op1 to SImode.
3220
3221 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
3222
3223         * config/s390/s390.md ("fixuns_trunc<BFP:mode><GPR:mode>2"):
3224         Change mode macro in the last real_2expN parameter to uppercase.
3225
3226 2007-09-10  Michael Matz  <matz@suse.de>
3227
3228         * tree-pass.h (pass_cselim): Declare new pass.
3229         * passes.c (init_optimization_passes): Link in pass_cselim.
3230         * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Renamed from
3231         tree_ssa_phiopt; add do_store_elim parameter, handle it by calling
3232         cond_store_replacement.
3233         (condstoretemp): New static variable.
3234         (cond_store_replacement): New function.
3235         (tree_ssa_phiopt, tree_ssa_cs_elim): New wrappers around
3236         tree_ssa_phiopt_worker.
3237         (struct name_to_bb): New.
3238         (get_non_trapping, name_to_bb_hash, name_to_bb_eq, add_or_mark_expr,
3239         nt_init_block, nt_fini_block): New static functions.
3240         (seen_ssa_names, nontrap_set): New static variables.
3241         (gate_cselim, pass_cselim): Define new pass.
3242         * common.opt (ftree-cselim): New flag.
3243         * toplev.c (process_options): Set flag_tree_cselim if required.
3244
3245 2007-09-10  Hans-Peter Nilsson  <hp@axis.com>
3246
3247         * simplify-rtx.c (simplify_relational_operation_1): For recent
3248         canonicalization, don't recurse if op1 equals both PLUS arguments.
3249
3250 2007-09-09  David Daney  <ddaney@avtrex.com>
3251
3252         * optabs.c (expand_sync_operation):  Use plus insn if minus
3253         CONST_INT_P(val).
3254         (expand_sync_fetch_operation):  Ditto.
3255
3256 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
3257
3258         * i386.md (*floatsisf2_mixed_vector): Use cvtdq2ps instead
3259         of cvtpq2ps.
3260         (*floatsisf2_sse_vector): Likewise.
3261
3262 2007-09-09  Krister Walfridsson  <cato@df.lth.se>
3263
3264         * config/netbsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
3265
3266 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
3267
3268         * config/i386/i386.h (ix86_tune_indices): Rename
3269         X86_USE_VECTOR_CONVERTS to X86_TUNE_USE_VECTOR_CONVERTS.
3270         (TARGET_USE_VECTOR_CONVERTS): Updated.
3271         * config/i386/i386.c: Likewise.
3272
3273 2007-09-09  Sandra Loosemore  <sandra@codesourcery.com>
3274             Nigel Stephens <nigel@mips.com>
3275
3276         * doc/invoke.texi (Overall Options):  Add .sx file extension
3277         as a synonym for .S.
3278         * cppspec.c (known_suffixes): Likewise.
3279         * gcc.c (default_compilers): Likewise.
3280
3281 2007-09-09  Rask Ingemann Lambertsen  <rask@sygehus.dk>
3282
3283         PR target/30315
3284         * config/i386/i386.h (CANONICALIZE_COMPARISON): Delete.
3285         * simplify-rtx.c (simplify_relational_operation_1): Add the
3286         canonicalization from i386.h.
3287         * doc/md.texi (Canonicalization of Instructions): Document it.
3288
3289 2007-09-09  Jan Hubicka  <jh@suse.cz>
3290             Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
3291
3292         * i386.h (ix86_tune_indices): Add X86_USE_VECTOR_CONVERTS.
3293         (TARGET_USE_VECTOR_CONVERTS): New.
3294         * i386.md: New post-reload splitters for converting SF to DF and DF to
3295         SF.
3296         (floatsi* expander): Special case vector conversions.
3297         (floatsisf2_mixed_vector, floatsisf2_sse_vector_nointernunit,
3298         floatsisf2_sse_vector_internunit, floatsisf2_sse_vector,
3299         floatsidf2_mixed_vector, floatsidf2_sse_vector): New.
3300         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
3301         Disable when doing vector converts.
3302         (floatsi<mode>2_i387): Disable when
3303         * sse.md (vec_dupv2df): Export.
3304         * i386.c (ix86_tune_features): Enable SSE conversions.
3305
3306 2007-09-09  Richard Guenther  <rguenther@suse.de>
3307
3308         * tree-ssa-operands.c (add_virtual_operand): Only mark
3309         stores as has_volatile_ops if alias information is not available.
3310
3311 2007-09-09  Revital Eres  <eres@il.ibm.com>
3312
3313         * doc/contrib.texi: Add myself.
3314
3315 2007-09-09  Ira Rosen  <irar@il.ibm.com>
3316
3317         * tree-vectorizer.h (stmt_vinfo_set_inside_of_loop_cost,
3318         stmt_vinfo_set_outside_of_loop_cost): New functions.
3319         * tree-vect-transform.c (vect_get_cost_fields): Remove.
3320         (vect_model_simple_cost): Call
3321         stmt_vinfo_set_inside/outside_of_loop_cost to set the relevant cost
3322         field instead of calling vect_get_cost_fields.
3323         (vect_model_store_cost, vect_model_load_cost): Likewise.
3324
3325 2007-09-09  Revital Eres  <eres@il.ibm.com>
3326
3327         * config/rs6000/rs6000.c (paired_init_builtins): Add const
3328         declaration to bdesc_paired_preds variable.
3329         (paired_expand_builtin): Likewise.
3330
3331 2007-09-09  Revital Eres  <eres@il.ibm.com>
3332
3333         * dbgcnt.def (sms_sched_loop): New counter.
3334         * modulo-sched.c: Use sms_sched_loop instead of
3335         MAX_SMS_LOOP_NUMBER to determine the maximum number of loops to
3336         perform swing modulo scheduling on.  Include dbgcnt.h.
3337         * Makefile.in: Add DBGCNT_H to modulo-sched.o.
3338         * params.def: Remove PARAM_MAX_SMS_LOOP_NUMBER.
3339
3340 2007-09-09  Uros Bizjak  <ubizjak@gmail.com>
3341
3342         * config/i386/i386.md (X87MODEF12, SSEMODEF): Remove mode iterators.
3343         Substitute all uses with ...
3344         (MODEF): New mode iterator.
3345
3346         (fix_trunc<mode>_fisttp_i387_1): Remove operand constraints
3347         from pre-regalloc define_insn_and_split splitter pattern.
3348         (*fix_trunc<mode>_i387_1): Ditto.
3349         (*fistdi2_1): Ditto.
3350         (*fist<mode>2_1): Ditto.
3351         (frndintxf2_floor): Ditto.
3352         (*fist<mode>2_floor_1): Ditto.
3353         (frndintxf2_ceil): Ditto.
3354         (*fist<mode>2_ceil_1): Ditto.
3355         (frndintxf2_trunc): Ditto.
3356         (frndintxf2_mask_pm): Ditto.
3357
3358         (prologue): Use (const_int 0) as never generated filler insn.
3359         (epilogue): Ditto.
3360         (sibcall_epilogue): Ditto.
3361         (eh_return_si): Ditto.
3362         (eh_return_di): Ditto.
3363
3364         (add<mode>3): Rename from adddf3 and addsf3.  Macroize expander
3365         using MODEF mode iterator.
3366         (sub<mode>3): Rename from subdf3 and subsf3.  Macroize expander
3367         using MODEF mode iterator.
3368         (mul<mode>3): Rename from muldf3 and mulsf3.  Macroize expander
3369         using MODEF mode iterator.
3370         (nearbyint<mode>2): Rename from nearbyintdf2 and nearbyintsf2.
3371         Macroize expander using MODEF mode iterator.
3372
3373         (zero_extendsidi2): Remove operand constraints from expander.
3374         (smuldi3_highpart): Ditto.
3375         (indirect_jump): Ditto.
3376         (tablejump): Ditto.
3377         (rsqrtsf2): Ditto.
3378         * config/i386/sse.md (storentv4sf): Ditto.
3379         (storentv2df): Ditto.
3380         (storentv2di): Ditto.
3381         (storentsi): Ditto.
3382         (sse2_cvtpd2ps): Ditto.
3383         (vec_interleave_highv16qi): Ditto.
3384         (vec_interleave_lowv16qi): Ditto.
3385         (vec_interleave_highv8hi): Ditto.
3386         (vec_interleave_lowv8hi): Ditto.
3387         (vec_interleave_highv4si): Ditto.
3388         (vec_interleave_lowv4si): Ditto.
3389         (vec_interleave_highv2di): Ditto.
3390         (vec_interleave_lowv2di): Ditto.
3391         (sse2_maskmovdqu): Ditto.
3392         * config/i386/mmx.md (mmx_maskmovq): Ditto.
3393
3394 2007-09-09  Ira Rosen  <irar@il.ibm.com>
3395
3396         * tree-vectorizer.h (enum vect_def_type): Start enumeration from 1.
3397         (struct _slp_tree, struct _slp_instance): Define new data structures
3398         along macros for their access.
3399         (struct _loop_vec_info): Define new fields: strided_stores,
3400         slp_instances, and slp_unrolling_factor along macros for their access.
3401         (enum slp_vect_type): New.
3402         (struct _stmt_vec_info): Define new field, slp_type, and macros for
3403         its access.
3404         (STMT_VINFO_STRIDED_ACCESS): New macro.
3405         (vect_free_slp_tree): Declare.
3406         (vectorizable_load): Add an argument of type slp_tree.
3407         (vectorizable_store, vectorizable_operation, vectorizable_conversion,
3408         vectorizable_assignment): Likewise.
3409         (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
3410         Declare (make extern).
3411         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
3412         (new_loop_vec_info): Likewise.
3413         (destroy_loop_vec_info): Free memory allocated for SLP structures.
3414         * tree-vect-analyze.c: Include recog.h.
3415         (vect_update_slp_costs_according_to_vf): New.
3416         (vect_analyze_operations): Add argument for calls to vectorizable_ ()
3417         functions. For not pure SLP stmts with strided access check that the
3418         group size is power of 2. Update the vectorization factor according to
3419         SLP. Call vect_update_slp_costs_according_to_vf.
3420         (vect_analyze_group_access): New.
3421         (vect_analyze_data_ref_access): Call vect_analyze_group_access.
3422         (vect_free_slp_tree): New functions.
3423         (vect_get_and_check_slp_defs, vect_build_slp_tree, vect_print_slp_tree,
3424         vect_mark_slp_stmts, vect_analyze_slp_instance, vect_analyze_slp,
3425         vect_make_slp_decision, vect_detect_hybrid_slp_stmts,
3426         vect_detect_hybrid_slp): Likewise.
3427         (vect_analyze_loop): Call vect_analyze_slp, vect_make_slp_decision
3428         and vect_detect_hybrid_slp.
3429         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Take
3430         SLP costs into account.
3431         (vect_get_cost_fields): New function.
3432         (vect_model_simple_cost): Make extern, add SLP parameter and handle
3433         SLP.
3434         (vect_model_store_cost, vect_model_load_cost): Likewise.
3435         (vect_get_constant_vectors): New function.
3436         (vect_get_slp_vect_defs, vect_get_slp_defs,
3437         vect_get_vec_defs_for_stmt_copy, vect_get_vec_defs_for_stmt_copy,
3438         vect_get_vec_defs): Likewise.
3439         (vectorizable_reduction): Don't handle SLP for now.
3440         (vectorizable_call): Don't handle SLP for now. Add argument to
3441         vect_model_simple_cost.
3442         (vectorizable_conversion): Handle SLP (call vect_get_vec_defs to
3443         get SLPed and vectorized defs). Fix indentation and spacing.
3444         (vectorizable_assignment): Handle SLP.
3445         (vectorizable_induction): Don't handle SLP for now.
3446         (vectorizable_operation): Likewise.
3447         (vectorizable_type_demotion): Add argument to
3448         vect_model_simple_cost.
3449         (vectorizable_type_promotion): Likewise.
3450         (vectorizable_store, vectorizable_load): Handle SLP.
3451         (vectorizable_condition): Don't handle SLP for now.
3452         (vect_transform_stmt): Add a new argument for SLP. Check that there is
3453         no SLP transformation required for unsupported cases. Add SLP
3454         argument for supported cases.
3455         (vect_remove_stores): New function.
3456         (vect_schedule_slp_instance, vect_schedule_slp): Likewise.
3457         (vect_transform_loop): Schedule SLP instances.
3458         * Makefile.in: (tree-vect-analyze.o): Depend on recog.h.
3459
3460 2007-09-09  Andrew Haley  <aph@redhat.com>
3461
3462         * optabs.c (sign_expand_binop): Set libcall_gen = NULL in the fake
3463         signed optab.
3464
3465 2007-09-09  Hans-Peter Nilsson  <hp@axis.com>
3466
3467         Divide REG_LABEL notes into REG_LABEL_OPERAND and REG_LABEL_TARGET.
3468         * doc/rtl.texi (Insns): Specify when a label_ref makes a jump_insn.
3469         Similar for what label_refs can go in the JUMP_TARGET field.  Split
3470         REG_LABEL documentation into REG_LABEL_TARGET and REG_LABEL_OPERAND.
3471         * reload.c (find_reloads): Generate REG_LABEL_OPERAND, not
3472         REG_LABEL when replacing an operand with a LABEL_REF for a
3473         non-jump insn.
3474         (subst_reloads): When replacing a LABEL_REG with a register,
3475         instead of generating a REG_LABEL note, assert that there already
3476         is one or that the label is a known target for the insn.
3477         * rtlanal.c (computed_jump_p): Instead of looking for a REG_LABEL
3478         note, check the JUMP_LABEL field.  Remove "else" after return.
3479         * reorg.c (emit_delay_sequence): Replace case for REG_LABEL with
3480         cases for REG_LABEL_OPERAND and REG_LABEL_TARGET.
3481         (fill_slots_from_thread): Handle both REG_LABEL_OPERAND and
3482         REG_LABEL_TARGET notes, including the JUMP_TARGET field on JUMP_P
3483         insns.  Iterate over all notes; don't assume there's only one.
3484         * cse.c (recorded_label_ref): Adjust comment to refer to
3485         REG_LABEL_OPERAND.
3486         (cse_extended_basic_block): Do LABEL_REF check for all INSN_P
3487         insns, not just NONJUMP_INSN_P.
3488         (check_for_label_ref): For JUMP_P insns, check that the LABEL_REF
3489         isn't a jump target.
3490         * jump.c (rebuild_jump_labels): Adjust head comment.
3491         (init_label_info): Ditto.  Remove REG_LABEL_OPERAND notes only;
3492         don't reset REG_LABEL_TARGET notes, including the JUMP_LABEL field.
3493         (mark_all_labels): For JUMP_P insns without a target, check if the
3494         the target is noted on the previous nonjump insn.
3495         (mark_jump_label_1): New function, guts from mark_jump_label.
3496         <case IF_THEN_ELSE>: Handle first operand as a non-target when
3497         marking jump target labels.
3498         <case LABEL_REF>: Adjust for whether to generate a
3499         REG_LABEL_TARGET or a REG_LABEL_OPERAND note.
3500         For 'E' format rtl, iterate in descending element order.
3501         (delete_related_insns): Handle both REG_LABEL_TARGET and
3502         REG_LABEL_OPERAND notes.  For JUMP_P insns with labels with zero
3503         reference count, delete and fallthrough.  Move finding-next-
3504         non-deleted insn last in the function.  Look at all INSN_P insns
3505         for REG_LABEL_OPERAND notes.
3506         (redirect_jump_2): Assert that OLABEL equals the old JUMP_LABEL of
3507         JUMP.
3508         * print-rtl.c (print_rtx): For JUMP_P insns and a non-NULL
3509         JUMP_LABEL, output the INSN_UID of it.
3510         * gcse.c: Adjust comments as appropriate to say REG_LABEL_OPERAND
3511         and/or REG_LABEL_TARGET.
3512         (add_label_notes): Only add REG_LABEL_OPERAND notes.  Put in line
3513         with jump.c copy by only adding notes for labels actually
3514         referenced in the insn.
3515         * emit-rtl.c (try_split): Don't assume only NONJUMP_INSN_P need
3516         usage count increment; handle all INSN_P trial insns.
3517         (emit_copy_of_insn_after): Change to not copy REG_LABEL_OPERAND
3518         notes.
3519         * rtl.h (struct rtx_def) <volatil>: Adjust to mention
3520         REG_LABEL_TARGET and REG_LABEL_OPERAND.
3521         (LABEL_REF_NONLOCAL_P): Allow REG_LABEL_TARGET and
3522         REG_LABEL_OPERAND.
3523         * combine.c (distribute_notes): Adjust for REG_LABEL_TARGET on
3524         JUMP_P insns and REG_LABEL_OPERAND everywhere.
3525         * sched-rgn.c (is_cfg_nonregular): Check for REG_LABEL_OPERANDS
3526         on all INSN_P insns.
3527         * reg-notes.def (LABEL_TARGET, LABEL_OPERAND): Split from LABEL.
3528         * cfgrtl.c (delete_insn): Adjust to handle REG_LABEL_TARGET and
3529         REG_LABEL_OPERAND notes.
3530         * reload1.c (calculate_needs_all_insns): Adjust comments.
3531         (set_label_offsets): Adjust to look for REG_LABEL_OPERAND notes.
3532         * config/alpha/alpha.md (split for load of an address into a
3533         four-insn sequence on Unicos/Mk): Adjust to use
3534         REG_LABEL_OPERAND.
3535         * config/sh/sh.md (sh_reorg, final_prescan_insn): Ditto.
3536
3537 2007-09-09  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
3538
3539         Revert:
3540         2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
3541         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
3542         FOR_BB_INSNS_SAFE instead of for loop.
3543         * cse.c (cse_extended_basic_block): Likewise.
3544         * postreload.c (reload_cse_regs_1): New variable next. Make sure
3545         that the for loop does not invoke NEXT_INSN on a deleted insn.
3546         * function.c (instantiate_virtual_regs): Likewise.
3547         * lower-subreg.c (remove_retval_note): Likewise.
3548         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
3549         FOR_BB_INSNS.
3550         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
3551         a deleted insn.
3552         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
3553         insn, if it's a jump.
3554         (try_redirect_by_replacing_jump): New variable jump_p. Call
3555         tablejump_p before delete_insn_chain.
3556         * reload1.c (reload): New variable next. Make sure that the for
3557         loop does not invoke NEXT_INSN on a deleted insn.
3558         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
3559         (delete_output_reload): New variable prev. Make sure the the for
3560         loops do not invoke PREV_INSN on a deleted insn.
3561
3562 2007-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3563
3564         * pa/constraints.md: Remove 'X' from unused letters comment.
3565
3566 2007-09-08  Richard Guenther  <rguenther@suse.de>
3567
3568         * tree-tailcall.c (find_tail_calls): If we don't have aliases
3569         computed check stmt_ann->references_memory instead of counting
3570         virtual operands.
3571  
3572 2007-09-08  Segher Boessenkool  <segher@kernel.crashing.org>
3573
3574         * cse.c (fold_rtx): Use validate_unshare_change() instead of
3575         validate_change() in one more case.
3576
3577 2007-09-08  Zdenek Dvorak  <ook@ucw.cz>
3578
3579         PR tree-optimization/32283
3580         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Use
3581         estimated_loop_iterations.
3582         (determine_use_iv_cost_condition): Decrease cost of expressions
3583         used in iv elimination.
3584
3585 2007-09-08  Richard Guenther  <rguenther@suse.de>
3586
3587         * tree-cfg.c (verify_gimple_expr): Avoid building new
3588         pointer types, use TYPE_POINTER_TO if available instead.
3589
3590 2007-09-08  Uros Bizjak  <ubizjak@gmail.com>
3591
3592         PR target/33329
3593         PR rtl-optimization/26449
3594         * config/i386/sse.md (mulv4si3): Do not expand sse2 sequence.
3595         (*sse2_mulv4si3): New define_insn_and_split pattern. Split insn in
3596         split1 pass.
3597         (mulv16qi3): Implement as define_insn_and_split pattern instead of
3598         define_expand.  Split insn in split1 pass.
3599         (mulv2di3): Ditto.
3600
3601 2007-09-08  Dorit Nuzman  <dorit@il.ibm.com>
3602
3603         PR tree-optimization/33301
3604         * tree-vect-analyze (analyze_operations): Look at the type of the rhs
3605         when relevant.
3606
3607 2007-09-07  Zdenek Dvorak  <ook@ucw.cz>
3608
3609         PR tree-optimization/32183
3610         * Makefile.in (tree-ssa-reassoc.o): Also depend on $(CFGLOOP_H).
3611
3612         * tree-ssa-reassoc.c: Include cfgloop.h.
3613         (is_reassociable_op): Add a loop argument and return true only
3614         for inside loop.
3615         (linearize_expr): Updated.
3616         (should_break_up_subtract): Likewise.
3617         (linearize_expr_tree): Likewise.
3618         (init_reassoc): Call loop_optimizer_init with
3619         AVOID_CFG_MODIFICATIONS.  Remove calculate_dominance_info call
3620         with CDI_DOMINATORS.
3621         (fini_reassoc): Call loop_optimizer_finalize.
3622
3623 2007-09-07  Sterling Augustine  <sterling@tensilica.com>
3624
3625         * config/xtensa/lib2funcs.S (__xtensa_sync_caches): Use an ISYNC even
3626         if there is no i-cache.
3627
3628 2007-09-07  Richard Guenther  <rguenther@suse.de>
3629
3630         Reapply
3631         2007-09-06  Richard Guenther  <rguenther@suse.de>
3632
3633         PR tree-optimization/32586
3634         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
3635         folding if nothing changed.
3636         (simplify_unary_expression): New function.  Do tree combining
3637         on conversion like codes.
3638         (try_to_simplify): Call it.
3639
3640 2007-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3641
3642         PR target/33286
3643         * gthr-posix.h (__gthread_active_p): Add implementation for hppa-hpux.
3644         (__gthread_active,__gthread_start, __gthread_active_init): New.
3645         * gthr-posix95.h: Likewise.
3646
3647 2007-09-07  Roman Zippel <zippel@linux-m68k.org>
3648
3649         * function.h (struct function): Rename calls_unwind_init
3650         to saves_all_registers.
3651         (current_function_saves_all_registers): Renamed from
3652         current_function_calls_unwind_init.
3653         * reload1.c (reload): Set current_function_saves_all_registers.
3654         * except.c (expand_builtin_unwind_init): Likewise.
3655         * config/m68k/m68k.c (m68k_save_reg): Use
3656         current_function_saves_all_registers to save pic register.
3657
3658 2007-09-07  Janis Johnson  <janis187@us.ibm.com>
3659
3660         config/m68k/m68k.c (floating_exact_log2): Update call to real_2expN.
3661         config/s390/s390.md (fixuns_trunc<BFP:mode><GPR:mode>2): Ditto.
3662
3663         Reapply reverted changes:
3664
3665         2007-09-06  Jan Hubicka  <jh@suse.cz>
3666  
3667         * config/i386.c (ix86_expand_lround, ix86_expand_round): Update call
3668         of real_2expN.
3669
3670         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
3671
3672         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
3673         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
3674
3675         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
3676
3677         * optabs.c (expand_float): Convert unsigned integer as signed only
3678         if it provides sufficient accuracy; add mode argument to real_2expN.
3679         (expand_fix): Fix comment typos; extend binary float into mode
3680         wider than destination for converion to unsigned integer; add mode
3681         argument to real_2expN.
3682         * real.c (real_2expN): Add mode argument to special-case decimal
3683         float values.
3684         * real.h (real_2expN): Ditto.
3685         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
3686         real_2expN.
3687         (fixed_from_string): Ditto.
3688         (fixed_to_decimal): Ditto.
3689         (fixed_convert_from_real): Ditto.
3690         (real_convert_from_fixed): Ditto.
3691         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
3692         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
3693         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
3694         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
3695
3696 2007-09-07  Diego Novillo  <dnovillo@google.com>
3697
3698         * tree-flow.h (const_block_stmt_iterator): Remove.
3699         Update all users to use block_stmt_iterator.
3700         * tree-iterator.h (const_tree_stmt_iterator): Remove.
3701         Update all users to use tree_stmt_iterator.
3702
3703 2007-09-07  Sandra Loosemore  <sandra@codesourcery.com>
3704
3705         * config/mips/mips.c (mips_set_current_function): Temporarily
3706         make this a no-op to fix bootstrap errors, pending rewrite.
3707
3708 2007-09-07  Jan Hubicka  <jh@suse.cz>
3709
3710         * reorg.c (dbr_schedule): Move code removing placeholder USEs later
3711         in the pass.
3712
3713 2007-09-07  Dorit Nuzman  <dorit@il.ibm.com>
3714
3715         PR tree-optimization/33299
3716         * tree-vect-transform.c (vect_create_epilog_for_reduction): Update
3717         uses for all relevant loop-exit phis, not just the first.
3718
3719 2007-09-07  Richard Guenther  <rguenther@suse.de>
3720
3721         PR middle-end/33330
3722         * tree-ssa-operands.c (access_can_touch_variable): An access
3723         of the form (*p)[0] can touch a variable of same size.
3724
3725 2007-09-07  Jan Hubicka  <jh@suse.cz>
3726
3727         * passes.c (init_optimization_passes): Add simple dce and addressable
3728         passes.
3729         * tree-ssa.c (execute_update_addresses_taken): New function.
3730         (pass_update_address_taken): New.
3731         * tree-ssa-dse.c (execute_simple_dse): New function.
3732         (pass_simple_dse): New.
3733         * tree-pass.h (pass_simple_dse, pass_update_address_taken): Declare.
3734
3735 2007-09-07  Tobias Burnus  <burnus@net-b.de>
3736
3737         PR middle-end/33321
3738         * doc/invoke.texi: Fix -Wstrict-overflow= table.
3739
3740 2007-09-07  Richard Guenther  <rguenther@suse.de>
3741
3742         Revert
3743         2007-09-06  Richard Guenther  <rguenther@suse.de>
3744
3745         PR tree-optimization/32586
3746         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
3747         folding if nothing changed.
3748         (simplify_unary_expression): New function.  Do tree combining
3749         on conversion like codes.
3750         (try_to_simplify): Call it.
3751
3752 2007-09-07  Richard Guenther  <rguenther@suse.de>
3753             Uros Bizjak  <ubizjak@gmail.com>
3754
3755         PR tree-optimization/32821
3756         * tree_if_conv.c (combine_blocks): Use alloc_stmt_list instead of
3757         NULL in the call to set_bb_stmt_list.
3758
3759 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
3760
3761         * config/mips/mips.c (build_mips16_call_stub): Emit all direct
3762         float calls here, rather than leaving some to the caller.
3763         Use call_internal_direct and call_value_internal_direct.
3764         * config/mips/mips.md (call_internal_direct): New pattern.
3765         (call_value_internal_direct): Likewise.
3766
3767 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
3768
3769         * config/mips/mips.c (mips_base_move_loop_invariants): New variable.
3770         (mips_set_mips16_mode): Restore flag_move_loop_invariants, then set
3771         to 0 for MIPS16.
3772         (override_options): Set mips_base_move_loop_invariants.
3773
3774 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
3775
3776         * config/mips/mips.opt (mcode-readable=): Move to keep list
3777         alphabetical.
3778
3779 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
3780
3781         * doc/invoke.texi: Document the MIPS -mlocal-sdata, -mextern-sdata
3782         and -mgpopt options.  Adjust the -G documentation to match.
3783         * config/mips/mips.opt (mextern-data, mgpopt, mlocal-data): New.
3784         * config/mips/mips.c (mips_rtx_constant_in_small_data_p): New
3785         function, split out from mips_classify_symbol.  Return false for
3786         !TARGET_LOCAL_SDATA.
3787         (mips_classify_symbol): Call mips_rtx_constant_in_small_data_p.
3788         Only use GP-relative accesses for non-pool symbols if TARGET_GPOPT.
3789         (override_options): Check whether the -mgpopt setting is consistent
3790         with the other flags.
3791         (symbolic_expression_p): Delete.
3792         (mips_select_rtx_section): Use mips_rtx_constant_in_small_data_p
3793         and default_elf_select_rtx_section.
3794         (mips_in_small_data_p): Honor section attributes for MIPS16 too.
3795         Return false for local data unless TARGET_LOCAL_SDATA.  Likewise
3796         external data and TARGET_EXTERN_SDATA.
3797
3798 2007-09-07  Tobias Burnus  <burnus@net-b.de>
3799
3800         PR fortran/33303
3801         * doc/cpp.texi (Common Predefined Macros): Add __GFORTRAN__.
3802
3803 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
3804
3805         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
3806         FOR_BB_INSNS_SAFE instead of for loop.
3807         * cse.c (cse_extended_basic_block): Likewise.
3808         * postreload.c (reload_cse_regs_1): New variable next. Make sure
3809         that the for loop does not invoke NEXT_INSN on a deleted insn.
3810         * function.c (instantiate_virtual_regs): Likewise.
3811         * lower-subreg.c (remove_retval_note): Likewise.
3812         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
3813         FOR_BB_INSNS.
3814         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
3815         a deleted insn.
3816         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
3817         insn, if it's a jump.
3818         (try_redirect_by_replacing_jump): New variable jump_p. Call
3819         tablejump_p before delete_insn_chain.
3820         * reload1.c (reload): New variable next. Make sure that the for
3821         loop does not invoke NEXT_INSN on a deleted insn.
3822         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
3823         (delete_output_reload): New variable prev. Make sure the the for
3824         loops do not invoke PREV_INSN on a deleted insn.
3825
3826 2007-09-06  Zdenek Dvorak  <ook@ucw.cz>
3827
3828         * cgraphbuild.c (rebuild_cgraph_edges): Export.
3829         * cgraph.h (rebuild_cgraph_edges): Declare.
3830         * tree-pass.h (pass_expand_omp_ssa): New.
3831         * omp-low.c (find_omp_clause): Export.
3832         (copy_var_decl): Split from omp_copy_decl_2.
3833         (build_omp_barrier): Return the call to emit instead of emitting
3834         it directly.
3835         (lower_rec_input_clauses, expand_omp_single): Gimplify the result of
3836         build_omp_barrier.
3837         (extract_omp_for_data, expand_parallel_call, expand_omp_parallel,
3838         expand_omp_for_generic, expand_omp_for_static_nochunk,
3839         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
3840         Adapted to work on SSA form.
3841         (execute_expand_omp): Do not invalidate dominance information.
3842         (gate_expand_omp): Do not run with -fopenmp-ssa flag.
3843         (gate_expand_omp_ssa, pass_expand_omp_ssa): New.
3844         * gimplify.c (gimplify_omp_for): Ensure that the control variable is
3845         a gimple_reg.
3846         (force_gimple_operand): Allow gimplifying code expressions without
3847         value.
3848         * tree-predcom.c (mark_virtual_ops_for_renaming): Handle phi nodes.
3849         * common.opt (fopenmp-ssa): New.
3850         * tree-flow.h (find_omp_clause, copy_var_decl): Declare.
3851         * Makefile.in (tree-cfg.o): Add TREE_INLINE_H dependency.
3852         * tree-cfg.c: Include tree-inline.h.
3853         (struct move_stmt_d): Replace vars_to_remove by vars_map field.
3854         (replace_by_duplicate_decl, replace_ssa_name,
3855         mark_virtual_ops_in_region): New functions.
3856         (move_stmt_r, move_block_to_fn, move_sese_region_to_fn): Adapted
3857         to work on SSA form.
3858         * passes.c (init_optimization_passes): Add pass_expand_omp_ssa pass.
3859         * tree-ssa-operands.c (get_expr_operands): Handle operands of OMP
3860         constructs.
3861
3862 2007-09-06  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
3863
3864         * tree-loop-linear.c: Include obstack.h.
3865         (linear_transform_loops): New obstack lambda_obstack.
3866         Initialize it, pass it to gcc_loopnest_to_lambda_loopnest,
3867         lambda_loopnest_transform, lambda_loopnest_to_gcc_loopnest calls
3868         and free afterwards.
3869         * lambda.h (struct obstack): New forward declaration.
3870         (lambda_linear_expression_new): New parameter of type struct
3871         obstack *.
3872         (lambda_loopnest_new): Likewise.
3873         (lambda_loopnest_transform): Likewise.
3874         (lambda_body_vector_new): Likewise.
3875         (lambda_body_vector_compute_new): Likewise.
3876         (gcc_loopnest_to_lambda_loopnest): Likewise.
3877         (lambda_loopnest_to_gcc_loopnest): Likewise.
3878         * lambda-code.c: Include obstack.h.
3879         (lambda_lattice_new): New parameter lambda_obstack.  Use it for
3880         allocation of ret.
3881         (lambda_body_vector_new): Likewise.
3882         (lambda_linear_expression_new): Likewise.
3883         (lambda_lattice_new): Likewise.
3884         (lambda_loopnest_new): Likewise.  Additionally use obstack to
3885         allocate LN_LOOPS(ret).
3886         (lambda_lattice_compute_base): New parameter lambda_obstack.  Pass
3887         it to lambda_lattice_new.
3888         (lambda_body_vector_compute_new): New parameter lambda_obstack.
3889         Pass it to lambda_body_vector_new.
3890         (lambda_lattice_compute_base): New paramater lambda_obstack.  Pass
3891         it to lambda_lattice_new.
3892         (compute_nest_using_fourier_motzkin): New parameter lambda_obstack.
3893         Pass it to lambda_loopnest_new, lambda_linear_expression_new.
3894         (lambda_compute_target_space): Likewise.
3895         (lambda_compute_auxillary_space): New parameter lambda_obstack.
3896         Pass it to lambda_lattice_compute_base and
3897         compute_nest_using_fourieer_motzkin.
3898         (lambda_loopnest_transform): New parameter lambda_obstack.  Pass
3899         it to lambda_lattice_compute_base, lambda_lattice_auxillary_space
3900         and lambda_lattice_compute_target_space.
3901         (gcc_tree_to_linear_expression): Nex parameter lambda_obstack.
3902         Pass it to lambda_linear_expression_new.
3903         (gcc_loop_to_lambda_loop): New parameter lambda_obstack.  Pass it
3904         to gcc_tree_to_linear_expression.
3905         (gcc_loopnest_to_lambda_loopnest): New parameter lambda_obstack.
3906         Pass it to gcc_loop_to_lambda_loop and lambda_loopnest_new.
3907         (lambda_loopnest_to_gcc_loopnest): New parameter lambda_obstack.
3908         Pass it to lambda_body_vector_new and
3909         lambda_body_vector_compute_new.
3910         * Makefile.in (tree-loop-linear.o): Add $(OBSTACK_H) dependency.
3911         (lambda-code.o): Likewise.
3912
3913 2007-09-06  Chao-ying Fu  <fu@mips.com>
3914
3915         * ginclude/stdfix.h: New file.
3916         * Makefile.in (USER_H): Add $(srcdir)/ginclude/stdfix.h.
3917         (convert.o): Add dependence on fixed-value.h.
3918         * c-convert.c (convert): Support FIXED_POINT_TYPE.
3919         * c-cppbuiltin.c (builtin_define_fixed_point_constants): New function
3920         to define fixed-point constants.
3921         (c_cpp_builtins): Define fixed-point constants.
3922         * convert.c (fixed-value.h): New include.
3923         (convert_to_real): Update comment to include fixed-point.
3924         Support FIXED_POINT_TYPE.
3925         (convert_to_integer): Update comment to include fixed-point.
3926         Support FIXED_POINT_TYPE.
3927         (convert_to_complex): Support FIXED_POINT_TYPE.
3928         (convert_to_fixed): New function.
3929         * convert.h (convert_to_fixed): Declare.
3930         * genopinit.c: Add comment about $Q for only fixed-point modes.
3931         (optabs): Add fract_optab, fractuns_optab, satfract_optab,
3932         satfractuns_optab, add_optab, ssadd_optab, usadd_optab, sub_optab,
3933         sssub_optab, ussub_optab, smul_optab, ssmul_optab, usmul_optab,
3934         ssmadd_widen_optab, usmadd_widen_optab, ssdiv_optab, udiv_optab,
3935         usdiv_optab, ssashl_optab, usashl_optab, neg_optab, ssneg_optab,
3936         usneg_optab for fixed-point modes.
3937         (gen_insn): Add force_fixed to track the $Q format for all fixed-point
3938         modes.
3939         * optabs.c (optab_for_tree_code): For *DIV_EXPR, LSHIFT_EXPR,
3940         PLUS_EXPR, MINUS_EXPR, MULT_EXPR, NEGATE_EXPR, return signed or
3941         unsigned saturation optabs, when type is saturating.
3942         (shift_optab_p): Return true for SS_ASHIFT or US_ASHIFT.
3943         (expand_fixed_convert): New function.
3944         (gen_fixed_libfunc, gen_signed_fixed_libfunc,
3945         gen_unsigned_fixed_libfunc, gen_int_fp_fixed_libfunc,
3946         gen_int_fp_signed_fixed_libfunc, gen_int_fixed_libfunc,
3947         gen_int_signed_fixed_libfunc, gen_int_unsigned_fixed_libfunc,
3948         gen_fract_conv_libfunc, gen_fractuns_conv_libfunc,
3949         gen_satfract_conv_libfunc, gen_satfractuns_conv_libfunc): New
3950         functions.
3951         (init_optabs): Initialize ssadd_optab, usadd_optab, sssub_optab,
3952         ussub_optab, ssmul_optab, usmul_optab, ssmadd_widen_optab,
3953         usmadd_widen_optab, ssmsub_widen_optab, usmsub_widen_optab,
3954         ssdiv_optab, usdiv_optab, ssashl_optab, usashl_optab, ssneg_optab,
3955         usneg_optab, fract_optab, fractuns_optab, satfract_optab,
3956         satfractuns_optab.
3957         Initialize fixed-point libraries, including add, ssadd, usadd, sub,
3958         sssub, ussub, mul, ssmul, usmul, div, ssdiv, udiv, usdiv, ashl,
3959         ssashl, usashl, ashr, lshr, neg, ssneg, usneg, cmp, fract, satfract,
3960         fractuns, satfractuns.
3961         * optabs.h (enum optab_index): Add OTI_ssadd, OTI_usadd, OTI_sssub,
3962         OTI_ussub, OTI_ssmul, OTI_usmul, OTI_ssdiv, OTI_usdiv, OTI_ssneg,
3963         OTI_usneg, OTI_ssashl, OTI_usashl, OTI_ssmadd_widen, OTI_usmadd_widen,
3964         OTI_ssmsub_widen,  OTI_usmsub_widen.
3965         (ssadd_optab, usadd_optab, sssub_optab, ussub_optab, ssmul_optab,
3966         usmul_optab, ssdiv_optab, usdiv_optab, ssneg_optab, usneg_optab,
3967         ssashl_optab, usashl_optab, ssmadd_widen_optab, usmadd_widen_optab,
3968         umsub_widen_optab, usmsub_widen_optab): Define.
3969         (enum convert_optab_index): Add COI_fract, COI_fractuns, COI_satfract,
3970         COI_satfractuns.
3971         (fract_optab, fractuns_optab, satfract_optab, satfractuns_optab):
3972         Define.
3973         (expand_fixed_convert): Declare.
3974         * expr.c (convert_move): Support the move of fixed-point modes.
3975         (emit_move_insn_1): Handle fixed-point mode to move via integer.
3976         (categorize_ctor_elements_1): Handle FIXED_CST.
3977         (count_type_elements): Handle FIXED_POINT_TYPE.
3978         (expand_expr_real_1): For VECTOR_CST, check MODE_VECTOR_FRACT,
3979         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
3980         Support FIXED_CST.
3981         For PLUS_EXPR and MINUS_EXPR, support saturating and non-saturating
3982         multiply and add/subtract for fixed-point types.
3983         For MULT_EXPR, *DIV_EXPR, *SHIFT_EXPR, if the mode if a fixed-point
3984         mode, we jump to binop directly.
3985         Support FIXED_CONVERT_EXPR.
3986         (do_store_flag): Check FIXED_CST to put a constant second.
3987         (vector_mode_valid_p): Handle MODE_VECTOR_FRACT,
3988         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
3989         (const_vector_from_tree): Support FIXED_CST.
3990         * doc/extend.texi (Fixed-Point): New node.
3991         * doc/md.texi (ssadd, usadd, sssub, ussub, ssmul, usmul, ssdiv, usdiv,
3992         ssmadd, usmadd, ssmsub, usmsub, ssashl, usashl, ssneg, usneg, fract,
3993         satfract, fractuns, satfractuns): Document them.
3994
3995 2007-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
3996
3997         * config/bfin/bfin.h (PREFERRED_RELOAD_CLASS): Don't reload autoinc
3998         addresses into I registers.
3999
4000 2007-09-06  Jan Hubicka  <jh@suse.cz>
4001             Andreas Tobler  <a.tobler@schweiz.org>
4002
4003         * config/darwin.c (machopic_indirect_data_reference): Avoid invalid
4004         sharing.
4005         (machopic_legitimize_pic_address): Likewise.
4006
4007 2007-09-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4008             Jan Hubicka  <jh@suse.cz>
4009
4010         * config/spu/spu.md (floatsidf2): Use convert_optab_libfunc
4011         instead of ufloat_optab->handlers directly.
4012         (floatdidf2): Likewise.
4013
4014 2007-09-06  Sandra Loosemore  <sandra@codesourcery.com>
4015
4016         * config/mips/mips.c:  Include diagnostic.h.
4017         (mips_set_current_function): Check errorcount and sorrycount 
4018         before generating RTL.
4019
4020 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
4021
4022         PR target/33256
4023         * config/mips/mips.c (mips_classify_symbolic_expression): New function.
4024         (mips_classify_address): Use it instead of mips_symbolic_constant_p.
4025         (print_operand_reloc): Likewise.
4026
4027 2007-09-06  Janis Johnson  <janis187@us.ibm.com>
4028
4029         Revert:
4030
4031         2007-09-06  Jan Hubicka  <jh@suse.cz>
4032  
4033         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
4034         real_2expN.
4035
4036         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
4037
4038         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
4039         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
4040
4041         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
4042
4043         * optabs.c (expand_float): Convert unsigned integer as signed only
4044         if it provides sufficient accuracy; add mode argument to real_2expN.
4045         (expand_fix): Fix comment typos; extend binary float into mode
4046         wider than destination for converion to unsigned integer; add mode
4047         argument to real_2expN.
4048         * real.c (real_2expN): Add mode argument to special-case decimal
4049         float values.
4050         * real.h (real_2expN): Ditto.
4051         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
4052         real_2expN.
4053         (fixed_from_string): Ditto.
4054         (fixed_to_decimal): Ditto.
4055         (fixed_convert_from_real): Ditto.
4056         (real_convert_from_fixed): Ditto.
4057         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
4058         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
4059         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
4060         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
4061
4062 2007-09-06  Tom Tromey  <tromey@redhat.com>
4063
4064         * tree-cfg.c (remove_bb): Only warn if line is non-zero.
4065         * c-pch.c (c_common_read_pch): Restore current location after
4066         reading PCH file.
4067         * tree.c (expand_location): Update.
4068         (expr_filename): Changed return type.  Unified the two cases.
4069         (expr_lineno): Likewise.
4070         (annotate_with_file_line): Don't use EXPR_LINENO and EXPR_FILENAME
4071         as lvalues.
4072         * toplev.c (line_table): Changed type.
4073         (general_init): Update.
4074         (realloc_for_line_map): New function.
4075         (general_init): Allocate line_table using GC.
4076         * fix-header.c (line_table): Changed type.
4077         (read_scan_file): Update.
4078         (read_scan_file): Update.
4079         * c-ppoutput.c (maybe_print_line): Update.
4080         (print_line): Update.
4081         (cb_line_change): Update.
4082         (cb_define): Update.
4083         (pp_file_change): Update.
4084         * c-opts.c (c_common_init_options): Update.
4085         (finish_options): Update.
4086         (push_command_line_include): Update.
4087         * c-lex.c (cb_line_change): Update.
4088         (cb_def_pragma): Update.
4089         (cb_define): Update.
4090         (cb_undef): Update.
4091         (c_lex_with_flags): Use cpp_get_token_with_location.
4092         * input.h (line_table): Changed type.
4093         (location_from_locus): New macro.
4094         * tree.h (EXPR_FILENAME): No longer an lvalue.
4095         (EXPR_LINENO): Likewise.
4096         (expr_locus, set_expr_locus): Declare separately for
4097         USE_MAPPED_LOCATION.
4098         (expr_filename, expr_lineno): Changed return type.
4099         * gimplify.c (tree_to_gimple_tuple): Use SET_EXPR_LOCUS.
4100         * cfgexpand.c (expand_gimple_cond_expr): Use location_from_locus.
4101         (expand_gimple_basic_block): Likewise.
4102         * final.c (final_scan_insn): Use expanded_location.
4103
4104 2007-09-06  Richard Guenther  <rguenther@suse.de>
4105
4106         PR tree-optimization/32586
4107         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
4108         folding if nothing changed.
4109         (simplify_unary_expression): New function.  Do tree combining
4110         on conversion like codes.
4111         (try_to_simplify): Call it.
4112         * builtins.c (fold_builtin_cexp): Fold the built expressions.
4113         * fold-const.c (fold_unary): Test result of get_callee_fndecl().
4114
4115 2007-09-06  Jan Hubicka  <jh@suse.cz>
4116
4117         PR target/33318
4118         * cse.c (fold_rtx): Avoid invalid sharing.
4119
4120 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
4121
4122         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
4123         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
4124
4125 2007-09-06  Revital Eres  <eres@il.ibm.com>
4126
4127         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
4128         Fix offsettable memory reference for 750CL.
4129
4130 2007-09-06  Pat Haugen  <pthaugen@us.ibm.com>
4131
4132         * reload.c (find_reloads_address_1): Try to preserve original
4133         base/index regclass of operands.
4134         * regrename.c (scan_rtx_address): Likewise.
4135         (replace_oldest_value_addr): Likewise.
4136
4137 2007-09-06  Richard Guenther  <rguenther@suse.de>
4138
4139         PR tree-optimization/33302
4140         * domwalk.c (walk_dominator_tree): The exit block is
4141         interesting even if it is not reachable.
4142
4143 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
4144
4145         PR middle-end/33306
4146         * optabs.c (avoid_expensive_constant): Do nothing if MODE is VOIDmode.
4147
4148 2007-09-06  Basile Starynkevitch  <basile@starynkevitch.net>
4149
4150         * cfg.c (dump_bb_info, dump_edge_info): Added cfun test for 
4151         robustness.
4152
4153 2007-09-05  Ian Lance Taylor  <iant@google.com>
4154
4155         * tree-pretty-print.c (dump_decl_name): Cast LABEL_DECL_UID to int
4156         when printing.
4157         (dump_generic_node): Likewise.
4158         * print-rtl.c (print_decl_name): Likewise.
4159         * print-tree.c (print_node_brief): Likewise.
4160         (print_node): Likewise.
4161         * Makefile.in (RTL_BASE_H): Add alias.h.
4162         (TREE_H): Likewise.
4163
4164 2007-09-06  Jesper Nilsson  <jesper.nilsson@axis.com>
4165
4166         * longlong.h [__CRIS_arch_version >= 8] (count_trailing_zeros):
4167         Defined.
4168         * config/cris/cris.md (ctzsi2, cris_swap_bits): Implemented.
4169         * config/cris/cris.h (CTZ_DEFINED_VALUE_AT_ZERO): Defined.
4170
4171 2007-09-06  Jie Zhang  <jie.zhang@analog.com>
4172
4173         * config.gcc (tm_file): Add linux.h for bfin*-uclinux*.
4174         (tm_defines): Define UCLIBC_DEFAULT to 1.
4175         (extra_options): Add linux.opt.
4176         * config/bfin/linux.h (CPLUSPLUS_CPP_SPEC): Don't define.
4177         (CRT_CALL_STATIC_FUNCTION): Likewise.
4178         (NO_IMPLICIT_EXTERN_C): Likewise.
4179         (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
4180         * config/bfin/elf.h (OBJECT_FORMAT_ELF): Don't define.
4181         * config/bfin/uclinux.h (CPLUSPLUS_CPP_SPEC): Don't define.
4182         (ENDFILE_SPEC): Don't define.
4183         (LIB_SPEC): Likewise.
4184         (CRT_CALL_STATIC_FUNCTION): Likewise.
4185         (NO_IMPLICIT_EXTERN_C): Likewise.
4186         (LINUX_TARGET_OS_CPP_BUILTINS): Likewise.
4187         (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
4188
4189 2007-09-06  Jan Hubicka  <jh@suse.cz>
4190
4191         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
4192         real_2expN.
4193
4194 2007-09-06  Jan Hubicka  <jh@suse.cz>
4195
4196         * opts.c (common_handle_option): Enable inlining functions for
4197         -fprofile-generate.
4198
4199 2007-09-06  Jakub Jelinek  <jakub@redhat.com>
4200
4201         * builtin-attrs.def (ATTR_NONNULL_3): New.
4202         (DEF_FORMAT_ATTRIBUTE): Use just ATTR_NONNULL_##FA instead of
4203         ATTR_NOTHROW_NONNULL_##FA.
4204         (DEF_FORMAT_ATTRIBUTE_NOTHROW, DEF_FORMAT_ATTRIBUTE_BOTH): New macros.
4205         (ATTR_FORMAT_PRINTF_NOTHROW_2_0, ATTR_PRINTF_NOTHROW_2_3,
4206         ATTR_FORMAT_PRINTF_NOTHROW_3_0, ATTR_FORMAT_PRINTF_NOTHROW_3_4,
4207         ATTR_FORMAT_PRINTF_NOTHROW_4_0, ATTR_PRINTF_NOTHROW_4_5,
4208         ATTR_FORMAT_PRINTF_NOTHROW_5_0, ATTR_FORMAT_PRINTF_NOTHROW_5_6,
4209         ATTR_FORMAT_SCANF_NOTHROW_2_0, ATTR_FORMAT_SCANF_NOTHROW_2_3,
4210         ATTR_FORMAT_STRFTIME_NOTHROW_3_0, ATTR_FORMAT_STRFMON_NOTHROW_3_4):
4211         New.
4212         (ATTR_FORMAT_PRINTF_4_0, ATTR_PRINTF_4_5, ATTR_FORMAT_PRINTF_5_0,
4213         ATTR_FORMAT_PRINTF_5_6, ATTR_FORMAT_STRFTIME_3_0,
4214         ATTR_FORMAT_NOTHROW_3_4): Remove.
4215         * builtins.def (snprintf, sprintf, sscanf, vsnprintf, vsprintf,
4216         vsscanf, strfmon, strftime, __snprintf_chk, __sprintf_chk,
4217         __vsnprintf_chk, __vsprintf_chk): Use ATTR_FORMAT_*_NOTHROW_*
4218         instead of ATTR_FORMAT_*_*.
4219
4220 2007-09-06  Hans-Peter Nilsson  <hp@axis.com>
4221
4222         * config/cris/cris.c (cris_emit_movem_store): Call copy_rtx on
4223         parts re-used for REG_FRAME_RELATED_EXPR.
4224
4225 2007-09-05  Janis Johnson  <janis187@us.ibm.com>
4226
4227         * optabs.c (expand_float): Convert unsigned integer as signed only
4228         if it provides sufficient accuracy; add mode argument to real_2expN.
4229         (expand_fix): Fix comment typos; extend binary float into mode
4230         wider than destination for converion to unsigned integer; add mode
4231         argument to real_2expN.
4232         * real.c (real_2expN): Add mode argument to special-case decimal
4233         float values.
4234         * real.h (real_2expN): Ditto.
4235         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
4236         real_2expN.
4237         (fixed_from_string): Ditto.
4238         (fixed_to_decimal): Ditto.
4239         (fixed_convert_from_real): Ditto.
4240         (real_convert_from_fixed): Ditto.
4241         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
4242         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
4243         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
4244         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
4245
4246 2007-09-05  Ian Lance Taylor  <iant@google.com>
4247
4248         * init-regs.c (initialize_uninitialized_regs): Call
4249         emit_insn_before rather than add_insn_before.
4250
4251 2007-09-05  Jakub Jelinek  <jakub@redhat.com>
4252
4253         * builtins.def (BUILT_IN_VA_ARG_PACK): New built-in.
4254         * tree.h (CALL_EXPR_VA_ARG_PACK): Define.
4255         * tree-inline.h (copy_body_data): Add call_expr field.
4256         * tree-inline.c (expand_call_inline): Initialize call_expr.
4257         (copy_bb): Append anonymous inline fn arguments to arguments
4258         when inlining a CALL_EXPR_VA_ARG_PACK call.
4259         * builtins.c (expand_builtin): Issue an error if
4260         BUILT_IN_VA_ARG_PACK is seen during expand.
4261         (fold_call_expr, fold_builtin_call_array): Don't fold
4262         CALL_EXPR_VA_ARG_PACK CALL_EXPRs or calls with
4263         __builtin_va_arg_pack () call as last argument.
4264         * gimplify.c (gimplify_call_expr): If last argument to a vararg
4265         function is __builtin_va_arg_pack (), decrease number of call
4266         arguments and instead set CALL_EXPR_VA_ARG_PACK on the CALL_EXPR.
4267         * expr.c (expand_expr_real_1): Issue an error if
4268         CALL_EXPR_VA_ARG_PACK CALL_EXPR is seen during expand.
4269         * tree-pretty-print.c (dump_generic_node): Handle printing
4270         CALL_EXPR_VA_ARG_PACK bit on CALL_EXPRs.
4271         * doc/extend.texi (__builtin_va_arg_pack): Document.
4272
4273 2007-09-05  Adam Nemet  <anemet@caviumnetworks.com>
4274
4275         PR tree-optimization/21513
4276         * builtins.c (build_builtin_expect_predicate): New function.
4277         (fold_builtin_expect): Add argument for expected value.
4278         Distribute __builtin_expect over short-circuiting operations.
4279         Fold nested builtin_expects.
4280         (fold_builtin_2): Adjust call to fold_builtin_expect.
4281
4282 2007-09-05  Rask Ingemann Lambertsen  <rask@sygehus.dk>
4283
4284         PR web/32965
4285         PR tree-optimization/13756
4286         * doc/invoke.texi (Options That Control Optimization): Document
4287         -ftree-dse.
4288
4289 2007-09-05  Uros Bizjak  <ubizjak@gmail.com>
4290
4291         * gcc/config/i386/cpuid.h: New file.
4292         * gcc/config/i386/driver-i386.c: Include cpuid.h.
4293         (describe_cache): Shrink size and line strings to 100 bytes.
4294         (detect_caches_amd): Return "" for unsupported max_ext_level.
4295         Use __cpuid function.
4296         (detect_caches_intel): Return "" for unsupported max_level.
4297         Use __cpuid function.
4298         (host_detect_local_cpu): Change feature flag variables to
4299         unsigned int.  Initialize only extended feature flag variables.
4300         Use __get_cpuid_max to determine max supported cpuid level.
4301         Use __cpuid function to determine supported features.  Fix
4302         calculation of family id.  Remove is_amd and check signature
4303         directly.  Check for Geode signature.  Handle family 4 id.
4304         [PROCESSOR_GENERIC32]: New default for unknown family id.  Move
4305         cpu discovery code to lower part of the function.
4306         [PROCESSOR_PENTIUM, PROCESSOR_K6, PROCESSOR_ATHLON]: Do not tune
4307         for sub-architecture.
4308         [PROCESSOR_PENTIUMPRO]: Simplify cpu discovery code.
4309         [PROCESSOR_K8]: Add k8-sse3 architecture.
4310         [PROCESSOR_NOCONA]: Remove.
4311         [PROCESSOR_GENERIC64]: Ditto.
4312         * gcc/config/i386/x-i386 (driver-i386.o): Depend on cpuid.h.
4313         * gcc/config/i386/crtfastmath.c: Include cpuid.h.  Use __get_cpuid
4314         to check for SSE and FXSAVE support.
4315         * gcc/config/i386/t-crtfm (crtfastmath.o): Depend on cpuid.h.
4316         Add -minline-all-stringops.
4317         * gcc/config.gcc (i[34567]86-*-*): Add cpuid.h to extra_headers.
4318         (x86_64-*-*): Ditto.
4319
4320 2007-09-05  Jie Zhang  <jie.zhang@analog.com>
4321
4322         * config/bfin/linux-unwind.h: New file.
4323         * config/bfin/linux.h (MD_UNWIND_SUPPORT): Define.
4324         * config/bfin/uclinux.h (MD_UNWIND_SUPPORT): Define.
4325
4326 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
4327
4328         * Makefile.in (stmt.o): Add alloc-pool.h dependency.
4329         * stmt.c: Include alloc-pool.h.
4330         (struct case_node): Remove GTY marker.
4331         (add_case_node): New parameter case_node_pool.  Use it for
4332         allocation of r.
4333         (expand_case): New allocation pool case_node_pool.  Initialize it,
4334         pass to add_case_node and free it.
4335
4336 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
4337             David Ung  <davidu@mips.com>
4338             Nigel Stephens <nigel@mips.com>
4339
4340         Add mips16/nomips16 function attributes and -mflip-mips16 option
4341         for testing mixed-mode compilation.
4342
4343         * config/mips/mips.opt (mflip-mips16): New.
4344
4345         * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Define.
4346         (SYMBOL_FLAG_MIPS16_FUNC_P): Define.
4347
4348         * config/mips/mips.c (mips_base_target_flags): New.
4349         (mips_base_mips16): New.
4350         (mips_base_schedule_insns): New.
4351         (mips_base_reorder_blocks_and_partition): New.
4352         (mips_base_align_loops): New.
4353         (mips_base_align_jumps): New.
4354         (mips_base_align_functions): New.
4355         (mips16_flipper): New.
4356         (mips_attribute_table): Add "mips16" and "nomips16" entries.
4357         (TARGET_SET_CURRENT_FUNCTION): Define.
4358         (mips_mips16_type_p, mips_nomips16_type_p): New.
4359         (mips_comp_type_attributes): Check mips16/nomips16 attributes.
4360         (mips_function_ok_for_sibcall): Make it deal with functions with
4361         mips16 attributes.
4362         (mips_init_split_addresses): New, split out from override_options.
4363         (mips_init_relocs): New, split out from override_options.
4364         (was_mips16_p): New.
4365         (mips_set_mips16_mode): New, split out from override_options.
4366         (mips_set_current_function): New.
4367         (override_options): Add sorry for unsupported mips16/pic
4368         combination.  Remove error for mips16/dsp combination.  Save
4369         base option settings.  
4370         (mips_file_start): Move mips16 mode setting output from here....
4371         (mips_output_function_prologue): ....to here.
4372         (mips_output_mi_thunk): Check for mips16 function.
4373         (build_mips16_function_stub): Don't set .mips16 here.
4374         (build_mips16_call_stub): Likewise.
4375         (mips_expand_builtin): Error in mips16 mode.
4376         (mips_use_mips16_mode_p): New.
4377         (mips_encode_section_info): Check for mips16 function, and set
4378         SYMBOL_REF_FLAGS accordingly.
4379
4380         * doc/extend.texi (Function Attributes): Document new
4381         mips16/nomips16 attributes.
4382         * doc/invoke.texi (Option Summary): Add -mflip-mips16.
4383         (MIPS Options): Document -mflip-mips16.
4384
4385 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
4386
4387         * config/mips/mips.c (mips_legitimize_tls_address): Call sorry
4388         if we encounter TLS address in MIPS16 mode.
4389         (mips_legitimize_const_move): Check cannot_force_const_mem for
4390         the (const (plus symbol offset)) case; this forces invalid TLS
4391         address in MIPS16 mode to be caught by the above call to sorry.
4392         (override_options): Don't reset targetm.have_tls in MIPS16 mode,
4393         because that now enables emutls, which is not ABI compatible
4394         with native TLS in non-MIPS16 mode.
4395
4396 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
4397
4398         Add target hook invoked when cfun changes.
4399
4400         * doc/tm.texi (TARGET_SET_CURRENT_FUNCTION): Document.
4401         * target.h (struct gcc_target): Add set_current_function.
4402         * target-def.h (TARGET_SET_CURRENT_FUNCTION): Define.
4403         (TARGET_INITIALIZER): Add initializer for set_current_function.
4404         * tree.h (push_struct_function): New.
4405         * tree-inline.h (push_cfun, pop_cfun): Move declarations to...
4406         * function.h: Here.
4407         (set_cfun): Declare.
4408         * tree-inline.c (cfun_stack, push_cfun, pop_cfun): Moved to...
4409         * function.c: Here.
4410         (push_function_context_to): Use allocate_struct_function
4411         to create null context, not init_dummy_function_start.  Use set_cfun.
4412         (pop_function_context_from): Use set_cfun.
4413         (in_dummy_function): New.
4414         (invoke_set_current_function_hook): New.
4415         (set_cfun): New.
4416         (push_cfun, pop_cfun): Use set_cfun.
4417         (push_struct_function): New.
4418         (allocate_struct_function): Call invoke_set_current_function_hook
4419         before returning.
4420         (prepare_function_start): Don't set cfun here.  Remove unused
4421         argument; fix all callers.
4422         (init_dummy_function_start): Fiddle with in_dummy_function.  Call
4423         push_struct_function.
4424         (init_function_start): Set cfun here.
4425         (expand_dummy_function_end): Fiddle with in_dummy_function.  Pop cfun.
4426         * omp-low.c (create_omp_child_function): Use push_struct_function
4427         and pop_cfun to save/restore state.
4428         (expand_omp_parallel): Remove unused saved_cfun variable.
4429         * cgraphunit.c (ipa_passes): Use set_cfun.
4430         * gimple-low.c (record_vars_into): Use push_cfun/pop_cfun here.
4431         * dwarf2out.c (dwarf2out_abstract_function): Likewise.
4432         * matrix-reorg.c (transform_allocation_sites): Likewise.
4433         (matrix_reorg): Use set_cfun.
4434         * gimplify.c (gimplify_function_tree): Use push_cfun/pop_cfun here.
4435         * tree-optimize.c (tree_rest_of_compilation): Remove one redundant
4436         assignment to cfun; use set_cfun for the other.
4437         * tree-cfg.c (move_sese_region_to_fn): Use set_cfun.
4438         (dump_function_to_file): Use push_cfun/pop_cfun here.
4439         * c-decl.c (finish_function): Use set_cfun.
4440
4441 2007-09-05  Kenneth Zadeck <zadeck@naturalbridge.com>
4442
4443         * regrename.c (rerename_optimize): Use deferred rescanning and
4444         insert explicit calls to rescan insns when changed.
4445         
4446 2007-09-05  Jan Hubicka  <jh@suse.cz>
4447
4448         * optabs.c (libfunc_entry): Change optab to integer.
4449         (hash_libfunc, convert_optab_libfunc, optab_libfunc,
4450         set_optab_libfunc, set_conv_libfunc): Use optable indexes instead
4451         of pointers for hashing.
4452
4453 2007-09-05  Jan Hubicka  <jh@suse.cz>
4454
4455         * regrename.c (pass_regrename, pass_cprop_hardreg): Add RTL sharing
4456         verifier.
4457         * fwprop.c (pass_rtl_fwprop, pass_rtl_fwprop_add): Likewise.
4458         * see.c (pass_see): Likewise.
4459         * tracer.c (pass_tracer): Likewise.
4460         * postreload-gcse.c (pass_gcse2): Likewise.
4461         * postreload.c (pass_postreload_cse): Likewise.
4462         * mode-switching.c (pass_mode_switching): Likewise.
4463         * modulo-sched.c (pass_sms): Likewise.
4464         * cse.c (cse_insn): Likewise.
4465         * web.c (pass_web): Likweise.
4466         * combine-stack-adj.c (pass_stack_adjustments): Likewise.
4467         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Likewise.
4468         * loop-init.c (pass_rtl_loop_init): Likewise.
4469         (pass_rtl_loop_done, pass_rtl_move_loop_, pass_rtl_unswitch,
4470         pass_rtl_unroll_and, pass_rtl_doloop): Likewise.
4471         * global.c (pass_global_alloc): Likewise.
4472         * ifcvt.c (pass_rtl_ifcvt, pass_if_after_combine,
4473         pass_if_after_reload): Likewise.
4474         * reload.c (pass_peephole2, pass_split_for_shoren_branches): Likewise.
4475         * dse.c (pass_rtl_dse1, pass_rtl_dse2): Likewise.
4476         * regmove.c (pass_regmove): Likewise.
4477         * function.c (pass_thread_prologugues_epilogues): Likewise.
4478         * gcse.c (pass_gcse): Likewise.
4479         * rtl-factoring.c (pass_rtl_seqabstr): Likewise.
4480         * lower-subreg.c (pass_lower_subreg2): Likewise.
4481         * bt-load.c (pass_branch_target_load): Likewise.
4482         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
4483         * cfgcleanup.c (pass_jump, pass_jump2): Likewise.
4484         * combine.c (pass_combine): Likewise.
4485         * bb-reorder.c (pass_duplicate_comp, pass_reorder_blocks): Likewise.
4486         (pass_partition_blocks): Likewise.
4487         * var-tracking.c (pass_variable_track): Likewise.
4488         * reg-stack.c (pass_stack_regs_run): Likewise.
4489         * sched-rgn.c (pass_sched, pass_sched2): Likewise.
4490         * passes.c (pass_postreload): Likewise.
4491         (execute_function_todo): Add TODO_verify_rtl_sharing handling code.
4492         * tree-pass.h (TODO_verify_rtl_sharing): New.
4493         (TODO_update_ssa, TODO_update_ssa_no_phi, TODO_update_ssa_full_phi,
4494         TODO_update_ssa_only_virtuals, TODO_remove_unused_locals,
4495         TODO_set_props, TODO_df_finish, TODO_df_verify,
4496         TODO_mark_first_instance, TODO_rebuild_alias): Renumber.
4497
4498 2007-09-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4499
4500         * fold-const.c (all_ones_mask_p, sign_bit_p, simple_operand_p,
4501         fold_real_zero_addition_p, reorder_operands_p,
4502         div_if_zero_remainder, fold_undefer_overflow_warnings,
4503         int_binop_types_match_p, fold_convert_const_int_from_int,
4504         fold_convert_const_int_from_real,
4505         fold_convert_const_int_from_fixed,
4506         fold_convert_const_real_from_real,
4507         fold_convert_const_real_from_fixed,
4508         fold_convert_const_fixed_from_fixed,
4509         fold_convert_const_fixed_from_int,
4510         fold_convert_const_fixed_from_real, maybe_lvalue_p,
4511         fold_checksum_tree, fold_check_failed, print_fold_checksum,
4512         debug_fold_checksum, multiple_of_p): Constify.
4513         * tree-flow-inline.h (get_lineno): Likewise.
4514         * tree-flow.h (get_lineno): Likewise.
4515         * tree-object-size.c (compute_object_offset, addr_object_size,
4516         alloc_object_size, pass_through_call): Likewise.
4517         * tree-pretty-print.c (op_symbol, print_call_name,
4518         print_struct_decl, do_niy): Likewise.
4519         * tree.h (fold_undefer_overflow_warnings, multiple_of_p,
4520         debug_fold_checksum): Likewise.
4521
4522 2007-09-04  Steven Bosscher  <steven@gcc.gnu.org>
4523
4524         PR middle-end/33029
4525         * lower-subreg.c (resolve_clobber): If we remove a REG_LIBCALL
4526         note, remove the associated REG_RETVAL note.
4527
4528 2007-09-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4529
4530         * config.gcc (powerpc*-*-*): Install
4531         spu2vmx.h, vec_types.h, and si2vmx.h headers.
4532         * config/rs6000/spu2vmx.h: New header.
4533         * config/rs6000/si2vmx.h: New header.
4534         * config/rs6000/vec_types.h: New header.
4535
4536 2007-09-05  Ben Elliston  <bje@au.ibm.com>
4537
4538         * varasm.c (initializer_constant_valid_p): Fix comment typo.
4539
4540 2007-09-05  Ben Elliston  <bje@au.ibm.com>
4541
4542         * config/rs6000/ppu_intrinsics.h (__ldarx): Use `Z' constraint,
4543         not `m' for *ptrp.
4544         (__stdcx): Make asm volatile.
4545         (__stwcx, __stdcx): Return only 0 or 1.
4546
4547 2007-09-05  Jan Hubicka  <jh@suse.cz>
4548
4549         Revert:
4550
4551         2007-09-04  Jan Hubicka  <jh@suse.cz>
4552         * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
4553
4554         2007-09-04  Richard Guenther  <rguenther@suse.de>
4555         * tree-ssa-operands.c (add_virtual_operand): Only mark
4556         stores as has_volatile_ops if alias information is not available.
4557
4558 2007-09-05  Jakub Jelinek  <jakub@redhat.com>
4559
4560         * config/rs6000/tramp.asm: Include config.h.
4561         Check __PIC__ or __pic__ macro instead of SHARED.
4562
4563         PR rtl-optimization/32300
4564         * see.c (see_copy_insn): New function.
4565         (see_def_extension_not_merged, see_merge_one_use_extension,
4566         see_merge_one_def_extension): Use it.  Avoid changing
4567         PREV_INSN/NEXT_INSN chains directly, insted emit insns
4568         into sequences.  Call df_insn_delete on temporary insns
4569         that won't be emitted into the insn stream.
4570         (rest_of_handle_see): Turn off DF_DEFER_INSN_RESCAN
4571         and run df_process_deferred_rescans () before run_fast_dce.
4572
4573         PR tree-optimization/33017
4574         * tree-data-ref.c (split_constant_offset) <case SSA_NAME>: Don't
4575         recurse for pure or const function calls.
4576
4577 2007-09-04  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
4578
4579         * c-format.c: Include alloc-pool.h.
4580         (check_format_info_main): New argument fwt_alloc.  Use allocation
4581         pool instead of GC.  Remove GC deallocation code.
4582         (check_format_arg): Create allocation pool, pass it to
4583         check_format_info_main and free it afterwards.
4584         * Makefile.in (c-format.o): Add alloc-pool.h dependency.
4585
4586 2007-09-05  Ben Elliston  <bje@au.ibm.com>
4587
4588         * config/rs6000/ppu_intrinsics.h (__protected_stream_count):
4589         Rename count macro arugment for clarity.
4590         (__protected_unlimited_stream_set): Pass UG=1 to __dcbt_TH1000.
4591         (__protected_stream_set): Likewise, pass 0.
4592
4593 2007-09-04  Jan Hubicka  <jh@suse.cz>
4594
4595         * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
4596
4597 2007-09-04  Jan Hubicka  <jh@suse.cz>
4598
4599         * invoke.texi (-finline-small-functions): Document.
4600         * ipa-inline.c (cgraph_default_inline_p): Do not use DECL_INLINE
4601         when deciding what is inlinable.
4602         (cgraph_decide_recursive_inlining): Handle flag_inline_functions.
4603         (cgraph_decide_inlining_of_small_function): Handle new flags.
4604         (cgraph_decide_inlining_incrementally): Likewise.
4605         * opts.c (decode_options): Enable flag_inline_small_functions at -O2
4606         * common.opt (finline-small-functions): New.
4607         * Makefile.in (build/gengtype.o-warn): Work around PR29478
4608
4609 2007-09-04  Richard Guenther  <rguenther@suse.de>
4610
4611         * tree-ssa-operands.c (add_virtual_operand): Only mark
4612         stores as has_volatile_ops if alias information is not available.
4613
4614 2007-09-04  Andrew Haley  <aph@redhat.com>
4615
4616         * config/arm/libgcc-bpabi.ver: Add _Unwind_Backtrace as GCC_4.3.0.
4617
4618 2007-09-04  Andrew Haley  <aph@redhat.com>
4619
4620         * config/arm/libunwind.S (UNWIND_WRAPPER _Unwind_Backtrace): New.
4621         * config/arm/unwind-arm.h (__gnu_Unwind_Backtrace): New.
4622         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): New.
4623
4624 2007-09-04  Emmanuel Thome  <Emmanuel.Thome@inria.fr>
4625
4626         PR c++/14178
4627         * common.opt: Mention ABI version 2 in comment.
4628
4629 2007-09-04  Jan Hubicka  <jh@suse.cz>
4630
4631         * optabs.c (debug_optab_libfunc): Update; make available to gdb.
4632         (libfunc_entry): New structure.
4633         (libfunc_hash): New hashtable.
4634         (hash_libfunc): New function.
4635         (eq_libfunc): New function.
4636         (convert_optab_libfunc): New function.
4637         (optab_libfunc): New function.
4638         (expand_binop, sign_expand_binop, expand_twoval_binop_libfunc,
4639         expand_unop, prepare_cmp_insn, prepare_float_insn, gen_add2_insn,
4640         expand_float, expand_fix, new_optab, new_convert_optab):
4641          Update for new libfunc API.
4642         (init_libfunc, init_integral_libfuncs,
4643         init_floating_libfuncs, init_interclass_conv_libfuncs
4644         init_intraclass_conv_libfuncs): Remove; reorganize all logic to:
4645         (gen_libfunc, gen_int_libfunc, gen_fp_libfunc, gen_int_fp_libfunc,
4646         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
4647         gen_int_to_fp_conv_libfunc, gen_ufloat_conv_libfunc,
4648         gen_int_to_fp_nondecimal_conv_libfunc, gen_fp_to_int_conv_libfunc,
4649         gen_intraclass_conv_libfunc, gen_trunc_conv_libfunc,
4650         gen_extend_conv_libfunc): New.
4651         (init_one_libfunc): Revamp for hashtables.
4652         (set_conv_libfunc): Likewise.
4653         (init_optabs): Initialize hashtable; use lazy initialization where
4654         possible.
4655         * optabs.h (optab_handlers): Move out of GGC.
4656         (optab, convert_optab): Move out of GGC; add lazy gen info.
4657         (code_to_optab, convert_optab_table, optab_table): Move out of GGC.
4658         (optab_libfunc, convert_optab_libfunc): New.
4659         * builtins.c (expand_builtin_powi): Update for new API.
4660         * expr.c (convert_move): Likewise.
4661         * expmed.c (expand_divmod): Likewise.
4662
4663 2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
4664
4665         * config/rs6000/rs6000.c (rs6000_stack_info): Allocate space for the
4666         GOT pointer only if there is a constant pool.  Use the allocated space
4667         for SPE also.
4668
4669 2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
4670
4671         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Correct
4672         typo for AltiVec.
4673
4674 2007-09-04  Revital Eres  <eres@il.ibm.com>
4675             Richard Guenther  <rguenther@suse.de>
4676             R. Clint Whaley  <whaley@cs.utsa.edu>
4677
4678         * doc/invoke.texi (-fassociative-math, -freciprocal-math):
4679         Document new flags.
4680         * tree-tailcall.c (process_assignment): Use -fassociative-math
4681         when reodering operands of floating-point type.
4682         * fold-const.c (fold_comparison, fold_binary): Use
4683         -fassociative-math and -freciprocal-math instead of
4684         -funsafe-math-optimization flag.
4685         * toplev.h (set_unsafe_math_optimizations_flags): Declare function.
4686         * tree-ssa-math-opts.c (gate_cse_reciprocals): Use
4687         -freciprocal-math instead of -funsafe-math-optimizations.
4688         * opts.c (set_fast_math_flags): Set -freciprocal-math and
4689         -fassociative-math when -ffast-math is set.
4690         (set_unsafe_math_optimizations_flags): New Function
4691         to set -freciprocal-math and -fassociative-math when
4692         -funsafe-math-optimizations is set.
4693         (common_handle_option): Call it.
4694         * tree-vectorizer.c (vect_is_simple_reduction): Use
4695         -fassociative-math when doing reduction on floats.
4696         * loop-unroll.c (analyze_insn_to_expand_var): Use
4697         -fassociative-math when expanding an accumulator of type float.
4698         * simplify-rtx.c (simplify_binary_operation_1): Use
4699         -fassociative-math and -freciprocal-math when reordeing operands
4700         of floating-point type.
4701         * combine.c (combine_simplify_rtx): Likewise.
4702         * tree-ssa-reassoc.c (break_up_subtract_bb, reassociate_bb):
4703         Likewise.
4704         * common.opt (-fassociative-math, -freciprocal-math): New flags.
4705
4706 2007-09-04  Paolo Carlini  <pcarlini@suse.de>
4707
4708         PR c++/18608
4709         * doc/install.texi (--enable-__cxa_atexit): Fix typo.
4710
4711 2007-09-04  Jan Hubicka  <jh@suse.cz>
4712
4713         * regrename.c(copyprop_hardreg_forward_1): Unshare when doing copyprop.
4714
4715 2007-09-04  Jan Hubicka  <jh@suse.cz>
4716
4717         * regrename.c (build_def_use): Don't share RTL between MATCH_OPERATOR
4718         and corresponding MATCH_DUP.
4719
4720 2007-09-04  Uros Bizjak  <ubizjak@gmail.com>
4721
4722         PR middle-end/33187
4723         * combine.c (subst): Do not try to simplify X if it represents load
4724         of FP constant from the constant pool via float extension.
4725
4726 2007-09-04  Ben Elliston  <bje@au.ibm.com>
4727
4728         * c-opts.c: Include "tm_p.h".
4729         * Makefile.in (c-opts.o): Add $(TM_P_H) as a dependency.
4730
4731 2007-09-04  Richard Guenther  <rguenther@suse.de>
4732
4733         PR tree-optimization/33291
4734         * tree-pretty-print.c (dump_generic_node): Dump all
4735         qualifiers for pointer types, not only first.  Dump
4736         qualifiers for aggregate types as well.
4737         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Always
4738         use the canonical type for building ARRAY_REFs.
4739         * gimplify.c (canonicalize_addr_expr): Clean up.  The
4740         correct validness check is compatibility of the pointer
4741         types.  Always use the canonical type for building
4742         ARRAY_REFs and ADDR_EXPRs.
4743         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Revert
4744         change that disabled propagation of ADDR_EXPRs into statements
4745         with volatile ops.
4746
4747 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
4748
4749         * config/arm/arm.md (mulsidi3, umulsidi3, mulsi3_highpart)
4750         (umulsi3_highpart): Make into expanders; existing insns are
4751         now named *[insn]_nov6.  Add stars to existing [insn]_v6
4752         counterparts' names.
4753
4754 2007-09-03  Daniel Jacobowitz  <dan@codesourcery.com>
4755
4756         * Makefile.in (DRIVER_DEFINES, gcc.o, gccspec.o, protoize.o)
4757         (unprotoize.o): Remove SHLIB_MULTILIB.
4758
4759 2007-09-03  Eric Weddington  <eweddington@cso.atmel.com>
4760
4761         * doc/extend.texi: Document progmem attribute for AVR.
4762
4763 2007-09-03  Anatoly Sokolov <aesok@post.ru>
4764
4765         PR target/28902
4766         * config/avr/avr.h (TARGET_VTABLE_ENTRY_ALIGN): Define.
4767
4768 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
4769
4770         * optabs.c (expand_ffs): Initialize val and defined_at_zero
4771         to avoid warnings.
4772
4773         * optabs.c: Remove unnecessary forward declarations.
4774         (expand_unop_direct): New, broken out of expand_unop.
4775         (expand_doubleword_clz): New.
4776         (expand_ctz): Move above expand_ffs.  Use
4777         start_sequence, end_sequence, add_equal_note, and
4778         expand_unop_direct.  Add more commentary.
4779         (expand_ffs): Try both ctz optab and expand_ctz.
4780         Generate a test and branch if the hardware doesn't give us
4781         a useful value for input zero.  Style improvements similar to
4782         expand_ctz.
4783
4784         * config/arm/arm.md (ffssi2, ctzsi2): Delete.
4785
4786 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
4787
4788         * config.gcc: Delete stanza for arm-semi-aof and
4789         armel-semi-aof targets.
4790         * config/arm/arm-protos.h
4791         * config/arm/arm.c
4792         * config/arm/arm.h: Delete all #ifdef AOF_ASSEMBLER blocks;
4793         make all #ifndef AOF_ASSEMBLER blocks unconditional.  Also
4794         delete aof_pic_label and remove mention of AOF in comments.
4795         * config/arm/arm.md: Delete patterns used only for AOF assembly.
4796         * config/arm/aof.h
4797         * config/arm/semiaof.h
4798         * config/arm/t-semi: Delete file.
4799
4800 2007-09-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4801
4802         * system.h (CONST_CAST2, CONST_CAST_TREE, CONST_CAST_RTX,
4803         CONST_CAST_BB): New macros for type-specific casts.
4804         (CONST_CAST): Add a TYPE parameter and define it in terms of
4805         CONST_CAST2.
4806
4807         * c-decl.c (c_make_fname_decl): Supply a TYPE for CONST_CAST.
4808         * c-lex.c (cb_ident, lex_string): Likewise,
4809         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise,
4810         * config/i386/i386.c (ix86_function_regparm,
4811         ix86_function_sseregparm): Use CONST_CAST_TREE.
4812         * config/mmix/mmix.c (mmix_encode_section_info): Supply a TYPE for
4813         CONST_CAST.
4814         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
4815         give_switch, set_multilib_dir): Likewise,
4816         * gengtype-parse.c (string_seq, typedef_name): Likewise,
4817         * gimple-low.c (block_may_fallthru): Use CONST_CAST_TREE.
4818         * jump.c (reversed_comparison_code_parts): Use CONST_CAST_RTX.
4819         * passes.c (execute_one_pass): Supply a TYPE for CONST_CAST.
4820         * prefix.c (update_path): Likewise,
4821         * pretty-print.c (pp_base_destroy_prefix): Likewise,
4822         * rtlanal.c (keep_with_call_p): Use CONST_CAST_RTX.
4823         * tree-cfg.c (tree_can_merge_blocks_p,
4824         tree_block_ends_with_condjump_p): Use CONST_CAST_BB.
4825         * tree-eh.c (lookup_stmt_eh_region_fn): USe CONST_CAST_TREE.
4826         * tree.c (build_string): Supply a TYPE for CONST_CAST.
4827         (attribute_list_contained): Use CONST_CAST_TREE.
4828
4829 2007-09-03  Krister Walfridsson  <cato@df.lth.se>
4830
4831         * config/netbsd-elf.h (USE_LD_AS_NEEDED): Define.
4832
4833 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
4834
4835         PR middle-end/33290
4836         * optabs.c (avoid_expensive_constant): Canonicalize CONST_INTs
4837         before forcing them into a register.
4838
4839 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
4840
4841         * config/mips/mips.md (fetchop_bit): Use define_code_iterator
4842         rather than define_code_macro.
4843
4844 2007-09-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
4845
4846         * gcc.c (xputenv): New function.
4847         (putenv_from_prefixes): Use xputenv instead of putenv.
4848         (process_command): Use xputenv instead of putenv.
4849         (set_collect_gcc_options): Use xputenv instead of putenv.
4850         (main): Use xputenv instead of putenv.
4851
4852 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
4853
4854         * config/cris/cris.h (TARGET_HAS_SWAP): Defined to describe
4855         availability of swap instruction.
4856         * config/cris/cris.md (bswapsi2): Implement using swap instruction.
4857
4858 2007-09-03  Revital Eres  <eres@il.ibm.com>
4859
4860         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Update
4861         Documentation.
4862
4863 2007-09-03  Vladimir Yanovsky  <yanov@il.ibm.com>
4864             Ayal Zaks  <zaks@il.ibm.com>
4865             Revital Eres  <eres@il.ibm.com>
4866
4867         * modulo-sched.c (ps_insert_empty_row, verify_partial_schedule,
4868         compute_split_row): New functions.
4869         (ps_unschedule_node): Remove.
4870         (normalize_sched_times): Iterate over the already scheduled
4871         insns instead of the number of nodes.
4872         (MAX_SPLIT_NUM): New definition.
4873         (sms_schedule_by_order): Change the scheduling heuristic to
4874         avoid useless increases of initiation interval ii.
4875         (get_sched_window): Add dump printouts.
4876
4877 2007-09-02  David Daney  <ddaney@avtrex.com>
4878
4879         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP, UNSPEC_SYNC_OLD_OP,
4880         UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE): New define_constants.
4881         (optab, insn): Add more attributes.
4882         (fetchop_bit): New code macro.
4883         (immediate_insn): New code macro attribute.
4884         (sync): Change condition to ISA_HAS_SYNC.
4885         (rdhwr): Change predicate for operand 0 to register_operand.
4886         (memory_barrier): New expand.
4887         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
4888         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
4889         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
4890         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
4891         sync_new_nand<mode>, sync_lock_test_and_set<mode>): New insns.
4892         * config/mips/mips.h (ISA_HAS_SYNC, ISA_HAS_LL_SC): New ISA predicates.
4893         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
4894         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
4895         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): New Macros.
4896         
4897 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
4898             Hans-Peter Nilsson  <hp@axis.com>
4899
4900         * config/cris/cris.h (TARGET_HAS_LZ, CLZ_DEFINED_VALUE_AT_ZERO):
4901         Defined to describe availability and behavior of CLZ.
4902         * config/cris/cris.md (clzsi2): Implement using lz instruction.
4903         * config/cris/cris.opt: Tweak comment for "-metrax4".
4904         * config/cris/arit.c (LZ): When defined, define as __builtin_clz.
4905         * longlong.h [__CRIS__ && __CRIS_arch_version >= 3]
4906         (count_leading_zeros): Define.
4907
4908 2007-09-01  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
4909
4910         * ggc-page.c (ggc_pch_read): Call validate_free_objects.
4911
4912 2007-09-02  Joseph Myers  <joseph@codesourcery.com>
4913
4914         PR middle-end/33272
4915         * c-decl.c (grokdeclarator): Apply qualifiers to type of parameter
4916         decayed from array.
4917
4918 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
4919
4920         * config/arm/arm.c, config/rs6000/ppu_intrinsics.h,
4921         config/spu/spu.c, df-scan.c, fixed-value.c, fold-const.c,
4922         ginclude/tgmath.h, haifa-sched.c, optabs.c, recog.c,
4923         sched-deps.c, sched-int.h, system.h, target.h,
4924         tree-ssa-live.c, tree-vect-transform.c, tree-vectorizer.c,
4925         tree.def: Fix comment typos.
4926
4927 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
4928
4929         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove.
4930         (override_options): Turn on -mstrict-align on non-ColdFire
4931         targets.
4932         * config/m68k/m68k.h (BIGGEST_ALIGNMENT): Update a comment.
4933
4934 2007-09-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4935
4936         * c-common.c (const_strip_array_types): Delete.
4937         * c-common.h (const_strip_array_types): Likewise.
4938         * emit-rtl.c (const_next_insn, const_previous_insn,
4939         const_next_nonnote_insn, const_prev_nonnote_insn,
4940         const_next_real_insn, const_prev_real_insn,
4941         const_next_active_insn, const_prev_active_insn, const_next_label,
4942         const_prev_label): Delete.
4943         * gimple-low.c (block_may_fallthru): Use expr_last.
4944         * jump.c (reversed_comparison_code_parts): Use prev_nonnote_insn.
4945         * rtl.h (const_previous_insn, const_next_insn,
4946         const_prev_nonnote_insn, const_next_nonnote_insn,
4947         const_prev_real_insn, const_next_real_insn,
4948         const_prev_active_insn, const_next_active_insn, const_prev_label,
4949         const_next_label): Delete.
4950         * rtlanal.c (keep_with_call_p): Use next_nonnote_insn.
4951         * system.h (CONST_CAST): Update comment.
4952         * tree-cfg.c (tree_can_merge_blocks_p): Use last_stmt.
4953         (const_first_stmt, const_last_stmt): Delete.
4954         (tree_block_ends_with_condjump_p): Use last_stmt.
4955         * tree-flow.h (const_first_stmt, const_last_stmt): Delete.
4956         * tree-iterator.c (const_expr_first, const_expr_last,
4957         const_expr_only): Delete.
4958         * tree.c (const_lookup_attribute): Likewise.
4959         (attribute_list_contained): Use lookup_attribute.
4960         * tree.h (const_lookup_attribute, const_expr_first,
4961         const_expr_last, const_expr_only): Delete.
4962
4963 2007-09-01  Richard Guenther  <rguenther@suse.de>
4964
4965         * tree-ssa-alias.c (create_name_tags): Use TYPE_VOLATILE
4966         instead of TREE_THIS_VOLATILE.
4967         * tree-ssa-operands.c (add_virtual_operand): Do not set
4968         has_volatile_ops.  Do not check s_ann for NULL.
4969         (get_indirect_ref_operands): Likewise.
4970         (get_expr_operands): Likewise.  For all reference trees
4971         set has_volatile_ops based on TREE_THIS_VOLATILE.  Also
4972         check base of reference for TREE_THIS_VOLATILE.
4973
4974 2007-09-01  Richard Guenther  <rguenther@suse.de>
4975
4976         * tree-cfg.c (verify_gimple_expr): Fix check for conversions
4977         between integral types.  Also allow conversions between
4978         pointer types.
4979
4980 2007-08-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4981
4982         * optabs.c (prepare_float_lib_cmp): Use
4983         libgcc_cmp_return_mode instead of word_mode.
4984         * config/dfp-bit.h: Likewise.
4985         * config/fp-bit.h: Likewise.
4986         * config/spu/spu.c (spu_libgcc_cmp_return_mode):
4987         New function.
4988         (spu_libgcc_shift_count_mode): New function.
4989         (TARGET_LIBGCC_CMP_RETURN_MODE): Define.
4990         (TARGET_LIBGCC_SHIFT_COUNT_MODE): Define.
4991
4992 2007-08-31  Joseph Myers  <joseph@codesourcery.com>
4993
4994         * tree-pretty-print.c: Include output.h.
4995         (dump_decl_name, dump_generic_node): Use %wd with pp_printf, not
4996         HOST_WIDE_INT_PRINT_DEC.
4997         * Makefile.in (tree-pretty-print.o): Add dependency on output.h.
4998
4999 2007-08-31  Zdenek Dvorak  <ook@ucw.cz>
5000
5001         PR rtl-optimization/33224
5002         * loop-iv.c (latch_dominating_def): Check that the definition belongs
5003         to the analysed region.
5004
5005 2007-08-31  Richard Guenther  <rguenther@suse.de>
5006
5007         * function.c (allocate_struct_function): Do not set
5008         current_function_returns_pointer.
5009         * function.h (struct var_refs_queue): Remove.
5010         (struct simple_obstack_stack): Likewise.
5011         (struct function): Remove fixup_var_refs_queue member.
5012         Remove returns_pointer flag.
5013         (current_function_returns_pointer): Remove define.
5014
5015 2007-08-31  Nick Clifton  <nickc@redhat.com>
5016
5017         * tree-ssa-coalesce.c (compare_pairs): Use the elements as
5018         secondary keys in order to obtain a stable sort.
5019
5020 2007-08-31  Nick Clifton  <nickc@redhat.com>
5021
5022         PR target/33132
5023         * config/m32r/constraints.md: Add W constraint for integer zero.
5024         * config/m32r/m32r.md (get_pc): Use W and i constraints.
5025         Fix length calculation by using alternatives.
5026
5027 2007-08-31  Richard Sandiford  <richard@codesourcery.com>
5028
5029         * optabs.c (shift_optab_p, commutative_optab_p): New functions,
5030         split out from expand_binop.
5031         (avoid_expensive_constant): New function.
5032         (expand_binop_directly): Remove commutative_op argument and
5033         (expand_binop_directly): Remove commutative_op argument and
5034         call cummutative_optab_p instead.  Do not change op0 or op1
5035         when swapping xop0 and xop1.  Apply avoid_expensive_constant
5036         to each argument after potential swapping.  Enforce the
5037         canonical order of commutative operands.
5038         (expand_binop): Use shift_optab_p and commutative_optab_p.
5039         Update the calls to expand_binop_directly.  Only force constants
5040         into registers when widening an operation.  Only swap operands
5041         once a direct expansion has been rejected.
5042         (expand_twoval_binop): Only force constants into registers when
5043         using a direct expansion.
5044
5045 2007-08-31  Maxim Kuvyrkov  <maxim@codesourcery.com>
5046
5047         * sched-deps.c (update_dep): Mark arguments with ATTRIBUTE_UNUSED.
5048         (sched_analyze_insn): Don't postprocess speculative dependencies when
5049         target has no scheduling.
5050         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Fix
5051         'uninitialized' warning.
5052
5053 2007-08-31  Richard Guenther  <rguenther@suse.de>
5054
5055         * tree.c (build_complex_type): Always set TYPE_NAME for
5056         comples types.
5057
5058 2007-08-31  Olivier Hainque  <hainque@adacore.com>
5059
5060         * config/rs6000/xcoff.h (XCOFF_CSECT_DEFAULT_ALIGNMENT_STR): New
5061         internal macro. Default alignment factor for csect directives, chosen
5062         to match what BIGGEST_ALIGNMENT allows.
5063         (DATA_SECTION_ASM_OP): Use it.
5064         * config/rs6000/rs6000.c
5065         (rs6000_xcoff_output_readonly_section_asm_op):
5066         Use XCOFF_CSECT_DEFAULT_ALIGNMENT_STR.
5067         (rs6000_xcoff_output_readwrite_section_asm_op): Likewise.
5068         
5069 2007-08-31  Olivier Hainque  <hainque@adacore.com>
5070
5071         * dbxout.c (dbxout_block): Move declaration within the first
5072         #if defined (DBX_DEBUGGING_INFO) block.  Rearrange another such
5073         block to include the definition, together with the associated
5074         helpers.
5075
5076 2007-08-31  David Edelsohn  <edelsohn@gnu.org>
5077             Revital Eres  <eres@il.ibm.com>
5078
5079         * doc/invoke.texi (-mpaired): Document flag.
5080         * config.gcc: Include paired.h in powerpc extra_headers and
5081         750cl.h in powerpc-*-linux*paired*.
5082         * config/rs6000/rs6000.opt (-mpaired): New flag.
5083         * config/rs6000/rs6000.c (paired_init_builtins,
5084         paired_expand_builtin, paired_expand_lv_builtin,
5085         paired_expand_stv_builtin, paired_expand_predicate_builtin):
5086         New functions to support the paired single builtin functions.
5087         (rs6000_hard_regno_mode_ok): Handle PAIRED_VECTOR_MODE.
5088         (def_builtin, bdesc_3arg, bdesc_2arg, bdesc_1arg): Add paired
5089         single builtins.
5090         (bdesc_paired_preds): New structure for paired predicate
5091         instructions.
5092         (rs6000_expand_builtin): Expand paired single builtins.
5093         (rs6000_init_builtins): Init paired single builtins.
5094         (rs6000_common_init_builtins): Add v2sf_ftype_v2sf_v2sf_v2sf.
5095         Rename v2sf_ftype_v2sf_v2sf to v2sf_ftype_v2sf_v2sf_spe
5096         and v2sf_ftype_v2sf_spe to v2sf_ftype_v2sf.  Add new types
5097         v2sf_ftype_v2sf_v2sf and v2sf_ftype_v2sf.
5098         (rs6000_vector_mode_supported_p): Support paired vector mode.
5099         * config/rs6000/rs6000.h: (UNITS_PER_PAIRED_WORD,
5100         PAIRED_VECTOR_MODE, PAIRED_SIMD_REGNO_P, TARGET_PAIRED_FLOAT):
5101         New.
5102         (LOCAL_ALIGNMENT): Handle PAIRED_VECTOR_MODE.
5103         (DATA_ALIGNMENT): Likewise.
5104         (UNITS_PER_SIMD_WORD): Handle PAIRED_VECTOR_MODE.
5105         (rs6000_builtins): Add PAIRED builtins.
5106         * config/rs6000/rs6000.md: Include paired.md.
5107         * config/rs6000/paired.h: New.
5108         * config/rs6000/paired.md: New.
5109         * config/rs6000/750cl.h: New.
5110         * config/rs6000/spe.md: Recognize movv2sf instruction for 750cl.
5111
5112 2007-08-30  Ollie Wild  <aaw@google.com>
5113
5114         * c-opts.c (c_common_handle_option): Support -fno-directives-only.
5115         * gcc.c (default_compilers): Add -fno-directives-only to
5116         @assembler-with-cpp.
5117
5118 2007-08-30  Sandra Loosemore  <sandra@codesourcery.com>
5119
5120         PR middle-end/33211
5121
5122         * regclass.c (initial_fixed_regs): Revert previous change and make
5123         it const again.
5124         (initial_call_used_regs): Likewise.
5125         (initial_call_really_used_regs): Delete, reverting previous addition.
5126         (initial_reg_names): Likewise.
5127         (init_reg_sets): Revert previous change.
5128         (saved_fixed_regs): New.
5129         (saved_call_used_regs): New.
5130         (saved_call_really_used_regs): New.
5131         (saved_reg_names): New.
5132         (save_register_info): New.
5133         (restore_register_info): New.
5134         (init_reg_sets_1): Replace reset of register info with call to
5135         restore_register_info.
5136         * rtl.h (save_register_info): Declare.
5137         * toplev.c (backend_init): Call save_register_info.
5138
5139 2007-08-30  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
5140
5141         * tree-ssa-propagate.c (set_rhs): Remove the copied annotation
5142         from the original statement.
5143
5144 2007-08-30  Chao-ying Fu  <fu@mips.com>
5145
5146         * c-lex.c (interpret_fixed): Declare.
5147         (interpret_float): Process _Fract and _Accum.
5148         (interpret_fixed): New function.
5149         * final.c (output_addr_const): Process CONST_FIXED.
5150         * simplify-rtx.c (simplify_const_unary_operation): Handle US_NEG.
5151         (simplify_binary_operation_1): Handle US_ASHIFT, SS_MULT, US_MULT,
5152         SS_DIV, US_DIV.
5153         (simplify_const_binary_operation): Handle SS_MULT, US_MULT, SS_DIV,
5154         US_DIV, US_ASHIFT.
5155         (simplify_immed_subreg): Support CONST_FIXED.
5156         Process MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
5157         (simplify_subreg): Support CONST_FIXED.
5158
5159 2007-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5160
5161         * config/rs6000/ppu_intrinsics.h: New file.
5162         * config.gcc (powerpc*-*-* <extra_headers>): Install
5163         ppu_intrinsics.h.
5164
5165 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
5166
5167         * cfg.c (dump_flow_info): Change to also print entry and exit
5168         block info.
5169         * print-rtl.c (print_rtl_single): Allow to print rtl with
5170         -fdump-unnumbered.
5171         
5172 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
5173
5174         * df-core.h (df_dump_region): New function.
5175         * df.h (df_dump_region): New function.
5176         * loop-invariant.c (find_defs): Add call to df_dump_region.
5177         * loop-iv.c (iv_analysis_loop_init): Changed call from df_dump to
5178         df_dump_region.
5179         
5180 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
5181
5182         PR target/33168
5183         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Return
5184         true if any of the compare_section_name calls returned true,
5185         rather than if any returned false.
5186
5187 2007-08-30  Richard Guenther  <rguenther@suse.de>
5188
5189         PR tree-optimization/33199
5190         * tree-ssa-structalias.c (handle_lhs_call): New function.
5191         (find_func_aliases): In non-IPA mode make sure that for
5192         calls that return a pointer we add a constraint for the
5193         result to point to anything.
5194
5195 2007-08-30  Richard Guenther  <rguenther@suse.de>
5196
5197         * doc/invoke.texi (-mveclibabi): Document new target option.
5198         * config/i386/i386.opt (-mveclibabi): New target option.
5199         * config/i386/i386.c (ix86_veclib_handler): Handler for
5200         vectorization library support.
5201         (override_options): Handle the -mveclibabi option, initialize
5202         the vectorization library handler.
5203         (ix86_builtin_vectorized_function): As fallback call the
5204         vectorization library handler, if set.
5205         (ix86_veclibabi_acml): New static function for ACML ABI style
5206         vectorization support.
5207
5208 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
5209
5210         * config/rs6000/rs6000.c (rs6000_emit_sync): For QI or HI mode
5211         used_m, even if it is 32-bit aligned, adjust used_m MEM to have
5212         SImode and update m.  Don't run gen_lowpart_common on arbitrary
5213         memory address, force it to register first.
5214
5215         PR middle-end/32758
5216         * dce.c (dce_process_block): Don't delete setters of
5217         artificially used registers.
5218
5219 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5220
5221         * config/s390/s390.md ("*add<mode>3_alc_carry1_cc",
5222         "*add<mode>3_alc_carry1_cconly", "*add<mode>3_alc_carry2_cc",
5223         "*add<mode>3_alc_carry2_cconly"): New insn definitions.
5224
5225 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5226
5227         * config/s390/s390.c (s390_expand_addcc): Emit canonical alc
5228         pattern.
5229         * config/s390/s390.md ("*add<mode>3_alc_cc", "*add<mode>3_alc",
5230         "addti3", "*adddi3_31z", "*scond<mode>"): Make alc pattern canonical.
5231
5232 2007-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5233
5234         * system.h: Activate -Wcast-qual as warning-only.
5235
5236 2007-08-29  Paolo Bonzini  <bonzini@gnu.org>
5237
5238         PR target/33168
5239         * config/rs6000/rs6000.c (compare_section_name): New function.
5240         (rs6000_elf_in_small_data_p): Compare section prefixes instead
5241         of full name.
5242
5243 2007-08-29  Olivier Hainque  <hainque@adacore.com>
5244
5245         * xcoffout.c: #include debug.h.
5246         * Makefile.in (xcoffout.o): Add debug.h dependency.
5247
5248 2007-08-29  Uros Bizjak  <ubizjak@gmail.com>
5249
5250         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
5251         Change CONST_VECTOR_ELT to XVECEXP in elem calculation.
5252
5253 2007-08-29  Richard Guenther  <rguenther@suse.de>
5254
5255         * tree-pretty-print.c (dump_generic_node): Print
5256         label DECL_UID as D.%u.
5257         * tree-dfa.c (dump_variable): Print DECL_UID as D.%u.
5258
5259 2007-08-29  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
5260
5261         * gcc/builtin-types.def (BT_FN_PTR_PTR_SIZE): New type.
5262         * gcc/builtins.def (BUILT_IN_REALLOC): New builtin.
5263
5264 2007-08-29  Douglas Gregor  <doug.gregor@gmail.com>
5265
5266         PR c++/33194
5267         * tree.c (build_type_attribute_qual_variant): Set canonical types
5268         on the final, unqualified attribute variant before building the
5269         qualified version.
5270
5271 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
5272
5273         * config/bfin/bfin.c (bfin_expand_builtin): Fix the argument
5274         order of __builtin_bfin_cmplx_mac and __builtin_bfin_cmplx_msu.
5275
5276 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
5277
5278         Revert
5279         2007-08-29  Jie Zhang  <jie.zhang@analog.com>
5280         * config/bfin/bfin.md (composev2hi): Put operands into vector
5281         with correct order.
5282
5283 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
5284
5285         * config/bfin/bfin.md (composev2hi): Put operands into vector
5286         with correct order.
5287
5288 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
5289
5290         * config/bfin/bfin.c (bfin_expand_call): Inline PLT with l1_text
5291         attribute when appropriate.
5292         (bfin_handle_l1_text_attribute): New.
5293         (bfin_handle_l1_data_attribute): New.
5294         (bfin_attribute_table): Add attributes: l1_text, l1_data,
5295         l1_data_A and l1_data_B.
5296         * doc/extend.texi (node Function Attributes): Document l1_text
5297         function attribute.
5298         (Variable Attributes): Add Blackfin subsection. Document l1_data,
5299         l1_data_A and l1_data_B variable attributes.
5300
5301 2007-08-28  Jie Zhang  <jie.zhang@analog.com>
5302
5303         * config/bfin/bfin.opt (minline-plt): Add.
5304         * config/bfin/bfin.c (bfin_expand_call): Inline PLT when emit
5305         call to global functions.
5306         * doc/invoke.texi (Option Summary): Mention -minline-plt.
5307         (Blackfin Options): Document -minline-plt.
5308
5309 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
5310
5311         * config/m68k/m68k.c (m68k_get_function_kind): Assert we're never
5312         given a non-function.
5313         (m68k_ok_for_sibcall_p): Only sibcall functions of the same kind.
5314
5315 2007-08-28  DJ Delorie  <dj@redhat.com>
5316
5317         * config/sh/sh.c (sh_gimplify_va_arg_expr): Fix sh2a support.
5318
5319 2007-08-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5320
5321         * system.h (CONST_CAST): Avoid union for gcc-4.0.x.
5322
5323 2007-08-28  Richard Guenther  <rguenther@suse.de>
5324
5325         * tree.h (struct tree_function_decl): Increase size of
5326         function_code bitfield.
5327
5328 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
5329             Kazu Hirata  <kazu@codesourcery.com>
5330
5331         * gcc/config/m68k/linux.h
5332         (M68K_HONOR_TARGET_STRICT_ALIGNMENT): Redefine as 0.
5333         * config/m68k/m68k.c (TARGET_RETURN_IN_MEMORY): New.
5334         (m68k_return_in_memory): New.
5335         * gcc/config/m68k/m68k.h (M68K_HONOR_TARGET_STRICT_ALIGNMENT):
5336         New.
5337
5338 2007-08-28  Uros Bizjak  <ubizjak@gmail.com>
5339
5340         PR target/32661
5341         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
5342         Simplify nested VEC_SELECT (with optional VEC_CONCAT operator as
5343         operand) when top VEC_SELECT extracts scalar element.
5344         * config/i386/sse.md (*vec_extract_v4si_mem): New pattern.
5345         (*vec_extract_v4sf_mem): Ditto.
5346
5347 2007-08-28  Jakub Jelinek  <jakub@redhat.com>
5348
5349         PR middle-end/32370
5350         * passes.c (init_optimization_passes): Move pass_df_finish
5351         after pass_postreload sublist.
5352
5353         PR rtl-optimization/33148
5354         * simplify-rtx.c (simplify_unary_operation_1): Only optimize
5355         (neg (lt X 0)) if X has scalar int mode.
5356
5357         PR debug/32914
5358         * dwarf2out.c (rtl_for_decl_init): If vector decl has CONSTRUCTOR
5359         initializer, use build_vector_from_ctor if possible to create
5360         VECTOR_CST out of it.  If vector initializer is not VECTOR_CST
5361         even after this, return NULL.
5362
5363 2007-08-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
5364
5365         * c-pretty-print.c (pp_c_constant): Handle COMPLEX_CST.
5366
5367 2007-08-28  Richard Guenther  <rguenther@suse.de>
5368
5369         * tree.h (DECL_DISREGARD_INLINE_LIMITS): New.
5370         (struct tree_function_decl): Make function_code a bitfield.
5371         Add disregard_inline_limits flag.
5372         * cgraphunit.c (cgraph_process_new_functions): Check
5373         DECL_DISREGARD_INLINE_LIMITS instead of disregard_inline_limits_p.
5374         (cgraph_preserve_function_body_p): Likewise.
5375         * ipa-inline.c (compute_inline_parameters): Likewise.
5376         * c-decl.c (finish_function): Set DECL_DISREGARD_INLINE_LIMITS
5377         for GNU C extern inline functions.
5378         (merge_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
5379         * tree-inline.c (disregard_inline_limits_p): Remove.
5380         * tree-inline.h (disregard_inline_limits_p): Likewise.
5381         * c-common.c (handle_always_inline_attribute): Set
5382         DECL_DISREGARD_INLINE_LIMITS.
5383         * langhooks.c (add_builtin_function): Verify the function code
5384         fits in the bitfield.
5385
5386 2007-08-28  Mircea Namolaru  <namolaru@il.ibm.com>
5387             Vladimir Yanovsky  <yanov@il.ibm.com>
5388             Revital Eres  <eres@il.ibm.com>
5389             Andrey Belevantsev  <abel@ispras.ru>
5390
5391         * config/spu/spu.md: Recognize doloop pattern when -fmodulo-sched
5392         is set.
5393         * modulo-sched.c: Add documentation regarding do-loop.
5394         (doloop_register_get): Change number of arguments to support
5395         the new do-loop pattern and check whether COUNT_REG has no other
5396         occurences in the loop besides in the control part.
5397         (duplicate_insns_of_cycles): Do not duplicate the insn which
5398         changes count_reg as it is already adjusted.
5399         (generate_prolog_epilog): New argument to support the new
5400         do-loop pattern.  Change the subtract instruction to use
5401         expand_simple_binop.  Call duplicate_insns_of_cycles with new
5402         argument.
5403         (sms_schedule): Call doloop_register_get and
5404         generate_prolog_epilog with new argument.  Do not handle loops
5405         with single sets insns with subreg in their lhs.
5406         * loop-doloop.c (doloop_optimize): Support for another do-loop
5407         pattern.
5408         (doloop_condition_get): Gets an instruction instead of a pattern
5409         and change the return condition when the do-loop pattern is
5410         not parallel.
5411         * ddg.c (create_ddg_dep_from_intra_loop_link): Handle only reg
5412         deps when considering to not create edges.
5413
5414 2007-08-27  Alexandre Oliva  <aoliva@redhat.com>
5415
5416         * doc/extend.texi (gnu_inline funtion attribute): Document C++
5417         behavior.
5418
5419 2007-08-27  Jason Merrill  <jason@redhat.com>
5420
5421         PR c++/31337
5422         * gimplify.c (gimplify_modify_expr): Discard the assignment of 
5423         zero-sized types after calling gimplify_modify_expr_rhs.
5424
5425 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
5426
5427         * regclass.c (init_reg_autoinc): Fix typo.
5428
5429 2007-08-27  Daniel Berlin  <dberlin@dberlin.org>
5430         
5431         Fix PR tree-optimization/33173
5432         * tree-ssa-alias.c (find_used_portions): Fix reversed test.
5433
5434 2007-08-27  H.J. Lu  <hongjiu.lu@intel.com>
5435
5436         PR target/31385
5437         * config/i386/i386.h (VALID_DFP_MODE_P): New.
5438         * config/i386/i386.c (ix86_hard_regno_mode_ok): Allow DFP in
5439         GPR.
5440
5441 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
5442             David Ung  <davidu@mips.com>
5443             Nigel Stephens <nigel@mips.com>
5444
5445         Separate target-specific initialization from general
5446         back-end initialization.
5447
5448         * toplev.c (init_alignments): New, split out from...
5449         (process_options): ...here.
5450         (backend_init_target): New, split out from...
5451         (backend_init): ...here.
5452         (lang_dependent_init_target): New, split out from...
5453         (lang_dependent_init): ...here.
5454         (target_reinit): New.
5455         * toplev.h (target_reinit): Declare.
5456         * expr.c (init_expr_target): Renamed from init_expr_once, since it
5457         now can be called more than once.  Update comments.
5458         * expr.h (init_expr_target): Likewise.
5459         * alias.c (init_alias_target): Renamed from init_alias_once, since it
5460         now can be called more than once.  Explicitly zero
5461         static_reg_base_value.
5462         * emit-rtl.c (init_emit_regs): New, split out from...
5463         (init_emit_once): Here.
5464         * regclass.c (initial_fixed_regs, initial_call_used_regs): Make
5465         non-const, so that changes from command-line arguments can overwrite
5466         values provided by the static initializers.
5467         (initial_call_really_used_regs): New, used similarly to the above.
5468         (initial_reg_names): Likewise.
5469         (last_mode_for_init_move_cost): Promoted function-local static to
5470         file-scope static to make it accessible outside init_move_cost.
5471         (init_reg_sets): Do not initialize fixed_regs and call_used_regs yet.
5472         Do not initialize inv_reg_alloc_order yet, either.  Do initialize
5473         reg_names since it is needed for parsing command-line options.
5474         (init_move_cost): Use last_mode_for_init_move_cost instead of
5475         function-local static.
5476         (init_reg_sets_1): Initialize fixed_regs, call_used_regs, and
5477         call_really_used_regs now.  Reinitialize reg_names.  Also
5478         initialize inv_reg_alloc_order.  Zero reg_class_subunion and
5479         reg_class_superunion.  Clear losing_caller_save_reg_set.
5480         Preserve global registers if called more than once.  Reset
5481         move cost, may_move_in_cost, may_move_out_cost, and
5482         last_mode_for_init_move_cost.
5483         (init_reg_modes_target): Renamed from init_reg_modes_once, since it
5484         can now be invoked more than once.  Update comments.
5485         (init_regs): Update comments.
5486         (fix_register): Update initial_fixed_regs, initial_call_used_regs,
5487         and initial_call_really_used_regs, instead of the non-initial 
5488         variables.  This allows us to save the command-line register settings
5489         after target reinitialization.
5490         (init_reg_autoinc): Zero forbidden_inc_dec_classes.
5491         * rtl.h (init_emit_regs): Declare.
5492         (init_reg_modes_target, init_alias_target): Renamed as described
5493         above.
5494         * reload1.c (init_reload): Update comments.
5495         * optabs.c (init_optabs): Likewise.
5496         * cfgloopanal.c (init_set_costs): Explicitly zero target_avail_regs.
5497         
5498 2007-08-26  Chao-ying Fu  <fu@mips.com>
5499
5500         * rtl.h (XCNMPFV): Preserve const-ness of parameters through use of
5501         __typeof().
5502
5503 2007-08-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5504
5505         * alias.c (memory_modified_1, memory_modified_in_insn_p):
5506         Constify.
5507         * basic-block.h (tree_predicted_by_p, rtl_predicted_by_p):
5508         Likewise.
5509         * bb-reorder.c (copy_bb_p): Likewise.
5510         * cfghooks.c (can_remove_branch_p, can_merge_blocks_p,
5511         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
5512         block_ends_with_condjump_p): Likewise.
5513         * cfghooks.h (can_remove_branch_p, can_merge_blocks_p,
5514         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
5515         block_ends_with_condjump_p): Likewise.
5516         * cfglayout.c (cfg_layout_can_duplicate_bb_p): Likewise.
5517         * cfgrtl.c (can_delete_note_p, can_delete_label_p,
5518         rtl_can_merge_blocks, cfg_layout_can_merge_blocks_p,
5519         rtl_block_ends_with_call_p, rtl_block_ends_with_condjump_p,
5520         need_fake_edge_p, rtl_can_remove_branch_p): Likewise.
5521         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Use
5522         debug_true_const_tree instad of debug_true_tree.
5523         * debug.c (do_nothing_debug_hooks): Likewise.
5524         * debug.h (ignore_block, debug_true_const_tree): Constify.
5525         * dwarf2out.c (stack_adjust_offset, clobbers_queued_reg_save,
5526         dwarf2out_ignore_block, is_pseudo_reg, is_tagged_type,
5527         decl_ultimate_origin, block_ultimate_origin, lookup_decl_loc,
5528         same_dw_val_p, add_ranges, is_subrange_type, type_is_enum,
5529         dbx_reg_number, is_based_loc, field_type,
5530         simple_type_align_in_bits, simple_decl_align_in_bits,
5531         simple_type_size_in_bits, field_byte_offset, insert_float,
5532         type_tag, member_declared_type, is_redundant_typedef,
5533         secname_for_decl, is_inlined_entry_point): Likewise.
5534         * emit-rtl.c (const_next_insn, const_previous_insn,
5535         const_next_nonnote_insn, const_prev_nonnote_insn,
5536         const_next_real_insn, const_prev_real_insn,
5537         const_next_active_insn, const_prev_active_insn, const_next_label,
5538         const_prev_label): Likewise.
5539         * except.h (lookup_stmt_eh_region_fn, lookup_stmt_eh_region):
5540         Likewise.
5541         * haifa-sched.c (may_trap_exp, haifa_classify_insn,
5542         find_set_reg_weight, no_real_insns_p, find_set_reg_weight,
5543         sched_insn_is_legitimate_for_speculation_p): Likewise.
5544         * jump.c (reversed_comparison_code_parts,
5545         reversed_comparison_code, reversed_comparison, condjump_label):
5546         Likewise.
5547         * predict.c (rtl_predicted_by_p, tree_predicted_by_p): Likewise.
5548         * reg-stack.c (stack_regs_mentioned_p, stack_regs_mentioned):
5549         Likewise.
5550         * rtl.h (const_previous_insn, const_next_insn,
5551         const_prev_nonnote_insn, const_next_nonnote_insn,
5552         const_prev_real_insn, const_next_real_insn,
5553         const_prev_active_insn, const_next_active_insn, const_prev_label,
5554         const_next_label, modified_between_p, modified_in_p,
5555         const_note_storeskeep_with_call_p, condjump_label,
5556         reversed_comparison, reversed_comparison_code,
5557         reversed_comparison_code_parts, memory_modified_in_insn_p,
5558         stack_regs_mentioned): Likewise.
5559         * rtlanal.c (modified_between_p, modified_in_p, const_note_stores,
5560         keep_with_call_p): Likewise.
5561         * sched-deps.c (deps_may_trap_p, sched_get_condition,
5562         conditions_mutex_p, sched_insns_conditions_mutex_psd_next_list,
5563         sd_lists_size, sd_lists_empty_p): Likewise.
5564         * sched-int.h (sched_insns_conditions_mutex_p,
5565         haifa_classify_insn, no_real_insns_p,
5566         sched_insn_is_legitimate_for_speculation_p, sd_next_list,
5567         sd_lists_size, sd_lists_empty_p): Likewise.
5568         * sdbout.c (sdb_debug_hooks): Likewise.
5569         * tree-cfg.c (tree_can_merge_blocks_p, is_ctrl_altering_stmt,
5570         stmt_ends_bb_p, tree_can_remove_branch_p, tree_can_duplicate_bb_p,
5571         -tree_block_ends_with_call_p, tree_block_ends_with_condjump_p):
5572         Likewise.
5573         * tree-eh.c (lookup_stmt_eh_region_fn, lookup_stmt_eh_region,
5574         tree_can_throw_internal): Likewise.
5575         * tree-flow-inline.h (phi_nodes): Likewise.
5576         * tree-flow.h (phi_nodesstmt_ends_bb_p, is_ctrl_altering_stmt,
5577         tree_can_throw_internal, lookup_stmt_eh_region): Likewise.
5578         * tree-gimple.c (const_get_call_expr_in): Likewise.
5579         * tree-gimple.h (const_get_call_expr_in): Likewise.
5580         * tree.c (const_lookup_attribute, attribute_list_equal,
5581         attribute_list_contained): Likewise.
5582         * tree.h (attribute_list_equal, attribute_list_contained,
5583         const_lookup_attribute): Likewise.
5584         * vmsdbgout.c (vmsdbgout_ignore_block): Likewise.
5585
5586 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
5587
5588         * tree-ssa-sccvn.c, tree-ssa-sccvn.h, tree-vn.c,
5589         tree-ssa-pre.c: Remove unnecessary trailing whitespace.
5590
5591 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
5592
5593         PR target/32991
5594         * config/alpha/constraints.md: Delete "svn:mime-type" property
5595         with svn propdel "svn:mime-type".
5596
5597 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
5598
5599         PR middle-end/33181
5600         * ifcvt.c (noce_get_alt_condition): Make sure that the previous
5601         non NOTE insn doesn't cross basic block.
5602         (noce_try_abs): Likewise.
5603         (noce_process_if_block): Likewise.
5604
5605 2007-08-26  David Edelsohn  <edelsohn@gnu.org>
5606
5607         PR target/33151
5608         * config/rs6000/predicates.md (offsettable_mem_operand): Memory
5609         operand without auto-inc-dec.
5610         * config/rs6000/rs6000.md (floatsidf2_internal): Use
5611         offsettable_mem_operand.
5612         (floatunssidf2_internal): Same.
5613         (fix_truncdfsi2_internal): Same.
5614         (floatsidf_ppc64): Same.
5615         (floatunssidf_ppc64): Same.
5616         (fix_trunctfsi2_internal): Same.
5617
5618 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
5619
5620         PR bootstrap/30620
5621         * Makefile.in (libbackend.o): Add gcov-iov.h dependency and
5622         pass defines needed for version.c.
5623
5624 2007-08-25  Joseph Myers  <joseph@codesourcery.com>
5625
5626         * configure.ac (--debug-prefix-map check): Change assembler
5627         version presumed to have feature to 2.18.
5628         * configure: Regenerate.
5629
5630 2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5631
5632         * c-common.c (vector_types_convertible_p,
5633         decl_with_nonnull_addr_p, c_promoting_integer_type_p,
5634         self_promoting_args_p): Constify.
5635         * c-common.h (has_c_linkage, decl_with_nonnull_addr_p,
5636         c_promoting_integer_type_p, self_promoting_args_p,
5637         anon_aggr_type_p, vector_types_convertible_p): Likewise.
5638         * c-decl.c (anon_aggr_type_p): Likewise.
5639         * * c-dump.c (dump_stmt): Likewise.
5640         * c-objc-common.c (has_c_linkage): Likewise.
5641         * c-tree.h (same_translation_unit_p): Likewise.
5642         * c-typeck.c (null_pointer_constant_p,
5643         tagged_types_tu_compatible_p, function_types_compatible_p,
5644         type_lists_compatible_p, lvalue_or_else, lvalue_p,
5645         comptypes_internal, struct tagged_tu_seen_cache,
5646         same_translation_unit_p, alloc_tagged_tu_seen_cache,
5647         c_size_in_bytes): Likewise.
5648         * ggc-common.c (compare_ptr_data, hash_descriptor, eq_descriptor,
5649         hash_ptr, eq_ptr): Likewise.
5650         * langhooks-def.h (lhd_decl_ok_for_sibcall,
5651         LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Likewise.
5652         * langhooks.c (lhd_decl_ok_for_sibcall): Likewise.
5653         * langhooks.h (ok_for_sibcall, omp_privatize_by_reference):
5654         Likewise.
5655         * optabs.c (optab_for_tree_code): Likewise.
5656         * optabs.h (optab_for_tree_code): Likewise.
5657         * rtl.h (simplify_rtx): Likewise.
5658         * simplify-rtx.c (simplify_rtx): Likewise.
5659         * tree-dump.c (queue, queue_and_dump_index, queue_and_dump_type,
5660         dump_flag, dump_node): Likewise.
5661         * tree-dump.h (struct dump_info, dump_stmt, queue_and_dump_index,
5662         queue_and_dump_type, dump_flag): Likewise.
5663         * tree-flow.h (vect_can_force_dr_alignment_p): Likewise.
5664         * tree-pass.h (dump_node): Likewise.
5665         * tree-vectorizer.c (vect_can_force_dr_alignment_p,
5666         supportable_narrowing_operation): Likewise.
5667         * tree-vectorizer.h (vect_can_force_dr_alignment_p,
5668         supportable_narrowing_operation): Likewise.
5669         * tree-vrp.c (needs_overflow_infinity, supports_overflow_infinity,
5670         is_negative_overflow_infinity, is_positive_overflow_infinity,
5671         is_overflow_infinity, vrp_val_is_max, vrp_val_is_min,
5672         nonnull_arg_p, get_value_range, vrp_operand_equal_p,
5673         update_value_range, add_equivalence, ssa_name_nonnegative_p,
5674         ssa_name_nonzero_p, fp_predicate): Likewise.
5675         * tree.c (auto_var_in_fn_p, empty_body_p): Likewise.
5676         * tree.h (empty_body_p, auto_var_in_fn_p, ssa_name_nonzero_p,
5677         ssa_name_nonnegative_p): Likewise.
5678
5679 2007-08-25  Hans Kester  <hans.kester@ellips.nl>
5680
5681         * config.gcc : Add x86_64-elf target.
5682
5683 2007-08-25  Jakub Jelinek  <jakub@redhat.com>
5684
5685         * expr.c (store_expr): Fix order of store_by_pieces arguments.
5686
5687 2007-08-24  Sandra Loosemore  <sandra@codesourcery.com>
5688             Nigel Stephens <nigel@mips.com>
5689
5690         PR target/11787
5691
5692         * doc/tm.texi (SET_RATIO, SET_BY_PIECES_P): Document new macros.
5693         (STORE_BY_PIECES_P): No longer applies to __builtin_memset.
5694         * expr.c (SET_BY_PIECES_P): Define.
5695         (can_store_by_pieces, store_by_pieces): Add MEMSETP argument; use
5696         it to decide whether to use SET_BY_PIECES_P or STORE_BY_PIECES_P.
5697         (store_expr): Pass MEMSETP argument to can_store_by_pieces and
5698         store_by_pieces.
5699         * expr.h (SET_RATIO): Define.
5700         (can_store_by_pieces, store_by_pieces): Update prototypes.
5701         * builtins.c (expand_builtin_memcpy): Pass MEMSETP argument to
5702         can_store_by_pieces/store_by_pieces.
5703         (expand_builtin_memcpy_args): Likewise.
5704         (expand_builtin_strncpy): Likewise.
5705         (expand_builtin_memset_args): Likewise.  Also remove special case
5706         for optimize_size so that can_store_by_pieces/SET_BY_PIECES_P can
5707         decide what to do instead.
5708         * value-prof.c (tree_stringops_transform): Pass MEMSETP argument
5709         to can_store_by_pieces.
5710
5711         * config/sh/sh.h (SET_BY_PIECES_P): Clone from STORE_BY_PIECES_P.
5712         * config/s390/s390.h (SET_BY_PIECES_P): Likewise.
5713
5714         * config/mips/mips.opt (mmemcpy): Change from Var to Mask.
5715         * config/mips/mips.c (override_options): Make -Os default to -mmemcpy.
5716         * config/mips/mips.h (MIPS_CALL_RATIO): Define.
5717         (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Define.
5718         (STORE_BY_PIECES_P): Define.
5719
5720 2007-08-24  Tom Tromey  <tromey@redhat.com>
5721
5722         * varpool.c (varpool_last_needed_node): Fix comment typo.
5723         * c-decl.c (duplicate_decls): Fix comment typo.
5724         (clone_underlying_type): Update comment.
5725
5726 2007-08-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5727
5728         * config/alpha/alpha.c (alpha_mangle_type, decl_has_samegp,
5729         alpha_in_small_data_p, alpha_split_complex_arg,
5730         alpha_stdarg_optimize_hook, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
5731         Constify.
5732         * config/arm/arm-protos.h (arm_mangle_type): Likewise.
5733         * config/arm/arm.c (arm_comp_type_attributes, arm_mangle_type):
5734         Likewise.
5735         * config/bfin/bfin.c (funkind, bfin_comp_type_attributes,
5736         TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
5737         * config/darwin-protos.h (darwin_binds_local_p): Likewise.
5738         * config/darwin.c (darwin_binds_local_p): Likewise.
5739         * config/frv/frv.c (frv_string_begins_with, frv_in_small_data_p):
5740         Likewise.
5741         * config/i386/i386-protos.h (i386_pe_binds_local_p,
5742         i386_pe_valid_dllimport_attribute_p): Likewise.
5743         * config/i386/i386.c (ix86_function_regparm,
5744         ix86_comp_type_attributes, ix86_ms_bitfield_layout_p,
5745         x86_can_output_mi_thunk, ix86_mangle_type,
5746         TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
5747         * config/i386/winnt.c (i386_pe_valid_dllimport_attribute_p,
5748         i386_pe_binds_local_p): Likewise.
5749         * config/ia64/ia64.c
5750         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec,
5751         ia64_needs_block_p, ia64_in_small_data_p, ia64_mangle_type,
5752         ia64_invalid_conversion, ia64_invalid_unary_op,
5753         ia64_invalid_binary_op, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
5754         Likewise.
5755         * config/m32c/m32c.c (m32c_comp_type_attributes): Likewise.
5756         * config/m32r/m32r.c (m32r_in_small_data_p): Likewise.
5757         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
5758         * config/mips/mips.c (mips_use_blocks_for_constant_p,
5759         mips_in_small_data_p, mips_use_anchors_for_symbol_p,
5760         mips_comp_type_attributes, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
5761         mips_near_type_p, mips_far_type_p, mips_global_symbol_p,
5762         mips_symbol_binds_local_p, mips_classify_symbol): Likewise.
5763         * config/pa/pa.c (pa_commutative_p): Likewise.
5764         * config/rs6000/rs6000-protos.h (rs6000_elf_in_small_data_p):
5765         Likewise.
5766         * config/rs6000/rs6000.c (rs6000_invalid_within_doloop,
5767         rs6000_ms_bitfield_layout_p, rs6000_mangle_type,
5768         rs6000_use_blocks_for_constant_p,
5769         rs6000_vector_alignment_reachable, rs6000_is_opaque_type,
5770         invalid_arg_for_unprototyped_fn, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
5771         TARGET_SPLIT_COMPLEX_ARG, rs6000_elf_in_small_data_p): Likewise.
5772         * config/s390/s390.c (s390_mangle_type,
5773         TARGET_ASM_CAN_OUTPUT_MI_THUNK, TARGET_INVALID_WITHIN_DOLOOP):
5774         Likewise.
5775         * config/score/score.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
5776         th_in_small_data_p): Likewise.
5777         * config/sh/sh.c (sh_ms_bitfield_layout_p,
5778         sh_dwarf_calling_convention, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
5779         Likewise.
5780         * config/sparc/sparc.c (sparc_can_output_mi_thunk,
5781         sparc_mangle_type): Likewise.
5782         * config/spu/spu.c (spu_vector_alignment_reachable): Likewise.
5783         * config/xtensa/xtensa.c (TARGET_SPLIT_COMPLEX_ARG): Likewise.
5784         * emit-rtl.c (const_fixed_htab_hash, const_fixed_htab_eq):
5785         Likewise.
5786         * hooks.c (hook_bool_mode_const_rtx_false,
5787         hook_bool_mode_const_rtx_true,
5788         hook_bool_const_tree_hwi_hwi_const_tree_false,
5789         hook_bool_const_tree_hwi_hwi_const_tree_true,
5790         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
5791         hook_constcharptr_const_tree_null,
5792         hook_constcharptr_const_rtx_null,
5793         hook_constcharptr_const_tree_const_tree_null,
5794         hook_constcharptr_int_const_tree_null,
5795         hook_constcharptr_int_const_tree_const_tree_null): New.
5796         (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
5797         hook_bool_tree_hwi_hwi_tree_false,
5798         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
5799         hook_int_tree_tree_1, hook_constcharptr_tree_null,
5800         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
5801         hook_constcharptr_int_tree_null,
5802         hook_constcharptr_int_tree_tree_null): Delete.
5803         (default_can_output_mi_thunk_no_vcall): Constify.
5804         * hooks.h (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
5805         hook_bool_tree_hwi_hwi_tree_false,
5806         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
5807         hook_int_tree_tree_1, hook_constcharptr_tree_null,
5808         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
5809         hook_constcharptr_int_tree_null,
5810         hook_constcharptr_int_tree_tree_null): Delete.
5811         (hook_bool_mode_const_rtx_false, hook_bool_mode_const_rtx_true,
5812         hook_bool_const_tree_hwi_hwi_const_tree_false,
5813         hook_bool_const_tree_hwi_hwi_const_tree_true,
5814         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
5815         hook_constcharptr_const_tree_null,
5816         hook_constcharptr_const_rtx_null,
5817         hook_constcharptr_const_tree_const_tree_null,
5818         hook_constcharptr_int_const_tree_null,
5819         hook_constcharptr_int_const_tree_const_tree_null): New.
5820         (default_can_output_mi_thunk_no_vcall): Constify.
5821         * integrate.c (function_attribute_inlinable_p): Likewise.
5822         * integrate.h (function_attribute_inlinable_p): Likewise.
5823         * jump.c (rtx_renumbered_equal_p): Likewise.
5824         * output.h (decl_readonly_section, categorize_decl_for_section,
5825         default_use_anchors_for_symbol_p, default_binds_local_p,
5826         default_binds_local_p_1): Likewise.
5827         * rtl.h (rtx_renumbered_equal_p, decl_default_tls_model):
5828         Likewise.
5829         * target-def.h (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
5830         TARGET_VALID_DLLIMPORT_ATTRIBUTE_P, TARGET_VECTOR_OPAQUE_P,
5831         TARGET_COMMUTATIVE_P, TARGET_USE_BLOCKS_FOR_CONSTANT_P,
5832         TARGET_COMP_TYPE_ATTRIBUTES,
5833         TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P,
5834         TARGET_MS_BITFIELD_LAYOUT_P, TARGET_MANGLE_TYPE,
5835         TARGET_IN_SMALL_DATA_P, TARGET_INVALID_CONVERSION,
5836         TARGET_INVALID_UNARY_OP, TARGET_INVALID_BINARY_OP,
5837         TARGET_DWARF_CALLING_CONVENTION): Likewise.
5838         * target.h (can_output_mi_thunk, needs_block_p,
5839         first_cycle_multipass_dfa_lookahead_guard_spec,
5840         vector_alignment_reachable, comp_type_attributes,
5841         function_attribute_inlinable_p, ms_bitfield_layout_p, mangle_type,
5842         commutative_p, use_blocks_for_constant_p,
5843         use_anchors_for_symbol_p, in_small_data_p, binds_local_p,
5844         vector_opaque_p, dwarf_calling_convention, stdarg_optimize_hook,
5845         invalid_within_doloop, valid_dllimport_attribute_p,
5846         split_complex_arg, invalid_arg_for_unprototyped_fn,
5847         invalid_conversion, invalid_unary_op, invalid_binary_op):
5848         Likewise.
5849         * targhooks.c (default_invalid_within_doloop,
5850         hook_invalid_arg_for_unprototyped_fn,
5851         default_builtin_vector_alignment_reachable): Likewise.
5852         (hook_bool_rtx_commutative_p): Delete.
5853         (hook_bool_const_rtx_commutative_p): New.
5854         * targhooks.h (default_invalid_within_doloop,
5855         default_builtin_vector_alignment_reachable,
5856         hook_invalid_arg_for_unprototyped_fn): Constify.
5857         (hook_bool_rtx_commutative_p): Delete.
5858         (hook_bool_const_rtx_commutative_p): New.
5859         * varasm.c (bss_initializer_p, decl_default_tls_model,
5860         categorize_decl_for_section, decl_readonly_section,
5861         default_use_anchors_for_symbol_p, default_binds_local_p,
5862         default_binds_local_p_1): Constify.
5863
5864 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
5865
5866         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
5867         __NO_BUILTIN if -fno-builtin.
5868
5869 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
5870
5871         * config/bfin/bfin.c (print_operand): Report error instead of
5872         ICE for wrong operand.
5873
5874 2007-08-24  Michael Matz  <matz@suse.de>
5875
5876         * Makefile.in (GTFILES_H): Use $(patsubst) instead of $(subst).
5877
5878 2007-08-24  Richard Guenther  <rguenther@suse.de>
5879
5880         PR middle-end/33166
5881         * tree-ssa.c (useless_type_conversion_p): Split into a
5882         recursive and a non-recursive part.
5883         (useless_type_conversion_p_1): New function.
5884         * tree-ssa-ccp.c (fold_stmt_r): Make sure that the result
5885         from maybe_fold_offset_to_reference is trivially convertible
5886         to the desired type before doing the simplification.
5887
5888 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
5889
5890         * expr.c (store_expr): Optimize initialization of an array
5891         with STRING_CST.
5892         * expr.h (builtin_strncpy_read_str): New prototype.
5893         * builtins.c (builtin_strncpy_read_str): Remove prototype.
5894         No longer static.
5895
5896 2007-08-24  Uros Bizjak  <ubizjak@gmail.com>
5897
5898         PR middle-end/33157
5899         * ifcvt.c (noce_find_if_block): Do not clear if_info.cond_earliest
5900         field when initializing if_info structure.
5901
5902 2007-08-24  Richard Guenther  <rguenther@suse.de>
5903
5904         * Makefile.in (tree-inline.o): Add $(TARGET_H) and $(INTEGRATE_H)
5905         dependencies.
5906         * c-objc-common.c (c_cannot_inline_tree_fn): Remove.
5907         * langhooks.c (lhd_tree_inlining_cannot_inline_tree_fn): Likewise.
5908         * tree-inline.c (inlinable_function_p): Fold in common parts of
5909         the cannot_inline_tree_fn langhook.
5910         * langhooks-def.h (lhd_tree_inlining_cannot_inline_tree_fn): Remove.
5911         (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN): Likewise.
5912         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
5913         cannot_inline_tree_fn langhook.
5914         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
5915         cannot_inline_tree_fn member.
5916
5917 2007-08-24  Richard Guenther  <rguenther@suse.de>
5918
5919         * expr.c (get_inner_reference): Do computation of bitoffset
5920         from offset in a way we can detect overflow reliably.
5921
5922 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
5923
5924         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define for uClibc.
5925
5926 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
5927
5928         * config/bfin/bfin.opt (mfast-fp): Add.
5929         * config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Let
5930         libbffastfp override libgcc if -mfast-fp.
5931         * config/bfin/bfin.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
5932         * doc/invoke.texi (Option Summary): Mention -mfast-fp.
5933         (Blackfin Options): Document -mfast-fp.
5934
5935 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
5936
5937         PR tree-optimization/32573
5938         PR middle-end/32946
5939         * tree-data-ref.c (initialize_data_dependence_relation): Clear
5940         DDR_SUBSCRIPTS, DDR_DIR_VECTS and DDR_DIST_VECTS at the beginning.
5941         (finalize_ddr_dependent): Clear DDR_SUBSCRIPTS after freeing it.
5942         (build_classic_dist_vector): Return false rather than true if
5943         DDR_ARE_DEPENDENT is non-NULL at the beginning.  Return false
5944         if either subscript_dependence_tester_1 or build_classic_dist_vector_1
5945         returned false.  Don't call save_dist_v before calling
5946         build_classic_dist_vector_1.
5947         (free_dependence_relation): Don't guard freeing DDR_SUBSCRIPTS
5948         with NULL DDR_ARE_DEPENDENT.  Also free DDR_DIST_VECTS and/or
5949         DDR_DIR_VECTS vectors.
5950
5951 2007-08-23  Brian Sidebotham  <brian.sidebotham@gmail.com>
5952
5953         * configure.ac (leb128): Modify sed statement to work with any
5954         binutils version string.
5955         * configure: Regenerate
5956
5957 2007-08-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5958
5959         * config/arc/arc-protos.h arc_select_cc_mode, gen_compare_reg):
5960         Wrap in RTX_CODE macro guard.
5961         * config/arm/pe.c (arm_dllexport_p, arm_dllimport_p,
5962         arm_dllexport_name_p, arm_dllimport_name_p, arm_mark_dllexport,
5963         arm_mark_dllimport, arm_pe_encode_section_info,
5964         arm_pe_unique_section): Use ISO-C function declarations.
5965         * config/c4x/c4x-c.c (c4x_parse_pragma, c4x_pr_CODE_SECTION,
5966         c4x_pr_DATA_SECTION, c4x_pr_FUNC_IS_PURE,
5967         c4x_pr_FUNC_NEVER_RETURNS, c4x_pr_INTERRUPT, c4x_pr_ignored):
5968         Likewise.
5969         * config/iq2000/iq2000.h (ASM_OUTPUT_SKIP): Fix format warning.
5970         * config/m68hc11/m68hc11.h (ASM_OUTPUT_EXTERNAL): Undef before
5971         defining.
5972         * config/mips/mips.h (ASM_DECLARE_OBJECT_NAME): Fix format
5973         warnings.
5974         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Likewise.
5975         * config/pdp11/pdp11.c (pdp11_output_function_epilogue): Likewise.
5976         (register_move_cost): Use ISO-C function declarations.
5977         * config/pdp11/pdp11.h (PRINT_OPERAND): Fix format warnings.
5978         * config/score/score-protos.h (score_declare_object): Add
5979         ATTRIBUTE_PRINTF_4.
5980         * config/score/score.h (ASM_DECLARE_OBJECT_NAME): Fix format
5981         warnings.
5982         * final.c (profile_function): Avoid empty if-bodies.
5983         
5984         
5985         * calls.c (must_pass_in_stack_var_size,
5986         must_pass_in_stack_var_size_or_pad): Constify.
5987         * config/alpha/alpha-protos.h (function_value): Likewise.
5988         * config/alpha/alpha.c (alpha_return_in_memory,
5989         alpha_pass_by_reference, function_value,
5990         unicosmk_must_pass_in_stack, TARGET_PROMOTE_FUNCTION_ARGS,
5991         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
5992         Likewise.
5993         * config/arc/arc.c (arc_return_in_memory, arc_pass_by_reference,
5994         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
5995         TARGET_PROMOTE_PROTOTYPES): Likewise.
5996         * config/arm/arm-protos.h (arm_return_in_memory,
5997         arm_pad_arg_upward, arm_function_value): Likewise.
5998         * config/arm/arm.c (arm_pass_by_reference,
5999         arm_promote_prototypes, arm_return_in_msb, arm_must_pass_in_stack,
6000         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
6001         arm_function_value, arm_return_in_memory, arm_pad_arg_upward):
6002         Likewise.
6003         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
6004         * config/avr/avr-protos.h (avr_function_value): Likewise.
6005         * config/avr/avr.c (avr_return_in_memory,
6006         gas_output_limited_string, gas_output_ascii, avr_function_value,
6007         avr_return_in_memory): Likewise.
6008         * config/bfin/bfin-protos.h (bfin_return_in_memory): Likewise.
6009         * config/bfin/bfin.c (bfin_pass_by_reference,
6010         bfin_return_in_memory, TARGET_PROMOTE_PROTOTYPES,
6011         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN):
6012         Likewise.
6013         * config/cris/cris.c (cris_pass_by_reference,
6014         TARGET_PROMOTE_FUNCTION_ARGS): Likewise.
6015         * config/crx/crx.c (crx_return_in_memory): Likewise.
6016         * config/darwin.c (function_base, machopic_function_base_name):
6017         Likewise.
6018         * config/fr30/fr30.c (fr30_must_pass_in_stack,
6019         TARGET_PROMOTE_PROTOTYPES): Likewise.
6020         * config/frv/frv.c (frv_must_pass_in_stack): Likewise.
6021         * config/h8300/h8300.c (h8300_return_in_memory): Likewise.
6022         * config/i386/i386-protos.h (ix86_return_in_memory,
6023         ix86_sol10_return_in_memory): Likewise.
6024         * config/i386/i386.c (ix86_function_value,
6025         ix86_function_sseregparm, ix86_must_pass_in_stack,
6026         type_natural_mode, classify_argument, examine_argument,
6027         construct_container, ix86_pass_by_reference, function_value_32,
6028         function_value_64, ix86_function_value_1, return_in_memory_32,
6029         return_in_memory_64, return_in_memory_ms_64,
6030         ix86_return_in_memory, ix86_sol10_return_in_memory,
6031         TARGET_PROMOTE_PROTOTYPES): Likewise.
6032         * config/ia64/ia64-protos.h (ia64_function_value,
6033         ia64_hpux_function_arg_padding): Likewise.
6034         * config/ia64/ia64.c (hfa_element_mode, ia64_return_in_memory,
6035         ia64_function_value, bundle_state_hash, bundle_state_eq_p,
6036         ia64_hpux_function_arg_padding): Likewise.
6037         * config/iq2000/iq2000-protos.h (function_arg,
6038         iq2000_function_value): Likewise.
6039         * config/iq2000/iq2000.c (iq2000_return_in_memory,
6040         iq2000_pass_by_reference, TARGET_PROMOTE_FUNCTION_ARGS,
6041         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
6042         function_arg, iq2000_function_value): Likewise.
6043         * config/m32c/m32c-protos.h (m32c_function_value,
6044         m32c_promote_function_return): Likewise.
6045         * config/m32c/m32c.c (m32c_pass_by_reference,
6046         m32c_promote_prototypes, m32c_promote_function_return,
6047         m32c_function_value): Likewise.
6048         * config/m32r/m32r.c (m32r_return_in_memory,
6049         m32r_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
6050         m32r_in_small_data_p): Likewise.
6051         * config/m68hc11/m68hc11-protos.h (m68hc11_function_arg_padding):
6052         Likewise.
6053         * config/m68hc11/m68hc11.c (m68hc11_return_in_memory,
6054         m68hc11_function_arg_padding): Likewise.
6055         * config/m68k/m68k-protos.h (m68k_function_value): Likewise.
6056         * config/m68k/m68k.c (TARGET_PROMOTE_PROTOTYPES,
6057         m68k_function_value): Likewise.
6058         * config/mcore/mcore-protos.h (mcore_num_arg_regs,
6059         mcore_function_value): Likewise.
6060         * config/mcore/mcore.c (handle_structs_in_regs,
6061         mcore_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
6062         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
6063         mcore_num_arg_regs, mcore_function_value): Likewise.
6064         * config/mips/mips-protos.h (mips_pad_arg_upward,
6065         mips_function_value): Likewise.
6066         * config/mips/mips.c (mips_fpr_return_fields, mips_return_in_msb,
6067         mips_return_in_memory, mips_pass_by_reference, mips_callee_copies,
6068         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
6069         TARGET_PROMOTE_PROTOTYPES, mips_pad_arg_upward,
6070         mips_function_value): Likewise.
6071         * config/mmix/mmix-protos.h (mmix_function_outgoing_value):
6072         Likewise.
6073         * config/mmix/mmix.c (mmix_pass_by_reference,
6074         TARGET_PROMOTE_FUNCTION_ARGS, mmix_function_outgoing_value,
6075         mmix_encode_section_info): Likewise.
6076         * config/mn10300/mn10300-protos.h (mn10300_function_value):
6077         Likewise.
6078         * config/mn10300/mn10300.c (mn10300_return_in_memory,
6079         mn10300_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
6080         mn10300_function_value): Likewise.
6081         * config/mt/mt-protos.h (mt_function_value): Likewise.
6082         * config/mt/mt.c (mt_pass_by_reference, mt_function_value,
6083         mt_pass_in_stack, TARGET_PROMOTE_PROTOTYPES): Likewise.
6084         * config/pa/pa-protos.h (function_arg_padding, function_value,
6085         pa_return_in_memory): Likewise.
6086         * config/pa/pa.c (pa_pass_by_reference,
6087         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
6088         function_arg_padding, function_value, pa_return_in_memory):
6089         Likewise.
6090         * config/pdp11/pdp11.c (pdp11_return_in_memory): Likewise.
6091         * config/rs6000/rs6000-protos.h (rs6000_function_value,
6092         function_arg_padding): Likewise.
6093         * config/rs6000/rs6000.c (rs6000_return_in_memory,
6094         rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
6095         rs6000_pass_by_reference, rs6000_must_pass_in_stack,
6096         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
6097         function_arg_padding, altivec_expand_dst_builtin,
6098         altivec_expand_builtin, rs6000_expand_builtin, spe_init_builtins,
6099         altivec_init_builtins, rs6000_common_init_builtins,
6100         rs6000_function_value): Likewise.
6101         * s390/s390-protos.h (s390_function_value): Likewise.
6102         * config/s390/s390.c (s390_function_arg_size,
6103         s390_pass_by_reference, s390_return_in_memory,
6104         s390_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
6105         TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
6106         * config/score/score-protos.h (score_function_value): Likewise.
6107         * config/score/score.c (score_arg_partial_bytes,
6108         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
6109         TARGET_PROMOTE_PROTOTYPES, score_return_in_memory,
6110         score_pass_by_reference, score_add_offset, score_function_value):
6111         Likewise.
6112         * config/sh/sh-protos.h (sh_attr_renesas_p,
6113         sh_promote_prototypes): Likewise.
6114         * config/sh/sh.c (sh_return_in_memory, sh_pass_by_reference,
6115         sh_callee_copies, sh_promote_prototypes, shcompact_byref,
6116         sh_attr_renesas_p): Likewise.
6117         * config/sparc/sparc-protos.h (function_value,
6118         function_arg_padding): Likewise.
6119         * config/sparc/sparc.c (sparc_promote_prototypes,
6120         sparc_return_in_memory, sparc_pass_by_reference,
6121         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
6122         function_arg_record_value_2, function_arg_record_value_1,
6123         function_arg_record_value, function_arg_record_value,
6124         function_arg_padding, function_value): Likewise.
6125         * config/spu/spu-protos.h (spu_function_value): Likewise.
6126         * config/spu/spu.c (spu_pass_by_reference, spu_return_in_memory,
6127         spu_function_value): Likewise.
6128         * config/stormy16/stormy16-protos.h (xstormy16_function_value):
6129         Likewise.
6130         * config/stormy16/stormy16.c (xstormy16_return_in_memory,
6131         xstormy16_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
6132         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
6133         Likewise.
6134         * config/v850/v850.c (v850_return_in_memory,
6135         v850_pass_by_reference, TARGET_PROMOTE_PROTOTYPES): Likewise.
6136         * config/vax/vax.c (TARGET_PROMOTE_PROTOTYPES): Likewise.
6137         * config/xtensa/xtensa.c (xtensa_return_in_msb,
6138         xtensa_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
6139         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
6140         Likewise.
6141         * explow.c (promote_mode, hard_function_value): Likewise.
6142         * expr.h (hard_function_value, promote_mode): Likewise.
6143         * function.c (aggregate_value_p): Likewise.
6144         * hooks.c (hook_bool_const_tree_true): New.
6145         * hooks.h (hook_bool_const_tree_true): New.
6146         * sdbout.c (SET_KNOWN_TYPE_TAG, plain_type_1): Constify.
6147         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
6148         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
6149         TARGET_RETURN_IN_MSB): Likewise.
6150         * target.h (promote_function_args, promote_function_return,
6151         promote_prototypes, return_in_memory, return_in_msb,
6152         pass_by_reference, must_pass_in_stack, callee_copies,
6153         function_value): Likewise.
6154         * targhooks.c (default_return_in_memory,
6155         hook_pass_by_reference_must_pass_in_stack,
6156         hook_callee_copies_named,
6157         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
6158         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
6159         default_function_value): Likewise. 
6160         * targhooks.h (default_return_in_memory,
6161         hook_pass_by_reference_must_pass_in_stack,
6162         hook_callee_copies_named,
6163         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
6164         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
6165         default_function_value): Likewise.
6166         * tree-ssa-structalias.c (const_equiv_class_label_t): New.
6167         (equiv_class_label_hash, equiv_class_label_eq): Constify.
6168         * tree-vectorizer.c (bb_in_loop_p): Likewise.
6169         * tree.c (needs_to_live_in_memory): Likewise.
6170         * tree.h (struct tree_type, needs_to_live_in_memory,
6171         aggregate_value_p, must_pass_in_stack_var_size,
6172         must_pass_in_stack_var_size_or_pad): Likewise.
6173         * vmsdbgout.c (write_debug_addr, write_debug_delta4,
6174         write_debug_string, ASM_OUTPUT_DEBUG_STRING, write_rtnbeg,
6175         lookup_filename): Likewise.
6176
6177 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
6178
6179         PR target/17390
6180         * config/i386/i386.c (ix86_expand_fp_compare): Expand fp comparison to
6181         fake fcomi i387 instruction for !TARGET_CMOVE.
6182         (ix86_expand_branch): Expand natural sequence with one jump for
6183         all targets, not only TARGET_CMOVE.
6184         * config/i386/i386.md (*cmpfp_0_cc): New define_insn_and_split
6185         pattern to implement fake fcomi sequence.  Split instruction after
6186         reload to correct compare sequences.
6187         (*cmpfp_xf_cc): Ditto.
6188         (*cmpfp_<mode>_cc): Ditto.
6189         (*cmpfp_u_cc): Ditto.
6190         (*cmpfp_<mode>_cc): Ditto.
6191
6192 2007-08-23  Richard Guenther  <rguenther@suse.de>
6193
6194         * tree-pretty-print.c (dump_generic_node): Annotate
6195         GIMPLE_MODIFY_STMTs with volatile ops with "{v}".
6196
6197 2007-08-23  Richard Guenther  <rguenther@suse.de>
6198
6199         * builtins.c (expand_builtin_mathfn): Wrap argument in
6200         save_expr directly instead of re-building the call.
6201         (expand_builtin_mathfn_2): Likewise.
6202         (expand_builtin_mathfn_3): Likewise.
6203         (expand_builtin_interclass_mathfn): Likewise.
6204         (expand_builtin_int_roundingfn): Set arg.
6205         (expand_builtin_int_roundingfn_2): Likewise.
6206
6207 2007-08-23  Paolo Bonzini  <bonzini@gnu.org>
6208
6209         * config/i386/sse.md (*sse_and<mode>3, *sse_ior<mode>3,
6210         *sse_nand<mode>3, *sse_xor<mode>3): New.
6211
6212 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
6213
6214         * config/i386/i386.h (PRINT_OPERAND_PUNCT_VALID_P): Add ';' code.
6215         * config/i386/i386.c (print_operand): Handle ';' code.  Output
6216         semicolon for TARGET_MACHO.
6217         * config/i386/sync.md (*sync_compare_and_swap<mode>): Use '%;' to
6218         emit semicolon after 'lock' prefix.
6219         (sync_double_compare_and_swap<mode>): Ditto.
6220         (*sync_double_compare_and_swapdi_pic): Ditto.
6221         (*sync_compare_and_swap_cc<mode>): Ditto.
6222         (sync_double_compare_and_swap_cc<mode>): Ditto.
6223         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
6224         (sync_old_add<mode>): Ditto.
6225         (sync_add<mode>): Ditto.
6226         (sync_sub<mode>): Ditto.
6227         (sync_ior<mode>): Ditto.
6228         (sync_and<mode>): Ditto.
6229         (sync_xor<mode>): Ditto.
6230
6231 2007-08-22  Chao-ying Fu  <fu@mips.com>
6232
6233         * rtl.c (rtx_code_size): Check CONST_FIXED to calcualte correct sizes
6234         in DEF_RTL_EXPR.
6235         (copy_rtx): Handle CONST_FIXED.
6236         (rtx_equal_p): Likewise.
6237         * rtl.h (fixed_value.h): New include.
6238         (rtx_def): Add a new field of fixed_value to u.
6239         (XCNMPFV): Define for accessing fixed_value.
6240         (CONST_FIXED_VALUE, CONST_FIXED_VALUE_HIGH, CONST_FIXED_VALUE_LOW):
6241         Define.
6242         * rtl.def (CONST_FIXED): New constant.
6243         (SS_MULT, US_MULT, SS_DIV, US_DIV, FRACT_CONVERT,
6244         UNSIGNED_FRACT_CONVERT, SAT_FRACT, UNSIGNED_SAT_FRACT, US_NEG,
6245         US_ASHIFT): New codes.
6246         * doc/rtl.texi (Expressions): Document const_fixed, us_neg, ss_mult,
6247         us_mult, ss_div, us_div, us_ashift, fract_convert, sat_fract,
6248         unsigned_fract_convert, unsigned_sat_fract): Document them.
6249         * varasm.c (assemble_integer): Extend to support fixed-point constants
6250         by using different machine classes.
6251         (decode_addr_const): Handle FIXED_CST.
6252         (const_hash_1): Likewise.
6253         (compare_constant): Likewise.
6254         (copy_constant): Likewise.
6255         (const_rtx_hash_1): Handle CONST_FIXED.
6256         (output_constant_pool_2): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
6257         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
6258         MODE_VECTOR_UACCUM.
6259         (initializer_constant_valid_p): Handle FIXED_CST.
6260         (output_constant): Support FIXED_POINT_TYPE.
6261         * gengenrtl.c (excluded_rtx): Check CONST_FIXED to exclude.
6262         * cse.c (hash_rtx): Support CONST_FIXED.
6263         (exp_equiv_p): Likewise.
6264         (cannon_reg): Likewise.
6265         (fold_rtx): Likewise.
6266         (equiv_constant): Likewise.
6267         (cse_process_notes_1): Likewise.
6268         (count_reg_usage): Likewise.
6269         * cselib.c (entry_and_rtx_equal_p): Check CONST_FIXED.
6270         (rtx_equal_for_cselib_p): Handle CONST_FIXED.
6271         (wrap_constant): Check CONST_FIXED.
6272         (cselib_hash_rtx): Support CONST_FIXED.
6273         (cselib_subst_to_values): Likewise.
6274         * df-scan.c (df_uses_record): Likewise.
6275         * gcse.c (want_to_gcse_p): Likewise.
6276         (oprs_unchanged_p): Likewise.
6277         (oprs_not_set_p): Likewise.
6278         (compute_transp): Likewise.
6279         (extract_mentioned_regs_helper): Likewise.
6280         * genemit.c (gen_exp): Likewise.
6281         * local-alloc.c (equiv_init_varies_p): Likewise.
6282         (contains_replace_regs): Likewise.
6283         (memref_referenced_p): Likewise.
6284         * loop-invariant.c (check_maybe_invariant): Likewise.
6285         (hash_invariant_expr_1): Likewise.
6286         (invariant_expr_equal_p): Likewise.
6287         * postreload-gcse.c (oprs_unchanged_p): Likewise.
6288         * regclass.c (reg_scan_mark_refs): Likewise.
6289         * regrename.c (scan_rtx): Likewise.
6290         * resource.c (mark_referenced_resources): Likewise.
6291         (mark_set_resources): Likewise.
6292         * rtlanal.c (rtx_unstable_p): Likewise.
6293         (rtx_varies_p): Likewise.
6294         (count_occurrences): Likewise.
6295         (reg_mentioned_p): Likewise.
6296         (modified_between_p): Likewise.
6297         (modified_in_p): Likewise.
6298         (volatile_insn_p): Likewise.
6299         (volatile_refs_p): Likewise.
6300         (side_effects_p): Likewise.
6301         (may_trap_p_1): Likewise.
6302         (inequality_comparisons_p): Likewise.
6303         (computed_jump_p_1): Likewise.
6304         (commutative_operand_precedence): Likewise.
6305         * sched-deps.c (sched_analyze_2): Likewise.
6306         * sched-vis.c (print_value): Likewise.
6307         * reload.c (operands_match_p): Likewise.
6308         (subst_reg_equivs): Likewise.
6309         * reload1.c (eliminate_regs_1): Likewise.
6310         (elimination_effects): Likewise.
6311         (scan_paradoxical_subregs): Likewise.
6312         * alias.c (rtx_equal_for_memref_p): Likewise.
6313         * Makefile.in (RTL_BASE_H): Add fixed-value.h.
6314         * emit-rtl.c (const_fixed_htab): New hash table.
6315         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed):
6316         Declare.
6317         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed,
6318         const_fixed_from_fixed_value): New functions.
6319         (verify_rtx_sharing): Handle CONST_FIXED.
6320         (copy_rtx_if_shared_1): Likewise.
6321         (reset_used_flags): Likewise.
6322         (set_used_flags): Likewise.
6323         (copy_insn_1): Likewise.
6324         (init_emit_once): Create const_fixed_htab.
6325         Store fixed-point scalar and vector zero and one to const_tiny_rtx.
6326
6327 2007-08-22  Zdenek Dvorak  <ook@ucw.cz>
6328
6329         PR tree-optimization/32949
6330         * tree-ssa-loop-niter.c (scev_probably_wraps_p): Test nowrap_type_p
6331         before failing for ivs with non-constant step.
6332
6333 2007-08-22  Hans-Peter Nilsson  <hp@axis.com>
6334
6335         * doc/md.texi (Iterators): Renamed from Macros.  All contents
6336         changed to reflect rename of respectively define_code_macro and
6337         define_mode_macro to define_code_iterator and define_mode_iterator.
6338         (Mode Iterators, Code Iterators): Similar.
6339         * read-rtl.c (struct iterator_group, struct iterator_traverse_data)
6340         (uses_mode_iterator_p, apply_mode_iterator, uses_code_iterator_p)
6341         (apply_iterator_to_string, uses_iterator_p, apply_iterator_traverse)
6342         (initialize_iterators, find_iterator, check_code_iterator)
6343         (map_attr_string, apply_mode_maps, apply_iterator_to_rtx, add_mapping)
6344         (read_mapping, read_rtx_1): Similar.
6345         * config/alpha/sync.md, config/alpha/alpha.md, config/frv/frv.md,
6346         config/s390/s390.md, config/m32c/blkmov.md, config/m32c/m32c.md,
6347         config/spu/spu.md, config/sparc/sparc.md, config/sparc/sync.md,
6348         config/i386/i386.md, config/i386/mmx.md, config/i386/sse.md,
6349         config/i386/sync.md, config/crx/crx.md, config/xtensa/xtensa.md,
6350         config/cris/cris.c, config/cris/cris.md, config/ia64/sync.md,
6351         config/ia64/div.md, config/ia64/vect.md, config/ia64/ia64.md,
6352         config/m68k/m68k.md, config/rs6000/spe.md, config/rs6000/altivec.md,
6353         config/rs6000/sync.md, config/rs6000/rs6000.md,
6354         config/arm/vec-common.md, config/arm/neon.md, config/arm/iwmmxt.md,
6355         config/arm/arm.md, config/mips/mips-dsp.md, config/mips/mips.md,
6356         config/vax/vax.md, config/bfin/bfin.md: Similar.
6357
6358 2007-08-22  David Daney  <ddaney@avtrex.com>
6359
6360         * doc/install.texi (Testing): Mention testing on a simulator.
6361
6362 2007-08-22  Janis Johnson  <janis187@us.ibm.com>
6363
6364         * config/dfp-bit.c (DFP_TO_DFP): Check for overflow.
6365
6366         * doc/libgcc.texi (Decimal float library routines): Fix formatting
6367         and rearrange floating point conversion functions into different
6368         categories.
6369
6370 2007-08-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
6371
6372         * target.h (struct gcc_target.sched: dfa_pre_advance_cycle,
6373         dfa_post_advance_cycle): New scheduler hooks.
6374         * target-def.h (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
6375         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): New macros to initialize
6376         new hooks.
6377         (TARGET_SCHED): Use them.
6378         * doc/tm.texi (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
6379         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Document new hooks.
6380         * haifa-sched.c (advance_one_cycle): Invoke new hooks.
6381
6382         * genautomata.c (insn_has_dfa_reservation_p): New DFA interface
6383         function to facilitate debugging.
6384         (INSN_HAS_DFA_RESERVATION_P_FUNC_NAME): New macro.
6385         (output_insn_has_dfa_reservation_p): New static function to output
6386         insn_has_dfa_reservation_p ().
6387         (write_automata): Use it.
6388         * genattr.c (main): Output declaration for
6389         insn_has_dfa_reservation_p ().
6390
6391 2007-08-22  Christian Bruel  <christian.bruel@st.com>   
6392             Richard Guenther <rguenther@suse.de>
6393         
6394         * fold-const.c (fold_binary): Optimize A-A if -ffinite-math-only.
6395         * simplify_rtx (simplify_binary_operation_1): Likewise.
6396                 
6397 2007-08-22  Rask Ingemann Lambertsen  <rask@sygehus.dk>
6398
6399         PR rtl-optimization/32557
6400         * df-problems.c (df_note_bb_compute): Use mws->start_regno instead
6401         of REGNO (mws->mw_reg).
6402
6403 2007-08-22  Richard Guenther  <rguenther@suse.de>
6404
6405         PR middle-end/33007
6406         * builtins.c (expand_builtin_int_roundingfn): Replace call
6407         argument wrapped with SAVE_EXPR directly.
6408         (expand_builtin_int_roundingfn_2): Likewise.
6409
6410 2007-08-22  Richard Guenther  <rguenther@suse.de>
6411
6412         * tree-inline.c (inlinable_function_p): Restore disregarding
6413         inline limits for GNU extern inline functions.
6414
6415 2007-08-22  Richard Guenther  <rguenther@suse.de>
6416
6417         PR middle-end/32563
6418         * tree.c (host_integerp): Treat sizetype as signed as it is
6419         sign-extended.
6420
6421 2007-08-21  Ian Lance Taylor  <iant@google.com>
6422
6423         PR tree-optimization/33134
6424         * tree-vrp.c (adjust_range_with_scev): Call
6425         set_value_range_to_value.
6426
6427 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
6428
6429         * value-prof.h (gimple_remove_histogram_value): Remove duplicate
6430         prototype.
6431         
6432 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
6433
6434         * tree-flow-inline.h (next_imm_use_stmt): Remove unecessary
6435         whitespace.
6436
6437 2007-08-21  Nathan Froyd  <froydnj@codesourcery.com>
6438
6439         * config/rs6000/rs6000.c (expand_block_clear): Add TARGET_SPE
6440         cases to set eight bytes at a time.
6441         (expand_block_move): Likewise.
6442         
6443 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
6444
6445         PR debug/32610
6446         * dwarf2out.c (gen_decl_die): Don't call
6447         gen_tagged_type_instantiation_die if decl doesn't have tagged type.
6448
6449 2007-08-21  Paul Brook  <paul@codesourcery.com>
6450             Nathan Sidwell  <nathan@codesourcery.com>
6451             Mark Mitchell  <mark@codesourcery.com>
6452             Joseph Myers  <joseph@codesourcery.com>
6453
6454         * configure.ac: Add --with-pkgversion and --with-bugurl.
6455         * configure: Regenerate.
6456         * doc/install.texi: Document them.
6457         * version.c (version_string): Remove VERSUFFIX.
6458         (VERSUFFIX): Remove.
6459         (pkgversion_string): New.
6460         (bug_report_url): Do not hard-code initializer.
6461         * version.h (pkgversion_string): Declare.
6462         * Makefile.in (PKGVERSION_s, BUGURL_s, PKGVERSION, BUGURL_TEXI):
6463         Define.
6464         (version.o): Define PKGVERSION and BUGURL.
6465         (gcc-vers.texi): Define VERSION_PACKAGE and BUGURL.
6466         (%.pod): Define BUGURL.
6467         * gcc.c (process_command, main): Use pkgversion_string.
6468         * toplev.c (compile_file, print_version): Likewise.
6469         * protoize.c (main): Likewise.
6470         * gcov.c (print_version): Likewise.  Update copyright date.
6471         * gcov-dump.c (print_version): Likewise.  Update copyright date.
6472         * mips-tdump.c (main): Likewise.  Update copyright date.
6473         * mips-tfile.c (main): Likewise.  Update copyright date.
6474         * doc/include/gcc-common.texi: Include VERSION_PACKAGE as subtitle.
6475         * doc/bugreport.texi: Use BUGURL for bug-reporting instructions;
6476         shorten description.
6477         * doc/gcc.texi: Include VERSION_PACKAGE in version description.
6478         * doc/gccint.texi: Likewise.
6479         * doc/invoke.texi: Use BUGURL for bug-reporting instructions.
6480         Update copyright date.
6481
6482 2007-08-21  Uros Bizjak  <ubizjak@gmail.com>
6483
6484         * config/i386/i386.c (ix86_expand_clear): Use FLAGS_REG.
6485         (ix86_expand_strlensi_unroll_1): Ditto.
6486         (ix86_expand_branch): Use FLAGS_REG and FPSR_REG.
6487         (ix86_expand_carry_flag_compare): Update comment.
6488
6489 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
6490
6491         PR middle-end/32912
6492         * fold-const.c (fold_unary): Optimize BIT_NOT_EXPR of VECTOR_CST.
6493         (fold_binary): Handle vectors in X | ~X and X ^ ~X optimizations.
6494
6495 2007-08-21  Richard Guenther  <rguenther@suse.de>
6496
6497         * fold-const.c (fold_binary): Revert removing of index +p PTR folding.
6498
6499 2007-08-21  Richard Guenther  <rguenther@suse.de>
6500
6501         PR middle-end/33122
6502         * fold-const.c (fold_binary): Remove index +p PTR folding.
6503         Fix types of POINTER_PLUS_EXPR generated by folding of
6504         (PTR +p B) +p A.
6505
6506 2007-08-20  Chao-ying Fu  <fu@mips.com>
6507
6508         * c-common.h (enum rid): Add new enumeration values of RID_SAT,
6509         RID_FRACT, and RID_ACCUM.  RID_SAT needs to be inserted before
6510         RID_ONEWAY, so that it can be checked in declspecs_add_type.
6511         (c_common_fixed_point_type_for_size): Declare.
6512         * c-parser.c (reswords): Add _Fract, _Accum, and _Sat.
6513         (c_token_starts_typename): Handle RID_FRACT, RID_ACCUM, and RID_SAT.
6514         (c_token_starts_declspecs): Likewise.
6515         (c_parser_declspecs): Likewise.
6516         (c_parser_attributes): Likewise.
6517         * c-tree.h (enum c_typespec_keyword): Add cts_fract and cts_accum.
6518         (c_declspecs): Add saturating_p.
6519         * c-decl.c (build_null_declspecs): Initialize saturating_p.
6520         (declspecs_add_type): Avoid using complex with _Fract, _Accum, or
6521         _Sat.  Handle RID_SAT.
6522         Avoid using void, bool, char, int, float, double, _Decimal32,
6523         _Decimal64, _Decimal128, and complex with _Sat.
6524         Handle RID_FRACT and RID_ACCUM.
6525         Make sure _Sat is used with _Fract or _Accum.
6526         (finish_declspecs): Handle cts_fract and cts_accum.
6527         * c-common.c (fixed-value.h): New include.
6528         (constant_expression_warning): Handle FIXED_CST.
6529         (overflow_warning): Likewise.
6530         (warnings_for_convert_and_check): Likewise.
6531         (c_common_fixed_point_type_for_size): New.
6532         (c_common_type_for_mode): Handle fixed-point modes to
6533         return various saturating/non-saturating, signed/unsigned types.
6534         (c_common_signed_or_unsigned_type): Support fixed-point types.
6535         (shorten_compare): Check fixed-point zero.
6536         Handle FIXED_POINT_TYPE.
6537         (c_common_truthvalue_conversion): Handle FIXED_CST.
6538         Handle FIXED_POINT_TYPE.
6539         (c_common_nodes_and_builtins): Record builtin types for fixed-point
6540         types.
6541         (handle_mode_attribute): Handle fixed-point modes.  Need to check
6542         if the signness of base type and fixed-point modes are consistent.
6543         (handle_vector_size_attribute): Handle fixed-point modes.
6544         (same_scalar_type_ignoring_signedness): Handle FIXED_POINT_TYPE.
6545         (warn_for_div_by_zero): Check fixed-point zero.
6546         * c-typeck.c (c_common_type): Check FIXED_POINT_TYPE.  Build
6547         a common fixed-point type based on fbit, ibit, sign, and saturation.
6548         (build_unary_op): Allow FIXED_POINT_TYPE for CONVERT_EXPR,
6549         NEGATE_EXPR, TRUTH_NOT_EXPR, PREINCREMENT_EXPR, POSTINCREMENT_EXPR,
6550         PREDECREMENT_EXPR, and POSTDECREMENT_EXPR.
6551         (convert_for_assignment): Support FIXED_POINT_TYPE.
6552         (digest_init): Handle FIXED_POINT_TYPE.
6553         (build_binary_op): Support FIXED_POINT_TYPE in *_DIV_EXPR,
6554         TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR, TRUTH_AND_EXPR, TRUTH_OR_EXPR,
6555         TRUTH_XOR_EXPR, RSHIFT_EXPR, LSHIFT_EXPR, EQ_EXPR, NE_EXPR, LE_EXPR,
6556         GE_EXPR, LT_EXPR, GT_EXPR.
6557         * target-def.h (TARGET_FIXED_POINT_SUPPORTED_P): New.
6558         (TARGET_INITIALIZER): Add TARGET_FIXED_POINT_SUPPORTED_P.
6559         * target.h (gcc_target): Add fixed_point_supported_p.
6560         * targhooks.c (default_scalar_mode_supported_p): Handle MODE_FRACT,
6561         MODE_UFRACT, MODE_ACCUM, and MODE_UACCUM.
6562         (default_fixed_point_supported_p): Define.
6563         * targhooks.h (default_fixed_point_supported_p): Declare.
6564         * doc/tm.texi (TARGET_FIXED_POINT_SUPPORTED_P): Add.
6565         * doc/install.texi (Configuration): Add --enable-fixed-point.
6566         * configure.ac (--enable-fixed-point): New to enable fixed-point
6567         arithmetic extension to C.  For mips targets, we enable it by default.
6568         * configure, config.in: Regenerate.
6569
6570 2007-08-20  Pawel Sikora  <pluto@pld-linux.org>
6571
6572         * doc/invoke.texi (-Wnon-virtual-dtor): Update documentation.
6573
6574 2007-08-20  David Edelsohn  <edelsohn@gnu.org>
6575
6576         * dwarf2out.c (text_section_used): Move declaration outside ifdef
6577         DWARF2_DEBUGGING_INFO.
6578         (cold_text_section_used): Same.
6579         (cold_text_section): Same.
6580
6581 2007-08-20  Richard Guenther  <rguenther@suse.de>
6582
6583         * c-typeck.c (convert_for_assignment): Use the type of
6584         the member for the initialization.
6585
6586 2007-08-20  Richard Guenther  <rguenther@suse.de>
6587
6588         * c-objc-common.c (c_disregard_inline_limits): Remove.
6589         * c-objc-common.h (c_disregard_inline_limits): Likewise.
6590         * cgraphunit.c (cgraph_process_new_functions): Call
6591         disregard_inline_limits_p.
6592         (cgraph_preserve_function_body_p): Likewise.
6593         * ipa-inline.c (compute_inline_parameters): Likewise.
6594         * langhooks-def.h (lhd_tree_inlining_disregard_inline_limits):
6595         Remove.
6596         (LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS): Remove.
6597         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
6598         disregard_inline_limits langhook.
6599         * langhooks.c (lhd_tree_inlining_disregard_inline_limits):
6600         Remove.
6601         * langhooks.h (lang_hooks_for_tree_inlining): Remove
6602         disregard_inline_limits langhook.
6603         * tree-inline.c (disregard_inline_limits_p): New function.
6604         * tree-inline.h (disregard_inline_limits_p): Declare.
6605
6606 2007-08-20  Richard Guenther  <rguenther@suse.de>
6607
6608         * langhooks-def.h (lhd_tree_inlining_auto_var_in_fn_p): Remove.
6609         (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P): Likewise.
6610         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
6611         auto_var_in_fn_p langhook.
6612         * langhooks.c (lhd_tree_inlining_auto_var_in_fn_p): Rename and
6613         move ...
6614         * tree.c (auto_var_in_fn_p): ... here.
6615         (find_var_from_fn): Call auto_var_in_fn_p directly.
6616         * langhooks.h (lang_hooks_for_tree_inlining): Remove
6617         auto_var_in_fn_p langhook.
6618         * tree-inline.c (remap_decls): Call auto_var_in_fn_p directly.
6619         (copy_body_r): Likewise.
6620         (self_inlining_addr_expr): Likewise.
6621         * tree.h (auto_var_in_fn_p): Declare.
6622
6623 2007-08-20  Richard Guenther  <rguenther@suse.de>
6624
6625         * tree.c (WALK_SUBTREE): Call walk_tree_1.
6626         (walk_type_fields): Take lh parameter.
6627         (walk_tree): Rename to ...
6628         (walk_tree_1): ... this.  Do not call the walk_subtrees
6629         langhook but the now passed callback.  Pass lh on recursion.
6630         (walk_tree_without_duplicates): Rename to ...
6631         (walk_tree_without_duplicates_1): ... this.  Take lh parameter
6632         and call walk_tree_1.
6633         * tree.h (walk_tree_lh): New typedef.
6634         (walk_tree_1): Declare.
6635         (walk_tree_without_duplicates_1): Likewise.
6636         (walk_tree): New define to walk_tree_1 with NULL lh parameter.
6637         (walk_tree_without_duplicates): New define to
6638         walk_tree_without_duplicates_1 with NULL lh parameter.
6639         * langhooks.c (lhd_tree_inlining_walk_subtrees): Remove.
6640         * langhooks.h (lang_hooks_for_tree_inlining): Remove walk_subtrees
6641         langhook.
6642         * langhooks-def.h (lhd_tree_inlining_walk_subtrees): Remove.
6643         (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Likewise.
6644         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove walk_subtrees
6645         initializer.
6646
6647 2007-08-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6648
6649         PR middle-end/30564
6650         * tree-inline.c (optimize_inline_calls): Move the cgraph checking
6651         code in front of the compacting of basic blocks.
6652         Move the folding of statements inbetween the cgraph checking
6653         and compacting of basic blocks.
6654
6655 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6656            Serge Belyshev  <belyshev@depni.sinp.msu.ru>
6657
6658         PR target/32522
6659         * config/alpha/alpha.c (va_list_skip_additions): Check for
6660         POINTER_PLUS_EXPR in addition to PLUS_EXPR.
6661         (alpha_stdarg_optimize_hook): Look for POINTER_PLUS_EXPR instead of
6662         PLUS_EXPR when checking ap.__base.
6663         (alpha_va_start): Create POINTER_PLUS_EXPR instead of PLUS_EXPR
6664         when doing addition on pointer types.  Use size_int instead of
6665         build_int_cst.
6666         (alpha_gimplify_va_arg_1): Likewise, but use sizetype instead of
6667         ptr_type in the second operand.
6668
6669 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
6670
6671         PR target/33115
6672         * config/i386/darwin.h (CC1_SPEC): Add %(cc1_cpu) in front.
6673
6674 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6675
6676         PR middle-end/32940
6677         * cfgexpand.c  (expand_one_register_var): Mark pointer
6678         DECL_ARTIFICIAL as REG_POINTER also.
6679         * stmt.c (expand_decl): Likewise.
6680
6681 2007-08-19  Daniel Berlin  <dberlin@dberlin.org>
6682
6683         Fix PR 32772
6684         Fix PR 32716
6685         Fix PR 32328
6686         Fix PR 32303
6687
6688         * tree-flow.h (struct stmt_ann_d): Remove makes_clobbering_call.
6689         * tree-ssa-alias.c (init_transitive_clobber_worklist): Add
6690         on_worklist argument and avoid adding things to worklist multiple
6691         times.
6692         (add_to_worklist): Ditto.
6693         (mark_aliases_call_clobbered): Mark entire structure clobbered if
6694         single SFT is clobbered.
6695         (set_initial_properties): Ditto.
6696         (compute_call_clobbered): Update for changes to function
6697         arguments.
6698         (create_overlap_variables_for): Always create SFT for offset 0.
6699         (create_structure_vars): Handle PHI's, since we are in SSA form at
6700         this point.
6701         * tree-ssa-loop-ivopts.c (get_ref_tag): Don't return subvars.
6702         * tree-ssa-operands.c (access_can_touch_variable): Don't handle
6703         TARGET_MEM_REF.
6704         (add_vars_for_offset): Figure out aliases from access + points-to.
6705         (add_virtual_operand): Use add_vars-for_offset.
6706         (get_tmr_operands): Update for NMT changes, rewrite to be correct.
6707         (add_call_clobber_ops): Remove makes_clobbering_call set.
6708         (get_expr_operands): Always pass through the INDIRECT_REF
6709         reference.
6710         * tree-ssa-structalias.c (struct constraint_graph): Remove
6711         variables member.
6712         Add pe, pe_rep, pointer_label, loc_label, pointed_by, points_to,
6713         address_taken, pt_used, number_incoming.
6714         (FIRST_ADDR_NODE): Removed.
6715         (merge_graph_nodes): Remove broken code for the moment.
6716         (init_graph): New function.
6717         (build_pred_graph): Remove code to init_graph.
6718         Add location equivalence support.
6719         (struct scc_info): Rename roots to deleted.
6720         (scc_visit): Ditto.
6721         (init_scc_info): Ditto
6722         (init_topo_info): Use graph->size.
6723         (compute_topo_order): Ditto.
6724         (do_da_constraint): Removed.
6725         (do_sd_constraint): Remove calls to find().
6726         set_union_with_increment should always get 0 as last arg here.
6727         (do_complex_constraint): Replace do_da_constraint with assert.
6728         Stop calling find.
6729         (struct equiv_class_label): New.
6730         (pointer_equiv_class_table): Ditto.
6731         (location_equiv_class_table): Ditto.
6732         (equiv_class_label_hash): Ditto.
6733         (equiv_class_label_eq): Ditto
6734         (equiv_class_lookup): Ditto.
6735         (equiv_class_ladd): Ditto.
6736         (pointer_equiv_class): Ditto.
6737         (location_equiv_class): Ditto.
6738         (condense_visit): Rename and rewrite from label_visit to do only
6739         SCC related stuff for HU.
6740         (label_visit): Do HU work for HU.
6741         (perform_var_substitution): Update to do HU and location
6742         equivalence.
6743         (free_var_substitution_info): Update to free HU and location
6744         equivalence structures.  */
6745         (find_equivalent_node): Update for pointer but not location
6746         equivalence.
6747         (unite_pointer_equivalences): New function.
6748         (move_complex_constraints): Rewrite to only do moving.
6749         (rewrite_constraints): Split out of move_complex_constraints.
6750         (solve_graph): Use graph->size.
6751         (process_constraint_1): Add from_call argument, use it.
6752         Split *a = &b into two constraints.
6753         (process_constraint): Use new process_constraint_1.
6754         (get_constraint_for_component_ref): Handle bitmaxsize == -1 case.
6755         (get_constraint_for): Handle non-pointer integers properly.
6756         Remove code that used to handle structures.
6757         (handle_ptr_arith): Fix a few bugs in pointer arithmetic handling
6758         with unknown addends.
6759         (handle_rhs_call): New function.
6760         (find_func_aliases): Use handle_rhs_call.
6761         (set_uids_in_ptset): Add an assert.
6762         (set_used_smts): Fix bug in not considering unified vars.
6763         (compute_tbaa_pruning): Stop initing useless iteration_obstack.
6764         (compute_points_to_sets): Update for other function changes.
6765         (delete_points_to_sets): Ditto.
6766         (ipa_pta_execute): Ditto.
6767         (pass_ipa_pta): We need to update SSA after ipa_pta.
6768         
6769 2007-08-19  Jan Hubicka  <jh@suse.cz>
6770
6771         * i386.md: Replace "rim" and "mri" constraints by "g".
6772
6773 2007-08-19  Joseph Myers  <joseph@codesourcery.com>
6774
6775         * dwarf2out.c (text_section_used, cold_text_section_used,
6776         cold_text_section, dwarf2out_note_section_used): New.
6777         (dwarf2out_init): Initialize cold_text_section.
6778         (dwarf2out_switch_text_section, dwarf2out_begin_function): Call
6779         dwarf2out_note_section_used.
6780         (size_of_aranges): Only count entry for text section if it was
6781         used.  Count entry for cold text section if it was used.
6782         (output_aranges): Only output entries for text section and cold
6783         text section if they were used.
6784
6785 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
6786
6787         * tree-pretty-print.c (debug_generic_expr): Add a comment about
6788         the function.
6789         (debug_generic_stmt): Likewise.
6790         (debug_tree_chain): Likewise.
6791
6792 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
6793
6794         * tree-data-refs.c (split_constant_offset): Expose.
6795         * tree-data-refs.h (split_constant_offset): Add declaration.
6796
6797         * tree-vectorizer.h (dr_alignment_support): Renamed
6798         dr_unaligned_software_pipeline to dr_explicit_realign_optimized.
6799         Added a new value dr_explicit_realign.
6800         (_stmt_vec_info): Added new fields: dr_base_address, dr_init,
6801         dr_offset, dr_step, and dr_aligned_to, along with new access
6802         functions for these fields: STMT_VINFO_DR_BASE_ADDRESS,
6803         STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET, STMT_VINFO_DR_STEP, and
6804         STMT_VINFO_DR_ALIGNED_TO.
6805
6806         * tree-vectorizer.c (vect_supportable_dr_alignment): Add
6807         documentation.
6808         In case of outer-loop vectorization with non-fixed misalignment - use
6809         the dr_explicit_realign scheme instead of the optimized realignment
6810         scheme.
6811         (new_stmt_vec_info): Initialize new fields.
6812
6813         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Handle the
6814         'nested_in_vect_loop' case. Change verbosity level.
6815         (vect_analyze_data_ref_access): Handle the 'nested_in_vect_loop' case.
6816         Don't fail on zero step in the outer-loop for loads.
6817         (vect_analyze_data_refs): Call split_constant_offset to calculate
6818         base, offset and init relative to the outer-loop.
6819
6820         * tree-vect-transform.c (vect_create_data_ref_ptr): Replace the unused
6821         BSI function argument with a new function argument - at_loop.
6822         Simplify the condition that determines STEP. Takes additional argument
6823         INV_P. Support outer-loop vectorization (handle the
6824         nested_in_vect_loop case), including zero step in the outer-loop. Call
6825         vect_create_addr_base_for_vector_ref with additional argument.
6826         (vect_create_addr_base_for_vector_ref): Takes additional argument LOOP.
6827         Updated function documentation. Handle the 'nested_in_vect_loop' case.
6828         Fixed and simplified calculation of step.
6829         (vectorizable_store): Call vect_create_data_ref_ptr with loop instead
6830         of bsi, and with additional argument. Call bump_vector_ptr with
6831         additional argument. Fix typos. Handle the 'nested_in_vect_loop' case.
6832         (vect_setup_realignment): Takes additional arguments INIT_ADDR and
6833         DR_ALIGNMENT_SUPPORT. Returns another value AT_LOOP. Handle the case
6834         when the realignment setup needs to take place inside the loop.
6835         Support the dr_explicit_realign scheme. Allow generating the optimized
6836         realignment scheme for outer-loop vectorization. Added documentation.
6837         (vectorizable_load): Support the dr_explicit_realign scheme. Handle
6838         the 'nested_in_vect_loop' case, including loads that are invariant in
6839         the outer-loop and the realignment schemes. Handle the case when the
6840         realignment setup needs to take place inside the loop. Call
6841         vect_setup_realignment with additional arguments.  Call
6842         vect_create_data_ref_ptr with additional argument and with loop instead
6843         of bsi. Fix 80-column overflow. Fix typos. Rename PHI_STMT to PHI.
6844         (vect_gen_niters_for_prolog_loop): Call
6845         vect_create_addr_base_for_vector_ref with additional arguments.
6846         (vect_create_cond_for_align_checks): Likewise.
6847         (bump_vector_ptr): Updated to support the new dr_explicit_realign
6848         scheme: takes additional argument bump; argument ptr_incr is now
6849         optional; updated documentation.
6850         (vect_init_vector): Takes additional argument (bsi). Use it, if
6851         available, to insert the vector initialization.
6852         (get_initial_def_for_induction): Pass additional argument in call to
6853         vect_init_vector.
6854         (vect_get_vec_def_for_operand): Likewise.
6855         (vect_setup_realignment): Likewise.
6856         (vectorizable_load): Likewise.
6857
6858 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
6859
6860         * tree-vectorizer.h (vect_is_simple_reduction): Takes a loop_vec_info
6861         as argument instead of struct loop.
6862         (nested_in_vect_loop_p): New function.
6863         (vect_relevant): Add enum values vect_used_in_outer_by_reduction and
6864         vect_used_in_outer.
6865         (is_loop_header_bb_p): New. Used to differentiate loop-header phis
6866         from other phis in the loop.
6867         (destroy_loop_vec_info): Add additional argument to declaration.
6868
6869         * tree-vectorizer.c (supportable_widening_operation): Also check if
6870         nested_in_vect_loop_p (don't allow changing the order in this case).
6871         (vect_is_simple_reduction): Takes a loop_vec_info as argument instead
6872         of struct loop. Call nested_in_vect_loop_p and don't require
6873         flag_unsafe_math_optimizations if it returns true.
6874         (new_stmt_vec_info): When setting def_type for phis differentiate 
6875         loop-header phis from other phis.
6876         (bb_in_loop_p): New function.
6877         (new_loop_vec_info): Inner-loop phis already have a stmt_vinfo, so
6878         just update their loop_vinfo.  Order of BB traversal now matters -
6879         call dfs_enumerate_from with bb_in_loop_p.
6880         (destroy_loop_vec_info): Takes additional argument to control whether
6881         stmt_vinfo of the loop stmts should be destroyed as well.
6882         (vect_is_simple_reduction): Allow the "non-reduction" use of a
6883         reduction stmt to be defines by a non loop-header phi.
6884         (vectorize_loops): Call destroy_loop_vec_info with additional argument.
6885
6886         * tree-vect-transform.c (vectorizable_reduction): Call
6887         nested_in_vect_loop_p. Check for multitypes in the inner-loop.
6888         (vectorizable_call): Likewise.
6889         (vectorizable_conversion): Likewise.
6890         (vectorizable_operation): Likewise.
6891         (vectorizable_type_promotion): Likewise.
6892         (vectorizable_type_demotion): Likewise.
6893         (vectorizable_store): Likewise.
6894         (vectorizable_live_operation): Likewise.
6895         (vectorizable_reduction): Likewise. Also pass loop_info to
6896         vect_is_simple_reduction instead of loop.
6897         (vect_init_vector): Call nested_in_vect_loop_p.
6898         (get_initial_def_for_reduction): Likewise.
6899         (vect_create_epilog_for_reduction): Likewise.
6900         (vect_init_vector): Check which loop to work with, in case there's an
6901         inner-loop.
6902         (get_initial_def_for_inducion): Extend to handle outer-loop
6903         vectorization. Fix indentation.
6904         (vect_get_vec_def_for_operand): Support phis in the case vect_loop_def.
6905         In the case vect_induction_def get the vector def from the induction
6906         phi node, instead of calling get_initial_def_for_inducion.
6907         (get_initial_def_for_reduction): Extend to handle outer-loop 
6908         vectorization.
6909         (vect_create_epilog_for_reduction): Extend to handle outer-loop
6910         vectorization.
6911         (vect_transform_loop): Change assert to just skip this case.  Add a
6912         dump printout.
6913         (vect_finish_stmt_generation): Add a couple asserts.
6914
6915         (vect_estimate_min_profitable_iters): Multiply
6916         cost of inner-loop stmts (in outer-loop vectorization) by estimated
6917         inner-loop bound.
6918         (vect_model_reduction_cost): Don't add reduction epilogue cost in case
6919         this is an inner-loop reduction in outer-loop vectorization.
6920
6921         * tree-vect-analyze.c (vect_analyze_scalar_cycles_1): New function.
6922         Same code as what used to be vect_analyze_scalar_cycles, only with
6923         additional argument loop, and loop_info passed to
6924         vect_is_simple_reduction instead of loop.
6925         (vect_analyze_scalar_cycles): Code factored out into
6926         vect_analyze_scalar_cycles_1. Call it for each relevant loop-nest.
6927         Updated documentation.
6928         (analyze_operations): Check for inner-loop loop-closed exit-phis during
6929         outer-loop vectorization that are live or not used in the outerloop,
6930         cause this requires special handling.
6931         (vect_enhance_data_refs_alignment): Don't consider versioning for
6932         nested-loops.
6933         (vect_analyze_data_refs): Check that there are no datarefs in the
6934         inner-loop.
6935         (vect_mark_stmts_to_be_vectorized): Also consider vect_used_in_outer
6936         and vect_used_in_outer_by_reduction cases.
6937         (process_use): Also consider the case of outer-loop stmt defining an
6938         inner-loop stmt and vice versa.
6939         (vect_analyze_loop_1): New function.
6940         (vect_analyze_loop_form): Extend, to allow a restricted form of nested
6941         loops.  Call vect_analyze_loop_1.
6942         (vect_analyze_loop): Skip (inner-)loops within outer-loops that have
6943         been vectorized.  Call destroy_loop_vec_info with additional argument.
6944
6945         * tree-vect-patterns.c (vect_recog_widen_sum_pattern): Don't allow
6946         in the inner-loop when doing outer-loop vectorization. Add
6947         documentation and printout.
6948         (vect_recog_dot_prod_pattern): Likewise. Also add check for
6949         GIMPLE_MODIFY_STMT (in case we encounter a phi in the loop).
6950
6951 2007-08-18  Andrew Pinski  <pinskia@gmail.com>
6952
6953         * tree-affine.h (print_aff): New prototype.
6954         (debug_aff): Likewise.
6955         * tree-affine.c (print_aff): New function.
6956         (debug_aff): Likewise.
6957
6958 2007-08-18  Paul Brook  <paul@codesourcery.com>
6959             Joseph Myers  <joseph@codesourcery.com>
6960
6961         * common.opt (-fdebug-prefix-map=): New option.
6962         * opts.c: Include debug.h.
6963         (common_handle_option): Handle -fdebug-prefix-map.
6964         * final.c: Include ggc.h.
6965         (struct debug_prefix_map, debug_prefix_maps, add_debug_prefix_map,
6966         remap_debug_filename): New.
6967         * Makefile.in (final.o, opts.o): Update dependencies.
6968         * debug.h (remap_debug_filename, add_debug_prefix_map): Declare.
6969         * configure.ac: Check for assembler --debug-prefix-map support.
6970         * configure, config.in: Regenerate.
6971         * gcc.c (ASM_MAP): Define conditional on HAVE_AS_DEBUG_PREFIX_MAP.
6972         (ASM_DEBUG_SPEC): Include ASM_MAP.
6973         * doc/install.texi (--with-debug-prefix-map): Document.
6974         * doc/invoke.texi (-fdebug-prefix-map): Document.
6975         * dbxout.c (dbxout_init, dbxout_start_source_file,
6976         dbxout_source_file): Call remap_debug_filename.
6977         * dwarf2out.c (add_comp_dir_attribute, maybe_emit_file,
6978         dwarf2out_start_source_file, dwarf2out_finish): Call
6979         remap_debug_filename.
6980         (file_table_relative_p): Do not check d->emitted_number.
6981         * toplev.c (output_file_directive): Call remap_debug_filename.
6982         * vmsdbgout.c (write_srccorr): Call remap_debug_filename.
6983         * xcoffout.c (xcoffout_source_file): Call remap_debug_filename.
6984
6985 2007-08-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6986
6987         * loop-invariant.c (find_invariants_to_move): Add missing macro
6988         argument.
6989
6990 2007-08-17  Tom Tromey  <tromey@redhat.com>
6991
6992         * tree.h (struct tree_label_decl): Removed old "java" fields.
6993
6994 2007-08-17  Richard Sandiford  <richard@codesourcery.com>
6995             Nigel Stephens  <nigel@mips.com>
6996
6997         * config/mips/sde.h (DRIVER_SELF_SPECS): Add commas.
6998         Treat -mno-data-in-code and -mcode-xonly as aliases for
6999         -mcode-readable=no and -mcode-readable=pcrel respectively.
7000         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Add -mcode-xonly.
7001         (MULTILIB_OPTIONS): Add -mcode-readable=no multilibs.
7002         (MULTILIB_DIRNAMES): Update accordingly.
7003
7004 2007-08-17  H.J. Lu  <hongjiu.lu@intel.com>
7005
7006         * Makefile.in (version.o): Depend on $(REVISION) only if
7007         REVISION_s is defined.
7008
7009 2007-08-17  Sa Liu  <saliu@de.ibm.com>
7010             Ulrich Weigand  <uweigand@de.ibm.com>
7011
7012         PR middle-end/32970
7013         * tree.c (reconstruct_complex_type): For a pointer to a vector,
7014         use build_qualified_type to retain qualifiers of the base type.
7015
7016 2007-08-17  Chen Liqin  <liqin@sunnorth.com.cn>
7017
7018         * config/score/score.md : Update pattern tablejump.
7019         * config/score/score.c : Update score_initialize_trampoline 
7020         function.
7021         * config/score/score.h (TRAMPOLINE_TEMPLATE): Added macro.
7022         (TRAMPOLINE_INSNS, TRAMPOLINE_SIZE) Update macro.
7023         * doc/contrib.texi: Add my entry.
7024
7025 2007-08-16  H.J. Lu  <hongjiu.lu@intel.com>
7026
7027         * Makefile.in (REVISION): New.
7028         (REVISION_c): New.
7029         (REVISION_s): New.
7030         (version.o): Also depend on $(REVISION). Add
7031         -DREVISION=$(REVISION_s).
7032
7033         * version.c (version_string): Add REVISION.
7034
7035 2007-08-16  Seongbae Park <seongbae.park@gmail.com>
7036
7037         * tree-eh.c (lower_try_finally_onedest): Reset the locus
7038         of GOTO that's relocated to a different block.
7039
7040 2007-08-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7041
7042         * c-common.c (const_strip_array_types): New.
7043         * c-common.h (lang_missing_noreturn_ok_p): Delete.
7044         (const_strip_array_types): New.
7045         * c-objc-common.c (c_disregard_inline_limits,
7046         c_warn_unused_global_decl): Constify.
7047         * c-tree.h (c_disregard_inline_limits, c_warn_unused_global_decl,
7048         c_vla_type_p, c_incomplete_type_error): Likewise.
7049         * c-typeck.c (c_incomplete_type_error, c_vla_type_p): Likewise.
7050         * hooks.c (hook_bool_const_tree_false): New.
7051         * hooks.h (hook_bool_const_tree_false): Likewise.
7052         * langhooks-def.h (lhd_warn_unused_global_decl,
7053         lhd_incomplete_type_error, lhd_expr_size,
7054         lhd_tree_inlining_disregard_inline_limits,
7055         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
7056         LANG_HOOKS_GENERIC_TYPE_P, LANG_HOOKS_TYPE_MAX_SIZE): Constify.
7057         * langhooks.c (lhd_warn_unused_global_decl,
7058         lhd_incomplete_type_error,
7059         lhd_tree_inlining_disregard_inline_limits,
7060         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
7061         lhd_expr_size): Likewise.
7062         * langhooks.h (lang_hooks_for_tree_inlining,
7063         lang_hooks_for_tree_dump, lang_hooks_for_types,
7064         lang_hooks_for_decls, lang_hooks): Likewise.
7065         * pointer-set.c (pointer_set_t, pointer_set_create,
7066         pointer_set_contains, insert_aux, pointer_set_insert,
7067         pointer_set_traverse, pointer_map_t, pointer_map_create,
7068         pointer_map_contains, pointer_map_insert, pointer_map_traverse):
7069         Likewise.
7070         * pointer-set.h (pointer_set_contains, pointer_set_insert,
7071         pointer_set_traverse, pointer_map_contains, pointer_map_insert,
7072         pointer_map_traverse): Likewise.
7073         * predict.c (assert_is_empty): Likewise.
7074         * tree-affine.c (free_name_expansion): Likewise.
7075         * tree-cfg.c (edge_to_cases_cleanup): Likewise.
7076         * tree.c (size_in_bytes, max_int_size_in_bytes): Likewise.
7077         * tree.h (size_in_bytes, max_int_size_in_bytes): Likewise.
7078
7079 2007-08-16  Victor Kaplansky <victork@il.ibm.com>
7080
7081         * tree-vectorizer.c (new_loop_vec_info): Initialize new 
7082         field.
7083         (destroy_loop_vec_info): Add call to VEC_free.
7084         * tree-vectorizer.h (may_alias_ddrs): Define.
7085         (LOOP_VINFO_MAY_ALIAS_DDRS): Define.
7086         * tree-vect-analyze.c (vect_analyze_data_ref_dependence):
7087         Change reporting to dump.
7088         (vect_is_duplicate_ddr): New.
7089         (vect_mark_for_runtime_alias_test): New.
7090         (vect_analyze_data_ref_dependences) Add call to
7091         vect_mark_for_runtime_alias_test.
7092         (vect_enhance_data_refs_alignment): Define local variable
7093         vect_versioning_for_alias_required, don't perform
7094         peeling for alignment if versioning for alias is
7095         required.
7096         (vect_enhance_data_refs_alignment): Use
7097         PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS instead of
7098         PARAM_VECT_MAX_VERSION_CHECKS.
7099         * tree-vect-transform.c
7100         (vect_create_cond_for_alias_checks): New.
7101         (vect_transform_loop): Add call to
7102         vect_create_cond_for_alias_checks.
7103         (vect_vfa_segment_size): New.
7104         * params.def (PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS):
7105         Rename.
7106         (PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS): Define.
7107         * gcc/doc/invoke.texi
7108         (vect-max-version-for-alignment-checks): Document.
7109         (vect-max-version-for-alias-checks): Document.
7110         (vect-max-version-checks): Remove.
7111      
7112 2007-08-16  Uros Bizjak  <ubizjak@gmail.com>
7113
7114         * config/i386/i386.md (*rep_movdi_rex64): Emit "rep" prefix on
7115         the same line as the instruction for all asm dialects.
7116         (*rep_movsi): Ditto.
7117         (*rep_movsi_rex64): Ditto.
7118         (*rep_movqi): Ditto.
7119         (*rep_movqi_rex64): Ditto.
7120         (*rep_stosdi_rex64): Ditto.
7121         (*rep_stossi): Ditto.
7122         (*rep_stossi_rex64): Ditto.
7123         (*rep_stosqi): Ditto.
7124         (*rep_stosqi_rex64): Ditto.
7125         (*cmpstrnqi_nz_1): Ditto.
7126         (*cmpstrnqi_nz_rex_1): Ditto.
7127         (*cmpstrnqi_1): Ditto.
7128         (*cmpstrnqi_rex_1): Ditto.
7129         (*strlenqi_1): Ditto.
7130         (*strlenqi_rex_1): Ditto.
7131         * config/i386/sync.md (*sync_compare_and_swap<mode>): Emit "lock"
7132         prefix on the same line as the instruction for all asm dialects.
7133         (sync_double_compare_and_swap<mode>): Ditto.
7134         (*sync_double_compare_and_swapdi_pic): Ditto.
7135         (*sync_compare_and_swap_cc<mode>): Ditto.
7136         (sync_double_compare_and_swap_cc<mode>): Ditto.
7137         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
7138         (sync_old_add<mode>): Ditto.
7139         (sync_add<mode>): Ditto.
7140         (sync_sub<mode>): Ditto.
7141         (sync_ior<mode>): Ditto.
7142         (sync_and<mode>): Ditto.
7143         (sync_xor<mode>): Ditto.
7144
7145 2007-08-16  Richard Sandiford  <richard@codesourcery.com>
7146
7147         PR middle-end/32897
7148         * reload.c (find_reloads): Check that the memory returned by
7149         find_reloads_toplev was not the result of forcing a constant
7150         to memory.
7151         (find_reloads_toplev): Always use simplify_gen_subreg to get
7152         the subreg of a constant.  If the result is also a constant,
7153         but not a legitimate one, force it into the constant pool
7154         and reload its address.
7155
7156 2007-08-15  David Edelsohn  <edelsohn@gnu.org>
7157
7158         * config/rs6000/rs6000.c (rs6000_rtx_costs): Add CLZ, CTZ, and
7159         POPCOUNT.
7160
7161 2007-08-15  Daniel Jacobowitz  <dan@codesourcery.com>
7162
7163         * config/rs6000/rs6000.c (rs6000_file_start): Output a .gnu_attribute
7164         directive for the current vector ABI.
7165
7166 2007-08-15  Steve Ellcey  <sje@cup.hp.com>
7167
7168         PR target/32963
7169         * caller-save.c (reg_save_code): Set invalide status on restore code.
7170         
7171 2007-08-15  Diego Novillo  <dnovillo@google.com>
7172
7173         * tree-ssa-alias.c (compute_memory_partitions): Use
7174         alias_bitmap_obstack to allocate bitmaps.
7175         (reset_alias_info): Factor out of init_alias_info.
7176         Mark all name tags not associated to an SSA name for renaming.
7177         (init_alias_info): Call it.
7178         (create_name_tags): Tidy.  Add comments.
7179         (dump_points_to_info_for): Do not call get_mem_sym_stats_for.
7180
7181 2007-08-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
7182
7183         * config/mips/mips.c (vr4130_swap_insns_p): Use new interface to
7184         scheduler dependencies.
7185
7186 2007-08-15  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7187
7188         * config/i386/i386.md (subsi3_carry_zext): Remove "m" constraint for
7189         "register_operand".
7190         (*iorsi_1_zext): Likewise.
7191         (*iorsi_1_zext_imm): Likewise.
7192         * config/i386/sse.md: (*sse4_1_extractps): Use "nonimmediate_operand"
7193         with "rm"/"xm" constraint.
7194         (sse2_vmsqrtv2df2): Likewise.
7195
7196 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
7197
7198         PR middle-end/33074
7199         * emit-rtl.c (try_split): Use INSN_LIST instead of EXPR_LIST for
7200         REG_LIBCALL note.
7201
7202 2007-08-14  Daniel Berlin  <dberlin@dberlin.org>
7203
7204         * tree-pass.h (PROP_pta): Removed.
7205         (TODO_rebuild_alias): New.
7206         (pass_may_alias): Removed.
7207         * tree-ssa-ccp.c (execute_fold_all_builtins): Only rebuild
7208         aliasing if we changed something.
7209         * tree-ssa-alias.c (compute_may_aliases): Make non-static.  Update
7210         SSA internally.
7211         (pass_may_alias): Removed.
7212         (create_structure_vars): Return TODO_rebuild_alias.
7213         * tree-ssa-pre.c (do_pre): Return TODO_rebuild_alias.
7214         * tree-sra.c (tree_sra): Only rebuild aliasing if something
7215         changed.
7216         (tree_sra_early): We never affect aliasing right now.
7217         * tree-flow.h (compute_may_aliases): New prototype.
7218         * passes.c: Remove pass_may_alias from the passes.
7219         (execute_function_todo): Support TODO_rebuild_alias.    
7220
7221 2007-08-14  Kai Tietz  <kai.tietz@onevision.com>
7222
7223         * i386.c: (legitimize_address): Move dllimported variable check
7224         infront of legitimizing pic address of CONST symbols.
7225
7226 2007-08-14  Steve Ellcey  <sje@cup.hp.com>
7227
7228         PR tree-optimization/32941
7229         * tree-eh.c (struct leh_tf_state): Add goto_queue_map field.
7230         (goto_queue_cmp): Remove.
7231         (find_goto_replacement): Change search method.
7232         (maybe_record_in_goto_queue): Add assert.
7233         (lower_try_finally): Remove qsort call, add pointer_map_destroy call.
7234         * Makefile.in (tree-eh.o): Add pointer-set.h dependency.
7235
7236 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7237
7238         * alias.c (component_uses_parent_alias_set): Constify.
7239         * alias.h (component_uses_parent_alias_set): Likewise.
7240         * cfgrtl.c (print_rtl_with_bb): Likewise.
7241         * double-int.c (tree_to_double_int, double_int_fits_to_tree_p,
7242         mpz_get_double_int): Likewise.
7243         * double-int.h (double_int_fits_to_tree_p, tree_to_double_int,
7244         mpz_get_double_int): Likewise.
7245         * expr.c (is_aligning_offset, undefined_operand_subword_p,
7246         mostly_zeros_p, all_zeros_p, safe_from_p, is_aligning_offset):
7247         Likewise.
7248         * expr.h (safe_from_p): Likewise.
7249         * gimple-low.c (try_catch_may_fallthru, block_may_fallthru):
7250         Likewise.
7251         * gimplify.c (should_carry_locus_p, zero_sized_field_decl,
7252         zero_sized_type, goa_lhs_expr_p): Likewise.
7253         * omp-low.c (is_variable_sized, use_pointer_for_field): Likewise.
7254         * rtl.h (print_rtl_with_bb): Likewise.
7255         * sched-vis.c (print_exp, print_value, print_pattern): Likewise.
7256         * tree-cfg.c (const_first_stmt, const_last_stmt): New.
7257         * tree-flow-inline.h (bb_stmt_list): Constify.
7258         (cbsi_start, cbsi_last, cbsi_end_p, cbsi_next, cbsi_prev,
7259         cbsi_stmt): New.
7260         * tree-flow.h (const_block_stmt_iterator, cbsi_start, cbsi_last,
7261         const_first_stmt, const_last_stmt): New.
7262         (block_may_fallthru, empty_block_p): Constify.
7263         * tree-iterator.c (EXPR_FIRST_BODY, EXPR_LAST_BODY,
7264         EXPR_ONLY_BODY): New.
7265         (expr_first, expr_last, expr_only): Use macro for body.
7266         (const_expr_first, const_expr_last, const_expr_only): New.
7267         * tree-iterator.h (const_tree_stmt_iterator, ctsi_start,
7268         ctsi_last, ctsi_end_p, ctsi_one_before_end_p, ctsi_next,
7269         ctsi_prev, ctsi_stmt): New.
7270         * tree-scalar-evolution.c (get_loop_exit_condition): Constify.
7271         * tree-scalar-evolution.h (get_loop_exit_condition): Likewise.
7272         * tree-ssa-loop-niter.c (loop_only_exit_p,
7273         derive_constant_upper_bound): Likewise.
7274         * tree-ssa-phiopt.c (empty_block_p): Likewise.
7275         * tree-ssa-threadupdate.c (redirection_block_p): Likewise.
7276         * tree-vectorizer.c (slpeel_can_duplicate_loop_p): Likewise.
7277         * tree-vectorizer.h (slpeel_can_duplicate_loop_p): Likewise.
7278         * tree-vrp.c (vrp_bitmap_equal_p): Likewise.
7279         * tree.c (get_type_static_bounds): Likewise.
7280         * tree.h (const_expr_first, const_expr_last, const_expr_only): New.
7281         (get_type_static_bounds): Constify.
7282
7283 2007-08-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7284
7285         PR target/30315
7286         * config/i386/i386.h (CANONICALIZE_COMPARISON): New.
7287         * config/i386/i386.md (plusminus)(addsub)(SWI): New.
7288         (*<addsub><mode>3_cc_overflow): New.
7289         (*add<mode>3_cconly_overflow): New.
7290         (*sub<mode>3_cconly_overflow): New.
7291         (*<addsub>si3_zext_cc_overflow): New.
7292         * config/i386/predicates.md (fcmov_comparison_operator): Accept
7293         CCCmode for LTU, GTU, LEU and GEU.
7294         (ix86_comparison_operator): Likewise.
7295         (ix86_carry_flag_operator): Carry flag is set if LTU or GTU in CCCmode.
7296         * config/i386/i386.c (put_condition_code): Support CCCmode.
7297         (ix86_cc_mode): Use CCCmode when testing for overflow of PLUS
7298         or MINUS expressions.
7299
7300 2007-08-14  Andrew Pinski  <pinskia@gmail.com>
7301
7302         PR c/30428
7303         * c-typeck.c (build_binary_op): Disallow vector float types with
7304         BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.
7305
7306 2007-08-14  Maxim Kuvyrkov  <maxim@codesourcery.com>
7307
7308         * sched-int.h (struct _dep): Rename field 'kind' to 'type'.
7309         (DEP_KIND): Rename to DEP_TYPE.  Update all uses.
7310         (dep_def): New typedef.
7311         (init_dep_1, sd_debug_dep): Declare functions.
7312         (DEP_LINK_KIND): Rename to DEP_LINK_TYPE.
7313         (debug_dep_links): Remove.
7314         (struct _deps_list): New field 'n_links'.
7315         (DEPS_LIST_N_LINKS): New macro.
7316         (FOR_EACH_DEP_LINK): Remove.
7317         (create_deps_list, free_deps_list, delete_deps_list): Remove
7318         declaration.
7319         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
7320         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
7321         (copy_deps_list_change_con, move_dep_link): Ditto.
7322         (struct haifa_insn_data): Split field 'back_deps' into 'hard_back_deps'
7323         and 'spec_back_deps'.  New field 'resolved_forw_deps'.  Remove field
7324         'dep_count'.
7325         (INSN_BACK_DEPS): Remove.
7326         (INSN_HARD_BACK_DEPS, INSN_SPEC_BACK_DEPS, INSN_RESOLVED_FORW_DEPS):
7327         New macros.
7328         (INSN_DEP_COUNT): Remove.
7329         (enum DEPS_ADJUST_RESULT): Add new constant DEP_NODEP.  Fix comments.
7330         (spec_info, haifa_recovery_block_was_added_during_scheduling_p):
7331         Declare global variables.
7332         (deps_pools_are_empty_p, sched_free_deps): Declare functions.
7333         (add_forw_dep, compute_forward_dependences): Remove declarations.
7334         (add_or_update_back_dep, add_or_update_back_forw_dep): Ditto.
7335         (add_back_forw_dep, delete_back_forw_dep): Ditto.
7336         (debug_ds, sched_insn_is_legitimate_for_speculation_p): Declare
7337         functions.
7338         (SD_LIST_NONE, SD_LIST_HARD_BACK, SD_LIST_SPEC_BACK, SD_LIST_FORW):
7339         New constants.
7340         (SD_LIST_RES_BACK, SD_LIST_RES_FORW, SD_LIST_BACK): Ditto.
7341         (sd_list_types_def): New typedef.
7342         (sd_next_list): Declare function.
7343         (struct _sd_iterator): New type.
7344         (sd_iterator_def): New typedef.
7345         (sd_iterator_start, sd_iterator_cond, sd_iterator_next): New inline
7346         functions.
7347         (FOR_EACH_DEP): New cycle wrapper.
7348         (sd_lists_size, sd_lists_empty_p, sd_init_insn, sd_finish_insn):
7349         Declare functions.
7350         (sd_find_dep_between, sd_add_dep, sd_add_or_update_dep): Ditto.
7351         (sd_resolve_dep, sd_copy_back_deps, sd_delete_dep, sd_debug_lists):
7352         Ditto.
7353
7354         * sched-deps.c (init_dep_1): Make global.
7355         (DUMP_DEP_PRO, DUMP_DEP_CON, DUMP_DEP_STATUS, DUMP_DEP_ALL): New
7356         constants.
7357         (dump_dep): New static function.
7358         (dump_dep_flags): New static variable.
7359         (sd_debug_dep): New function.
7360         (add_to_deps_list, remove_from_deps_list): Update 'n_links' field of
7361         the list.
7362         (move_dep_link): Use remove_from_deps_list (), instead of
7363         detach_dep_link ().
7364         (dep_links_consistent_p, dump_dep_links, debug_dep_links): Remove.
7365         (dep_link_is_detached_p): New static function.
7366         (deps_obstack, dl_obstack, dn_obstack): Remove.  Use dn_pool, dl_pool
7367         instead.
7368         (dn_pool, dl_pool): New alloc_pools.
7369         (dn_pool_diff, dl_pool_diff): New static variables.
7370         (create_dep_node, delete_dep_node): New static function.
7371         (create_deps_list): Make it static.  Use alloc_pool 'dl_pool'.
7372         (deps_list_empty_p): Make it static.  Use 'n_links' field.
7373         (deps_pools_are_empty_p): New static function.
7374         (alloc_deps_list, delete_deps_list): Remove.
7375         (dump_deps_list, debug_deps_list, add_back_dep_to_deps_list): Remove.
7376         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
7377         (copy_deps_list_change_con): Remove.  Use sd_copy_back_deps () instead.
7378         (forward_dependency_cache): Remove.
7379         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Remove
7380         'back' from the names.  Change signature to use dep_t instead of
7381         equivalent quad.
7382         (add_back_dep): Ditto.  Make global.
7383         (check_dep_status): Rename to check_dep ().
7384         (sd_next_list, sd_lists_size, sd_lists_empty_p, sd_init_insn):
7385         New functions.
7386         (sd_finish_insn): Ditto.
7387         (sd_find_dep_between_no_cache): New static function.
7388         (sd_find_dep_between): New function.
7389         (ask_dependency_caches, set_dependency_caches): New static functions.
7390         (update_dependency_caches, change_spec_dep_to_hard, update_dep): Ditto.
7391         (add_or_update_dep_1): Separate pieces of functionality into
7392         ask_dependency_caches (), update_dependency_caches (),
7393         change_spec_dep_to_hard (), update_dep ().
7394         (get_back_and_forw_lists): New static function.
7395         (sd_add_dep): Separate setting of dependency caches into
7396         set_dependency_caches ().
7397         (sd_add_or_update_dep, sd_resolve_dep, sd_copy_back_deps):
7398         New functions.
7399         (sd_delete_dep): Ditto.
7400         (DUMP_LISTS_SIZE, DUMP_LISTS_DEPS, DUMP_LISTS_ALL): New constants.
7401         (dump_lists): New static function.
7402         (sd_debug_lists): New debug function.
7403         (delete_all_dependences, fixup_sched_groups): Update to use
7404         sd_* infrastructure.
7405         (sched_analyze_2): Create data-speculative dependency only if
7406         data-speculation is enabled.
7407         (sched_analyze_insn): If insn cannot be speculative, make all its
7408         dependencies non-speculative.
7409         (sched_analyze): Use sd_init_insn ().
7410         (add_forw_dep, compute_forward_dependencies): Remove.
7411         (delete_dep_nodes_in_back_deps): New static function.
7412         (sched_free_deps): New function.
7413         (init_dependency_caches): Init alloc_pools.
7414         (extend_depedency_caches): Update after removing of
7415         forward_dependency_cache.
7416         (free_dependency_caches): Ditto.  Free alloc_pools.
7417         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Remove.
7418         (delete_forw_dep, add_or_update_back_dep, add_or_update_back_forw_dep):
7419         Ditto.
7420         (add_back_forw_dep, delete_back_forw_dep): Ditto.
7421         (add_dependence): Use init_dep ().
7422         (get_dep_weak_1): New static function.
7423         (get_dep_weak): Move logic to get_dep_weak_1 ().
7424         (dump_ds): New static function moved from haifa-sched.c:
7425         debug_spec_status ().
7426         (debug_ds): New debug function.
7427         (check_dep_status): Rename to check_dep ().  Update to check whole
7428         dependencies.
7429
7430         * haifa-sched.c (spec_info): Make global.
7431         (added_recovery_block_p): Rename to
7432         'haifa_recovery_block_was_added_during_current_schedule_block_p'.
7433         (haifa_recovery_block_was_added_during_scheduling_p): New variable.
7434         (dep_cost, priority, rank_for_schedule, schedule_insn): Update
7435         to use new interfaces.
7436         (ok_for_early_queue_removal): Ditto.
7437         (schedule_block): Initialize logical uids of insns emitted by the
7438         target.
7439         (sched_init): Initialize new variable.
7440         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
7441         interfaces.
7442         (extend_global): Initialize insn data.
7443         (init_h_i_d): Remove code that is now handled in sd_init_insn ().
7444         (process_insn_forw_deps_be_in_spec): Change signature.  Update to use
7445         new interfaces.
7446         (add_to_speculative_block): Update to use new interfaces.
7447         (create_recovery_block): Set new variables.
7448         (create_check_block_twin, fix_recovery_deps): Update to use new
7449         interfaces.
7450         (sched_insn_is_legitimate_for_speculation_p): New function.
7451         (speculate_insn): Move checking logic to
7452         sched_insn_is_legitimate_for_speculation_p ().
7453         (sched_remove_insn): Finalize sched-deps information of instruction.
7454         (clear_priorities, add_jump_dependencies): Update to use new
7455         interfaces.
7456         (debug_spec_status): Rename to dump_ds () and move to sched-deps.c.
7457         
7458         * sched-rgn.c (set_spec_fed, find_conditional_protection): Update
7459         to use new interfaces.
7460         (is_conditionally_protected, is_pfree, is_prisky) Ditto.
7461         (new_ready): Try to use control speculation only if it is available.
7462         (add_branch_dependences): Update to use new interfaces.
7463         (compute_block_backward_dependences): Rename to
7464         compute_block_dependences ().  Call
7465         targetm.sched.dependencies_evaluation_hook ().
7466         (free_block_dependencies): New static function.
7467         (debug_dependencies): Update to use new interfaces.
7468         (schedule_region): Remove separate computation of forward dependencies.
7469         Move call of targetm.sched.dependencies_evaluation_hook () to
7470         compute_block_dependences ().  Free dependencies at the end of
7471         scheduling the region.
7472
7473         * sched-ebb.c (earliest_block_with_similiar_load): Update to use
7474         new interfaces.
7475         (add_deps_for_risky_insns): Ditto.
7476         (schedule_ebb): Remove separate computation of forward dependencies.
7477         Free dependencies at the end of scheduling the ebb.
7478
7479         * ddg.c (create_ddg_dependence): Update to use new interfaces.
7480         (build_intra_loop_deps): Ditto.  Remove separate computation of
7481         forward dependencies.  Free sched-deps dependencies.
7482
7483         * config/ia64/ia64.c (ia64_dependencies_evaluation_hook): Update
7484         to use new interfaces.
7485         (ia64_dfa_new_cycle, ia64_gen_check): Ditto.
7486
7487         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Update to use
7488         new interfaces.
7489         (is_costly_group): Ditto.
7490
7491 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7492
7493         * alias.c (rtx_equal_for_memref_p): Constify.
7494         * basic-block.h (const_edge, const_basic_block): New.
7495         (reg_set_to_hard_reg_set, dfs_enumerate_from, single_succ_p,
7496         single_pred_p, single_succ_edge, single_pred_edge, single_succ,
7497         single_pred, maybe_hot_bb_p, probably_cold_bb_p,
7498         probably_never_executed_bb_p, edge_probability_reliable_p,
7499         br_prob_note_reliable_p, forwarder_block_p, flow_nodes_print,
7500         inside_basic_block_p, control_flow_insn_p, dominated_by_p):
7501         Likewise.
7502         * bb-reorder.c (better_edge_p, push_to_next_round_p): Likewise.
7503         * bt-load.c (basic_block_freq, insn_sets_btr_p, can_move_up):
7504         Likewise.
7505         * cfganal.c (flow_active_insn_p, forwarder_block_p,
7506         flow_nodes_print, dfs_enumerate_from): Likewise.
7507         * cfgbuild.c (count_basic_blocks, inside_basic_block_p,
7508         control_flow_insn_p, count_basic_blocks): Likewise.
7509         * cfgloop.c (flow_bb_inside_loop_p, glb_enum_p,
7510         get_loop_body_with_size, loop_exit_edge_p): Likewise.
7511         * cfgloop.h (flow_bb_inside_loop_p, num_loop_insns,
7512         average_num_loop_insns, loop_exit_edge_p,
7513         just_once_each_iteration_p, can_duplicate_loop_p): Likewise.
7514         * cfgloopanal.c (just_once_each_iteration_p, num_loop_insns,
7515         average_num_loop_insns, seq_cost): Likewise.
7516         * cfgloopmanip.c (rpe_enum_p, can_duplicate_loop_p): Likewise.
7517         * dominance.c (dominated_by_p): Likewise.
7518         * emit-rtl.c (validate_subreg): Likewise.
7519         * except.c (can_throw_internal, can_throw_external): Likewise.
7520         * except.h (can_throw_internal, can_throw_external): Likewise.
7521         * gcse.c (gcse_constant_p, oprs_unchanged_p, oprs_anticipatable_p,
7522         oprs_available_p, hash_expr, expr_equiv_p, oprs_not_set_p,
7523         compute_transp, load_killed_in_block_p, reg_killed_on_edge,
7524         simple_mem, store_ops_ok, load_kills_store, find_loads,
7525         store_killed_in_insn, store_killed_after, store_killed_before,
7526         gcse_mem_operand, implicit_set_cond_p, store_killed_in_pat):
7527         Likewise.
7528         * ifcvt.c (count_bb_insns, cheap_bb_rtx_cost_p, noce_operand_ok,
7529         noce_mem_write_may_trap_or_fault_p): Likewise.
7530         * pointer-set.c (pointer_set_contains, pointer_map_contains):
7531         Likewise.
7532         * pointer-set.h (pointer_set_contains, pointer_map_contains):
7533         Likewise.
7534         * predict.c (can_predict_insn_p, maybe_hot_bb_p,
7535         probably_cold_bb_p, probably_never_executed_bb_p,
7536         edge_probability_reliable_p, br_prob_note_reliable_p,
7537         can_predict_insn_p): Likewise.
7538         * regclass.c (reg_set_to_hard_reg_set): Likewise.
7539         * resource.c (return_insn_p): Likewise.
7540         * rtl.h (reg_set_between_p, reg_set_p, validate_subreg):
7541         Likewise.
7542         * rtlanal.c (reg_set_between_p, reg_set_p): Likewise.
7543         * tracer.c (count_insns, ignore_bb_p, better_p): Likewise.
7544         * tree-cfg.c (verify_gimple_unary_expr, verify_gimple_binary_expr,
7545         verify_gimple_modify_stmt): Likewise.
7546         * tree-chrec.c (is_not_constant_evolution,
7547         is_multivariate_chrec_rec, is_multivariate_chrec,
7548         chrec_contains_symbols, chrec_contains_undetermined,
7549         tree_contains_chrecs, evolution_function_is_affine_multivariate_p,
7550         evolution_function_is_univariate_p, avoid_arithmetics_in_type_p,
7551         eq_evolutions_p, scev_direction): Likewise.
7552         * tree-chrec.h (automatically_generated_chrec_p, tree_is_chrec,
7553         eq_evolutions_p, is_multivariate_chrec, chrec_contains_symbols,
7554         chrec_contains_symbols_defined_in_loop,
7555         chrec_contains_undetermined, tree_contains_chrecs,
7556         evolution_function_is_affine_multivariate_p,
7557         evolution_function_is_univariate_p, chrec_zerop,
7558         evolution_function_is_constant_p, evolution_function_is_affine_p,
7559         evolution_function_is_affine_or_constant_p,
7560         tree_does_not_contain_chrecs, chrec_type): Likewise.
7561         * tree-data-ref.c (tree_fold_divides_p,
7562         object_address_invariant_in_loop_p, dr_may_alias_p,
7563         ziv_subscript_p, siv_subscript_p, gcd_of_steps_may_divide_p,
7564         same_access_functions, constant_access_functions,
7565         access_functions_are_affine_or_constant_p, find_vertex_for_stmt):
7566         Likewise.
7567         * tree-flow.h (scev_direction): Likewise.
7568         * tree-gimple.c (is_gimple_stmt): Likewise.
7569         * tree-outof-ssa.c (identical_copies_p, identical_stmt_lists_p):
7570         Likewise.
7571         * tree-pretty-print.c (op_prio): Likewise.
7572         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop,
7573         analyzable_condition, backedge_phi_arg_p): Likewise.
7574         * tree-scalar-evolution.h (get_chrec_loop): Likewise.
7575         * tree-ssa-operands.c (get_name_decl, operand_build_cmp): Likewise.
7576         * tree-ssa-threadupdate.c (dbds_continue_enumeration_p):
7577         Likewise.
7578
7579 2007-08-13  Dan Hipschman  <dsh@google.com>
7580
7581         PR c/32953
7582         * c-format.c (check_format_arg): Move check for zero-length
7583         format strings below the check for unterminated strings.
7584
7585 2007-08-13  Andrew Pinski  <pinskia@gmail.com>
7586
7587         PR C/30427
7588         * c-typeck.c (build_unary_op <case BIT_NOT_EXPR>): Reject vector float
7589         types.
7590
7591 2007-08-13  Nick Clifton  <nickc@redhat.com>
7592
7593         * config/arm/arm_neon.h: Revert GPLv3 patch to this file.
7594
7595 2007-08-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
7596
7597         PR fortran/32860
7598         * c-format.c (gcc_gfc_length_specs): New array.
7599         (gcc_gfc_char_table): Add unsigned specifier, and references to
7600         the l length modifier.
7601         (format_types_orig): Use the new gcc_gfc_length_specs.
7602
7603 2007-08-12  Sa Liu  <saliu@de.ibm.com>
7604
7605         * emit-rtl.c (try_split): Relink the insns with REG_LIBCALL note
7606         and with REG_RETVAL note after split.
7607
7608 2007-08-11  David Daney  <ddaney@avtrex.com>
7609
7610         * config/mips/mips.c (mips_sched_reorder): Mark cycle parameter
7611         as ATTRIBUTE_UNUSED.
7612
7613 2007-08-11  David Edelsohn  <edelsohn@gnu.org>
7614             Segher Boessenkool  <segher@kernel.crashing.org>
7615
7616         * config/rs6000/rs6000.h (CC1_CPU_SPEC): Define as empty string if
7617         HAVE_LOCAL_CPU_DETECT not defined.
7618
7619 2007-08-11  Jan Hubicka  <jh@suse.cz>
7620
7621         * cgraphunit.c (record_cdtor_fn): Declare all cdtors always inlined.
7622         (cgraph_process_new_functions): Honor previous value of
7623         disregard_inline_limits.
7624         * ipa-inline.c (compute_inline_parameters): Likewise.
7625
7626 2007-08-11  Ian Lance Taylor  <iant@google.com>
7627
7628         * alias.h (alias_set_type): Define new type.
7629         (ALIAS_SET_MEMORY_BARRIER): Use it.
7630         * rtl.h: Include alias.h.
7631         (struct mem_attrs): Use alias_set_type.
7632         * tree.h: Include alias.h
7633         (struct tree_type): Use alias_set_type.
7634         (struct tree_struct_field_tag): Likewise.
7635         (struct tree_decl_common): Likewise.
7636         * alias.c (struct alias_set_entry): Use alias_set_type.
7637         (get_alias_set_entry, alias_set_subset_of): Likewise.
7638         (alias_sets_conflict_p): Likewise.
7639         (alias_sets_must_conflict_p): Likewise.
7640         (objects_must_conflict_p): Likewise.
7641         (get_alias_set, new_alias_set): Likewise.
7642         (record_alias_subset, record_component_aliases): Likewise.
7643         (varargs_set, frame_set): Change to alias_set_type.
7644         (get_varargs_alias_set): Use alias_set_type.
7645         (get_frame_alias_set): Likewise.
7646         * builtins.c (setjmp_alias_set): Change to alias_set_type.
7647         * dse.c (struct store_info): Use alias_set_type.
7648         (struct read_info, struct clear_alias_mode_holder): Likewise.
7649         (clear_alias_set_lookup, canon_address): Likewise.
7650         (record_store, check_mem_read_rtx): Likewise.
7651         (dse_record_singleton_alias_set): Likewise.
7652         (dse_invalidate_singleton_alias_set): Likewise.
7653         * emit-rtl.c (get_mem_attrs): Likewise.
7654         (set_mem_attributes_minus_bitpos): Likewise.
7655         (set_mem_alias_set): Likewise.
7656         * expr.c (store_constructor_field, store_field): Likewise.
7657         * gimplify.c (struct gimplify_init_ctor_preeval_data): Likewise.
7658         * langhooks.c (lhd_get_alias_set): Likewise.
7659         * langhooks-def.h (lhd_get_alias_set): Likewise.
7660         * reload1.c (alter_reg): Likewise.
7661         * tree-flow.h (struct fieldoff): Likewise.
7662         * tree-ssa-alias.c (struct alias_map_d): Likewise.
7663         (may_alias_p, get_smt_for, create_sft): Likewise.
7664         * tree-ssa-alias-warnings.c (nonstandard_alias_types_p): Likewise.
7665         * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
7666         (merge_smts_into): Likewise.
7667         * varasm.c (const_alias_set): Likewise.
7668         * c-common.c (strict_aliasing_warning): Likewise.
7669         (c_common_get_alias_set): Likewise.
7670         * dse.h (dse_record_singleton_alias_set): Update declaration.
7671         (dse_invalidate_singleton_alias_set): Likewise.
7672         * emit-rtl.h (set_mem_alias_set): Likewise.
7673         * c-common.h (c_common_get_alias_set): Likewise.
7674         * print-rtl.c (print_rtx): Cast MEM_ALIAS_SET when printing it.
7675         * print-tree.c (print_node): Likewise.
7676         * config/alpha/alpha.c (alpha_sr_alias_set): Change to
7677         alias_set_type.
7678         (alpha_setup_incoming_varargs): Use alias_set_type.
7679         * config/i386/i386.c (setup_incoming_varargs_64): Use
7680         alias_set_type.
7681         (setup_incoming_varargs_ms_64): Likewise.
7682         (ix86_GOT_alias_set): Likewise.
7683         * config/mn10300/mn10300.c (mn10300_builtin_saveregs): Likewise.
7684         * config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
7685         (set): Change to alias_set_type.
7686         (get_TOC_alias_set): Use alias_set_type.
7687         * config/rs6000/rs6000-protos.h (get_TOC_alias_set): Update
7688         declaration.
7689         * config/sh/sh.c (sh_builtin_saveregs): Use alias_set_type.
7690         * config/sparc/sparc.c (sparc_sr_alias_set): Change to
7691         alias_set_type.
7692         (struct_value_alias_set): Likewise.
7693         * Makefile.in (GTFILES): Add $(srcdir)/alias.h.
7694
7695 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
7696
7697         * config/vxworks-dummy.h (TARGET_VXWORKS): Define.
7698         * config/vxworks.h (TARGET_VXWORKS): Override.
7699         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Don't define
7700         "mips" if TARGET_VXWORKS.
7701
7702 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
7703
7704         * calls.c (avoid_likely_spilled_reg): New function.
7705         (expand_call): Use it.
7706
7707 2007-08-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7708
7709         * c-typeck.c (build_c_cast): Add OPT_Wcast_qual to warnings.
7710
7711 2007-08-10  Adam Nemet  <anemet@caviumnetworks.com>
7712
7713         * config/mips/predicates.md (const_call_insn_operand): Invoke
7714         SYMBOL_REF_LONG_CALL_P only on SYMBOL_REFs.
7715
7716 2007-08-10  David Edelsohn  <edelsohn@gnu.org>
7717
7718         PR target/33042
7719         * config/rs6000/driver-rs6000.c: Include link.h.
7720         Use ElfW instead of wordsize-specif typedef.
7721
7722 2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7723
7724         * system.h (CONST_CAST): New.
7725         * c-decl.c (c_make_fname_decl): Use it.
7726         * c-lex.c (cb_ident, lex_string): Likewise.
7727         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
7728         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
7729         give_switch, set_multilib_dir): Likewise.
7730         * gengtype-parse.c (string_seq, typedef_name): Likewise.
7731         * passes.c (execute_one_pass): Likewise.
7732         * prefix.c (update_path): Likewise.
7733         * pretty-print.c (pp_base_destroy_prefix): Likewise.
7734         * tree.c (build_string): Likewise.
7735
7736 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
7737
7738         * tree-flow-inline.h (is_exec_stmt): Remove.
7739         (is_label_stmt): Remove.
7740         * tree-flow.h: Remove prototypes for is_exec_stmt, get_filename, and
7741         is_label_stmt.
7742
7743 2007-08-10  Andreas Krebbel  <krebbel1@de.ibm.com>
7744
7745         * lower-subreg.c (resolve_shift_zext): Don't adjust
7746         src_reg_num for wordmode operands.
7747
7748 2007-08-10  Sandra Loosemore  <sandra@codesourcery.com>
7749             David Ung  <davidu@mips.com>
7750
7751         * config/mips/mips.c (TARGET_SCHED_INIT): Define.
7752         (TARGET_SCHED_REORDER2): Define.
7753         (mips_maybe_swap_ready): New.
7754         (mips_last_74k_agen_insn): New.
7755         (mips_74k_agen_init): New.
7756         (mips_74k_agen_reorder): New function to group loads and stores
7757         in the ready queue.
7758         (mips_sched_init): New.  
7759         (mips_sched_reorder): Don't do initialization here.  Call
7760         mips_74k_agen_reorder.
7761         (mips_variable_issue): Call mips_74k_agen_init.
7762
7763 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
7764
7765         * tree-flow-inline.h (get_filename): Remove.
7766
7767 2007-08-10  Richard Sandiford  <richard@codesourcery.com>
7768
7769         * config/mips/mips-protos.h (mips_address_insns): Add a boolean
7770         argument.
7771         (mips_fetch_insns): Delete in favor of...
7772         (mips_load_store_insns): ...this new function.
7773         * config/mips/mips.c (mips_address_insns): Add a boolean argument
7774         to say whether multiword moves _might_ be split.
7775         (mips_fetch_insns): Delete in favor of...
7776         (mips_load_store_insns): ...this new function.
7777         (mips_rtx_costs): Update the call to mips_address_insns.
7778         (mips_address_cost): Likewise.
7779         * config/mips/mips.md (length): Use mips_load_store_insns instead
7780         of mips_fetch_insns.
7781         * config/mips/constraints.md (R): Use mips_address_insns rather
7782         than mips_fetch_insns.  Assume that the move never needs to be split.
7783
7784 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
7785
7786         * config/mips/mips.opt (mhard-float, msoft-float): Make these
7787         control TARGET_HARD_FLOAT_ABI and TARGET_SOFT_FLOAT_ABI, rather
7788         than TARGET_HARD_FLOAT and TARGET_SOFT_FLOAT.  
7789         * config/mips/mips.h (mips16_hard_float): Delete.
7790         (TARGET_HARD_FLOAT_ABI, TARGET_SOFT_FLOAT_ABI): Delete these
7791         definitions, and replace with....
7792         (TARGET_HARD_FLOAT, TARGET_SOFT_FLOAT): Define.
7793         * config/mips/mips.c (mips16_hard_float): Delete.  Replace
7794         all references with (TARGET_MIPS16 && TARGET_HARD_FLOAT_ABI).
7795         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Update comments.
7796         (override_options): Replace MASK_SOFT_FLOAT references with
7797         MASK_SOFT_FLOAT_ABI.  Delete twiddling with MASK_SOFT_FLOAT
7798         and mips16_hard_float when TARGET_MIPS16.
7799         
7800 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7801
7802         PR c/32796
7803         * c-typeck.c (build_binary_op): Check for non pointer types before
7804         calling int_fits_type_p.
7805
7806 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7807
7808         PR middle-end/32813
7809         * fold-const.c (omit_one_operand): Return only the ommitted expression
7810         if the result is an empty statement.
7811         (pedantic_omit_one_operand): Likewise.
7812
7813 2007-08-09  Daniel Berlin  <dberlin@dberlin.org>
7814
7815         * c-typeck.c (readonly_error): Improve error for assignment.
7816         
7817         * c-pretty-print.c (pp_c_additive_expression): Handle pointer-plus
7818         expression. 
7819         (pp_c_expression): Ditto.
7820
7821 2007-08-09  Simon Baldwin  <simonb@google.com>
7822
7823         * simplify-rtx.c (simplify_binary_operation_1): Removed erroneous
7824         break that was preventing simplify_associative_operation() for xor.
7825
7826 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
7827             Nigel Stephens  <nigel@mips.com>
7828
7829         * doc/tm.texi (CLZ_DEFINED_VALUE_AT_ZERO, CTZ_DEFINED_VALUE_AT_ZERO):
7830         Document change in interpretation of value from boolean to
7831         tri-state integer.
7832         * optabs.c (expand_ffs, expand_ctz): New functions to compute
7833         ffs and ctz using clz.
7834         (expand_unop): Call them.
7835         * config/rs6000/rs6000.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix its
7836         result value.
7837         (CTZ_DEFINED_VALUE_AT_ZERO): Likewise.
7838         * config/mips/mips.h (CLZ_DEFINED_VALUE_AT_ZERO): Likewise, to
7839         enable the new ffs expansion on this target.
7840
7841 2007-08-09  Jan Hubicka  <jh@suse.cz>
7842
7843         * optabs.c (expand_widen_pattern_expr): Use optabs accestors.
7844         (expand_ternary_op): Likewise.
7845         (expand_vec_shift_expr): Likewise.
7846         (expand_binop_directly): Likewise.
7847         (expand_binop): Likewise.
7848         (sign_expand_binop): Likewise.
7849         (expand_twoval_unop): Likewise.
7850         (expand_twoval_binop): Likewise.
7851         (expand_twoval_binop_libfunc): Likewise.
7852         (widen_clz): Likewise.
7853         (widen_bswap): Likewise.
7854         (expand_parity): Likewise.
7855         (expand_unop): Likewise.
7856         (expand_abs_nojump): Likewise.
7857         (expand_copysign): Likewise.
7858         (emit_no_conflict_block): Likewise.
7859         (emit_libcall_block): Likewise.
7860         (can_compare_p): Likewise.
7861         (prepare_cmp_insn): Likewise.
7862         (emit_cmp_and_jump_insn_1): Likewise.
7863         (prepare_float_lib_cmp): Likewise.
7864         (emit_conditional_add): Likewise.
7865         (gen_add2_insn): Likewise.
7866         (have_add2_insn): Likewise.
7867         (gen_sub2_insn): Likewise.
7868         (have_sub2_insn): Likewise.
7869         (can_extend_p): Likewise.
7870         (can_fix_p): Likewise.
7871         (can_float_p): Likewise.
7872         (expand_float): Likewise.
7873         (expand_fix): Likewise.
7874         (expand_sfix_optab): Likewise.
7875         (new_optab): Likewise.
7876         (new_convert_optab): Likewise.
7877         (init_libfuncs): Likewise.
7878         (init_interclass_conv_libfuncs): Likewise.
7879         (init_intraclass_conv_libfuncs): Likewise.
7880         (set_conv_libfunc): Likewise.
7881         (init_optabs): Likewise.
7882         (debug_optab_libfuncs): Likewise.
7883         (gen_cond_trap): Likewise.
7884         * optabs.h (optab_handler, convert_optab_hanlder): New.
7885         * genopinit.c: Update optabs generation table.
7886         * reload.c (find_reloads_address_1): Use optabs accestors.
7887         * builtins.c (expand_builtin_mathfn): Likewise.
7888         (expand_builtin_mathfn_2): Likewise.
7889         (expand_builtin_mathfn_3): Likewise.
7890         (expand_builtin_interclass_mathfn): Likewise.
7891         (expand_builtin_sincos): Likewise.
7892         (expand_builtin_cexpi): Likewise.
7893         (expand_builtin_powi): Likewise.
7894         (expand_builtin_strlen): Likewise.
7895         * dojump.c (do_jump): Likewise.
7896         * expr.c (convert_move): Likewise.
7897         (move_by_pieces): Likewise.
7898         (move_by_pieces_ninsns): Likewise.
7899         (can_store_by_pieces): Likewise.
7900         (store_by_pieces_1): Likewise.
7901         (emit_move_via_integer): Likewise.
7902         (emit_move_complex): Likewise.
7903         (emit_move_ccmode): Likewise.
7904         (emit_move_insn_1): Likewise.
7905         (emit_single_push_insn): Likewise.
7906         (store_constructor): Likewise.
7907         (expand_expr_real_1): Likewise.
7908         (do_store_flag): Likewise.
7909         * ada/misc.c (gnat_compute_largest_alignment): Likewise.
7910         (enumerate_modes): Likewise.
7911         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
7912         (supportable_widening_operation): Likewise.
7913         (supportable_narrowing_operation): Likewise.
7914         * expmed.c (store_bit_field_1): Likewise.
7915         (extract_bit_field_1): Likewise.
7916         (expand_mult_highpart_optab): Likewise.
7917         (expand_smod_pow2): Likewise.
7918         (expand_divmod): Likewise.
7919         (emit_store_flag): Likewise.
7920         * tree-vect-patterns.c
7921         (vect_pattern_recog_1): Likewise.
7922         * tree-ssa-loop-prefetch.c
7923         (nontemporal_store_p): Likewise.
7924         * tree-vect-transform.c (vect_model_reduction_cost): Likewise.
7925         (vect_create_epilog_for_reduction): Likewise.
7926         (vectorizable_reduction): Likewise.
7927         (vectorizable_operation): Likewise.
7928         (vect_strided_store_supported): Likewise.
7929         (vectorizable_store): Likewise.
7930         (vect_strided_load_supported): Likewise.
7931         (vectorizable_load): Likewise.
7932         * combine.c (simplify_comparison): Likewise.
7933         * tree-vect-generic.c
7934         (type_for_widest_vector_mode): Likewise.
7935         (expand_vector_operations_1): Likewise.
7936         * config/spu/spu.c (spu_expand_mov): Likewise.
7937         (spu_emit_vector_compare): Likewise.
7938         * config/rs6000/rs6000.c
7939         (rs6000_emit_vector_compare): Likewise.
7940         * stmt.c (add_case_node): Likewise.
7941         * reload1.c (gen_reload):
7942
7943 2007-08-09  Michael Matz  <matz@suse.de>
7944
7945         * tree.h (fixed_zerop): Declare as taking a const_tree.
7946         * tree.c (fixed_zerop): Take a const_tree.
7947
7948 2007-08-09  Ira Rosen  <irar@il.ibm.com>
7949
7950         * tree-vect-transform.c (vectorizable_store): Remove call to
7951         copy_virtual_operands() and call mark_symbols_for_renaming() for
7952         the created vector store.
7953         (vect_setup_realignment): Don't call copy_virtual_operands() and
7954         update_vuses_to_preheader(). 
7955         (vectorizable_load): Don't call copy_virtual_operands(). 
7956         (update_vuses_to_preheader): Remove.
7957
7958 2007-08-08  Chao-ying Fu  <fu@mips.com>
7959
7960         * tree.def (FIXED_POINT_TYPE): New type.
7961         (FIXED_CST): New constant.
7962         (FIXED_CONVERT_EXPR): New expr.
7963         * doc/c-tree.texi (Types): Document FIXED_POINT_TYPE.
7964         (Expressions): Document FIXED_CST and FIXED_CONVERT_EXPR.
7965         * tree.h (struct tree_base): Add saturating_flag.
7966         Remove one bit of spare for saturating_flag.
7967         (NUMERICAL_TYPE_CHECK): Support FIXED_POINT_TYPE.
7968         (NON_SAT_FIXED_POINT_TYPE_P, SAT_FIXED_POINT_TYPE_P,
7969         FIXED_POINT_TYPE_P): Define.
7970         (TYPE_SATURATING): Define.
7971         (TREE_FIXED_CST_PTR, TREE_FIXED_CST): Define.
7972         (struct tree_fixed_cst): New.
7973         (TYPE_IBIT, TYPE_FBIT): Define.
7974         (tree_node): Add fixed_cst.
7975         (enum tree_index): Add new enumeration values of
7976         TI_SAT_SFRACT_TYPE, TI_SAT_FRACT_TYPE, TI_SAT_LFRACT_TYPE,
7977         TI_SAT_LLFRACT_TYPE, TI_SAT_USFRACT_TYPE, TI_SAT_UFRACT_TYPE,
7978         TI_SAT_ULFRACT_TYPE, TI_SAT_ULLFRACT_TYPE, TI_SFRACT_TYPE,
7979         TI_FRACT_TYPE, TI_LFRACT_TYPE, TI_LLFRACT_TYPE, TI_USFRACT_TYPE,
7980         TI_UFRACT_TYPE, TI_ULFRACT_TYPE, TI_ULLFRACT_TYPE,
7981         TI_SAT_SACCUM_TYPE, TI_SAT_ACCUM_TYPE, TI_SAT_LACCUM_TYPE,
7982         TI_SAT_LLACCUM_TYPE, TI_SAT_USACCUM_TYPE, TI_SAT_UACCUM_TYPE,
7983         TI_SAT_ULACCUM_TYPE, TI_SAT_ULLACCUM_TYPE, TI_SACCUM_TYPE,
7984         TI_ACCUM_TYPE, TI_LACCUM_TYPE, TI_LLACCUM_TYPE, TI_USACCUM_TYPE,
7985         TI_UACCUM_TYPE, TI_ULACCUM_TYPE, TI_ULLACCUM_TYPE,
7986         TI_QQ_TYPE, TI_HQ_TYPE,_TYPE, TI_SQ_TYPE, TI_DQ_TYPE, TI_TQ_TYPE,
7987         TI_UQQ_TYPE, TI_UHQ_TYPE, TI_USQ_TYPE, TI_UDQ_TYPE, TI_UTQ_TYPE,
7988         TI_SAT_QQ_TYPE, TI_SAT_HQ_TYPE, TI_SAT_SQ_TYPE, TI_SAT_DQ_TYPE,
7989         TI_SAT_TQ_TYPE, TI_SAT_UQQ_TYPE, TI_SAT_UHQ_TYPE, TI_SAT_USQ_TYPE,
7990         TI_SAT_UDQ_TYPE, TI_SAT_UTQ_TYPE, TI_HA_TYPE, TI_SA_TYPE, TI_DA_TYPE,
7991         TI_TA_TYPE, TI_UHA_TYPE, TI_USA_TYPE, TI_UDA_TYPE, TI_UTA_TYPE,
7992         TI_SAT_HA_TYPE, TI_SAT_SA_TYPE, TI_SAT_DA_TYPE, TI_SAT_TA_TYPE,
7993         TI_SAT_UHA_TYPE, TI_SAT_USA_TYPE, TI_SAT_UDA_TYPE, TI_SAT_UTA_TYPE.
7994         (sat_short_fract_type_node, sat_fract_type_node,
7995         sat_long_fract_type_node, sat_long_long_fract_type_node,
7996         sat_unsigned_short_fract_type_node, sat_unsigned_fract_type_node,
7997         sat_unsigned_long_fract_type_node,
7998         sat_unsigned_long_long_fract_type_node, short_fract_type_node,
7999         fract_type_node, long_fract_type_node, long_long_fract_type_node,
8000         unsigned_short_fract_type_node, unsigned_fract_type_node,
8001         unsigned_long_fract_type_node, unsigned_long_long_fract_type_node,
8002         sat_short_accum_type_node, sat_accum_type_node,
8003         sat_long_accum_type_node, sat_long_long_accum_type_node,
8004         sat_unsigned_short_accum_type_node, sat_unsigned_accum_type_node,
8005         sat_unsigned_long_accum_type_node,
8006         sat_unsigned_long_long_accum_type_node, short_accum_type_node,
8007         accum_type_node, long_accum_type_node, long_long_accum_type_node,
8008         unsigned_short_accum_type_node, unsigned_accum_type_node,
8009         unsigned_long_accum_type_node, unsigned_long_long_accum_type_node,
8010         qq_type_node, hq_type_node, sq_type_node, dq_type_node, tq_type_node,
8011         uqq_type_node, uhq_type_node, usq_type_node, udq_type_node,
8012         utq_type_node, sat_qq_type_node, sat_hq_type_node, sat_sq_type_node,
8013         sat_dq_type_node, sat_tq_type_node, sat_uqq_type_node,
8014         sat_uhq_type_node, sat_usq_type_node, sat_udq_type_node,
8015         sat_utq_type_node, ha_type_node, sa_type_node, da_type_node,
8016         ta_type_node, uha_type_node, usa_type_node, uda_type_node,
8017         uta_type_node, sat_ha_type_node, sat_sa_type_node, sat_da_type_node,
8018         sat_ta_type_node, sat_uha_type_node, sat_usa_type_node,
8019         sat_uda_type_node, sat_uta_type_node): New macro.
8020         (make_fract_type, make_accum_type): Declare.
8021         (make_signed_fract_type, make_unsigned_fract_type,
8022         make_sat_signed_fract_type, make_sat_unsigned_fract_type,
8023         make_signed_accum_type, make_unsigned_accum_type,
8024         make_sat_signed_accum_type, make_sat_unsigned_accum_type,
8025         make_or_reuse_signed_fract_type, make_or_reuse_unsigned_fract_type,
8026         make_or_reuse_sat_signed_fract_type,
8027         make_or_reuse_sat_unsigned_fract_type, make_or_reuse_signed_accum_type,
8028         make_or_reuse_unsigned_accum_type, make_or_reuse_sat_signed_accum_type,
8029         make_or_reuse_sat_unsigned_accum_type): New macro.
8030         (fixed_zerop): Declare.
8031         * defaults.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
8032         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
8033         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
8034         LONG_LONG_ACCUM_TYPE_SIZE): Define.
8035         * treestruct.def: Add TS_FIXED_CST.
8036         * Makefile.in (c-pretty-print.o): Add dependence on fixed-value.h.
8037         (tree.o): Likewise.
8038         (tree-dump.o): Likewise.
8039         (print-tree.o): Likewise.
8040         (tree-pretty-print.o): Likewise.
8041         (fold-const.o): Likewise.
8042         * tree-complex.c (some_nonzerop): Handle FIXED_CST.
8043         * tree-gimple.c (is_gimple_formal_tmp_rhs): Handle FIXED_CST.
8044         (is_gimple_min_invariant): Handle FIXED_CST.
8045         * stor-layout.c (int_mode_for_mode): Handle MODE_FRACT, MODE_UFRACT,
8046         MODE_ACCUM, MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
8047         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
8048         (layout_type): Handle FIXED_POINT_TYPE.
8049         (make_fract_type, make_accum_type): New functions.
8050         * tree-browser.c (browse_tree): Handle FIXED_POINT_TYPE.
8051         * tree-dump.c (fixed-value.h): New include.
8052         (dump_fixed): New function.
8053         (dequeue_and_dump): Handle FIXED_POINT_TYPE and FIXED_CST.
8054         * tree-inline.c (remap_type_1): Handle FIXED_POINT_TYPE.
8055         (estimate_num_insns_1): Handle FIXED_CST and FIXED_CONVERT_EXPR.
8056         * tree-pretty-print.c (fixed-value.h): New include.
8057         (dump_generic_node): Handle FIXED_POINT_TYPE, FIXED_CST, and
8058         FIXED_CONVERT_EXPR.
8059         * tree-scalar-evolution.c (get_scalar_evolution): Handle FIXED_CST.
8060         * tree-ssa-loop-im.c (for_each_index): Handle FIXED_CST.
8061         * tree-ssa-pre.c (poolify_tree): Handle FIXED_CST.
8062         * tree-ssa-reassoc.c (break_up_subtract_bb): We can do reassociation
8063         for non-saturating fixed-point types.
8064         (reassociate_bb): Likewise.
8065         * emit-rtl.c (fixed-value.h): New include.
8066         (fconst0, fconst1): New array.
8067         (init_emit_once): Initialize fconst0 and fconst1 for fixed-point modes.
8068         * tree-vect-generic.c expand_vector_operation): Support
8069         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, and
8070         MODE_VECTOR_UACCUM.
8071         (type_for_widest_vector_mode): Add one parameter for the 
8072         saturating flag.
8073         Check scalar FRACT, UFRACT, ACCUM, and UACCUM mode to select their
8074         vector mode.
8075         Pass the satp parameter to type_for_mode for fixed-point types.
8076         (expand_vector_operations_1): Pass the saturating flag to
8077         type_for_widest_vector_mode.
8078         Support MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
8079         and MODE_VECTOR_UACCUM.
8080         * tree-vect-transform.c (vect_is_simple_cond): Support FIXED_CST.
8081         (vectorizable_condition): Likewise.
8082         * tree.c (fixed-value.h): New include.
8083         (tree_code_size): Support FIXED_CST.
8084         (build_fixed): New function.
8085         (build_one_cst): Support FIXED_POINT_TYPE for accum types.
8086         (fixed_zerop): New function.
8087         (tree_node_structure): Support FIXED_CST.
8088         (type_contains_placeholder_1): Support FIXED_POINT_TYPE.
8089         (build_type_attribute_qual_variant): Handle FIXED_POINT_TYPE.
8090         (type_hash_eq): Handle FIXED_POINT_TYPE.
8091         (simple_cst_equal): Support FIXED_CST.
8092         (iterative_hash_expr): Handle FIXED_CST.
8093         (get_unwidened): Make sure type is not FIXED_POINT_TYPE.
8094         (get_narrower): Likewise.
8095         (variably_modified_type_p): Handle FIXED_POINT_TYPE.
8096         (make_or_reuse_fract_type, make_or_reuse_accum_type): New functions.
8097         (build_common_tree_nodes_2): Use MAKE_FIXED_TYPE_NODE_FAMILY and
8098         MAKE_FIXED_MODE_NODE macros to initialize fixed-point type
8099         nodes.
8100         (build_vector_type_for_mode): Handle MODE_VECTOR_FRACT,
8101         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
8102         (initializer_zerop): Support FIXED_CST.
8103         (walk_tree): Handle FIXED_CST and FIXED_POINT_TYPE.
8104         * dwarf2out.c (base_type_die): Use DW_ATE_signed_fixed or
8105         DW_ATE_unsigned_fixed to describe FIXED_POINT_TYPE.
8106         (is_base_type): Handle FIXED_POINT_TYPE.
8107         (add_type_attribute): Handle FIXED_POINT_TYPE.
8108         (gen_type_die_with_usage): Handle FIXED_POINT_TYPE.
8109         * print-tree.c (fixed-value.h): New include.
8110         (print_node_brief): Support FIXED_CST.
8111         (print_node): Support FIXED_POINT_TYPE and FIXED_CST.
8112         * c-pretty-print.c (fixed-value.h): New include.
8113         (pp_c_type_specifier): Handle FIXED_POINT_TYPE.  Need to pass
8114         TYPE_SATURATING to c_common_type_for_mode for fixed-point modes.
8115         (pp_c_direct_abstract_declarator): Handle FIXED_POINT_TYPE.
8116         Support fixed-point types for inner items in VECTOR_TYPE.
8117         (pp_c_direct_declarator): Likewise.
8118         (pp_c_declarator): Likewise.
8119         (pp_c_fixed_constant): New function.
8120         (pp_c_constant): Handle FIXED_CST.
8121         (pp_c_primary_expression): Likewise.
8122         (pp_c_expression): Likewise.
8123         * fold-const.c (fixed-value.h): New include.
8124         (negate_expr_p): Return true for FIXED_CST.
8125         (fold_negate_expr): Support FIXED_CST.
8126         (split_tree): Support FIXED_CST.
8127         (const_binop): Support FIXED_CST.
8128         (fold_convert_const_int_from_fixed): New function to convert from
8129         fixed to int.
8130         (fold_convert_const_real_from_fixed): New function to convert from
8131         fixed to real.
8132         (fold_convert_const_fixed_from_fixed): New function to convert from
8133         fixed to another fixed.
8134         (fold_convert_const_fixed_from_int): New function to convert from
8135         int to fixed.
8136         (fold_convert_const_fixed_from_real): New function to convert from
8137         real to fixed.
8138         (fold_convert_const): Support conversions from fixed to int, from
8139         fixed to real, from fixed to fixed, from int to fixed, and from real
8140         to fixed.
8141         (fold_convert): Support FIXED_CST and FIXED_POINT_TYPE.
8142         (operand_equal_p): Support FIXED_CST.
8143         (make_range): For fixed-point modes, we need to pass the
8144         saturating flag as the 2nd parameter.
8145         (tree_swap_operands_p): Handle FIXED_CST.
8146         (fold_plusminus_mult_expr): For fract modes, we cannot generate
8147         constant 1.
8148         (fold_unary): Support FIXED_CONVERT_EXPR.
8149         (fold_binary): Handle FIXED_CST.
8150         Make sure the type is not saturating, before associating operations.
8151         Ex: A + B + C, A * B * C, (A1 * C1) +/- (A2 * C2).
8152         (tree_expr_nonnegative_warnv_p): Handle FIXED_CST.
8153         (fold_negate_const): Support FIXED_CST.
8154         (fold_relational_const): Support FIXED_CST.
8155         * gimplify.c (omp_firstprivatize_type_sizes): Handle FIXED_POINT_TYPE.
8156         (gimplify_expr): Handle FIXED_CST.
8157         (gimplify_type_sizes): Handle FIXED_POINT_TYPE.
8158         * ipa-prop.c (ipa_callsite_compute_param): Support FIXED_CST.
8159         * ipa-type-escape.c (type_to_consider): Handle FIXED_POINT_TYPE.
8160         * doc/tm.texi (Type Layout): Document SHORT_FRACT_TYPE_SIZE,
8161         FRACT_TYPE_SIZE, LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
8162         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
8163         LONG_LONG_ACCUM_TYPE_SIZE.
8164         * dbxout.c (dbxout_type): Handle FIXED_POINT_TYPE.
8165         * c-aux-info.c (gen_type): Handle FIXED_POINT_TYPE.
8166         * tree-sra.c (is_sra_scalar_type): Support FIXED_POINT_TYPE.
8167         * expmed.c (extract_bit_field): Support MODE_FRACT, MODE_UFRACT,
8168         MODE_ACCUM, and MODE_UACCUM.
8169         * tree-vectorizer.c (vect_is_simple_reduction): Check for saturating
8170         fixed-point types to disable reduction.
8171         * explow.c (promote_mode): Support FIXED_POINT_TYPE.
8172
8173 2007-08-08  David Edelsohn  <edelsohn@gnu.org>
8174
8175         * config/rs6000/x-rs6000: New file.
8176         * config/rs6000/darwin.h (CC1_SPEC): Add cc1_cpu.
8177         * config/rs6000/rs6000.h (EXTRA_SPECS): Add cc1_cpu.
8178         (EXTRA_SPEC_FUNCTIONS): Define.
8179         (HAVE_LOCAL_CPU_DETECT): Define.
8180         (CC1_CPU_SPEC): Define.
8181         * config/rs6000/driver-rs6000.c: New file.
8182         * config/rs6000/aix.h (CC1_SPEC): Define.
8183         * config/rs6000/sysv4.h (CC1_SPEC): Add cc1_cpu.
8184         * config.host: Add x-rs6000 to host_xmake_file if host and target
8185         are rs6000 or powerpc.
8186
8187 2007-08-08  Paolo Bonzini <paolo.bonzini@lu.unisi.ch>
8188
8189         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Use +=.
8190
8191 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
8192             Sandra Loosemore  <sandra@codesourcery.com>
8193             Chao-ying Fu  <fu@mips.com>
8194             Nigel Stephens  <nigel@mips.com>
8195             David Ung  <davidu@mips.com>
8196
8197         * doc/invoke.texi (-mcode-readable): Document.
8198         * config/mips/mips.opt (mcode-readable): New option.
8199         * config/mips/mips-protos.h (SYMBOL_32_HIGH): New symbol type.
8200         * config/mips/mips.h (mips_code_readable_setting): New enum.
8201         (mips_code_readable): Declare.
8202         (TARGET_MIPS16_TEXT_LOADS, TARGET_MIPS16_PCREL_LOADS): New macros.
8203         (TARGET_MIPS16_SHORT_JUMP_TABLES): New macro.
8204         (JUMP_TABLES_IN_TEXT_SECTION): Use it.
8205         (CASE_VECTOR_MODE, CASE_VECTOR_PC_RELATIVE): Likewise.  Remove
8206         boiler-plate comments.
8207         (ASM_OUTPUT_ADDR_DIFF_ELT): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
8208         * config/mips/mips.c (mips_code_readable): New variable.
8209         (mips_classify_symbol): Only return SYMBOL_PC_RELATIVE for
8210         MIPS16 labels if TARGET_MIPS16_SHORT_JUMP_TABLES.  Use both the
8211         context and -mcode-readable setting to restrict the use of
8212         SYMBOL_PC_RELATIVE for MIPS16 constant pool references.
8213         Only return TARGET_FORCE_TO_MEM if PC-relative loads are allowed.
8214         (mips_symbolic_constant_p): Handle SYMBOL_32_HIGH.
8215         (mips_blocks_for_constant_p): Only return false for
8216         TARGET_MIPS16_PCREL_LOADS.
8217         (mips_symbol_insns_1): Treat HIGHs as 2 extended instructions
8218         for MIPS16.  Handle SYMBOL_32_HIGH.
8219         (mips_const_insns): Allow HIGHs for MIPS16 too.
8220         (mips_unspec_address_offset): New function, split out from...
8221         (mips_unspec_address): ...here.
8222         (mips_output_move): Handle MIPS16 HIGH moves.  Use "li" to load
8223         16-bit symbolic constants.  Assert approropiate conditions for
8224         using the "la" and "dla" macros.
8225         (mips_handle_option): Handle -mcode-readable=.
8226         (override_options): Use %hi/%lo relocations for TARGET_MIPS16 too.
8227         Set up mips_lo_relocs[SYMBOL_32_HIGH].
8228         (mips_strip_unspec_address): New function, split out from...
8229         (print_operand_reloc): ...here.
8230         (print_operand): Pass constants through mips_strip_unspec_address.
8231         (print_operand_address): Likewise.
8232         (mips_output_mi_thunk): Remove guard of mips16_lay_out_constants.
8233         (mips_select_rtx_section): Remove MIPS16 handling.
8234         (mips16_gp_pseudo_reg): Check currently_expanding_to_rtl.
8235         (mips16_rewrite_pool_refs): Wrap the labels in an address UNSPEC.
8236         (mips16_lay_out_constants): Do nothing unless
8237         TARGET_MIPS16_PCREL_LOADS.
8238         (mips_avoid_hazards): Remove guard of mips16_lay_out_constants.
8239         * config/mips/mips.md: Split HIGHs for MIPS16.
8240         (tablejump): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
8241
8242 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
8243
8244         * config/mips/mips-protos.h (mips_emit_move): Declare.
8245         * config/mips/mips.c (mips_emit_move): New function.
8246         (mips_force_temporary): Use mips_emit_move instead of emit_move_insn.
8247         (mips_legitimize_const_move): Likewise.
8248         (mips_legitimize_move): Likewise.
8249         (mips_split_64bit_move): Likewise.
8250         (mips_restore_gp): Likewise.
8251         (mips_load_call_address): Likewise.
8252         (mips_emit_fcc_reload): Likewise.
8253         (mips_set_return_address): Likewise.
8254         (mips_block_move_straight): Likewise.
8255         (mips_block_move_loop): Likewise.
8256         (mips_setup_incoming_varargs): Likewise.
8257         (mips_save_reg): Likewise.
8258         (mips_expand_prologue): Likewise.
8259         (mips_restore_reg): Likewise.
8260         (mips_expand_epilogue): Likewise.
8261         (mips_output_mi_thunk): Likewise.
8262         (build_mips16_call_stub): Likewise.
8263         (mips_builtin_branch_and_move): Likewise.
8264         * config/mips/mips.h (INITIALIZE_TRAMPOLINE): Likewise.
8265         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
8266         (fixuns_truncdfdi2): Likewise.
8267         (fixuns_truncsfsi2): Likewise.
8268         (fixuns_truncsfdi2): Likewise.
8269         (loadgp_absolute): Likewise.
8270         (builtin_setjmp_setup): Likewise.
8271         (builtin_longjmp): Likewise.
8272         (untyped_call): Likewise.
8273
8274 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
8275
8276         * config/mips/mips-protos.h (mips_split_symbol): Add a mode and
8277         an "rtx *" argument.  Return a bool.
8278         * config/mips/mips.c (mips_split_symbol): Accept arbitrary source
8279         values and return true if they can be split.  Take the same kind of
8280         mode argument as mips_symbol_insns.  Add a "lo_sum_out" parameter
8281         and store the lo_sum there if nonnull.  Use the symbol type to
8282         determine whether a $gp or HIGH is needed.
8283         (mips_legitimize_address): Update call to mips_split_symbol and
8284         simplify accordingly.
8285         (mips_legitimize_const_move): Likewise.
8286         * config/mips/mips.md: In the combine define_split,
8287         check mips_split_symbol instead of splittable_symbolic_operand.
8288         Update use of mips_split_symbol in the generator code.
8289         * config/mips/predicates.md (splittable_symbolic_operand): Delete.
8290
8291 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
8292
8293         * config/mips/mips.c (mips_symbolic_address_p): Delete.
8294         (mips_symbol_insns_1): New function, split out from...
8295         (mips_symbol_insns): ...here.  Take a mode argument.  Treat loads
8296         and stores separately from load addresses.
8297         (mips_classify_address): Replace uses of mips_symbolic_address_p
8298         with uses of mips_symbol_insns.
8299         (mips_address_insns): Update calls to mips_symbol_insns.
8300         (mips_const_insns): Likewise.
8301         (mips_legitimize_address): Likewise.
8302
8303 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
8304
8305         * config/mips/mips-protos.h (SYMBOL_FORCE_TO_MEM): New symbol type.
8306         * config/mips/mips.c (mips_classify_symbol): Skip TARGET_ABICALLS
8307         block for locally-binding symbols if TARGET_ABSOLUTE_ABICALLS.
8308         Return SYMBOL_FORCE_TO_MEM instead of SYMBOL_ABSOLUTE for
8309         non-call contexts if TARGET_MIPS16.
8310         (mips_symbolic_constant_p): Handle SYMBOL_FORCE_TO_MEM.
8311         (mips_symbolic_address_p): Likewise.  Remove special TARGET_MIPS16
8312         code for SYMBOL_ABSOLUTE.
8313         (mips_symbol_insns): Likewise.
8314
8315 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
8316
8317         * config/mips/mips-protos.h (mips_symbol_context): New enumeration.
8318         * config/mips/mips.c (mips_classify_symbol): Take a context argument.
8319         (mips_symbolic_constant_p): Likewise.  Update the call to
8320         mips_classify_symbol.
8321         (mips_classify_address): Update the calls to mips_symbolic_constant_p.
8322         (mips_const_insns): Likewise.  Update the call to mips_classify_symbol.
8323         (mips_legitimize_address): Update the call to mips_symbolic_constant_p.
8324         (print_operand_reloc): Add a context argument.  Update the call to
8325         mips_symbolic_constant_p.
8326         (print_operand): Update the calls to print_operand_reloc.
8327         (print_operand_address): Use print_operand_reloc rather than
8328         print_operand.
8329         (mips_rewrite_small_data_p): Add a context argument.  Update the call
8330         to mips_symbolic_constant_p.
8331         (mips_small_data_pattern_1): Make DATA the containing mem.
8332         Update the call to mips_rewrite_small_data_p.
8333         (mips_rewrite_small_data_1): Likewise.
8334         (mips_use_anchors_for_symbol_p): Update the call to
8335         mips_symbolic_constant_p.
8336         * config/mips/predicates.md (const_call_insn_operand): Likewise.
8337         (splittable_symbolic_operand): Likewise.
8338         (move_operand): Likewise.
8339         (absolute_symbolic_operand): Likewise.
8340         (got_disp_operand): Likewise.
8341         (got_page_ofst_operand): Likewise.
8342
8343 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
8344
8345         * config/mips/mips-protos.h (SYMBOL_GENERAL): Rename to...
8346         (SYMBOL_ABSOLUTE): ...this.
8347         (SYMBOL_SMALL_DATA): Rename to...
8348         (SYMBOL_GP_RELATIVE): ...this.
8349         (SYMBOL_CONSTANT_POOL): Rename to...
8350         (SYMBOL_PC_RELATIVE): ...this.
8351         * config/mips/mips.c (mips_classify_symbol, mips_symbolic_constant_p)
8352         (mips_symbolic_address_p, mips_symbol_insns, override_options)
8353         (mips_rewrite_small_data_p, mips_use_anchors_for_symbol_p): Update
8354         after above changes.
8355         * config/mips/predicates.md (const_call_insn_operand): Likewise.
8356         (general_symbolic_operand): Rename to...
8357         (absolute_symbolic_operand): ...this.
8358         * config/mips/mips.md: Update after above changes.
8359
8360 2007-08-08  Vladimir Yanovsky  <yanov@il.ibm.com>
8361             Revital Eres  <eres@il.ibm.com>
8362
8363         * ddg.c (print_ddg): Add dump information.
8364         * modulo-sched.c (print_node_sched_params): Add parameter and
8365         verbosity.
8366         (calculate_maxii): Remove function.
8367         (undo_generate_reg_moves): Likewise.
8368         (undo_permute_partial_schedule): Likewise.
8369         (kernel_number_of_cycles): Likewise.
8370         (MAXII_FACTOR): New definition to calculate the upper bound of II.
8371         (sms_schedule): Use it.  Remove profitability checks.
8372         (sms_schedule_by_order): Fix order of nodes within the cycle.
8373
8374 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
8375
8376         * config/i386/gnu.h (STARTFILE_SPEC): Use gcrt0.o in profile mode, add
8377         -profile option, add pie support.
8378         (ENDFILE_SPEC): New spec.
8379         * config/gnu.h (LIB_SPEC): Add -profile option.
8380
8381 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
8382
8383         * config/i386/gnu.h (CPP_SPEC): Add -pthread option.
8384         * config/gnu.h (LIB_SPEC): Likewise.
8385
8386 2007-08-07  Yaz Saito  <saito@google.com>
8387             Ian Lance Taylor  <iant@google.com>
8388
8389         * common.opt (finstrument-functions-exclude-function-list): New
8390         option.
8391         (finstrument-functions-exclude-file-list): New option.
8392         * opts.c (char_p): Define and DEF_VEC.
8393         (flag_instrument_functions_exclude_functions): New static
8394         variable.
8395         (flag_instrument_functions_exclude_files): New static variable.
8396         (add_instrument_functions_exclude_list): New static function.
8397         (flag_instrument_functions_exclude_p): New function.
8398         (common_handle_option): Handle new options.
8399         * flags.h (flag_instrument_functions_exclude_p): Declare.
8400         * gimplify.c (gimplify_function_tree): Call
8401         flag_instrument_functions_exclude_p.
8402         * doc/invoke.texi (Option Summary): Mention new options.
8403         (Code Gen Options): Document new options.
8404
8405 2007-08-07  Ian Lance Taylor  <iant@google.com>
8406
8407         PR rtl-optimization/32776
8408         * lower-subreg.c (resolve_clobber): Call resolve_reg_notes.
8409         (resolve_use): Likewise.
8410         (decompose_multiword_subregs): Remove "changed" local variable.
8411
8412 2007-08-07  Carlos O'Donell  <carlos@codesourcery.com>
8413
8414         * configure.ac: Define HAVE_GNU_AS if $gas_flag is yes.
8415         * configure: Regenerate.
8416         * config.in: Regenerate.
8417         * gcc.c [HAVE_GNU_AS]: Add "%{v} %{w:-W} %{I*} " to asm_options
8418         spec string.
8419
8420 2007-08-07  Ian Lance Taylor  <iant@google.com>
8421
8422         * lower-subreg.c (resolve_clobber): If the clobber has a LIBCALL
8423         note, just delete the insn.
8424
8425 2007-08-07  Andreas Schwab  <schwab@suse.de>
8426
8427         PR bootstrap/32973
8428         * gengtype-lex.l: Ignore backslash/newline pair while scanning a
8429         struct definition.
8430
8431 2007-08-07  Andreas Krebbel  <krebbel1@de.ibm.com>
8432
8433         * lower-subreg.c (resolve_subreg_use): Remove assertion.
8434         (find_decomposable_shift_zext, resolve_shift_zext): New functions.
8435         (decompose_multiword_subregs): Use the functions above to decompose
8436         multiword shifts and zero-extends.
8437
8438 2007-08-07  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8439
8440         * doc/sourcebuild.texi (Test Directives): Fix "compile" and
8441         "assemble" descriptions which were swapped.
8442
8443 2007-08-06  Chao-ying Fu  <fu@mips.com>
8444
8445         * fixed-value.h: New file.
8446         * fixed-value.c: New file.
8447         * Makefile.in (OBJS-common): Add fixed-value.o.
8448         (fixed-value.o): New rule.
8449         (GTFILES): Add fixed-value.h.
8450         * double-int.c (double_int_scmp): We should use unsigned HOST_WIDE_INT
8451         to compare a.low and b.low.
8452         * gengtype.c (main): Handle FIXED_VALUE_TYPE type as scalar typedef.
8453
8454 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
8455             Daniel Jacobowitz  <dan@codesourcery.com>
8456
8457         PR target/31868
8458         * config.gcc (x86_64-*-freebsd*): Add i386/t-crtstuff to
8459         tmake_file.
8460         (x86_64-*-netbsd*): Likewise.
8461         (x86_64-*-linux*): Likewise.
8462         (x86_64-*-kfreebsd*-gnu): Likewise.
8463         (x86_64-*-knetbsd*-gnu): Likewise.
8464         (i[34567]86-*-solaris2.1[0-9]*): Likewise.
8465
8466         * config/i386/t-linux64 (CRTSTUFF_T_CFLAGS): Removed.
8467
8468         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Update comments.
8469         Add -fno-asynchronous-unwind-tables.
8470
8471         * config/t-freebsd (CRTSTUFF_T_CFLAGS_S): Add $(CRTSTUFF_T_CFLAGS).
8472         * config/t-libc-ok (CRTSTUFF_T_CFLAGS_S): Likewise.
8473         * config/t-lynx (CRTSTUFF_T_CFLAGS_S): Likewise.
8474         * config/t-netbsd (CRTSTUFF_T_CFLAGS_S): Likewise.
8475         * config/t-svr4 (CRTSTUFF_T_CFLAGS_S): Likewise.
8476
8477 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
8478
8479         * config/ia64/ia64.c (ia64_c_mode_for_suffix): New.
8480         (TARGET_C_MODE_FOR_SUFFIX): New.
8481
8482 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
8483
8484         * config/ia64/div.md (m2subrf4_cond): Change 'g' to 'G'.
8485
8486 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
8487
8488         * config/ia64/ia64.h (MODES_TIEABLE_P): Fix typo.
8489
8490 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
8491
8492         * config/i386/i386.md: Check TARGET_ macros and optimize_size
8493         before checking function returns in conditional expressions.
8494
8495 2007-08-06  Alfred Minarik  <a.minarik@aon.at>
8496
8497         PR pch/13676
8498         * doc/invoke.texi: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
8499
8500 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8501
8502         PR middle-end/32988
8503         * tree.c (build2_stat): Instead of checking for INTEGER_TYPE, check
8504         for INTEGRAL_TYPE_P.
8505
8506 2008-08-05  Paolo Bonzini  <bonzini@gnu.org>
8507
8508         * configure.ac: Remove --enable-checking=df from default settings.
8509         * tree-pass.h (TODO_df_verify): New.  Shift TODO_mark_first_instance.
8510         * df-core.c (df_finish_pass) [ENABLE_CHECKING]: Schedule verification
8511         if the parameter is true.
8512         (df_analyze) [!ENABLE_DF_CHECKING]: Also do verification if the
8513         DF_VERIFY_SCHEDULED flag is true.
8514         * df.h (enum df_changeable_flags): Add DF_VERIFY_SCHEDULED.
8515         (df_finish_pass): Adjust prototype.
8516         * passes.c (execute_todo): Schedule verification if TODO_df_verify is
8517         true.
8518
8519         * see.c (pass_see): Add TODO_df_verify.
8520         * loop-init.c (pass_rtl_move_loop_invariants): Add TODO_df_verify.
8521         * global.c (rest_of_handle_global_alloc): Schedule verification
8522         after the pass.
8523         * local-alloc.c (rest_of_handle_local_alloc): Schedule verification
8524         before the pass.
8525         * function.c (pass_thread_prologue_and_epilogue): Add TODO_df_verify.
8526         * gcse.c (rest_of_handle_gcse): Adjust call to df_finish_pass.
8527         * loop-iv.c (iv_analysis_done): Schedule verification after the pass.
8528
8529         * config/sh/sh.c (sh_output_mi_thunk): Remove dead code.
8530         * config/ia64/ia64.c (ia64_reorg): Adjust call to df_finish_pass.
8531         * config/bfin/bfin.c (bfin_reorg): Adjust call to df_finish_pass.
8532
8533 2007-08-05  Vladimir Yanovsky  <yanov@il.ibm.com>
8534             Revital Eres <eres@il.ibm.com>
8535
8536         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Document new
8537         flag.
8538         * ddg.c (create_ddg_dependence): Rename to...
8539         (create_ddg_dep_from_intra_loop_link): This.  Do not check
8540         for interloop edges.  Do not create anti dependence edge when
8541         a true dependence edge exists in the opposite direction and
8542         -fmodulo-sched-allow-regmoves is set.
8543         (build_intra_loop_deps): Call create_ddg_dep_from_intra_loop_link.
8544         (add_cross_iteration_register_deps): Create anti dependence edge
8545         when -fno-modulo-sched-allow-regmoves is set.
8546         * common.opt (-fmodulo-sched-allow-regmoves): New flag.
8547
8548 2007-08-04  Richard Sandiford  <richard@codesourcery.com>
8549
8550         * config/arm/arm.md (movsi): Add braces.
8551
8552 2007-08-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8553
8554         PR middle-end/32780
8555         * fold-const.c (fold_binary <case MINUS_EXPR>): Fix the type of
8556         operands for the folding of "A - (A & B)" into "~B & A"; cast them
8557         to type.
8558
8559 2007-08-03  Zdenek Dvorak  <ook@ucw.cz>
8560
8561         * tree-ssa-threadupdate.c (thread_through_all_blocks): Use loops'
8562         state accessor functions.
8563         * cfgloopmanip.c (remove_path, create_preheaders,
8564         force_single_succ_latches, fix_loop_structure): Ditto.
8565         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
8566         tree_duplicate_loop_to_header_edge): Ditto.
8567         * cfgloopanal.c (mark_irreducible_loops): Ditto.
8568         * loop-init.c (loop_optimizer_init, loop_optimizer_finalize):
8569         Ditto.
8570         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures,
8571         cleanup_tree_cfg): Ditto.
8572         * tree-cfg.c (tree_merge_blocks): Ditto.
8573         * cfgloop.c (rescan_loop_exit, record_loop_exits,
8574         release_recorded_exits, get_loop_exit_edges, verify_loop_structure,
8575         loop_preheader_edge, single_exit): Ditto.
8576         (flow_loops_find): Do not clear loops->state.
8577         * cfgloop.h (loops_state_satisfies_p, loops_state_set,
8578         loops_state_clear): New functions.
8579
8580 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8581
8582         PR middle-end/32399
8583         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
8584         when adding to the base and convert ELT to sizetype instead of type.
8585
8586 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8587
8588         PR middle-end/32304
8589         * ipa-reference.c (has_proper_scope_for_analysis): Return false when
8590         the decl's type has TYPE_NEEDS_CONSTRUCTING set.
8591
8592 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8593
8594         PR middle-end/32935
8595         * fold-convert.c (fold_negate_expr <NOP_EXPR>): Convert back to the
8596          correct type the negate expression.
8597
8598 2007-08-03  Jan Hubicka  <jh@suse.cz>
8599
8600         * i386.c (setup_incoming_varargs_64): Tolerate 64bit preferred
8601         stack boundary.
8602
8603 2007-08-03  David Edelsohn  <edelsohn@gnu.org>
8604
8605         * config/rs6000/rs6000.c (struct processor_cost): Change
8606         l1_cache_lines to l1_cache_size.  Add l2_cache_size.
8607         (*_cost): Convert l1 cache information to kilobytes.  Add l2 cache
8608         information.
8609         (rios1_costs, rios2_cost): Correct cache line size.
8610         (rs6000_override_options): Set l2-cache-size parameter.
8611
8612 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8613             Diego Novillo  <dnovillo@google.com>
8614
8615         PR 31521
8616         * tree-vrp.c (simplify_div_or_mod_using_ranges): Also simplify
8617         if the range includes 0.
8618
8619 2007-08-03  Ben Elliston  <bje@au.ibm.com>
8620
8621         * config/spu/spu.md (dftsv, dftsv_celledp): Attach the appropriate
8622         mode to unspec expressions to silence a warning from the generator
8623         programs.
8624         
8625 2007-08-02  Steve Ellcey  <sje@cup.hp.com>
8626
8627         * config/ia64/constraints.md ("U"): Make constraint vector only.
8628
8629 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
8630
8631         PR middle-end/25446
8632         * c-objc-common.c (c_cannot_inline_tree_fn): Check for an
8633         always_inline attribute on the function decl.
8634
8635 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
8636
8637         PR middle-end/25445
8638         * varasm.c (default_binds_local_p_1): Consult flag_whole_program
8639         if we are compiling with -fPIC.
8640
8641 2007-08-02  Sandra Loosemore  <sandra@codesourcery.com>
8642             Nigel Stephens  <nigel@mips.com>
8643
8644         * longlong.h [__mips__] (count_leading_zeros, COUNT_LEADING_ZEROS_0):
8645         Define for MIPS32 and MIPS64.
8646
8647 2007-08-02  Nick Clifton  <nickc@redhat.com>
8648
8649         * config/host-hpux.c: Change copyright header to refer to version
8650         3 of the GNU General Public License and to point readers at the
8651         COPYING3 file and the FSF's license web page.
8652         * config/alpha/predicates.md, config/alpha/vms-ld.c,
8653         config/alpha/linux.h, config/alpha/alpha.opt,
8654         config/alpha/linux-elf.h, config/alpha/vms.h, config/alpha/elf.h,
8655         config/alpha/vms-unwind.h, config/alpha/ev4.md,
8656         config/alpha/ev6.md, config/alpha/alpha.c, config/alpha/vms-cc.c,
8657         config/alpha/alpha.h, config/alpha/sync.md,
8658         config/alpha/openbsd.h, config/alpha/alpha.md,
8659         config/alpha/alpha-modes.def, config/alpha/ev5.md,
8660         config/alpha/alpha-protos.h, config/alpha/freebsd.h,
8661         config/alpha/osf5.h, config/alpha/netbsd.h, config/alpha/vms64.h,
8662         config/alpha/constraints.md, config/alpha/osf.h,
8663         config/alpha/xm-vms.h, config/alpha/unicosmk.h, config/linux.h,
8664         config/frv/predicates.md, config/frv/frv.h, config/frv/linux.h,
8665         config/frv/frv.md, config/frv/frv.opt, config/frv/frv-modes.def,
8666         config/frv/frv-asm.h, config/frv/frv-protos.h,
8667         config/frv/frv-abi.h, config/frv/frv.c, config/s390/tpf.h,
8668         config/s390/s390.c, config/s390/predicates.md, config/s390/s390.h,
8669         config/s390/linux.h, config/s390/tpf.md, config/s390/tpf.opt,
8670         config/s390/2064.md, config/s390/2084.md, config/s390/s390.md,
8671         config/s390/s390.opt, config/s390/s390-modes.def,
8672         config/s390/fixdfdi.h, config/s390/constraints.md,
8673         config/s390/s390-protos.h, config/s390/s390x.h, config/elfos.h,
8674         config/dbxcoff.h, config/m32c/predicates.md, config/m32c/cond.md,
8675         config/m32c/m32c.c, config/m32c/minmax.md, config/m32c/blkmov.md,
8676         config/m32c/m32c-pragma.c, config/m32c/m32c.h,
8677         config/m32c/prologue.md, config/m32c/m32c.abi,
8678         config/m32c/muldiv.md, config/m32c/bitops.md, config/m32c/mov.md,
8679         config/m32c/addsub.md, config/m32c/m32c.md, config/m32c/m32c.opt,
8680         config/m32c/t-m32c, config/m32c/m32c-modes.def,
8681         config/m32c/jump.md, config/m32c/shift.md,
8682         config/m32c/m32c-protos.h, config/libgloss.h,
8683         config/spu/spu-protos.h, config/spu/predicates.md,
8684         config/spu/spu-builtins.h, config/spu/spu.c,
8685         config/spu/spu-builtins.def, config/spu/spu-builtins.md,
8686         config/spu/spu.h, config/spu/spu-elf.h, config/spu/constraints.md,
8687         config/spu/spu.md, config/spu/spu-c.c, config/spu/spu.opt,
8688         config/spu/spu-modes.def, config/spu/t-spu-elf, config/interix.h,
8689         config/sparc/hypersparc.md, config/sparc/predicates.md,
8690         config/sparc/linux.h, config/sparc/sp64-elf.h,
8691         config/sparc/supersparc.md, config/sparc/cypress.md,
8692         config/sparc/openbsd1-64.h, config/sparc/openbsd64.h,
8693         config/sparc/niagara.md, config/sparc/sparc.md,
8694         config/sparc/long-double-switch.opt, config/sparc/ultra3.md,
8695         config/sparc/sparc.opt, config/sparc/sync.md,
8696         config/sparc/sp-elf.h, config/sparc/sparc-protos.h,
8697         config/sparc/ultra1_2.md, config/sparc/biarch64.h,
8698         config/sparc/sparc.c, config/sparc/little-endian.opt,
8699         config/sparc/sysv4-only.h, config/sparc/sparc.h,
8700         config/sparc/linux64.h, config/sparc/freebsd.h,
8701         config/sparc/sol2.h, config/sparc/rtemself.h,
8702         config/sparc/netbsd-elf.h, config/sparc/vxworks.h,
8703         config/sparc/sparc-modes.def, config/sparc/sparclet.md,
8704         config/sparc/sysv4.h, config/vx-common.h, config/netbsd-aout.h,
8705         config/flat.h, config/m32r/m32r.md, config/m32r/predicates.md,
8706         config/m32r/little.h, config/m32r/m32r.c, config/m32r/m32r.opt,
8707         config/m32r/linux.h, config/m32r/constraints.md,
8708         config/m32r/m32r.h, config/m32r/m32r-protos.h, config/vxworks.opt,
8709         config/darwin-c.c, config/darwin.opt, config/i386/i386.h,
8710         config/i386/cygming.h, config/i386/linux.h, config/i386/cygwin.h,
8711         config/i386/i386.md, config/i386/netware-crt0.c,
8712         config/i386/sco5.h, config/i386/mmx.md, config/i386/vx-common.h,
8713         config/i386/kaos-i386.h, config/i386/winnt-stubs.c,
8714         config/i386/netbsd64.h, config/i386/djgpp.h, config/i386/gas.h,
8715         config/i386/sol2.h, config/i386/constraints.md,
8716         config/i386/netware-libgcc.c, config/i386/sysv5.h,
8717         config/i386/predicates.md, config/i386/geode.md,
8718         config/i386/x86-64.h, config/i386/kfreebsd-gnu.h,
8719         config/i386/freebsd64.h, config/i386/vxworksae.h,
8720         config/i386/pentium.md, config/i386/lynx.h, config/i386/i386elf.h,
8721         config/i386/rtemself.h, config/i386/netbsd-elf.h,
8722         config/i386/ppro.md, config/i386/k6.md, config/i386/netware.c,
8723         config/i386/netware.h, config/i386/i386-modes.def,
8724         config/i386/sysv4-cpp.h, config/i386/i386-interix.h,
8725         config/i386/cygwin1.c, config/i386/djgpp.opt, config/i386/uwin.h,
8726         config/i386/unix.h, config/i386/ptx4-i.h, config/i386/xm-djgpp.h,
8727         config/i386/att.h, config/i386/winnt.c, config/i386/beos-elf.h,
8728         config/i386/sol2-10.h, config/i386/darwin64.h, config/i386/sse.md,
8729         config/i386/i386.opt, config/i386/bsd.h, config/i386/cygming.opt,
8730         config/i386/xm-mingw32.h, config/i386/linux64.h,
8731         config/i386/openbsdelf.h, config/i386/xm-cygwin.h,
8732         config/i386/sco5.opt, config/i386/darwin.h, config/i386/mingw32.h,
8733         config/i386/winnt-cxx.c, config/i386/i386-interix3.h,
8734         config/i386/nwld.c, config/i386/nwld.h, config/i386/host-cygwin.c,
8735         config/i386/cygwin2.c, config/i386/i386-protos.h,
8736         config/i386/sync.md, config/i386/openbsd.h,
8737         config/i386/host-mingw32.c, config/i386/i386-aout.h,
8738         config/i386/nto.h, config/i386/biarch64.h,
8739         config/i386/i386-coff.h, config/i386/freebsd.h,
8740         config/i386/driver-i386.c, config/i386/knetbsd-gnu.h,
8741         config/i386/host-i386-darwin.c, config/i386/vxworks.h,
8742         config/i386/crtdll.h, config/i386/i386.c, config/i386/sysv4.h,
8743         config/darwin-protos.h, config/linux.opt, config/sol2.c,
8744         config/sol2.h, config/sh/symbian.c, config/sh/sh-protos.h,
8745         config/sh/linux.h, config/sh/elf.h, config/sh/superh.h,
8746         config/sh/sh4.md, config/sh/coff.h, config/sh/newlib.h,
8747         config/sh/embed-elf.h, config/sh/symbian-pre.h, config/sh/rtems.h,
8748         config/sh/kaos-sh.h, config/sh/sh4a.md, config/sh/constraints.md,
8749         config/sh/sh64.h, config/sh/sh.opt, config/sh/symbian-post.h,
8750         config/sh/sh-c.c, config/sh/predicates.md, config/sh/sh.c,
8751         config/sh/sh.h, config/sh/shmedia.md, config/sh/sh-modes.def,
8752         config/sh/little.h, config/sh/sh1.md, config/sh/sh4-300.md,
8753         config/sh/superh64.h, config/sh/rtemself.h,
8754         config/sh/netbsd-elf.h, config/sh/sh.md, config/sh/vxworks.h,
8755         config/usegas.h, config/svr3.h, config/pdp11/pdp11-protos.h,
8756         config/pdp11/2bsd.h, config/pdp11/pdp11.md, config/pdp11/pdp11.c,
8757         config/pdp11/pdp11.opt, config/pdp11/pdp11-modes.def,
8758         config/pdp11/pdp11.h, config/avr/rtems.h, config/avr/avr-protos.h,
8759         config/avr/predicates.md, config/avr/constraints.md,
8760         config/avr/avr.md, config/avr/avr.c, config/avr/avr.opt,
8761         config/avr/avr.h, config/sol2-protos.h, config/dbxelf.h,
8762         config/lynx.opt, config/crx/crx.h, config/crx/crx-protos.h,
8763         config/crx/crx.md, config/crx/crx.c, config/crx/crx.opt,
8764         config/c4x/c4x-c.c, config/c4x/c4x.c, config/c4x/c4x.opt,
8765         config/c4x/c4x-modes.def, config/c4x/rtems.h,
8766         config/c4x/predicates.md, config/c4x/c4x.h,
8767         config/c4x/c4x-protos.h, config/c4x/c4x.md, config/kfreebsd-gnu.h,
8768         config/xtensa/predicates.md, config/xtensa/xtensa.c,
8769         config/xtensa/linux.h, config/xtensa/xtensa.h,
8770         config/xtensa/elf.h, config/xtensa/xtensa.md,
8771         config/xtensa/xtensa.opt, config/xtensa/constraints.md,
8772         config/xtensa/xtensa-protos.h, config/dbx.h,
8773         config/stormy16/predicates.md, config/stormy16/stormy16.md,
8774         config/stormy16/stormy16.c, config/stormy16/stormy16.opt,
8775         config/stormy16/stormy16.h, config/stormy16/stormy16-protos.h,
8776         config/host-solaris.c, config/fr30/fr30.h,
8777         config/fr30/predicates.md, config/fr30/fr30-protos.h,
8778         config/fr30/fr30.md, config/fr30/fr30.c, config/fr30/fr30.opt,
8779         config/vxworksae.h, config/sol2-c.c, config/lynx.h,
8780         config/m68hc11/m68hc11-protos.h, config/m68hc11/predicates.md,
8781         config/m68hc11/m68hc11.md, config/m68hc11/m68hc11.c,
8782         config/m68hc11/m68hc11.opt, config/m68hc11/m68hc11.h,
8783         config/m68hc11/m68hc12.h, config/openbsd-oldgas.h,
8784         config/host-linux.c, config/interix3.h, config/cris/cris.c,
8785         config/cris/predicates.md, config/cris/linux.h,
8786         config/cris/cris.h, config/cris/aout.h, config/cris/cris.md,
8787         config/cris/linux.opt, config/cris/cris.opt, config/cris/elf.opt,
8788         config/cris/aout.opt, config/cris/cris-protos.h,
8789         config/vxworks-dummy.h, config/netbsd.h, config/netbsd-elf.h,
8790         config/iq2000/iq2000.h, config/iq2000/predicates.md,
8791         config/iq2000/iq2000-protos.h, config/iq2000/iq2000.md,
8792         config/iq2000/iq2000.c, config/iq2000/iq2000.opt,
8793         config/host-darwin.c, config/mt/mt.md, config/mt/mt.c,
8794         config/mt/mt.opt, config/mt/t-mt, config/mt/mt.h,
8795         config/mt/mt-protos.h, config/svr4.h, config/host-darwin.h,
8796         config/chorus.h, config/mn10300/mn10300.c,
8797         config/mn10300/mn10300.opt, config/mn10300/predicates.md,
8798         config/mn10300/mn10300.h, config/mn10300/linux.h,
8799         config/mn10300/constraints.md, config/mn10300/mn10300-protos.h,
8800         config/mn10300/mn10300.md, config/ia64/predicates.md,
8801         config/ia64/itanium1.md, config/ia64/unwind-ia64.h,
8802         config/ia64/ia64-c.c, config/ia64/sync.md, config/ia64/ia64.c,
8803         config/ia64/itanium2.md, config/ia64/ia64.h, config/ia64/vect.md,
8804         config/ia64/freebsd.h, config/ia64/ia64.md,
8805         config/ia64/ia64-modes.def, config/ia64/constraints.md,
8806         config/ia64/hpux.h, config/ia64/ia64-protos.h, config/windiss.h,
8807         config/gofast.h, config/rtems.h, config/sol2-10.h,
8808         config/m68k/predicates.md, config/m68k/m68k.md,
8809         config/m68k/linux.h, config/m68k/m68k-modes.def,
8810         config/m68k/print-sysroot-suffix.sh, config/m68k/m68k-protos.h,
8811         config/m68k/coff.h, config/m68k/m68k-none.h, config/m68k/ieee.opt,
8812         config/m68k/openbsd.h, config/m68k/m68k-aout.h,
8813         config/m68k/m68k.opt, config/m68k/m68020-elf.h,
8814         config/m68k/m68kelf.h, config/m68k/m68k-devices.def,
8815         config/m68k/uclinux-oldabi.h, config/m68k/m68k.c,
8816         config/m68k/constraints.md, config/m68k/rtemself.h,
8817         config/m68k/netbsd-elf.h, config/m68k/m68k.h,
8818         config/m68k/uclinux.h, config/rs6000/power4.md,
8819         config/rs6000/host-darwin.c, config/rs6000/6xx.md,
8820         config/rs6000/linux.h, config/rs6000/eabi.h,
8821         config/rs6000/aix41.opt, config/rs6000/xcoff.h,
8822         config/rs6000/secureplt.h, config/rs6000/linuxspe.h,
8823         config/rs6000/eabialtivec.h, config/rs6000/8540.md,
8824         config/rs6000/darwin8.h, config/rs6000/kaos-ppc.h,
8825         config/rs6000/windiss.h, config/rs6000/603.md,
8826         config/rs6000/aix41.h, config/rs6000/cell.md,
8827         config/rs6000/mpc.md, config/rs6000/aix43.h, config/rs6000/beos.h,
8828         config/rs6000/gnu.h, config/rs6000/rtems.h, config/rs6000/aix.opt,
8829         config/rs6000/darwin.md, config/rs6000/darwin64.h,
8830         config/rs6000/default64.h, config/rs6000/7xx.md,
8831         config/rs6000/darwin.opt, config/rs6000/spe.md,
8832         config/rs6000/rs6000.opt, config/rs6000/rs6000-c.c,
8833         config/rs6000/rios2.md, config/rs6000/linuxaltivec.h,
8834         config/rs6000/7450.md, config/rs6000/linux64.h,
8835         config/rs6000/constraints.md, config/rs6000/440.md,
8836         config/rs6000/darwin.h, config/rs6000/host-ppc64-darwin.c,
8837         config/rs6000/rs6000.c, config/rs6000/aix52.h,
8838         config/rs6000/rs6000.h, config/rs6000/power6.md,
8839         config/rs6000/predicates.md, config/rs6000/altivec.md,
8840         config/rs6000/aix64.opt, config/rs6000/rios1.md,
8841         config/rs6000/rs6000-modes.def, config/rs6000/rs64.md,
8842         config/rs6000/eabisim.h, config/rs6000/sysv4le.h,
8843         config/rs6000/darwin7.h, config/rs6000/dfp.md,
8844         config/rs6000/linux64.opt, config/rs6000/sync.md,
8845         config/rs6000/vxworksae.h, config/rs6000/power5.md,
8846         config/rs6000/lynx.h, config/rs6000/biarch64.h,
8847         config/rs6000/rs6000.md, config/rs6000/sysv4.opt,
8848         config/rs6000/eabispe.h, config/rs6000/e500.h,
8849         config/rs6000/freebsd.h, config/rs6000/rs6000-protos.h,
8850         config/rs6000/netbsd.h, config/rs6000/e500-double.h,
8851         config/rs6000/aix.h, config/rs6000/vxworks.h,
8852         config/rs6000/40x.md, config/rs6000/aix51.h,
8853         config/rs6000/sysv4.h, config/arc/arc-protos.h, config/arc/arc.md,
8854         config/arc/arc.c, config/arc/arc.opt, config/arc/arc-modes.def,
8855         config/arc/arc.h, config/mcore/mcore-elf.h,
8856         config/mcore/mcore-protos.h, config/mcore/predicates.md,
8857         config/mcore/mcore.md, config/mcore/mcore.c,
8858         config/mcore/mcore.opt, config/mcore/mcore.h,
8859         config/mcore/mcore-pe.h, config/darwin.c, config/freebsd-nthr.h,
8860         config/score/predicates.md, config/score/score-version.h,
8861         config/score/score-protos.h, config/score/misc.md,
8862         config/score/elf.h, config/score/score.c, config/score/mac.md,
8863         config/score/score7.md, config/score/score.h,
8864         config/score/score-conv.h, config/score/score-mdaux.c,
8865         config/score/score.md, config/score/score.opt,
8866         config/score/score-modes.def, config/score/score-mdaux.h,
8867         config/score/mul-div.S, config/arm/uclinux-elf.h,
8868         config/arm/semi.h, config/arm/ecos-elf.h, config/arm/arm1020e.md,
8869         config/arm/symbian.h, config/arm/linux-elf.h,
8870         config/arm/arm1026ejs.md, config/arm/arm1136jfs.md,
8871         config/arm/elf.h, config/arm/aout.h, config/arm/arm.c,
8872         config/arm/thumb2.md, config/arm/vec-common.md, config/arm/coff.h,
8873         config/arm/strongarm-pe.h, config/arm/arm.h,
8874         config/arm/cortex-a8-neon.md, config/arm/semiaof.h,
8875         config/arm/cortex-a8.md, config/arm/uclinux-eabi.h,
8876         config/arm/arm-modes.def, config/arm/linux-eabi.h,
8877         config/arm/rtems-elf.h, config/arm/neon-schedgen.ml,
8878         config/arm/arm-cores.def, config/arm/arm-protos.h,
8879         config/arm/vfp.md, config/arm/aof.h, config/arm/linux-gas.h,
8880         config/arm/wince-pe.h, config/arm/neon.md,
8881         config/arm/constraints.md, config/arm/neon.ml,
8882         config/arm/xscale-elf.h, config/arm/strongarm-coff.h,
8883         config/arm/arm.opt, config/arm/arm926ejs.md,
8884         config/arm/predicates.md, config/arm/iwmmxt.md,
8885         config/arm/arm_neon.h, config/arm/unknown-elf.h,
8886         config/arm/kaos-arm.h, config/arm/bpabi.h, config/arm/pe.opt,
8887         config/arm/neon-testgen.ml, config/arm/arm.md,
8888         config/arm/xscale-coff.h, config/arm/pe.c,
8889         config/arm/arm-generic.md, config/arm/pe.h,
8890         config/arm/kaos-strongarm.h, config/arm/freebsd.h,
8891         config/arm/neon-docgen.ml, config/arm/netbsd.h, config/arm/fpa.md,
8892         config/arm/strongarm-elf.h, config/arm/cirrus.md,
8893         config/arm/netbsd-elf.h, config/arm/vxworks.h,
8894         config/arm/neon-gen.ml, config/kaos.h, config/darwin-driver.c,
8895         config/pa/predicates.md, config/pa/pa64-hpux.h,
8896         config/pa/pa-hpux.opt, config/pa/som.h, config/pa/pa-hpux1010.opt,
8897         config/pa/pa-hpux1111.opt, config/pa/pa-pro-end.h,
8898         config/pa/elf.h, config/pa/fptr.c, config/pa/pa64-linux.h,
8899         config/pa/pa.md, config/pa/pa.opt, config/pa/pa-hpux.h,
8900         config/pa/pa-hpux10.h, config/pa/pa-hpux11.h,
8901         config/pa/pa-hpux1010.h, config/pa/pa-protos.h,
8902         config/pa/pa-osf.h, config/pa/pa-hpux1111.h, config/pa/pa-64.h,
8903         config/pa/milli64.S, config/pa/pa.c, config/pa/pa-linux.h,
8904         config/pa/pa.h, config/pa/pa32-linux.h, config/pa/pa64-hpux.opt,
8905         config/pa/pa64-regs.h, config/pa/pa-modes.def,
8906         config/pa/constraints.md, config/darwin9.h, config/mips/4100.md,
8907         config/mips/linux.h, config/mips/elfoabi.h, config/mips/elf.h,
8908         config/mips/sdb.h, config/mips/windiss.h, config/mips/rtems.h,
8909         config/mips/3000.md, config/mips/iris5.h, config/mips/5000.md,
8910         config/mips/7000.md, config/mips/9000.md, config/mips/4600.md,
8911         config/mips/linux64.h, config/mips/elforion.h,
8912         config/mips/constraints.md, config/mips/generic.md,
8913         config/mips/predicates.md, config/mips/4300.md,
8914         config/mips/mips-ps-3d.md, config/mips/iris.h, config/mips/24k.md,
8915         config/mips/mips.md, config/mips/mips.opt, config/mips/4k.md,
8916         config/mips/5k.md, config/mips/vr4120-div.S,
8917         config/mips/openbsd.h, config/mips/iris6.h, config/mips/4000.md,
8918         config/mips/mips-protos.h, config/mips/6000.md,
8919         config/mips/mips.c, config/mips/mips.h, config/mips/r3900.h,
8920         config/mips/74k.md, config/mips/netbsd.h, config/mips/vxworks.h,
8921         config/mips/mips-modes.def, config/mips/vr.h,
8922         config/soft-fp/t-softfp, config/openbsd.h, config/ptx4.h,
8923         config/freebsd-spec.h, config/vax/vax.c, config/vax/openbsd.h,
8924         config/vax/vax.h, config/vax/elf.h, config/vax/vax.md,
8925         config/vax/bsd.h, config/vax/vax.opt, config/vax/vax-modes.def,
8926         config/vax/openbsd1.h, config/vax/netbsd.h,
8927         config/vax/vax-protos.h, config/vax/netbsd-elf.h,
8928         config/vax/vaxv.h, config/vax/ultrix.h, config/freebsd.h,
8929         config/h8300/rtems.h, config/h8300/predicates.md,
8930         config/h8300/h8300.c, config/h8300/h8300.h, config/h8300/elf.h,
8931         config/h8300/h8300.md, config/h8300/h8300.opt,
8932         config/h8300/coff.h, config/h8300/h8300-protos.h,
8933         config/v850/v850.md, config/v850/predicates.md,
8934         config/v850/v850-c.c, config/v850/v850.c, config/v850/v850.opt,
8935         config/v850/v850.h, config/v850/v850-protos.h, config/vxworks.c,
8936         config/knetbsd-gnu.h, config/sol2-6.h, config/vxworks.h,
8937         config/mmix/mmix.h, config/mmix/predicates.md,
8938         config/mmix/mmix-protos.h, config/mmix/mmix.md,
8939         config/mmix/mmix.c, config/mmix/mmix.opt,
8940         config/mmix/mmix-modes.def, config/bfin/bfin.opt,
8941         config/bfin/rtems.h, config/bfin/bfin-modes.def,
8942         config/bfin/predicates.md, config/bfin/bfin-protos.h,
8943         config/bfin/bfin.c, config/bfin/bfin.h, config/bfin/bfin.md:
8944         Likewise.
8945
8946 2007-08-02  Richard Sandiford  <richard@codesourcery.com>
8947
8948         * emit-rtl.c (reset_used_decls): Rename to...
8949         (set_used_decls): ...this.  Set the used flag rather than clearing it.
8950         (unshare_all_rtl_again): Update accordingly.  Set flags on argument
8951         DECL_RTLs rather than resetting them.
8952
8953 2007-08-02  Andreas Krebbel  <krebbel1@de.ibm.com>
8954
8955         * config/s390/s390.md ("*xordi3_cconly"): Change xr to xg.
8956
8957 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
8958
8959         * reload.c (find_reloads_address_part): Pass correct MEMREFLOC
8960         argument to find_reloads_address.
8961
8962 2007-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
8963
8964         PR tree-optimization/32919
8965         * tree-ssa-sccvn.c (visit_phi): Do not visit abnormal PHIs.
8966         * tree-ssa-coalesce.c (ssa_conflicts_dump): New.
8967         (coalesce_ssa_name): Call it.
8968
8969 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
8970             David Ung  <davidu@mips.com>
8971
8972         * config/mips/mips16.S (__mips16_unordsf2, __mips16_floatunsisf): New.
8973         (__mips16_unorddf2, __mips16_floatunsidf): New.
8974         * config/mips/mips.c (mips_init_libfuncs): Add optab entries for
8975         above functions.
8976         * config/mips/t-libgcc-mips16 (LIB1ASMFUNCS): Add new functions.
8977
8978 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
8979
8980         * tree-pretty-print.c (dump_generic_node): Dump OMP_SECTIONS_SWITCH.
8981         Display new operands of OMP_SECTIONS and OMP_CONTINUE.
8982         * tree.h (OMP_SECTIONS_CONTROL): New macro.
8983         (OMP_DIRECTIVE_P): Add OMP_SECTIONS_SWITCH.
8984         * omp-low.c (get_ws_args_for, determine_parallel_type,
8985         expand_omp_for_generic, expand_omp_for_static_nochunk,
8986         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
8987         Work with more precise CFG.
8988         (build_omp_regions_1): Handle OMP_SECTIONS_SWITCH.
8989         (lower_omp_sections): Emit OMP_SECTIONS_SWITCH.  Add arguments to
8990         OMP_CONTINUE.
8991         * tree-gimple.c (is_gimple_stmt): Handle OMP_SECTIONS_SWITCH.
8992         * gimple-low.c (lower_stmt): Ditto.
8993         * tree-inline.c (estimate_num_insns_1): Ditto.
8994         * tree.def (OMP_SECTIONS, OMP_CONTINUE): Added new operands.
8995         (OMP_SECTIONS_SWITCH): New.
8996         * tree-cfgcleanup.c (cleanup_omp_return): New.
8997         (cleanup_tree_cfg_bb): Call cleanup_omp_return.
8998         * tree-cfg.c (make_edges): Create back edges for OMP_CONTINUE
8999         and exit edge for OMP_FOR.  Handle OMP_SECTIONS_SWITCH.
9000         (tree_redirect_edge_and_branch): Handle omp constructs.
9001
9002         * fortran/trans-openmp.c (gfc_trans_omp_sections): Build OMP_SECTIONS
9003         with three arguments.
9004
9005 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
9006
9007         * tree-cfg.c (tree_merge_blocks): Preserve loop exit phi nodes only
9008         in loop closed ssa.
9009
9010 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
9011
9012         * tree-ssa-threadupdate.c (thread_through_all_blocks): Record that
9013         the loop structures may need fixing.
9014         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures):
9015         New functions.
9016         (cleanup_tree_cfg_loop): Removed.
9017         (cleanup_tree_cfg): If loops need fixing, call repair_loop_structures.
9018         * tree-predcom.c (tree_predictive_commoning): Return TODO_cleanup_cfg
9019         instead of running cleanup_tree_cfg_loop.
9020         * cfgloop.h (LOOPS_NEED_FIXUP): New constant.
9021         * tree-flow.h (cleanup_tree_cfg_loop): Declaration removed.
9022         (tree_predictive_commoning): Declaration changed.
9023         * passes.c (execute_function_todo): Do not use cleanup_tree_cfg_loop.
9024
9025 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
9026
9027         * doc/invoke.texi (l1-cache-size): Update documentation.
9028         (l2-cache-size): Document.
9029         * params.h (L2_CACHE_SIZE): New macro.
9030         * tree-ssa-loop-prefetch.c (L1_CACHE_SIZE_BYTES): Reflect
9031         that L1_CACHE_SIZE is in kB now.
9032         (L2_CACHE_SIZE_BYTES): New macro.
9033         (tree_ssa_prefetch_arrays): Show size in kB.
9034         * config/i386/i386.h (struct processor_costs): Add l1_cache_size
9035         and l2_cache_size fields.
9036         * config/i386/driver-i386.c (describe_cache): Detect cache size
9037         in kB.
9038         * config/i386/i386.c (size_cost, i386_cost, i486_cost,pentium_cost,
9039         pentiumpro_cost, geode_cost, k6_cost, athlon_cost, k8_cost,
9040         amdfam10_cost, pentium4_cost, nocona_cost, core2_cost,
9041         generic64_cost, generic32_cost): Add l1_cache_size and l2_cache_size.
9042         (override_options): Set l1-cache-size and l2-cache-size to default
9043         values if not specified otherwise.
9044         * params.def (PARAM_L1_CACHE_SIZE): Change to set in kB.
9045         (PARAM_L2_CACHE_SIZE): New.
9046
9047 2007-08-01  Nigel Stephens  <nigel@mips.com>
9048             David Ung  <davidu@mips.com>
9049             Thiemo Seufer  <ths@mips.com>
9050             Chris Dearman  <chris@mips.com>
9051             Richard Sandiford  <richard@codesourcery.com>
9052
9053         * config.gcc (mips*-sde-elf*): New stanza.
9054         (mipsisa32-*-elf*, mipsisa32el-*-elf*, mipsisa32r2-*-elf*)
9055         (mipsisa32r2el-*-elf*, mipsisa64-*-elf*, mipsisa64el-*-elf*)
9056         (mipsisa64sb1-*-elf*, mipsisa64sb1el-*-elf*, mips-*-elf*)
9057         (mipsel-*-elf*, mips64-*-elf*, mips64el-*-elf*, mips64orion-*-elf*)
9058         (mips64orionel-*-elf*, mips*-*-rtems*, mips-wrs-windiss)
9059         (mipstx39-*-elf*, mipstx39el-*-elf*): Add mips/t-libgcc-mips16
9060         to tmake_file.
9061         * config/mips/sde.h: New file.
9062         * config/mips/t-libgcc-mips16: Likewise.
9063         * config/mips/t-sde: Likewise.
9064         * config/mips/linux.h (TARGET_OS_CPP_BUILTINS): Remove settings
9065         of _ABIN32, _ABI64, _ABIO32, _MIPS_SIM, _MIPS_SZLONG, _MIPS_SZPTR,
9066         _MIPS_FPSET and _MIPS_SZINT.
9067         * config/mips/iris.h (TARGET_OS_CPP_BUILTINS): Likewise.
9068         * config/mips/elfoabi.h (DRIVER_SELF_SPECS): Remove separate
9069         insertion of a default -mips option.  Use MIPS_32BIT_OPTION_SPEC.
9070         * config/mips/t-isa3264 (LIB1ASMSRC, LIB1ASMFUNCS): Delete.
9071         * config/mips/t-r3900 (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
9072         * config/mips/t-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
9073         * config/mips/mips.h (TARGET_CPU_CPP_BUITINS): Define _ABIO32,
9074         _ABIN32, _ABI64, _ABIO64, _MIPS_SIM, _MIPS_SZINT, _MIPS_SZLONG,
9075         _MIPS_SZPTR and _MIPS_FPSET.
9076         (MIPS_ISA_LEVEL_SPEC): Inject the default -mips option if no
9077         architecture is specified.
9078         (MIPS_32BIT_OPTION_SPEC): New macro.
9079
9080 2007-07-31  Dan Hipschman  <dsh@google.com>
9081
9082         * gcc.c (end_going_arg): New function.
9083         (do_spec_2): Use it.
9084         (do_spec_1): Use it.
9085
9086 2007-07-31  H.J. Lu  <hongjiu.lu@intel.com>
9087
9088         * ddg.c (add_cross_iteration_register_deps): Declare bb_info
9089         only if ENABLE_CHECKING is defined.
9090
9091 2007-07-31  Kenneth Zadeck <zadeck@naturalbridge.com>
9092
9093         * df.h (DF_RU, DF_RU_BB_INFO, df_ru_bb_info, df_ru,
9094         df_ru_add_problem, df_ru_get_bb_info): Removed.
9095         (DF_RD, DF_UREC, DF_CHAIN, DF_NOTE): Renumbered.
9096         * df-problems.c (df_ru_problem_data, df_ru_set_bb_info,
9097         df_ru_free_bb_info, df_ru_alloc,
9098         df_ru_bb_local_compute_process_def,
9099         df_ru_bb_local_compute_process_use, df_ru_bb_local_compute,
9100         df_ru_local_compute, df_ru_init_solution, df_ru_confluence_n,
9101         df_ru_transfer_function, df_ru_free, df_ru_start_dump,
9102         df_ru_top_dump, df_ru_bottom_dump, df_problem problem_RU,
9103         df_ru_add_problem): Removed.
9104
9105 2007-07-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9106
9107         PR target/32847
9108         * pa.md (casesi32): Use match_scratch.  Revise insn condition.
9109         (casesi32p, casesi64p): Likewise.
9110         (casesi): Adjust for above.
9111
9112 2007-07-31  Richard Sandiford  <richard@codesourcery.com>
9113
9114         * mode-switching.c (create_pre_exit): Don't search past calls.
9115
9116 2007-07-31  Sandra Loosemore  <sandra@codesourcery.com>
9117
9118         * config/mips/mips.h (ISA_HAS_SYNCI): Add !TARGET_MIPS16 test.
9119
9120 2007-07-31  Revital Eres  <eres@il.ibm.com>
9121
9122         * ddg.c (add_deps_for_def): Rename to...
9123         (add_cross_iteration_register_deps): This.  Change implementation
9124         to use only reaching def and def-use chains to construct the
9125         inter loop dependencies.
9126         (add_deps_for_use): Remove function.
9127         (build_inter_loop_deps): Call add_cross_iteration_register_deps
9128         function to build the inter loop dependencies.
9129         * modulo-sched.c (sms_schedule): Build only
9130         reaching def and def-use chains for the propose of the ddg
9131         construction.
9132
9133 2007-07-31  Julian Brown  <julian@codesourcery.com>
9134
9135         * config/arm/neon.md (vec_set<mode>_internal, vec_setv2di_internal):
9136         New define_insns. Use correct RTL.
9137         (vec_set<mode>): Write as expander.
9138
9139 2007-07-31  Razya Ladelsky  <razya@il.ibm.com>
9140
9141         * matrix-reorg.c (analyze_matrix_allocation_site): Avoid referring 
9142         to an unallocated space.
9143
9144 2007-07-30  Jan Sjodin  <jan.sjodin@amd.com>
9145
9146         * tree-data-ref.c
9147         (split_constant_offset): Enable split_constant_offset to extract
9148         constants from other statements.
9149         * tree-vect-transform.c
9150         (vect_create_addr_base_for_vector_ref): Generate data_ref_base
9151         to a temp var. Force base_offset to be simple.
9152
9153 2007-07-30  Seongbae Park <seongbae.park@gmail.com>
9154
9155         * df-scan.c (df_scan_verify): Remove artificial limit on
9156         the number of blocks for verification.
9157         * df-problems.c (df_lr_bb_local_compute, df_simulate_find_defs,
9158         df_simulate_defs): Avoid unnecessary insn checking for defs.
9159
9160 2007-07-29  Mark Mitchell  <mark@codesourcery.com>
9161
9162         * config/m68k/lb1sf68.asm (FUNC): New macro.
9163         (__mulsi3): Use it.
9164         (__udivsi3): Likewise.
9165         (__divsi3): Likewise.
9166         (__umodsi3): Likewise.
9167         (__modsi3): Likewise.
9168         (__subdf3): Likewise.
9169         (__adddf3): Likewise.
9170         (__muldf3): Likewise.
9171         (__divdf3): Likewise.
9172         (__negdf2): Likewise.
9173         (__cmpdf2): Likewise.
9174         (__subsf3): Likewise.
9175         (__addsf3): Likewise.
9176         (__mulsf3): Likewise.
9177         (__divsf3): Likewise.
9178         (__negsf2): Likewise.
9179         (__cmpsf2): Likewise.
9180         (__eqdf2): Likewise.
9181         (__nedf2): Likewise.
9182         (__gtdf2): Likewise.
9183         (__gedf2): Likewise.
9184         (__ltdf2): Likewise.
9185         (__ledf2): Likewise.
9186         (__eqsf2): Likewise.
9187         (__nesf2): Likewise.
9188         (__gtsf2): Likewise.
9189         (__gesf2): Likewise.
9190         (__ltsf2): Likewise.
9191         (__lesf2): Likewise.
9192
9193 2007-07-30  Ollie Wild  <aaw@google.com>
9194
9195         * c-ppoutput.c (print_lines_directives_only): New function.
9196         (scan_translation_unit_directives_only): New function.
9197         (preprocess_file): Add call to scan_translation_unit_directives_only.
9198         * c-opts.c (c_common_handle_option): Add OPT_fdirectives_only.
9199         (sanitize_cpp_opts): Add default flag_dump_macros setting for
9200         -fdirectives-only.  Add errors for -fdirectives-only conflict with
9201         -Wunused-macros and -traditional.
9202         (finish_options): Add builtin macro initialization for
9203         -fdirectives-only + -fpreprocessed.
9204         * c.opt (fdirectives-only): New.
9205         * doc/cppopts.texi (fdirectives-only): New.
9206
9207 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9208
9209         * alias.c (record_set, memory_modified_1): Constify.
9210         * bt-load.c (note_btr_set): Likewise.
9211         * caller-save.c (mark_set_regs, add_stored_regs): Likewise.
9212         * combine.c (set_nonzero_bits_and_sign_copies,
9213         expand_field_assignment, record_dead_and_set_regs_1,
9214         use_crosses_set_p, reg_dead_at_p_1, can_combine_p,
9215         likely_spilled_retval_1): Likewise.
9216         * config/frv/frv.c (frv_registers_update_1, frv_io_check_address,
9217         frv_io_handle_set): Likewise.
9218         * config/mips/mips.c (mips_sim_record_set,
9219         vr4130_true_reg_dependence_p_1): Likewise.
9220         * config/mt/mt.c (insn_dependent_p_1): Likewise.
9221         * config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
9222         * config/sh/sh.c (flow_dependent_p_1): Likewise.
9223         * cselib.c (cselib_invalidate_rtx_note_stores): Likewise.
9224         * dce.c (mark_nonreg_stores_1, mark_nonreg_stores_2): Likewise.
9225         * ddg.c (mark_mem_store): Likewise.
9226         * df-problems.c (df_urec_mark_reg_change): Likewise.
9227         * function.c (update_epilogue_consts): Likewise.
9228         * gcse.c (record_set_info, record_last_set_info,
9229         mems_conflict_for_gcse_p, canon_list_insert, reg_set_info,
9230         reg_clear_last_set): Likewise.
9231         * global.c (mark_reg_store, mark_reg_clobber, reg_becomes_live):
9232         Likewise.
9233         * jump.c (reversed_comparison_code_parts): Likewise.
9234         * local-alloc.c (validate_equiv_mem_from_store, no_equiv,
9235         reg_is_set): Likewise.
9236         * loop-iv.c (mark_altered): Likewise.
9237         * mode-switching.c (reg_becomes_live): Likewise.
9238         * optabs.c (no_conflict_move_test): Likewise.
9239         * postreload-gcse.c (record_last_set_info, find_mem_conflicts):
9240         Likewise.
9241         * postreload.c (reload_combine_note_store, move2add_note_store):
9242         Likewise.
9243         * regmove.c (flags_set_1): Likewise.
9244         * regrename.c (note_sets, kill_clobbered_value, kill_set_value):
9245         Likewise.
9246         * reload1.c (mark_not_eliminable, forget_old_reloads_1):
9247         Likewise. 
9248         * resource.c (update_live_status): Likewise.
9249         * rtl.h (set_of, note_stores): Likewise.
9250         * rtlanal.c (set_of_1, parms_set, struct set_of_data, set_of,
9251         note_stores, parms_set): Likewise.
9252         * sched-rgn.c (sets_likely_spilled_1): Likewise.
9253         * stack-ptr-mod.c (notice_stack_pointer_modification_1):
9254         Likewise. 
9255         * var-tracking.c (count_stores, add_stores): Likewise.
9256
9257 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9258
9259         * alias.c (mems_in_disjoint_alias_sets_p,
9260         fixed_scalar_and_varying_struct_p, aliases_everything_p,
9261         nonoverlapping_component_refs_p, nonoverlapping_memrefs_p,
9262         write_dependence_p, mems_in_disjoint_alias_sets_p,
9263         read_dependence, true_dependence, canon_true_dependence,
9264         anti_dependence, output_dependence): Constify.
9265         * combine.c (extended_count): Likewise.
9266         * cse.c (cse_rtx_varies_p, hash_rtx, exp_equiv_p): Likewise.
9267         * cselib.c (get_value_hash, references_value_p,
9268         cselib_reg_set_mode, cselib_rtx_varies_p): Likewise.
9269         * cselib.h (cselib_reg_set_mode, references_value_p): Likewise.
9270         * emit-rtl.c (mem_expr_equal_p, active_insn_p): Likewise.
9271         * function.c (contains, prologue_epilogue_contains,
9272         sibcall_epilogue_contains): Likewise. 
9273         * jump.c (simplejump_p, condjump_p, condjump_in_parallel_p,
9274         pc_set, any_uncondjump_p, any_condjump_p, onlyjump_p,
9275         only_sets_cc0_p, sets_cc0_p, rtx_renumbered_equal_p, true_regnum,
9276         reg_or_subregno): Likewise.
9277         * recog.c (asm_noperands): Likewise.
9278         * reload1.c (function_invariant_p): Likewise.
9279         * rtl.h (mem_expr_equal_p, active_insn_p, rtx_varies_p,
9280         rtx_addr_varies_p, asm_noperands, exp_equiv_p, hash_rtx,
9281         condjump_p, any_condjump_p, any_uncondjump_p, pc_set,
9282         simplejump_p, onlyjump_p, only_sets_cc0_p, sets_cc0_p,
9283         true_regnum, reg_or_subregno, condjump_in_parallel_p,
9284         extended_count, prologue_epilogue_contains,
9285         sibcall_epilogue_contains, function_invariant_p, true_dependence,
9286         canon_true_dependence, read_dependence, anti_dependence,
9287         output_dependence): Likewise.
9288         * rtlanal.c (rtx_varies_p, rtx_addr_varies_p): Likewise.
9289
9290 2007-07-30  Julian Brown  <julian@codesourcery.com>
9291
9292         * config/arm/neon.md (V_ext): New mode attribute.
9293         (neon_vget_lane<mode>): Replace with define_expand.
9294         (neon_vget_lane<mode>_sext_internal)
9295         (neon_vget_lane<mode>_zext_internal): New define_insns for double
9296         and quad precision vectors.
9297         (neon_vget_lanedi): Add bounds check. Remove dead comment.
9298         * config/arm/neon.ml (get_lane): Make 32-bit get-lane intrinsics
9299         have typeless 32-bit result.
9300
9301 2007-07-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9302
9303         PR tree-opt/32527
9304         * tree-affine.h (aff_tree): The type of rest is sizetype for types
9305         of pointers.
9306         * tree-affine.c (aff_combination_scale): If type is a pointer type,
9307         use sizetype for rest.
9308         (aff_combination_add_elt): Likewise. Don't specialize pointer types.
9309         (aff_combination_convert): Don't convert rest for pointer types.
9310
9311 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
9312
9313         * Makefile.in (tree-ssa-alias.o): Add alloc-pool.h
9314
9315         * tree-ssa-alias.c: Add alloc-pool.h.
9316         (init_alias_info): Free alias_bitmap_obstack.
9317         (delete_alias_info): Call delete_mem_ref_stats.
9318         (get_mem_sym_stats_for): Use alloc_pool.
9319         (init_mem_ref_stats): Do not delete mem_ref_stats here.
9320         (delete_mem_sym_stats): Removed.
9321         
9322 2007-07-29  Sebastian Pop  <sebpop@gmail.com>
9323
9324         * tree-data-ref.c (add_multivariate_self_dist): Parametric access
9325         functions cannot be represented as classical distance vectors.
9326
9327 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9328
9329         * attribs.c (hash_attr, eq_attr, init_attributes): Constify.
9330         * builtins.c (validate_arg, builtin_mathfn_code,
9331         validate_arglist): Likewise.
9332         * calls.c (call_expr_flags): Likewise.
9333         * combine.c (reg_nonzero_bits_for_combine,
9334         reg_num_sign_bit_copies_for_combine, get_last_value,
9335         reg_truncated_to_mode): Likewise.
9336         * emit-rtl.c (subreg_lowpart_p): Likewise.
9337         * expr.c (highest_pow2_factor_for_target,
9338         categorize_ctor_elements_1, categorize_ctor_elements,
9339         count_type_elements, contains_packed_reference,
9340         highest_pow2_factor, highest_pow2_factor_for_target): Likewise.
9341         * fold-const.c (may_negate_without_overflow_p, int_const_binop,
9342         fold_convertible_p, operand_equal_p, tree_swap_operands_p,
9343         native_encode_int, native_encode_real, native_encode_complex,
9344         native_encode_vector, native_encode_expr, native_interpret_int,
9345         native_interpret_real, native_interpret_complex,
9346         native_interpret_vector, native_interpret_expr): Likewise.
9347         * function.c (use_register_for_decl): Likewise.
9348         * gimplify.c (get_name): Likewise.
9349         * langhooks-def.h (lhd_return_null_const_tree): New.
9350         (LANG_HOOKS_GET_CALLEE_FNDECL): Use it.
9351         * langhooks.c (lhd_return_null_const_tree): New.
9352         * langhooks.h (lang_get_callee_fndecl): Constify.
9353         * output.h (constructor_static_from_elts_p): Likewise.
9354         * rtl-factoring.c (gen_symbol_ref_rtx_for_label): Likewise.
9355         * rtl.h (nonzero_bits, num_sign_bit_copies, truncated_to_mode,
9356         subreg_lowpart_p, noop_move_p, struct rtl_hooks): Likewise.
9357         * rtlanal.c (cached_nonzero_bits, nonzero_bits1,
9358         cached_num_sign_bit_copies, num_sign_bit_copies1, noop_move_p,
9359         nonzero_bits, num_sign_bit_copies, truncated_to_mode): Likewise.
9360         * rtlhooks-def.h (reg_nonzero_bits_general,
9361         reg_num_sign_bit_copies_general, reg_truncated_to_mode_general):
9362         Likewise. 
9363         * rtlhooks.c (reg_num_sign_bit_copies_general,
9364         reg_nonzero_bits_general, reg_truncated_to_mode_general):
9365         Likewise. 
9366         * stmt.c (warn_if_unused_value, is_body_block): Likewise.
9367         * stor-layout.c (mode_for_size_tree): Likewise.
9368         * tree-ssa-loop-im.c (memref_eq): Likewise.
9369         * tree-ssa-loop-ivopts.c (tree_int_cst_sign_bit): Likewise.
9370         * tree.c (contains_placeholder_p, type_list_equal,
9371         simple_cst_equal, get_callee_fndecl, operand_equal_for_phi_arg_p):
9372         Likewise. 
9373         * tree.h (tree_int_cst_sign_bit, may_negate_without_overflow_p,
9374         mode_for_size_tree, categorize_ctor_elements, count_type_elements,
9375         contains_placeholder_p, contains_packed_reference,
9376         get_callee_fndecl, operand_equal_for_phi_arg_p,
9377         warn_if_unused_value, is_body_block, native_encode_expr,
9378         native_interpret_expr, fold_convertible_p, operand_equal_p,
9379         int_const_binop, tree_swap_operands_p, builtin_mathfn_code,
9380         validate_arglist, simple_cst_equal, type_list_equal,
9381         use_register_for_decl, call_expr_flags, get_name,
9382         highest_pow2_factor): Likewise.
9383         (const_call_expr_arg_iterator_d,
9384         init_const_call_expr_arg_iterator, next_const_call_expr_arg,
9385         first_const_call_expr_arg, more_const_call_expr_args_p,
9386         FOR_EACH_CONST_CALL_EXPR_ARG): New.
9387         * varasm.c (constructor_static_from_elts_p): Constify.
9388
9389 2007-07-28  Kazu Hirata  <kazu@codesourcery.com>
9390
9391         * cfglayout.c, config/arm/arm.c, config/arm/cortex-a8.md,
9392         config/arm/neon-schedgen.ml, config/arm/neon.ml,
9393         config/arm/vec-common.md, config/ia64/div.md, cselib.c,
9394         df-core.c, df.h, dominance.c, optabs.c, opts.c, reg-stack.c,
9395         regstat.c, target.h, tree-ssa-live.c, tree-ssa-pre.c,
9396         tree-vect-transform.c, tree.def: Fix comment typos.  Follow
9397         spelling conventions.
9398         * doc/invoke.texi: Follow spelling conventions.
9399
9400 2007-07-29  Vladimir Yanovsky  <yanov@il.ibm.com>
9401             Revital Eres  <eres@il.ibm.com>
9402
9403         * modulo-sched.c (sms_schedule): Avoid loops which includes
9404         auto-increment instructions.
9405
9406 2007-07-28  Richard Guenther  <rguenther@suse.de>
9407
9408         PR middle-end/32920
9409         * fold-const.c (fold_cond_expr_with_comparison): Convert
9410         operand zero of MIN/MAX_EXPR to correct type.
9411
9412 2007-07-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9413
9414         * calls.c (special_function_p, setjmp_call_p, alloca_call_p,
9415         flags_from_decl_or_type): Constify.
9416         * gcc.c (do_spec_1): Likewise.
9417         * print-tree.c (dump_addr, print_node_brief): Likewise.
9418         * tree-cfg.c (stmt_starts_bb_p, is_ctrl_stmt, computed_goto_p,
9419         simple_goto_p, tree_can_make_abnormal_goto, stmt_starts_bb_p,
9420         tree_purge_all_dead_eh_edges): Likewise.
9421         * tree-flow.h (is_ctrl_stmt, computed_goto_p, simple_goto_p,
9422         tree_can_make_abnormal_goto, tree_purge_all_dead_eh_edges):
9423         Likewise. 
9424         * tree.c (expr_location, expr_has_location, expr_locus,
9425         expr_filename, expr_lineno, get_inner_array_type,
9426         fields_compatible_p): Likewise.
9427         * tree.h (get_inner_array_type, fields_compatible_p,
9428         expr_location, expr_has_location, expr_locus, expr_filename,
9429         expr_lineno, dump_addr, print_node_brief, flags_from_decl_or_type,
9430         setjmp_call_p, alloca_call_p): Likewise.
9431
9432 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
9433
9434         * timevar.def: Add TV_CALL_CLOBBER, TV_FLOW_SENSITIVE,
9435         TV_FLOW_INSENSITIVE.
9436
9437         * tree-ssa-alias.c (compute_call_clobbered): Push/pop
9438         TV_CALL_CLOBBER.
9439         (compute_flow_sensitive_aliasing): Ditto for TV_FLOW_SENSITIVE.
9440         (compute_flow_insensitive_aliasing): Ditto for
9441         TV_FLOW_INSENSITIVE.    
9442
9443 2007-07-27  Jan Hubicka  <jh@suse.cz>
9444
9445         * config/i386/i386.c (register_move_cost): Remove accidentally
9446         comitted #if 0 block.
9447
9448         * attribs.c: Include hashtab.h
9449         (attribute_hash): New.
9450         (substring): New structure.
9451         (extract_attribute_substring, substring_hash, hash_attr, eq_attr):
9452         New function.
9453         (init_attributes): Initialize attribute hash.
9454         (decl_attributes): Use attribute hash.
9455         * Makefile.in (attribs.c): Depend on hashtab.h.
9456
9457 2007-07-27  Steve Ellcey  <sje@cup.hp.com>
9458
9459         * config/ia64/vect.md (vec_initv2si): Remove bad BIG_ENDIAN test.
9460
9461 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
9462
9463         * doc/invoke.texi (mdsp, mdspr2): Document the __mips_dsp,
9464         __mips_dspr2 and __mips_dsp_rev macros.
9465         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dsp_rev.
9466
9467 2007-07-27  Douglas Gregor  <doug.gregor@gmail.com>
9468         
9469        * c-common.h (enum rid): Add RID_DECLTYPE, update RID_LAST_CXX0X.
9470
9471 2007-07-26  Kenneth Zadeck <zadeck@naturalbridge.com>
9472
9473         PR middle-end/32749
9474         
9475         * df-problems.c (df_create_unused_note): Removed do_not_gen parm
9476         and the updating of the live and do_not_gen sets.
9477         (df_note_bb_compute): Added updating of live and do_not_gen sets
9478         for regular defs so that the case of clobber inside conditional
9479         call is processed correctly.
9480         
9481 2007-07-27  Zdenek Dvorak  <dvorakz@suse.cz>
9482
9483         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Generate the
9484         operands with compatible type.
9485
9486 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
9487
9488         * expr.h (store_bit_field): Don't return a value.
9489         * expmed.c (check_predicate_volatile_ok): New function.
9490         (store_bit_field_1): New function, extracted from store_bit_field.
9491         Take a fallback_p argument and return true if the operation succeeded.
9492         Only use store_fixed_bit_field if fallback_p.  Don't recompute
9493         mode_for_extraction; use op_mode instead.  Try forcing memories
9494         into registers if the insv expander fails.
9495         (store_bit_field): Use store_bit_field_1 with fallback_p true.
9496         Don't return a value.
9497         (convert_extracted_bit_field): New function, extracted from
9498         store_bit_field.
9499         (extract_bit_field_1): Likewise.  Take a fallback_p argument
9500         and return NULL if the operation succeeded.  Only use
9501         extract_fixed_bit_field if fallback_p.  Only calculate one
9502         extraction mode.  Combine code for extv and extzv.  Try forcing
9503         memories into registers if the ext(z)v expander fails.
9504         (extract_bit_field): Use extract_bit_field_1 with fallback_p true.
9505
9506 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
9507
9508         * df.h (df_mw_hardreg): Turn df_ref_type and df_ref_flags
9509         into bitfields.
9510         (df_ref): Likewise.  Put regno with other integer fields.
9511
9512 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
9513
9514         * df.h (df_mw_hardreg): Remove "loc" field.
9515         * df-scan.c (df_ref_record): Don't set it.  Remove redundant
9516         local variable.
9517         * df-problems.c (df_whole_mw_reg_unused_p): New function,
9518         split out from df_set_unused_notes_for_mw.  Return false for
9519         partial references.  Assert that mw_reg is a REG when returning true.
9520         (df_set_unused_notes_for_mw): Use it.  Use mw_reg instead of *loc.
9521         (df_whole_mw_reg_dead_p): New function, split out from
9522         df_set_dead_notes_for_mw.  Return false for partial references.
9523         Assert that mw_reg is a REG when returning true.
9524         (df_set_dead_notes_for_mw): Use it.  Use mw_reg instead of *loc.
9525         Remove redundant bitmap check.
9526
9527 2007-07-26  H.J. Lu  <hongjiu.lu@intel.com>
9528
9529         * config/ia64/t-ia64 ($(T)crtbegin.o): Removed.
9530         ($(T)crtend.o): Likwise.
9531         ($(T)crtbeginS.o): Likwise.
9532         ($(T)crtendS.o): Likwise.
9533         ($(T)crtfastmath.o): Likwise.
9534
9535 2007-07-26  Zdenek Dvorak  <dvorakz@suse.cz>
9536
9537         * dominance.c (dom_computed, n_bbs_in_dom_tree): Removed.
9538         * function.h (dom_computed, n_bbs_in_dom_tree): New macros.
9539         * basic-block.h (struct control_flow_graph): Added x_dom_computed
9540         and x_n_bbs_in_dom_tree fields.
9541
9542 2007-07-26  Steve Ellcey  <sje@cup.hp.com>
9543
9544         PR tree-optimization/32087
9545         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop):
9546         Do not call scale_bbs_frequencies_int with prob of zero.
9547
9548 2007-07-26  Julian Brown  <julian@codesourcery.com>
9549
9550         * config/arm/arm-protos.h (neon_lane_bounds, neon_const_bounds)
9551         (neon_element_bits): Add prototypes.
9552         * config/arm/arm.c (bounds_check, neon_lane_bounds)
9553         (neon_const_bounds, neon_element_bits): New functions.
9554         * config/arm/neon.md (neon_vget_lane<mode>, neon_vget_lanedi)
9555         (neon_vget_lanev2di, neon_vset_lane<mode>, neon_vset_lanedi)
9556         (neon_vset_lanev2di, neon_vdup_lane<mode>, neon_vdup_lanedi)
9557         (neon_vdup_lanev2di, neon_vcvt_n<mode>, neon_vmul_lane<mode>)
9558         (neon_vmull_lane<mode>, neon_vqdmull_lane<mode>)
9559         (neon_vqdmulh_lane<mode>, neon_vmla_lane<mode>)
9560         (neon_vmlal_lane<mode>, neon_vqdmlal_lane<mode>)
9561         (neon_vmls_lane<mode>, neon_vmlsl_lane<mode>)
9562         (neon_vqdmlsl_lane<mode>, neon_vext<mode>, neon_vshr_n<mode>)
9563         (neon_vshrn_n<mode>, neon_vqshrn_n<mode>, neon_vqshrun_n<mode>)
9564         (neon_vshl_n<mode>, neon_vshl_n<mode>, neon_vqshl_n<mode>)
9565         (neon_vqshlu_n<mode>, neon_vshll_n<mode>, neon_vsra_n<mode>)
9566         (neon_vsri_n<mode>, neon_vsli_n<mode>): Add bounds checks.
9567
9568 2007-07-26  Nathan Froyd  <froydnj@codesourcery.com>
9569
9570         * config/vxworks.h (VXWORKS_LINK_SPEC): Fix typo.
9571         (HAVE_AS_GNU_ATTRIBUTE): Undefine.
9572
9573 2007-07-26  Mark Shinwell  <shinwell@codesourcery.com>
9574             Julian Brown  <julian@codesourcery.com>
9575
9576         * config/arm/arm.c (arm_mac_accumulator_is_mul_result): New.
9577         * config/arm/arm-protos.h (arm_mac_accumulator_is_mul_result): New.
9578         * config/arm/cortex-a8.md: New.
9579         * config/arm/cortex-a8-neon.md: New.
9580         * config/arm/neon-schedgen.ml: New.
9581         * config/arm/neon.md (vqh_mnem): New.
9582         (neon_type): New.
9583         (Is_float_mode): New.
9584         (Scalar_mul_8_16): New.
9585         (Is_d_reg): New.
9586         (V_mode_nunits): New.
9587         (All instruction patterns): Annotate with neon_type attribute
9588         values.
9589         * config/arm/arm.md: Include cortex-a8.md.
9590         (insn): Add smmla, umaal, smlald, smlsld, clz, mrs, msr and xtab
9591         values.
9592         Annotate instruction patterns accordingly.
9593         (generic_sched): Do not use generic scheduling for Cortex-A8.
9594         (generic_vfp): Do not use generic VFP scheduling for Cortex-A8.
9595
9596 2007-07-26  Daniel Jacobowitz  <dan@codesourcery.com>
9597
9598         * fold-const.c (fold_read_from_constant_string): Use
9599         build_int_cst_type.
9600         * tree-ssa-ccp.c (fold_const_aggregate_ref): Likewise.
9601
9602 2007-07-26  Nick Clifton  <nickc@redhat.com>
9603
9604         * tree-ssa-operands.h: Change copyright header to refer to version
9605         3 of the GNU General Public License and to point readers at the
9606         COPYING3 file and the FSF's license web page.
9607         * tree-vrp.c, regrename.c, attribs.c, loop-unswitch.c,
9608         sched-ebb.c, fwprop.c, tree-loop-linear.c, dwarf2asm.c,
9609         tree-into-ssa.c, dwarf2asm.h, tree-ssa-loop-im.c, sbitmap.c,
9610         targhooks.c, tree-dump.c, tree-complex.c, sbitmap.h, targhooks.h,
9611         tree-dump.h, regstat.c, see.c, machmode.h, hooks.c, cgraphbuild.c,
9612         hooks.h, genrecog.c, tree-ssa-threadupdate.c, gen-protos.c,
9613         flags.h, rtlhooks.c, gencheck.c, tree-ssa-loop-niter.c,
9614         opts-common.c, dbgcnt.def, tree-pretty-print.c, tracer.c,
9615         gengtype.c, mkconfig.sh, gengtype.h, tree-ssa-loop-unswitch.c,
9616         cgraph.c, c-lex.c, cgraph.h, libfuncs.h, cfgloopmanip.c,
9617         rtl-error.c, optabs.c, postreload-gcse.c, tree-ssa-loop-manip.c,
9618         optabs.h, genmddeps.c, defaults.h, postreload.c, value-prof.c,
9619         tree-ssa-loop-ch.c, tree-tailcall.c, gengenrtl.c, value-prof.h,
9620         genopinit.c, tree.c, tree.h, reload.c, tree-pass.h, ipa-cp.c,
9621         reload.h, bitmap.c, bitmap.h, tree-scalar-evolution.c,
9622         c-config-lang.in, tree-scalar-evolution.h, target.h, cppspec.c,
9623         rtlanal.c, ddg.c, lambda-mat.c, mips-tdump.c, ddg.h,
9624         tree-phinodes.c, mips-tfile.c, pointer-set.c, pointer-set.h,
9625         diagnostic.c, final.c, diagnostic.h, builtins.c, genoutput.c,
9626         gcc.c, lists.c, tree-ssa-alias-warnings.c, gcc.h, cfghooks.c,
9627         input.h, gensupport.c, fold-const.c, cfghooks.h, insn-notes.def,
9628         gensupport.h, builtin-attrs.def, sync-builtins.def, params.c,
9629         cfgloopanal.c, params.h, graphds.c, omp-low.c, tree-ssa-dse.c,
9630         graphds.h, gcov.c, cfg.c, genextract.c, ipa-reference.c,
9631         genautomata.c, tree-ssa-uncprop.c, auto-inc-dec.c, toplev.c,
9632         tree-gimple.c, ipa-reference.h, vmsdbgout.c, errors.c, toplev.h,
9633         reorg.c, tree-gimple.h, tree-chrec.c, pretty-print.c, errors.h,
9634         real.c, tree-chrec.h, pretty-print.h, debug.c, real.h, genemit.c,
9635         omega.c, c-cppbuiltin.c, genmultilib, debug.h, omega.h,
9636         tree-ssa-sccvn.c, genconfig.c, tree-ssa-sccvn.h, cgraphunit.c,
9637         regs.h, df-scan.c, vec.c, hosthooks-def.h, vec.h,
9638         tree-ssa-copyrename.c, scan.c, builtin-types.def, tree-ssa-ccp.c,
9639         scan.h, mode-classes.def, haifa-sched.c, dominance.c, dojump.c,
9640         double-int.c, gcov-io.c, dbxout.c, builtins.def, double-int.h,
9641         dbxout.h, tree-ssa-loop-ivopts.c, df-core.c, mode-switching.c,
9642         gengtype-lex.l, tree-nomudflap.c, modulo-sched.c, c-objc-common.c,
9643         hosthooks.h, c-objc-common.h, caller-save.c, graph.c,
9644         ipa-pure-const.c, graph.h, c-format.c, cse.c, fix-header.c,
9645         c-format.h, web.c, tree-stdarg.c, genpeep.c, tree-stdarg.h,
9646         tree-ssa-math-opts.c, xcoffout.c, tree-ssa-dom.c, tree-nrv.c,
9647         xcoffout.h, tree-ssa-propagate.c, ipa-utils.c,
9648         tree-ssa-propagate.h, tree-ssa-alias.c, loop-init.c, ipa-utils.h,
9649         gimple-low.c, rtl.def, c-tree.h, tree-ssa-sink.c, ipa-inline.c,
9650         mkmap-symver.awk, machmode.def, c-pch.c, cfganal.c, global.c,
9651         alloc-pool.c, c-semantics.c, alloc-pool.h, jump.c, ifcvt.c,
9652         dwarf2out.c, expr.c, cfgbuild.c, tree-browser.c, dwarf2out.h,
9653         expr.h, longlong.h, opts.c, gcov-iov.c, opts.h, dwarf2.h,
9654         genattrtab.c, genconditions.c, genattr.c, optc-gen.awk,
9655         timevar.def, tree-ssa-loop-ivcanon.c, hard-reg-set.h, predict.c,
9656         tree-ssa-loop.c, host-default.c, predict.h, recog.c, dbgcnt.c,
9657         recog.h, dbgcnt.h, c-aux-info.c, tree-ssa-address.c, timevar.c,
9658         dse.c, lcm.c, tree-ssa-ifcombine.c, timevar.h, dse.h,
9659         matrix-reorg.c, tree-vn.c, treestruct.def, fp-test.c, c-decl.c,
9660         tree-eh.c, c-errors.c, c-pretty-print.c, regmove.c,
9661         lambda-trans.c, c-pretty-print.h, et-forest.c, et-forest.h,
9662         ebitmap.c, configure.ac, local-alloc.c, function.c, langhooks.c,
9663         ebitmap.h, cppdefault.c, tree-vectorizer.c, function.h,
9664         langhooks.h, print-rtl.c, cppdefault.h, df.h, tree-vectorizer.h,
9665         sdbout.c, stor-layout.c, sdbout.h, rtlhooks-def.h, read-rtl.c,
9666         gcse.c, ipa-type-escape.c, vmsdbg.h, alias.c, gengtype-parse.c,
9667         ipa-type-escape.h, domwalk.c, alias.h, tree-if-conv.c, profile.c,
9668         init-regs.c, domwalk.h, ipa.c, gccbug.in, tree-data-ref.c,
9669         loop-unroll.c, tree-data-ref.h, tree-flow-inline.h, tree-affine.c,
9670         mkmap-flat.awk, tree-affine.h, tree-vect-analyze.c, c.opt, ggc.h,
9671         opt-gather.awk, c-typeck.c, gimplify.c, coretypes.h, exec-tool.in,
9672         insn-addr.h, tree-ssa-phiopt.c, c-pragma.c, c-pragma.h, calls.c,
9673         tree-ssa-coalesce.c, genmodes.c, loop-doloop.c, predict.def,
9674         dwarf.h, tree.def, rtl-factoring.c, lower-subreg.c, expmed.c,
9675         bt-load.c, ggc-common.c, genflags.c, tree-dfa.c, except.c,
9676         coverage.c, except.h, emit-rtl.c, cfgexpand.c, coverage.h,
9677         stringpool.c, cselib.c, emit-rtl.h, tree-cfgcleanup.c, c-opts.c,
9678         cselib.h, cfgcleanup.c, simplify-rtx.c, tree-ssa-pre.c, explow.c,
9679         tree-ssa-live.c, tree-sra.c, tree-ssa-live.h, tree-predcom.c,
9680         loop-invariant.c, genpreds.c, protoize.c, opth-gen.awk, c-dump.c,
9681         lambda.h, loop-iv.c, tree-mudflap.c, ipa-prop.c, print-tree.c,
9682         tree-mudflap.h, tree-ssa-copy.c, ipa-prop.h, cfglayout.c,
9683         tree-ssa-forwprop.c, c-convert.c, cfglayout.h, common.opt,
9684         ggc-zone.c, ggc-page.c, c-omp.c, tree-ssa-dce.c, gencodes.c,
9685         varasm.c, tree-vect-patterns.c, libada-mk.in, tree-ssa-ter.c,
9686         sched-deps.c, tree-nested.c, c-ppoutput.c, tree-ssa.c,
9687         target-def.h, tree-ssa-loop-prefetch.c, lambda-code.c,
9688         omp-builtins.def, rtl.c, regclass.c, stab.def, intl.c, rtl.h,
9689         intl.h, tree-inline.c, conditions.h, tree-inline.h, integrate.c,
9690         sched-int.h, tree-iterator.c, integrate.h, tree-iterator.h,
9691         genchecksum.c, tree-optimize.c, output.h, tree-vect-transform.c,
9692         tree-object-size.c, combine.c, tree-outof-ssa.c, addresses.h,
9693         bb-reorder.c, stack-ptr-mod.c, resource.c, var-tracking.c,
9694         cfgloop.c, system.h, resource.h, ggc-none.c, tree-profile.c,
9695         cfgloop.h, c-gimplify.c, c-common.c, opt-functions.awk,
9696         tree-vect-generic.c, tree-flow.h, df-problems.c, scan-decls.c,
9697         c-common.h, config.gcc, reg-stack.c, tlink.c, main.c, stub-objc.c,
9698         fixproto, config.host, Makefile.in, gccspec.c, sched-rgn.c,
9699         vecprim.h, basic-block.h, tree-ssa-structalias.c,
9700         tree-ssa-structalias.h, c-common.def, sched-vis.c, tree-cfg.c,
9701         passes.c, genconstants.c, c-incpath.c, c-incpath.h,
9702         struct-equiv.c, c-parser.c, tree-ssa-reassoc.c, varray.c, sreal.c,
9703         varray.h, dfp.c, sreal.h, combine-stack-adj.c, dfp.h,
9704         reg-notes.def, cfgrtl.c, config.build, varpool.c, gengtype-yacc.y,
9705         stmt.c, dce.c, tree-browser.def, prefix.c, statistics.h,
9706         params.def, dce.h, c-lang.c, gcov-dump.c, prefix.h,
9707         tree-ssanames.c, collect2.c, collect2.h, tree-ssa-threadedge.c,
9708         convert.c, convert.h, langhooks-def.h, reload1.c,
9709         tree-ssa-operands.c: Likewise.
9710
9711 2007-07-26  Jan Hubicka  <jh@suse.cz>
9712
9713         * tree-ssa-live.c: Include debug.h and flags.h.
9714         (mark_scope_block_unused): New function.
9715         (remove_unused_scope_block_p): New function.
9716         (remove_unused_locals): Remove unused blocks too.
9717
9718 2007-07-25  Ian Lance Taylor  <iant@google.com>
9719
9720         * combine.c (combine_max_regno): Remove.  Remove all uses.
9721         (struct reg_stat_struct): Rename from struct reg_stat.
9722         (reg_stat_type): Define, and declare VECs.
9723         (reg_stat): Change from pointer to VEC.  Change all uses.
9724         (combine_split_insns): New static function.
9725         (try_combine, find_split_point): Call it instead of split_insns.
9726
9727 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
9728
9729         * cfghooks.c (split_block): Fix the information about loop latch.
9730
9731 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
9732
9733         * cfgloopmanip.c (fix_loop_structure): Call force_single_succ_latches.
9734
9735 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
9736
9737         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
9738         Scan the new edge for loop exit info.
9739
9740 2007-07-25  Andreas Tobler  <a.tobler@schweiz.org>
9741
9742         * config/darwin.c: Include debug.h.
9743
9744 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
9745
9746         PR target/32218
9747         * tree-vect-patterns.c (vect_pattern_recog_1): Check for valid type.
9748
9749 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
9750
9751         * config/ia64/ia64.h (HARD_REGNO_NREGS): Handle RFmode.
9752         (HARD_REGNO_MODE_OK): Ditto.
9753         (MODES_TIEABLE_P): Ditto.
9754         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
9755         (CLASS_MAX_NREGS): Ditto.
9756         * config/ia64/ia64.c (ia64_print_operand_address): Add R format.
9757         * config/ia64/ia64.md (divsf3_internal_thr): Removed.
9758         (divdf3_internal_thr): Removed.
9759         * config/ia64/div.md: New file.
9760         * config/ia64/constraints.md: Add H constraint.
9761
9762 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9763
9764         * sbitmap.c (sbitmap_verify_popcount, sbitmap_alloc_with_popcount,
9765         sbitmap_copy, sbitmap_copy_n, sbitmap_equal, sbitmap_empty_p,
9766         sbitmap_union_of_diff_cg, sbitmap_union_of_diff, sbitmap_not,
9767         sbitmap_difference, sbitmap_any_common_bits, sbitmap_a_and_b_cg,
9768         sbitmap_a_and_b, sbitmap_a_xor_b_cg, sbitmap_a_xor_b,
9769         sbitmap_a_or_b_cg, sbitmap_a_or_b, sbitmap_a_subset_b_p,
9770         sbitmap_a_or_b_and_c_cg, sbitmap_a_or_b_and_c,
9771         sbitmap_a_and_b_or_c_cg, sbitmap_a_and_b_or_c,
9772         sbitmap_first_set_bit, sbitmap_last_set_bit, dump_sbitmap,
9773         dump_sbitmap_file, debug_sbitmap, popcount_table,
9774         sbitmap_popcount): Constify.
9775         * sbitmap.h (const_sbitmap, const_sbitmap_ptr): New.
9776         (sbitmap_iterator, sbitmap_iter_init, dump_sbitmap,
9777         dump_sbitmap_file, sbitmap_copy, sbitmap_copy_n, sbitmap_equal,
9778         sbitmap_empty_p, sbitmap_union_of_diff, sbitmap_union_of_diff_cg,
9779         sbitmap_difference, sbitmap_not, sbitmap_a_or_b_and_c,
9780         sbitmap_a_or_b_and_c_cg, sbitmap_a_and_b_or_c,
9781         sbitmap_a_and_b_or_c_cg, sbitmap_any_common_bits, sbitmap_a_and_b,
9782         sbitmap_a_and_b_cg, sbitmap_a_or_b, sbitmap_a_or_b_cg,
9783         sbitmap_a_xor_b, sbitmap_a_xor_b_cg, sbitmap_a_subset_b_p,
9784         sbitmap_first_set_bit, sbitmap_last_set_bit, debug_sbitmap,
9785         sbitmap_popcount, sbitmap_verify_popcount): Constify.
9786
9787 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9788
9789         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_element_zerop,
9790         bitmap_copy, bitmap_clear_bit, popcount_table, bitmap_count_bits,
9791         bitmap_first_set_bit, bitmap_and, bitmap_and_into,
9792         bitmap_elt_copy, bitmap_and_compl, bitmap_and_compl_into,
9793         bitmap_compl_and_into, bitmap_elt_ior, bitmap_ior,
9794         bitmap_ior_into, bitmap_xor, bitmap_xor_into, bitmap_equal_p,
9795         bitmap_intersect_p, bitmap_intersect_compl_p,
9796         bitmap_ior_and_compl, bitmap_ior_and_compl_into,
9797         debug_bitmap_file, debug_bitmap, bitmap_print, bitmap_hash):
9798         Constify.
9799         * bitmap.h (bitmap_copy, bitmap_equal_p, bitmap_intersect_p,
9800         bitmap_intersect_compl_p, bitmap_count_bits, bitmap_and,
9801         bitmap_and_into, bitmap_and_compl, bitmap_and_compl_into,
9802         bitmap_compl_and_into, bitmap_ior, bitmap_ior_into, bitmap_xor,
9803         bitmap_xor_into, bitmap_ior_and_compl, bitmap_ior_and_compl_into,
9804         debug_bitmap, debug_bitmap_file, bitmap_print,
9805         bitmap_first_set_bit, bitmap_hash, bmp_iter_set_init,
9806         bmp_iter_and_init, bmp_iter_and_compl_init): Likewise.
9807
9808 2007-07-25  Daniel Berlin  <dberlin@dberlin.org>
9809
9810         * config/darwin.c (darwin_override_options): Additional fix for
9811         debug info formats that don't support var tracking.
9812
9813 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9814
9815         * cselib.c (entry_and_rtx_equal_p): Constify.
9816         * gengtype.c (output_mangled_typename, write_types, write_local):
9817         Likewise.
9818         * gengtype.h (const_type_p): New.
9819         * see.c (eq_descriptor_extension, hash_descriptor_extension):
9820         Constify.
9821         * tlink.c (scan_linker_output): De-constify.
9822         * tree-ssa-loop-im.c (memref_eq): Constify.
9823         * tree-ssa-structalias.c (const_shared_bitmap_info_t): New.
9824         (shared_bitmap_hash, shared_bitmap_eq): Constify.
9825
9826 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9827
9828         * c-common.c (fname_as_string, c_type_hash): Constify.
9829         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
9830         * cgraph.c (edge_hash, edge_eq): Likewise.
9831         * dwarf2out.c (decl_die_table_eq, decl_loc_table_eq): Likewise.
9832         * emit-rtl.c (mem_attrs_htab_eq, reg_attrs_htab_hash,
9833         reg_attrs_htab_eq): Likewise.
9834         * except.c (t2r_eq, t2r_hash, ttypes_filter_eq, ehl_hash, ehl_eq):
9835         Likewise.
9836         * genautomata.c (const_reserv_sets_t, const_unit_decl_t,
9837         const_decl_t, const_state_t, const_automata_list_el_t): New.
9838         (first_out_arc, DECL_UNIT, DECL_BYPASS, DECL_AUTOMATON, DECL_EXCL,
9839         DECL_PRESENCE, DECL_ABSENCE, DECL_RESERV, DECL_INSN_RESERV,
9840         automaton_decl_hash, automaton_decl_eq_p, insn_decl_hash,
9841         insn_decl_eq_p, decl_hash, decl_eq_p, alt_state_cmp,
9842         reserv_sets_cmp, reserv_sets_eq, state_hash, state_eq_p,
9843         automata_list_hash, automata_list_eq_p, compare_states_for_equiv,
9844         compare_max_occ_cycle_nums, out_state_arcs_num,
9845         compare_transition_els_num, units_cmp, state_reservs_cmp):
9846         Constify.
9847         * genmodes.c (cmp_modes): Likewise.
9848         * ggc-common.c (saving_htab_hash, saving_htab_eq): Likewise.
9849         * gimplify.c (compare_case_labels): Likewise.
9850         * ipa-type-escape.c (get_name_of_type, type_brand_s): Likewise.
9851         * loop-unroll.c (si_info_hash, ve_info_hash): Likewise.
9852         * matrix-reorg.c (mtt_info_hash): Likewise.
9853         * postreload-gcse.c (hash_expr_for_htab, expr_equiv_p): Likewise.
9854         * rtl-factoring.c (const_p_hash_bucket, const_p_hash_elem): New.
9855         (htab_hash_bucket, htab_hash_elem): Constify.
9856         * tree-browser.c (TB_parent_eq): Likewise.
9857         * tree-scalar-evolution.c (hash_scev_info): Likewise.
9858         * tree-ssa-alias.c (sort_tags_by_id): Likewise.
9859         * tree-ssa-coalesce.c (const_coalesce_pair_p): New.
9860         (coalesce_pair_map_hash, coalesce_pair_map_eq, compare_pairs):
9861         Constify.
9862         * tree-ssa-dom.c (avail_expr_hash, avail_expr_eq): Likewise.
9863         * tree-ssa-pre.c (const_expr_pred_trans_t): New.
9864         (expr_pred_trans_hash, expr_pred_trans_eq): Constify.
9865         * tree-ssa-sccvn.c (const_vn_binary_op_t, const_vn_unary_op_t,
9866         const_vn_phi_t, const_vn_reference_op_t, const_vn_reference_t):
9867         New.
9868         (vn_reference_op_eq, vn_reference_hash, vn_reference_eq,
9869         vn_unary_op_hash, vn_unary_op_eq, vn_binary_op_hash,
9870         vn_binary_op_eq, vn_phi_hash, vn_phi_eq): Constify.
9871         * tree-ssa-threadupdate.c (redirection_data_hash,
9872         redirection_data_eq): Likewise. 
9873         * tree-ssa-uncprop.c (equiv_hash, equiv_eq): Likewise.
9874         * tree-ssa.c (var_ann_eq): Likewise.
9875         * tree-vrp.c (compare_case_labels): Likewise.
9876         * tree.c (int_cst_hash_hash, int_cst_hash_eq,
9877         tree_map_base_marked_p, type_hash_marked_p, tree_check_failed,
9878         tree_not_check_failed, tree_class_check_failed,
9879         tree_range_check_failed, tree_not_class_check_failed,
9880         omp_clause_check_failed, omp_clause_range_check_failed,
9881         tree_contains_struct_check_failed, tree_operand_check_failed):
9882         Likewise. 
9883         * tree.h (tree_contains_struct_check_failed, tree_check_failed,
9884         tree_not_check_failed, tree_class_check_failed,
9885         tree_range_check_failed, tree_not_class_check_failed,
9886         tree_operand_check_failed, omp_clause_operand_check_failed,
9887         tree_operand_length): Likewise. 
9888         * var-tracking.c (const_variable): New.
9889         (variable_htab_hash, variable_htab_eq): Constify.
9890         * varasm.c (const_desc_hash): Likewise.
9891
9892 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9893
9894         * expr.c (handled_component_p): Constify.
9895         * fold-const.c (fit_double_type): Likewise.
9896         * real.h (real_value_from_int_cst): Likewise.
9897         * tree-flow-inline.h (gimple_in_ssa_p,
9898         gimple_aliases_computed_p, gimple_addressable_vars,
9899         gimple_call_clobbered_vars, gimple_referenced_vars,
9900         gimple_global_var, gimple_nonlocal_all, gimple_var_anns,
9901         end_htab_p, end_referenced_vars_p, var_ann, function_ann,
9902         may_aliases, end_readonly_imm_use_p, has_zero_uses,
9903         has_single_use, single_imm_use, num_imm_uses, is_exec_stmt,
9904         is_label_stmt, is_global_var, phi_ssa_name_p,
9905         factoring_name_p, is_call_clobbered, tree_common_ann,
9906         op_iter_done, end_imm_use_stmt_p, end_imm_use_on_stmt_p,
9907         unmodifiable_var_p, array_ref_contains_indirect_ref,
9908         ref_contains_array_ref, lookup_subvars_for_var,
9909         var_can_have_subvars, overlap_subvar, gimple_ssa_operands,
9910         gimple_mem_ref_stats): Likewise.
9911         * tree-flow.h (tree_common_ann, var_ann, function_ann,
9912         may_aliases, is_exec_stmt, is_label_stmt,
9913         ref_contains_array_ref, array_ref_contains_indirect_ref,
9914         var_can_have_subvars, overlap_subvar, is_call_clobbered,
9915         unmodifiable_var_p): Likewise.
9916         * tree-gimple.c (is_gimple_min_invariant): Likewise.
9917         * tree-gimple.h (is_gimple_min_invariant): Likewise. 
9918         * tree.c (type_hash_list, attribute_hash_list, tree_size,
9919         cst_and_fits_in_hwi, real_value_from_int_cst,
9920         build_real_from_int_cst, integer_zerop, integer_onep,
9921         integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2,
9922         tree_floor_log2, real_zerop, real_onep, real_twop,
9923         real_minus_onep, really_constant_p, purpose_member, chain_member,
9924         list_length, fields_length, int_size_in_bytes, bit_position,
9925         int_bit_position, byte_position, int_byte_position, expr_align,
9926         array_type_nelts, tree_node_structure,
9927         type_contains_placeholder_1, iterative_hash_pointer,
9928         is_attribute_with_length_p, is_attribute_p, check_qualified_type,
9929         tree_map_base_eq, type_hash_list, type_hash_eq,
9930         attribute_hash_list, type_num_arguments, tree_int_cst_equal,
9931         tree_int_cst_lt, tree_int_cst_compare, host_integerp,
9932         tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
9933         simple_cst_list_equal, compare_tree_int, iterative_hash_expr,
9934         int_fits_type_p, get_containing_scope, decl_function_context,
9935         decl_type_context, omp_clause_operand_check_failed,
9936         initializer_zerop, int_cst_value, num_ending_zeros): Likewise.
9937         * tree.h (omp_clause_operand_check_failed, tree_size,
9938         build_real_from_int_cst, array_type_nelts, purpose_member,
9939         tree_int_cst_equal, tree_int_cst_lt, tree_int_cst_compare,
9940         host_integerp, tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
9941         is_attribute_p, check_qualified_type, expr_align,
9942         int_size_in_bytes, bit_position, int_bit_position, byte_position,
9943         int_byte_position, list_length, fields_length, initializer_zerop,
9944         integer_zerop, integer_onep, integer_all_onesp, integer_pow2p,
9945         integer_nonzerop, cst_and_fits_in_hwi, num_ending_zeros,
9946         tree_node_structure, handled_component_p, get_containing_scope,
9947         decl_function_context, decl_type_context, real_zerop,
9948         type_num_arguments, fit_double_type, really_constant_p,
9949         int_fits_type_p, tree_log2, tree_floor_log2, iterative_hash_expr,
9950         compare_tree_int, chain_member, simple_cst_list_equal, real_onep,
9951         real_twop, real_minus_onep, int_cst_value): Likewise.
9952
9953 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9954
9955         * cfglayout.c (insn_scope, insn_line): Constify.
9956         * emit-rtl.c (const_int_htab_hash, const_int_htab_eq,
9957         const_double_htab_hash, const_double_htab_eq,
9958         mem_attrs_htab_hash): Likewise.
9959         * loop-iv.c (biv_eq): Likewise.
9960         * print-rtl.c (print_rtx, print_decl_name, print_mem_expr,
9961         print_inline_rtx, debug_rtx, debug_rtx_list, debug_rtx_range,
9962         debug_rtx_find, print_rtl, print_rtl_single, print_simple_rtl):
9963         Likewise. 
9964         * rtl-error.c (location_for_asm, diagnostic_for_asm,
9965         error_for_asm, warning_for_asm, _fatal_insn,
9966         _fatal_insn_not_found): Likewise. 
9967         * rtl.c (rtx_size, shared_const_p, shallow_copy_rtx_stat,
9968         rtx_equal_p, rtl_check_failed_bounds, rtl_check_failed_type1,
9969         rtl_check_failed_type2, rtl_check_failed_code1,
9970         rtl_check_failed_code2, rtl_check_failed_code_mode,
9971         rtvec_check_failed_bounds, rtl_check_failed_flag): Likewise.
9972         * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
9973         rtl_check_failed_type2, rtl_check_failed_code1,
9974         rtl_check_failed_code2, rtl_check_failed_code_mode,
9975         rtvec_check_failed_bounds, rtl_check_failed_flag, LABEL_KIND,
9976         SET_LABEL_KIND, rhs_regno, subreg_lsb, subreg_regno, subreg_nregs,
9977         shared_const_p, rtx_size, shallow_copy_rtx_stat, rtx_equal_p,
9978         get_pool_mode, insn_line, insn_file, simplify_replace_rtx,
9979         mode_signbit_p, rtx_addr_can_trap_p, nonzero_address_p,
9980         rtx_unstable_p, get_integer_term, get_related_value,
9981         offset_within_block_p, reg_mentioned_p, count_occurrences,
9982         reg_referenced_p, reg_used_between_p, no_labels_between_p,
9983         single_set_2, multiple_sets, set_noop_p, refers_to_regno_p,
9984         reg_overlap_mentioned_p, dead_or_set_p, dead_or_set_regno_p,
9985         find_reg_note, find_regno_note, find_reg_equal_equiv_note,
9986         find_constant_src, find_reg_fusage, find_regno_fusage,
9987         pure_call_p, remove_note, side_effects_p, volatile_refs_p,
9988         volatile_insn_p, may_trap_p, may_trap_after_code_motion_p,
9989         may_trap_or_fault_p, inequality_comparisons_p, tablejump_p,
9990         computed_jump_p, auto_inc_p, in_expr_list_p,
9991         remove_node_from_expr_list, loc_mentioned_in_p,
9992         label_is_jump_target_p, reversed_comparison_code_parts,
9993         debug_rtx, debug_rtx_list, debug_rtx_range, debug_rtx_find,
9994         print_mem_expr, print_rtl, print_simple_rtl, print_rtl_single,
9995         print_inline_rtx): Likewise.
9996         * rtlanal.c (covers_regno_p, covers_regno_no_parallel_p,
9997         computed_jump_p_1, nonzero_bits1, rtx_unstable_p,
9998         rtx_addr_can_trap_p_1, rtx_addr_can_trap_p, nonzero_address_p,
9999         get_integer_term, get_related_value, offset_within_block_p,
10000         count_occurrences, reg_mentioned_p, no_labels_between_p,
10001         reg_used_between_p, reg_referenced_p, single_set_2,
10002         multiple_sets, set_noop_p, refers_to_regno_p,
10003         reg_overlap_mentioned_p, dead_or_set_p,
10004         covers_regno_no_parallel_p, covers_regno_p,
10005         dead_or_set_regno_p, find_reg_note, find_regno_note,
10006         find_reg_equal_equiv_note, find_constant_src, find_reg_fusage,
10007         find_regno_fusage, pure_call_p, remove_note, in_expr_list_p,
10008         remove_node_from_expr_list, volatile_insn_p, volatile_refs_p,
10009         side_effects_p, may_trap_p_1, may_trap_p,
10010         may_trap_after_code_motion_p, may_trap_or_fault_p,
10011         inequality_comparisons_p, tablejump_p, computed_jump_p_1,
10012         computed_jump_p, auto_inc_p, loc_mentioned_in_p, subreg_lsb,
10013         subreg_regno, subreg_nregs, label_is_jump_target_p): Likewise.
10014         * simplify-rtx.c (neg_const_int, plus_minus_operand_p,
10015         mode_signbit_p, simplify_replace_rtx, plus_minus_operand_p):
10016         Likewise. 
10017         * toplev.h (_fatal_insn_not_found, _fatal_insn, error_for_asm,
10018         warning_for_asm): Likewise.
10019         * tree.h (print_rtl): Likewise.
10020         * varasm.c (get_pool_mode): Likewise.
10021
10022 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10023
10024         * c-lex.c (c_lex_with_flags, lex_string): Constify.
10025         * c-ppoutput.c (print_line, pp_dir_change): Likewise.
10026         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
10027         * cfg.c (bb_copy_original_hash, bb_copy_original_eq): Likewise.
10028         * cfgloop.c (loop_exit_hash, loop_exit_eq): Likewise.
10029         * ddg.c (compare_sccs): Likewise.
10030         * df-scan.c (df_ref_compare, df_mw_compare): Likewise.
10031         * dfp.c (decimal_real_from_string, decimal_to_decnumber,
10032         decimal_to_binary, decimal_do_compare, decimal_real_to_decimal,
10033         decimal_do_fix_trunc, decimal_real_to_integer,
10034         decimal_real_to_integer2, decimal_real_maxval): Likewise.
10035         * dse.c (const_group_info_t): New.
10036         (invariant_group_base_eq, invariant_group_base_hash): Constify.
10037         * dwarf2out.c (const_dw_die_ref): New.
10038         (decl_die_table_hash, decl_die_table_eq, file_info_cmp): Constify.
10039         * tree-browser.c (TB_parent_eq): Likewise.
10040         * unwind-dw2-fde.c (__register_frame_info_bases,
10041         __deregister_frame_info_bases, fde_unencoded_compare, fde_split,
10042         add_fdes, linear_search_fdes, binary_search_unencoded_fdes):
10043         Likewise.
10044         * unwind-dw2-fde.h (get_cie, next_fde): Likewise.
10045         * unwind-dw2.c (uw_frame_state_for): Likewise.
10046         * value-prof.c (histogram_hash, histogram_eq): Likewise.
10047         * value-prof.h (const_histogram_value): New.
10048
10049 2007-07-25  Richard Sandiford  <richard@codesourcery.com>
10050
10051         * config/mips/mips.c (machine_function): Add
10052         initialized_mips16_gp_pseudo_p.
10053         (mips16_gp_pseudo_reg): Do not emit the initialization of
10054         mips16_gp_pseudo_rtx when being called from the gimple cost-
10055         calculation routines; emit it on the first use outside those
10056         routines.
10057
10058 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10059
10060         * coretypes.h (const_bitmap, const_rtx, const_rtvec, const_tree):
10061         New.
10062         
10063         * rtl.h (RTL_CHECK1, RTL_CHECK2, RTL_CHECKC1, RTL_CHECKC2,
10064         RTVEC_ELT, XWINT, XCWINT, XCMWINT, XCNMPRV, BLOCK_SYMBOL_CHECK,
10065         RTL_FLAG_CHECK1, RTL_FLAG_CHECK2, RTL_FLAG_CHECK3,
10066         RTL_FLAG_CHECK4, RTL_FLAG_CHECK5, RTL_FLAG_CHECK6,
10067         RTL_FLAG_CHECK7, RTL_FLAG_CHECK8, LABEL_KIND, SET_LABEL_KIND):
10068         Preserve const-ness of parameters through use of __typeof(),
10069         also constify and tidy.
10070         
10071         * tree.h (TREE_CHECK, TREE_NOT_CHECK, TREE_CHECK2,
10072         TREE_NOT_CHECK2, TREE_CHECK3, TREE_NOT_CHECK3, TREE_CHECK4,
10073         NON_TREE_CHECK4, TREE_CHECK5, TREE_NOT_CHECK5,
10074         CONTAINS_STRUCT_CHECK, TREE_CLASS_CHECK, TREE_RANGE_CHECK,
10075         OMP_CLAUSE_SUBCODE_CHECK, OMP_CLAUSE_RANGE_CHECK, EXPR_CHECK,
10076         GIMPLE_STMT_CHECK, NON_TYPE_CHECK, TREE_VEC_ELT_CHECK,
10077         PHI_NODE_ELT_CHECK, OMP_CLAUSE_ELT_CHECK, TREE_OPERAND_CHECK,
10078         TREE_OPERAND_CHECK_CODE, GIMPLE_STMT_OPERAND_CHECK,
10079         TREE_RTL_OPERAND_CHECK, TREE_CHAIN, TREE_TYPE): Likewise.
10080
10081 2007-07-25  Julian Brown  <julian@codesourcery.com>
10082             Mark Shinwell  <shinwell@codesourcery.com>
10083
10084         * config/alpha/alpha.c (alpha_mangle_fundamental_type): Rename to...
10085         (alpha_mangle_type): This.
10086         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
10087         (TARGET_MANGLE_TYPE): Define this instead.
10088         * config/arm/arm-protos.h (arm_mangle_type): Add prototype.
10089         * config/arm/arm.c (TARGET_MANGLE_TYPE): Define target hook.
10090         (arm_init_neon_builtins): Fix comment.
10091         (arm_mangle_map_entry): New.
10092         (arm_mangle_map): New.
10093         (arm_mangle_type): New.
10094         * config/i386/i386.c (ix86_mangle_fundamental_type): Rename to...
10095         (ix86_mangle_type): This. Use TYPE_MAIN_VARIANT and restrict
10096         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
10097         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
10098         (TARGET_MANGLE_TYPE): Define this instead.
10099         * config/ia64/ia64.c (ia64_mangle_fundamental_type): Rename to...
10100         (ia64_mangle_type): This. Use TYPE_MAIN_VARIANT  and restrict
10101         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
10102         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
10103         (TARGET_MANGLE_TYPE): Define this instead.
10104         * config/rs6000/rs6000.c (rs6000_mangle_fundamental_type): Rename
10105         to...
10106         (rs6000_mangle_type): This. Use TYPE_MAIN_VARIANT.
10107         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
10108         (TARGET_MANGLE_TYPE): Define this instead.
10109         * config/s390/s390.c (s390_mangle_fundamental_type): Rename to...
10110         (s390_mangle_type): This.
10111         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
10112         (TARGET_MANGLE_TYPE): Define this instead.
10113         * config/sparc/sparc.c (sparc_mangle_fundamental_type): Rename to...
10114         (sparc_mangle_type): This.
10115         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
10116         (TARGET_MANGLE_TYPE): Define this instead.
10117         * cp/mangle.c (write_type): Call mangle_type target hook on all
10118         types before mangling.  Use original type, not main variant, as
10119         argument.
10120         * target-def.h (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename hook to...
10121         (TARGET_MANGLE_TYPE): This.
10122         * target.h (gcc_target): Rename mangle_fundamental_type to
10123         mangle_type.
10124         * doc/tm.texi (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename section to...
10125         (TARGET_MANGLE_TYPE): This. Note slightly different semantics.
10126
10127 2007-07-25  Julian Brown  <julian@codesourcery.com>
10128             Paul Brook  <paul@codesourcery.com>
10129             Joseph Myers  <joseph@codesourcery.com>
10130             Mark Shinwell  <shinwell@codesourcery.com>
10131
10132         * Makefile.in (TEXI_GCC_FILES): Add arm-neon-intrinsics.texi.
10133         * config.gcc (arm*-*-*): Add arm_neon.h to extra headers.
10134         (with_fpu): Allow --with-fpu=neon.
10135         * config/arm/aof.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
10136         * config/arm/aout.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
10137         * config/arm/arm-modes.def (EI, OI, CI, XI): New modes.
10138         * config/arm/arm-protos.h (neon_immediate_valid_for_move)
10139         (neon_immediate_valid_for_logic, neon_output_logic_immediate)
10140         (neon_pairwise_reduce, neon_expand_vector_init, neon_reinterpret)
10141         (neon_emit_pair_result_insn, neon_disambiguate_copy)
10142         (neon_vector_mem_operand, neon_struct_mem_operand, output_move_quad)
10143         (output_move_neon): Add prototypes.
10144         * config/arm/arm.c (FL_NEON): New flag for NEON processor capability.
10145         (all_fpus): Add FPUTYPE_NEON.
10146         (fp_model_for_fpu): Add NEON field.
10147         (arm_return_in_memory): Return vectors <= 16 bytes in ARM registers.
10148         (arm_arg_partial_bytes): Allow NEON vectors to be passed partially
10149         in registers.
10150         (arm_legitimate_address_p): Don't support fancy addressing for NEON
10151         structure moves.
10152         (thumb2_legitimate_address_p): Likewise.
10153         (neon_valid_immediate): Recognize and prepare constants suitable for
10154         NEON instructions.
10155         (neon_immediate_valid_for_move): New function. Recognize and prepare
10156         immediates for NEON move instructions.
10157         (neon_immediate_valid_for_logic): New function. Recognize and
10158         prepare immediates for NEON logic instructions.
10159         (neon_output_logic_immediate): New function. Create asm string
10160         suitable for outputting immediate logic instructions.
10161         (neon_pairwise_reduce): New function. Implement reduction using
10162         pairwise operations.
10163         (neon_expand_vector_init): New function. Expand a (possibly
10164         non-constant) vector initialization.
10165         (neon_vector_mem_operand): New function. Memory operands supported
10166         for quad-word loads/stores to/from ARM or NEON registers. Don't
10167         allow base+offset addressing for core regs.
10168         (neon_struct_mem_operand): New function. Valid mems for NEON
10169         structure moves.
10170         (coproc_secondary_reload_class): Enable NEON registers to be loaded
10171         from neon_vector_mem_operand addresses without a secondary register.
10172         (add_minipool_forward_ref): Handle >8-byte minipool entries.
10173         (add_minipool_backward_ref): Likewise.
10174         (dump_minipool): Likewise.
10175         (push_minipool_fix): Likewise.
10176         (output_move_quad): New function. Output quad-word moves, loads and
10177         stores using ARM registers.
10178         (output_move_vfp): Add support for vectors in VFP (NEON) D
10179         registers.
10180         (output_move_neon): Output a NEON load/store to/from a quadword
10181         register.
10182         (arm_print_operand): Implement new codes:
10183         - 'c' for unadorned integers (without a # sign).
10184         - 'J', 'K' for reg+2/reg+3, reg+3/reg+2 in little/big-endian
10185         mode.
10186         - 'e', 'f' for the low and high D parts of a NEON Q register.
10187         - 'q' outputs a NEON Q register.
10188         - 'h' outputs ranges of D registers for VLDM/VSTM etc.
10189         - 'T' prints NEON opcode features from a coded bitmask.
10190         - 'F' is similar to T, but signed/unsigned codes both print as
10191         'i'.
10192         - 't' is similar to T, but 'u' is printed instead of 'p'.
10193         - 'O' prints 'r' if NEON instruction should perform rounding (as
10194         specified by bitmask), else prints nothing.
10195         - '#' is a punctuation character to stop operand numbers from
10196         running together with following digits in the assembler
10197         strings for instructions (when using mode attributes).
10198         (arm_assemble_integer): Handle extra NEON vector modes. Permute
10199         constant vectors in big-endian mode, where necessary.
10200         (arm_hard_regno_mode_ok): Allow vectors in VFP/NEON registers.
10201         Handle EI, OI, CI, XI modes.
10202         (ashlv4hi3, ashlv2si3, lshrv4hi3, lshrv2si3, ashrv4hi3)
10203         (ashrv2si3): Rename IWMMXT2_BUILTINs to...
10204         (ashlv4hi3_iwmmxt, ashlv2si3_iwmmxt, lshrv4hi3_iwmmxt)
10205         (lshrv2si3_iwmmxt, ashrv4hi3_iwmmxt, ashrv2si3_iwmmxt): New names.
10206         (neon_builtin_type_bits): Add enumeration, one bit for each vector
10207         type.
10208         (v8qi_UP, v4hi_UP, v2si_UP, v2sf_UP, di_UP, v16qi_UP, v8hi_UP)
10209         (v4si_UP, v4sf_UP, v2di_UP, ti_UP, ei_UP, oi_UP, UP): Define macros
10210         to turn v8qi, etc. into bits defined above.
10211         (neon_itype): New enumeration. Classifications of NEON builtins.
10212         (neon_builtin_datum): Define struct. Contains information about
10213         a single builtin (with multiple modes).
10214         (CF): Define helper macro for...
10215         (VAR1...VAR10): Define builtins with a type, name and 1-10 different
10216         modes.
10217         (neon_builtin_data): New array. Define information about builtins
10218         for use during initialization/expansion.
10219         (arm_init_neon_builtins): New function.
10220         (arm_init_builtins): Call arm_init_neon_builtins if TARGET_NEON is
10221         true.
10222         (neon_builtin_compare): New function.
10223         (locate_neon_builtin_icode): New function. Find an insn code for a
10224         builtin given a function code for that builtin. Also return type of
10225         builtin (NEON_BINOP, NEON_UNOP etc.).
10226         (builtin_arg): New enumeration. Types of arguments for builtins.
10227         (arm_expand_neon_args): New function. Expand a generic NEON builtin.
10228         Takes a variable argument list of builtin_arg types, terminated by
10229         NEON_ARG_STOP.
10230         (arm_expand_neon_builtin): New function. Expand a NEON builtin.
10231         (neon_reinterpret): New function. Expand NEON reinterpret intrinsic.
10232         (neon_emit_pair_result_insn): New function. Support returning pairs
10233         of vectors via a pointer.
10234         (neon_disambiguate_copy): New function. Set up operands for a
10235         multi-word copy such that registers do not get clobbered.
10236         (arm_expand_builtin): Call arm_expand_neon_builtin if fcode >=
10237         ARM_BUILTIN_NEON_BASE.
10238         (arm_file_start): Set float-abi attribute for NEON.
10239         (arm_vector_mode_supported_p): Enable NEON vector modes.
10240         (arm_mangle_map_entry): New.
10241         (arm_mangle_map): New.
10242         (arm_mangle_vector_type): New.
10243         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_NEON__
10244         when appropriate.
10245         (TARGET_NEON): New macro. Target supports NEON.
10246         (fputype): Add FPUTYPE_NEON.
10247         (UNITS_PER_SIMD_WORD): Define. Allow quad-word registers to be used
10248         for vectorization based on command-line arg.
10249         (NEON_REGNO_OK_FOR_NREGS): Define.
10250         (VALID_NEON_DREG_MODE, VALID_NEON_QREG_MODE)
10251         (VALID_NEON_STRUCT_MODE): Define.
10252         (PRINT_OPERAND_PUNCT_VALID_P): '#' is valid punctuation.
10253         (arm_builtins): Add ARM_BUILTIN_NEON_BASE.
10254         * config/arm/arm.md (VUNSPEC_POOL_16): Insert constant for unspec.
10255         (consttable_16): Add pattern for outputting 16-byte minipool
10256         entries.
10257         (movv2si, movv4hi, movv8qi): Remove blank expanders (redefined in
10258         vec-common.md).
10259         (vec-common.md, neon.md): Include md files.
10260         * config/arm/arm.opt (mvectorize-with-neon-quad): Add option.
10261         * config/arm/constraints.md (constraint "Dn", "Dl", "DL"): Define.
10262         (memory_constraint "Ut", "Un", "Us"): Define.
10263         * config/arm/iwmmxt.md (VMMX, VSHFT): New mode macros.
10264         (MMX_char): New mode attribute.
10265         (addv8qi3, addv4hi3, addv2si3): Remove. Replace with...
10266         (*add<mode>3_iwmmxt): New insn pattern.
10267         (subv8qi3, subv4hi3, subv2si3): Remove. Replace with...
10268         (*sub<mode>3_iwmmxt): New insn pattern.
10269         (mulv4hi3): Rename to...
10270         (*mulv4hi3_iwmmxt): This.
10271         (smaxv8qi3, smaxv4hi3, smaxv2si3, umaxv8qi3, umaxv4hi3)
10272         (umaxv2si3, sminv8qi3, sminv4hi3, sminv2si3, uminv8qi3)
10273         (uminv4hi3, uminv2si3): Remove. Replace with...
10274         (*smax<mode>3_iwmmxt, *umax<mode>3_iwmmxt, *smin<mode>3_iwmmxt)
10275         (*umin<mode>3_iwmmxt): These.
10276         (ashrv4hi3, ashrv2si3, ashrdi3_iwmmxt): Replace with...
10277         (ashr<mode>3_iwmmxt): This new pattern.
10278         (lshrv4hi3, lshrv2si3, lshrdi3_iwmmxt): Replace with...
10279         (lshr<mode>3_iwmmxt): This new pattern.
10280         (ashlv4hi3, ashlv2si3, ashldi3_iwmmxt): Replace with...
10281         (ashl<mode>3_iwmmxt): This new pattern.
10282         * config/arm/neon-docgen.ml: New file. Generate documentation for
10283         intrinsics.
10284         * config/arm/neon-gen.ml: New file. Generate arm_neon.h header.
10285         * config/arm/arm_neon.h: New (autogenerated).
10286         * config/arm/neon-testgen.ml: New file. Generate NEON tests
10287         automatically.
10288         * config/arm/neon.md: New file. Define NEON instructions.
10289         * config/arm/neon.ml: New file. Abstract description of NEON
10290         instructions, used to generate arm_neon.h header, documentation and
10291         tests.
10292         * config/arm/t-arm (MD_INCLUDES): Add vec-common.md, neon.md.
10293         * vec-common.md: New file. Shared parts for iWMMXt and NEON vector
10294         support.
10295         * doc/extend.texi (ARM Built-in Functions): Rename and remove
10296         extraneous comma.
10297         (ARM NEON Intrinsics): New subsection.
10298         * doc/arm-neon-intrinsics.texi: New (autogenerated).
10299
10300 2007-07-25  Danny Smith   <dannysmith@users.sourceforge.net>
10301
10302         * config/i386/i386-protos.h (i386_pe_asm_file_end): Remove
10303         prototype.
10304
10305 2007-07-24  Jan Hubicka  <jh@suse.cz>
10306
10307         * regclass.c (move_table): New type.
10308         (move_cost, may_move_in_cost, may_move_out_cost): Use it.
10309         (init_move_cost): Break out from ...
10310         (init_reg_sets_1): ... here; simplify computation of
10311         have_regs-of_mode and contains_reg_of_mode.
10312         (record_reg_classes): Unswitch internal loops.
10313         (copy_cost): Trigger lazy initialization of move cost
10314         (record_address_regs): Likewise.
10315
10316 2007-07-24  Daniel Berlin  <dberlin@dberlin.org>
10317
10318         * config/darwin.c (darwin_override_options): Don't force on
10319         flag_var_tracking_uninit when no debug info is requested.
10320
10321 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
10322
10323         * cfgloop.c (init_loops_structure): New function.
10324         (flow_loops_find): Create root of the loop tree unconditionally.
10325
10326 2007-07-24  Daniel Jacobowitz  <dan@codesourcery.com>
10327
10328         * tree-ssa-ccp.c (fold_const_aggregate_ref): Use fold_convert.
10329
10330 2007-07-24  Jan Hubicka  <jh@suse.cz>
10331
10332         * caller-save.c: Include ggc.h, gt-caller-save.h
10333         (reg_save_code, reg_restore_code): Rename to ...
10334         (cached_reg_save_code, cached_reg_restore_code): ... those.
10335         (savepat, restpat, test_reg, test_mem, saveinsn, restinsn): New.
10336         (reg_save_code, reg_restore_code): New functions.
10337         (init_caller_save): Do not intialize
10338         reg_save_code/reg_restore_code tables.
10339         * Makefile.in: (gt-caller-save.h): New.
10340
10341 2007-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
10342
10343         * tree-ssa-ifcombine.c (ifcombine_ifandif): Use a ONE operand
10344         with the mode of the original operand instead of
10345         integer_one_node.
10346
10347 2007-07-23  Jan Hubicka  <jH@suse.cz>
10348
10349         * i386.c (ix86_secondary_memory_needed): Break out to...
10350         (inline_secondary_memory_needed): ... here.
10351         (ix86_memory_move_cost): Break out to ...
10352         (inline_memory_move_cost): ... here; add support for IN value of 2 for
10353         maximum of input and output; fix handling of Q_REGS on 64bit.
10354         (ix86_secondary_memory_needed): Microoptimize.
10355
10356 2007-07-23  Sebastian Pop  <sebpop@gmail.com>
10357
10358         * tree-data-ref.c (find_vertex_for_stmt, create_rdg_edge_for_ddr,
10359         create_rdg_edges_for_scalar, create_rdg_edges, create_rdg_vertices,
10360         stmts_from_loop, known_dependences_p, build_rdg): New.
10361         * tree-data-ref.h: Depends on graphds.h.
10362         (rdg_vertex, RDGV_STMT, rdg_dep_type, rdg_edge, RDGE_TYPE): New.
10363         (build_rdg): Declared.
10364         * Makefile.in (TREE_DATA_REF_H): Depends on graphds.h.
10365
10366 2007-07-23  Daniel Berlin  <dberlin@dberlin.org>
10367
10368         * tree-ssa-propagate.c (valid_gimple_expression_p): Match up with
10369         ccp_min_invariant.
10370
10371 2007-07-23  Peter Bergner  <bergner@vnet.ibm.com>
10372             Jakub Jelinek  <jakub@redhat.com>
10373
10374         PR middle-end/PR28690
10375         * optabs.c (expand_binop): (emit_cmp_and_jump_insns): Allow
10376         EQ compares.
10377         * rtlanal.c (commutative_operand_precedence): Prefer both REG_POINTER
10378         and MEM_POINTER operands over REG and MEM operands.
10379         (swap_commutative_operands_p): Change return value to bool.
10380         * rtl.h: Update the corresponding prototype.
10381         * tree-ssa-address.c (gen_addr_rtx): Use simplify_gen_binary
10382         instead of gen_rtx_PLUS.
10383         * simplify-rtx.c (simplify_plus_minus_op_data_cmp): Change return
10384         value to bool.  Change function arguments to rtx's and update code
10385         to match.
10386         (simplify_plus_minus): Update the simplify_plus_minus_op_data_cmp
10387         calls to match the new declaration.
10388         * simplify-rtx.c (simplify_associative_operation): Don't
10389         reorder simplify_binary_operation arguments.
10390
10391 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
10392
10393         * config/mips/mips.c (override_options): Use mips_costs to derive
10394         the default branch cost.
10395         * config/mips/mips.h (BRANCH_COST): Use mips_branch_cost rather
10396         than mips_costs.
10397         * config/mips/mips.opt (mbranch-cost=): New option.
10398         * doc/invoke.texi (-mbranch-cost): Document new MIPS option.
10399
10400 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
10401
10402         * config/mips/mips.h (GR_REG_CLASS_P, COP_REG_CLASS_P): Delete.
10403         (SECONDARY_MEMORY_NEEDED): Delete commented-out definition.
10404         * config/mips/mips.c (mips_register_move_cost): Use reg_class_subset_p
10405         instead of GR_REG_CLASS_P and COP_REG_CLASS_P.
10406
10407 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
10408
10409         * config/mips/constraints.md (ks): New constraint.
10410         * config/mips/mips.md (*add<mode>3_sp1, *add<mode>3_sp2): Fold into...
10411         (*add<mode>3_mips16): ...here.
10412
10413 2007-07-21  Uros Bizjak  <ubizjak@gmail.com>
10414
10415         * optabs.h (enum optab_index): Add new OTI_signbit.
10416         (signbit_optab): Define corresponding macro.
10417         (enum insn_code signbit_optab[]): Remove array.
10418         * optabs.c (init_optabs): Initialize signbit_optab using init_optab.
10419         (expand_copysign_absneg): If back end provides signbit insn, use it
10420         instead of bit operations on floating point argument.
10421         * builtins.c (enum insn_code signbit_optab[]): Remove array.
10422         (expand_builtin_signbit): Check signbit_optab->handlers[].insn_code
10423         for availability of signbit insn.
10424
10425         * config/i386/i386.md (signbit<mode>2): New insn pattern to implement
10426         signbitf, signbit and signbitl built-ins as inline x87 intrinsics when
10427         SSE mode is not active.
10428         (isinf<mode>2): Disable for mfpmath=sse,387.
10429
10430 2007-07-22  Ben Elliston  <bje@au.ibm.com>
10431
10432         * regclass.c (invalid_mode_change_p): Attach ATTRIBUTE_UNUSED to
10433         `class' parameter.
10434         * struct-equiv.c (note_local_live): Likewise for `y_regno'.
10435
10436 2007-07-20  Richard Guenther  <rguenther@suse.de>
10437
10438         * tree-cfg.c (verify_expr): COND_EXPRs can have any
10439         integral typed condition.
10440         * tree-ssa.c (useless_type_conversion_p): Do not preserve
10441         booleanness.  Only preserve conversions from a non-base
10442         type to a base type, not in general between types with
10443         different TYPE_MIN_VALUE or TYPE_MAX_VALUE.
10444         * tree.def (COND_EXPR): Document that the condition
10445         can be of any integral type.
10446
10447 2007-07-20  Nigel Stephens  <nigel@mips.com>
10448             Richard Sandiford  <richard@codesourcery.com>
10449
10450         * config/mips/mips.h (mips_dwarf_regno): Declare.
10451         (DBX_REGISTER_NUMBER): Remove redundant brackets.
10452         (HI_REGNUM, LO_REGNUM): Define in an endian-dependent way.
10453         (AC1HI_REGNUM, AC1LO_REGNUM, AC2HI_REGNUM, AC2LO_REGNUM)
10454         (AC3HI_REGNUM, AC3LO_REGNUM, ACC_HI_REG_P): Delete.
10455         (reg_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
10456         (REG_CLASS_NAMES): Update accordingly.
10457         * config/mips/mips.c (mips_dwarf_regno): New array.
10458         (mips_regno_to_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
10459         (mips_subword): Remove special handling for accumulator registers.
10460         (override_options): Initiailize mips_dwarf_regno.  Remove use
10461         of ACC_HI_REG_P.
10462         (mips_swap_registers): New function.
10463         (mips_conditional_register_usage): Swap accumulator registers
10464         around if TARGET_LITTLE_ENDIAN.
10465         (mips_cannot_change_mode_class): Remove special treatment of ACC_REGS.
10466         * config/mips/constraints.md (h, l): Use the endianness to choose
10467         between MD0_REG and MD1_REG.
10468         * config/mips/mips.md (*mfhilo_<mode>_macc): Use a fixed-string,
10469         alternative-dependent template.
10470
10471 2007-07-20  Richard Sandiford  <richard@codesourcery.com>
10472
10473         * config/arm/arm.md (movsi): Use can_create_pseudo_p instead of
10474         no_new_pseudos.
10475
10476 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
10477
10478         * function.c (thread_prologue_and_epilogue_insns): Fix exit
10479         predecessor fallthru flags.
10480
10481 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
10482
10483         * tree-ssa-loop-niter.c (assert_loop_rolls_lt): Convert the operands
10484         of compare to the same type.
10485         * cfgloopmanip.c (add_loop): Update information about loop exits.
10486         (loop_version): Remove the innermost loop requirement.
10487         * tree-ssa-loop-manip.c (determine_exit_conditions): Convert bounds
10488         to sizetype for pointers.
10489
10490 2007-07-18  H.J. Lu  <hongjiu.lu@intel.com>
10491
10492         * Makefile.in (D32PBIT_FUNCS): Add _sd_to_tf and _tf_to_sd.
10493         (D64PBIT_FUNCS): Add _dd_to_tf and _tf_to_dd.
10494         (D128PBIT_FUNCS): Add _td_to_tf and _tf_to_td.
10495
10496         * config/dfp-bit.c: Empty for TFmode conversions.
10497
10498 2007-07-18  Caroline Tice  <ctice@apple.com>
10499         
10500         * var-tracking.c (find_src_status): Check for  COND_EXEC insns
10501         and handle them correctly; check that src is not NULL before
10502         trying to use it.
10503         (find_src_set_src): Likewise.
10504         
10505 2007-07-18  Bob Wilson  <bob.wilson@acm.org>
10506         
10507         * config/xtensa/xtensa.c (xtensa_expand_mask_and_shift): New.
10508         (struct alignment_context, init_alignment_context): New.
10509         (xtensa_expand_compare_and_swap, xtensa_expand_atomic): New.
10510         * config/xtensa/xtensa.h (XCHAL_HAVE_RELEASE_SYNC): Add default.
10511         (XCHAL_HAVE_S32C1I): Likewise.
10512         (TARGET_RELEASE_SYNC, TARGET_S32C1I): New.
10513         * config/xtensa/xtensa.md (UNSPECV_MEMW): New constant.
10514         (UNSPECV_S32RI, UNSPECV_S32C1I): Likewise.
10515         (ATOMIC, HQI): New macros.
10516         (memory_barrier, *memory_barrier): New.
10517         (sync_lock_releasesi): New.
10518         (sync_compare_and_swapsi, sync_compare_and_swap<mode>): New.
10519         (sync_lock_test_and_set<mode>): New.
10520         (sync_<atomic><mode>): New.
10521         (sync_old_<atomic><mode>, sync_new_<atomic><mode>): New.
10522         * config/xtensa/xtensa-protos.h (xtensa_expand_compare_and_swap): New.
10523         (xtensa_expand_atomic): New.
10524         
10525 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10526
10527         PR target/30652
10528
10529         * builtins.c (expand_builtin_interclass_mathfn): Provide a generic
10530         transformation for builtin ISNORMAL.
10531         (expand_builtin): Handle BUILT_IN_ISNORMAL.
10532         * builtins.def (BUILT_IN_ISNORMAL): New.
10533         * doc/extend.texi: Document isnormal.
10534
10535 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10536
10537         PR target/30652
10538
10539         * builtins.c (expand_builtin_interclass_mathfn): Allow for missing
10540         optabs infrastructure.  Provide generic implementation for
10541         FINITE/ISFINITE.
10542         (expand_builtin): Handle FINITE/ISFINITE.
10543         (fold_builtin_classify): Make ISFINITE canonical instead of FINITE.
10544         (fold_builtin_1): Likewise.
10545
10546         * builtins.def (BUILT_IN_ISFINITE): New.
10547
10548         * doc/extend.texi: Document isfinite.
10549
10550 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10551
10552         PR target/30652
10553         PR middle-end/20558
10554
10555         * builtins.c (expand_builtin_interclass_mathfn): Provide a
10556         generic fallback for isinf.
10557         * c-cppbuiltin.c (builtin_define_float_constants): Move FP max
10558         calculation code ...
10559         * real.c (get_max_float): ... to here.
10560         * real.h (get_max_float): New.
10561
10562 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10563
10564         PR middle-end/32668
10565
10566         * builtin-attrs.def (ATTR_TYPEGENERIC,
10567         ATTR_CONST_NOTHROW_TYPEGENERIC): New.
10568
10569         * builtins.def (BUILT_IN_ISINF, BUILT_IN_ISNAN,
10570         BUILT_IN_ISGREATER, BUILT_IN_ISGREATEREQUAL, BUILT_IN_ISLESS,
10571         BUILT_IN_ISLESSEQUAL, BUILT_IN_ISLESSGREATER,
10572         BUILT_IN_ISUNORDERED): Use ATTR_CONST_NOTHROW_TYPEGENERIC.
10573
10574         * c-common.c (handle_type_generic_attribute): New.
10575         (c_common_attribute_table): Add "type generic".
10576
10577         * c-typeck.c (convert_arguments): Handle "type generic" functions.
10578
10579 2007-07-18  Daniel Berlin  <dberlin@dberlin.org>
10580
10581         * tree-ssa-sccvn.c (try_to_simplify): Use valid_gimple_expression
10582         * tree-ssa-propagate (valid_gimple_expression): Handle ADDR_EXPR
10583         properly.
10584
10585 2007-07-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
10586
10587         PR target/32808
10588         * config/cris/cris.c (cris_print_index): Don't use XEXP before
10589         checking that the operand is an expression.
10590
10591 2007-07-19  Christoph von Wittich  <Christoph_vW@reactos.org>
10592             Danny Smith  <dannysmith@users.sourceforge.net>
10593
10594         PR/other 30335
10595         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Put
10596         file mapping object in local namespace if Windows version later
10597         than NT4
10598
10599 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
10600
10601         * config/arm/arm-protos.h (arm_cannot_force_const_mem): Declare.
10602         * config/arm/arm.c (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to
10603         arm_cannot_force_const_mem.
10604         (arm_cannot_force_const_mem): New function.
10605         * config/arm/arm.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): New macro.
10606         (LEGITIMATE_CONSTANT_P): Test arm_cannot_force_const_mem instead
10607         of arm_tls_referenced_p.
10608         * config/arm/arm.md (movsi): Split out-of-section constants when
10609         ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P.
10610         * config/arm/vxworks.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
10611
10612 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
10613
10614         * config/mips/mips.md (clear_cache): Treat the size argument as Pmode.
10615
10616 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
10617
10618         * config/mips/mips.md (*extendqihi2): Convert the destination
10619         to SImode.
10620
10621 2007-07-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10622
10623         * config/pa/fptr.c: Update license header.
10624         * config/pa/milli64.S: Likewise.
10625
10626 2007-07-17  Nick Clifton  <nickc@redhat.com>
10627
10628         * COPYING_v3: New file.  Contains version 3 of the GNU General
10629         Public License.
10630         * COPYING.LIB_v3: New file.  Contains version 3 of the GNU
10631         Lesser General Public License.
10632         * doc/include/gpl_v3.texi: New file.  Contains version 3 of
10633         the GNU General Public License.
10634
10635 2007-07-17  Zdenek Dvorak  <dvorakz@suse.cz>
10636
10637         PR rtl-optimization/32773
10638         * cfglayout.c (force_one_exit_fallthru): New function.
10639         (cfg_layout_finalize): Use it.
10640
10641 2007-07-16  Richard Guenther  <rguenther@suse.de>
10642             Uros Bizjak  <ubizjak@gmail.com>
10643
10644         * tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond"
10645         before forcing it to gimple operand.
10646
10647 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
10648             David Ung  <davidu@mips.com>
10649
10650         * config/mips/mips.h (TUNE_24K): Define.
10651         (TUNE_MACC_CHAINS): Add TUNE_24K.
10652         * config/mips/mips.md: (*mul_acc_si, *mul_sub_si): Change type to
10653         imadd.
10654         * config/mips/74k.md (r74k_int_mult): Split madd/msub to ..
10655         (r74k_int_madd): .. this new reservation.
10656         (define_bypass): Fixed bypasses for r74k_int_madd to use
10657         mips_linked_madd_p.
10658         * config/mips/24k.md (define_bypass): Define new
10659         r24k_int_mul3->r24k_int_madd bypass using mips_linked_madd_p.
10660
10661 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
10662             Nigel Stephens  <nigel@mips.com>
10663
10664         * config/mips/mips.md: Include 20kc.md.
10665         * config/mips/20kc.md: New file.
10666         * config/mips/mips.c (mips_rtx_cost_data): Fill in 20Kc costs.
10667         (mips_adjust_cost): Tweak for 20Kc.
10668         (mips_issue_rate): Likewise.
10669         * config/mips/mips.h (TUNE_20KC): Define.
10670
10671 2007-07-16  David Edelsohn  <edelsohn@gnu.og>
10672
10673         * config/rs6000/rs6000.c (struct processor_cost): Add
10674         cache_line_size, l1_cache_lines, and simultaneous_prefetches
10675         fields.
10676         (*_cost): Add cache information.
10677         (rs6000_override_options): Set cache parameters.
10678
10679 2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
10680
10681         PR bootstrap/3456
10682         * config.gcc (mips-sgi-irix[56]*): Enable pthread support.
10683         * doc/install.texi (mips-sgi-irix6): pthread support works now.
10684
10685 2007-07-16  Paul Brook  <paul@codesourcery.com>
10686
10687         PR target/32753
10688         * config/arm/cirrus.md (cirrus_arm_movsi_insn): Remove dead insn.
10689         (cirrus_thumb2_movsi_insn): Ditto.
10690
10691 2007-07-15  Geoffrey Keating  <geoffk@apple.com>
10692
10693         * config/rs6000/darwin-fallback.c (interpret_libc): Change
10694         CR2_REGNO to R_CR2.
10695
10696 2007-07-15  Andrew Haley  <aph@redhat.com>
10697
10698         * unwind-sjlj.c (_Unwind_GetIPInfo): Check for context->fc != NULL
10699         before looking in the context.
10700
10701 2007-07-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10702
10703         PR middle-end/32398
10704         PR middle-end/32769
10705         * pa-protos.h (pa_eh_return_handler_rtx): Declare.
10706         * pa.c (pa_extra_live_on_entry, rp_saved): Declare.
10707         (TARGET_EXTRA_LIVE_ON_ENTRY): Define.
10708         (pa_output_function_prologue): Use rp_saved and
10709         current_function_is_leaf to generate .CALLINFO statement.
10710         (hppa_expand_prologue): Set rp_saved.
10711         (hppa_expand_epilogue): Use rp_saved.
10712         (pa_extra_live_on_entry, pa_eh_return_handler_rtx): New functions.
10713         * pa.h (EH_RETURN_HANDLER_RTX): Use pa_eh_return_handler_rtx.
10714
10715 2007-07-14  Dirk Mueller  <dmueller@suse.de>
10716
10717         * omega.c (coalesce): Fix memory leak on early exit.
10718         * matrix-reorg.c (check_allocation_function): Likewise.
10719         * tree-vect-transform.c (vect_get_new_vect_var): free result
10720         of concat().
10721         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
10722         pass pointer to edge vector
10723         (partition_hot_cold_basic_blocks): Fix memory leak.
10724         * collect2.c (prefix_from_string): Free temporary storage.
10725         * reload1.c (fixup_abnormal_edges): Free sbitmap.
10726
10727 2007-07-14  Kaz Kojima  <kkojima@gcc.gnu.org>
10728
10729         * config/sh/sh.h (DO_GLOBAL_CTORS_BODY): Add void to prototype.
10730         (DO_GLOBAL_DTORS_BODY): Likewise.
10731
10732 2007-07-14  Sandra Loosemore  <sandra@codesourcery.com>
10733             Nigel Stephens  <nigel@mips.com>
10734
10735         * config/mips/mips.c (mips_classify_symbol): Don't return
10736         SYMBOL_SMALL_DATA for constant pool addresses if
10737         TARGET_EMBEDDED_DATA is true.
10738
10739 2007-07-14  Uros Bizjak  <ubizjak@gmail.com>
10740
10741         * config/i386/i386.c (init_mmx_sse_builtins): Define all builtins
10742         except __builtin_ia32_emms, __builtin_ia32_ldmxcsr,
10743         __builtin_ia32_stmxcsr, __builtin_ia32_maskmovq, __builtin_ia32_loadups,
10744         __builtin_ia32_storeups, __builtin_ia32_loadhps, __builtin_ia32_loadlps,
10745         __builtin_ia32_storehps, __builtin_ia32_storelps,
10746         __builtin_ia32_movntps, __builtin_ia32_movntq, __builtin_ia32_sfence,
10747         __builtin_ia32_femms, __builtin_ia32_maskmovdqu, __builtin_ia32_loadupd,
10748         __builtin_ia32_storeupd, __builtin_ia32_loadhpd, __builtin_ia32_loadlpd,
10749         __builtin_ia32_movnti, __builtin_ia32_movntpd, __builtin_ia32_movntdq,
10750         __builtin_ia32_clflush, __builtin_ia32_lfence, __builtin_ia32_mfence,
10751         __builtin_ia32_loaddqu, __builtin_ia32_storedqu, __builtin_ia32_monitor,
10752         __builtin_ia32_mwait, __builtin_ia32_lddqu, __builtin_ia32_movntdqa,
10753         __builtin_ia32_movntsd and __builtin_ia32_movntss as const builtins
10754         using def_builtin_const.
10755
10756 2007-07-14  Eric Botcazou  <ebotcazou@adacore.com>
10757
10758         PR tree-optimization/32705
10759         * tree-ssa-sccvn.c (set_ssa_val_to): Accept VN_TOP as value number.
10760         (simplify_binary_expression): Use SSA_VAL consistently.
10761
10762 2007-07-13  David Edelsohn  <edelsohn@gnu.org>
10763
10764         * config/rs6000/spe.md (SPE_ACC_REGNO): Delete definition.
10765         (SPEFSCR_REGNO): Delete definition.
10766         * config/rs6000/rs6000.c: LINK_REGISTER_REGNUM -> LR_REGNO.
10767         COUNT_REGISTER_REGNUM -> CTR_REGNO.
10768         * config/rs6000/rs6000.h: Do not define *_REGNO.
10769         LINK_REGISTER_REGNUM -> LR_REGNO.
10770         COUNT_REGISTER_REGNUM -> CTR_REGNO.
10771         * config/rs6000/predicates.md: LINK_REGISTER_REGNUM ->  LR_REGNO.
10772         COUNT_REGISTER_REGNUM -> CTR_REGNO.
10773         * config/rs6000/linux-unwind.h: Define R_LR, R_CR2, R_VR0,
10774         R_VRSAVE, R_VSCR. Use them.
10775         * config/rs6000/darwin-fallback.c: Define R_LR, R_CTR, R_CR2,
10776         R_XER, R_VR0, R_VRSAVE, R_VSCR, R_SPEFSCR.  Use them.
10777         * config/rs6000/rs6000.md: Define REGNO constants.  Use them.
10778         * config/rs6000/aix.h: Define R_LR.  Use it.
10779         
10780 2007-07-13  Caroline Tice  <ctice@apple.com>
10781         
10782         * toplev.c (process_options): Turn flag_var_tracking_uninit off when
10783         flag_var_tracking is explicitly turned off (i.e. when variable
10784         tracking is not feasible); otherwise, turn flag_var_tracking on when
10785         flag_var_tracking_uninit is on.
10786         * rtl.def (VAR_LOCATION): Add a new integer subfield to VAR_LOCATION
10787         note definitions, to allow recording of initialization status in the
10788         notes.
10789         * dwarf2out.c (dwarf_stack_op_name): Add case for DW_OP_GNU_uninit.
10790         (add_var_loc_to_decl): Add comparison of NOTE_VAR_LOCATION_STATUS to
10791         determine if two note locations are equal.
10792         (output_loc_list): Don't output list entries whose start & end labels
10793         are the same.
10794         (reg_loc_descriptor): Add parameter for initialization status; pass it
10795         to other loc descriptor functions.
10796         (one_reg_loc_descriptor): Add parameter for initialization status;
10797         check its value and add DW_OP_GNU_uninit to returned loc descr if
10798         appropriate.
10799         (multiple_reg_loc_descriptor): Add parameter for initialization
10800         status;
10801         pass init status argument to other loc descriptor functions; check
10802         value of intialization parameter and add DW_OP_GNU_uninit to returned
10803         loc descr if appropriate.
10804         (based_loc_descr): Add parameter for initialization status; add new
10805         variable for return value; check value of initialization parameter and
10806         add DW_OP_GNU_uninit to returned loc descr if appropriate.
10807         (concatn_mem_loc_descriptor): Add parameter for initialization status;
10808         pass init status argument to other loc descriptor functions; check
10809         value of intialization parameter and add DW_OP_GNU_uninit to returned
10810         loc descr if appropriate.
10811         (mem_loc_descriptor): Likewise.
10812         (concat_loc_descriptor): Likewise.
10813         (concatn_loc_descriptor): Likewise.
10814         (loc_descriptor): Add parameter for initialization status; pass it as
10815         argument to other loc descriptor function calls.
10816         (loc_descriptor_from_tree_1): Add appropriate initialization status
10817         to loc descriptor function calls.
10818         (add_location_or_const_value_attribute): Get initialization status
10819         from VAR_LOCATION note; add initialization status to loc descriptor
10820         function calls.
10821         * dwarf2.h (enum dwarf_location_atom): New op, DW_OP_GNU_uninit.
10822         * print-rtl.c (print_rtx): When printing a VAR_LOCATION note, if
10823         status is uninitialized, add "[uninint]" to output.
10824         * common.opt (fvar-tracking-uninit): New option, similar to
10825         fvar-tracking, to turn on tracking of uninitialized variables; creates
10826         a new global flag, flag_var_tracking_uninit.
10827         * rtl.h (NOTE_VAR_LOCATION_STATUS): New macro for accessing new field.
10828         (enum var_init_status): New type, for var initialization status field.
10829         * var-tracking.c (struct location_chain_def): Two new fields, init,
10830         for initialization status, and set_src for the assignment value expr.
10831         (unshare_variable): New parameter for initialization status;
10832         initialize new init and set_src fields.
10833         (var_reg_set): New parameters for initialization status and value;
10834         pass them to set_variable_part.
10835         (var_mem_set): Likewise.
10836         (get_init_value): New function.
10837         (var_reg_delete_and_set): New initialization status & value
10838         parameters; add call to get_init_value if status is unknown; pass new
10839         parameters to clobber_variable_part and var_reg_set.
10840         (var_mem_delete_and_set): Likewise.
10841         (var_reg_delete): Pass null set_src value to clobber_variable_part.
10842         (var_mem_delete): Likewise.
10843         (variable_union): Pass status to unshare_variable; initialize new init
10844         and set_src fields. If flag_var_tracking_uninit is not set, force
10845         status to initialized.
10846         (add_stores): Store insn, rather than NEXT_INSN(insn), so it can be
10847         used later to get the set_src value.
10848         (find_src_status): New function.
10849         (find_src_set_src): New function.
10850         (compute_bb_dataflow): Pass init status to calls to var_reg_set,
10851         var_mem_set, var_reg_delete_and_set and var_mem_delete_and_set; for
10852         MO_SET, get set_src value and pass it to var_reg_delete_and_set
10853         and var_mem_delete_and_set.
10854         (dump_variable): Print out "[uninit]" if appropriate.
10855         (set_variable_part): Add new initialization and set_src parameters;
10856         pass status to unshare_variable; set node->init and node- >set_src
10857         fields and modify slot in hash table appropriately; save the init and
10858         set_src values if appropriate and assign to the new node.
10859         (clobber_variable_part): New set_src parameter; if two nodes have
10860         same variable and same location but different set_src (assignment)
10861         values, clobber old node.
10862         (delete_variable_part): Pass init status to unshare_variable.
10863         (emit_note_insn_var_location): Add initialized var; assign var's init
10864         status to new 'initialized'; pass new init status field to calls to
10865         gen_rtx_VAR_LOCATION. If flag_var_tracking_uninit is not set, force
10866         status to initialized.
10867         (emit_notes_in_bb): Pass initialization status to calls to
10868         var_reg_set, var_mem_set, var_reg_delete_and_set and
10869         var_mem_delete_and_set; for MO_SET, get set_src value and pass it to
10870         var_reg_delete_and_set and var_mem_delete_and_set; call
10871         emit_notes_for_changes on NEXT_INSN(insn) rather than on insn, to
10872         make up for change in add_stores.
10873         (vt_add_function_parameters): Add status to calls to
10874         set_variable_part.
10875         * config/darwin.c (darwin_override_options): Turn on uninitialized
10876         tracking automatically, if var_tracking is on and the system is
10877         10.5 or higher.
10878         
10879 2007-07-13  Sa Liu  <saliu@de.ibm.com>
10880
10881         * config.gcc: Add options for arch and tune on SPU.
10882         * config/spu/predicates.md: Add constant operands 0 and 1.
10883         * config/spu/spu-builtins.def: Add builtins for double precision 
10884         floating point comparison: si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, 
10885         si_dftsv, spu_cmpeq_13, spu_cmpabseq_1, spu_cmpgt_13, spu_cmpabsgt_1,
10886         spu_testsv.
10887         * config/spu/spu-c.c: Define __SPU_EDP__ when builtins invoked with 
10888         a CELLEDP target.
10889         * config/spu/spu-protos.h: Add new function prototypes. 
10890         * config/spu/spu.c (spu_override_options): Check options -march and
10891         -mtune.
10892         (spu_comp_icode): Add comparison code for DFmode and vector mode.
10893         (spu_emit_branch_or_set): Use the new code for DFmode and vector 
10894         mode comparison.
10895         (spu_const_from_int): New.  Create a vector constant from 4 ints.
10896         (get_vec_cmp_insn): New.  Get insn index of vector compare instruction.
10897         (spu_emit_vector_compare): New.  Emit vector compare.
10898         (spu_emit_vector_cond_expr): New.  Emit vector conditional expression.
10899         * config/spu/spu.h: Add options -march and -mtune.  Define processor
10900         types PROCESSOR_CELL and PROCESSOR_CELLEDP.  Define macro
10901         CANONICALIZE_COMPARISON.
10902         * config/spu/spu.md: Add new insns for double precision compare
10903         and double precision vector compare.  Add vcond and smax/smin patterns
10904         to enable DFmode vector conditional expression.
10905         * config/spu/spu.opt: Add options -march and -mtune.
10906         * config/spu/spu_internals.h: Add builtins for CELLEDP target:
10907         si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, si_dftsv.  Add builtin for
10908         both CELL and CELLEDP targets: spu_testsv.
10909         * config/spu/spu_intrinsics.h: Add flag mnemonics for test special 
10910         values.
10911
10912 2007-07-13  Richard Guenther  <rguenther@suse.de>
10913
10914         PR tree-optimization/32721
10915         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Preserve
10916         TREE_THIS_VOLATILE on the folded reference.
10917         * tree-ssa-operands.c (get_expr_operands): Set has_volatile_ops
10918         if the array reference has TREE_THIS_VOLATILE set.
10919
10920 2007-07-13  H.J. Lu  <hongjiu.lu@intel.com>
10921
10922         PR other/32188
10923         * doc/libgcc.texi: Update DFP intrinsics for DPD and BID.
10924
10925 2007-07-13  Andreas Schwab  <schwab@suse.de>
10926
10927         * gengtype-lex.l: Allow declarations to be indented.
10928
10929 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
10930
10931         * ginclude/tgmath.h: New.
10932         * config.gcc: Use GCC's tgmath.h on non-glibc systems.
10933         * doc/sourcebuild.texi (Headers): Document use_gcc_tgmath.
10934         * configure.ac (STMP_FIXPROTO): Honor use_gcc_tgmath.
10935         * configure: Regenerate.
10936
10937 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
10938
10939         * config/sh/linux-unwind.h (sh_fallback_frame_state): Use
10940         correct index when setting register save state for xd
10941         registers.
10942
10943 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
10944
10945         * config/sh/sh.c (mark_use): Remove.
10946
10947 2007-07-12  Paul Brook  <paul@codesourcery.com>
10948
10949         * config/arm/arm.c (thumb1_compute_save_reg_mask): Make sure scratch
10950         reg does not overlap return value.
10951
10952 2007-07-12  Daniel Berlin  <dberlin@dberlin.org>
10953
10954         * tree-ssa-pre.c (get_expression_vuses): Move out side-effect.
10955         (set_expression_vuses): Ditto.
10956         (init_pre): Initialize expression_vuses.
10957
10958 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
10959
10960         * config/i386/sse.md (storentdf, storentsf): New.
10961
10962 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
10963
10964         * builtins.c (get_pointer_alignment): Honor DECL_ALIGN on a
10965         FUNCTION_DECL.
10966         * tree.c (build_decl_stat): Move code from here...
10967         (make_node_stat): ... to here.  Don't uselessly clear DECL_USER_ALIGN.
10968         (expr_align): Honor DECL_ALIGN on a FUNCTION_DECL.  Add comment
10969         about using DECL_ALIGN of LABEL_DECL and CONST_DECL.
10970         * tree.h (DECL_USER_ALIGN): Fix misplaced comment.
10971         * varasm.c (assemble_start_function): Use DECL_ALIGN instead of
10972         FUNCTION_BOUNDARY.
10973
10974 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
10975             Devang Patel  <dpatel@apple.com>
10976
10977         PR tree-optimization/25413
10978         * targhooks.c (default_builtin_vector_alignment_reachable): New.
10979         * targhooks.h (default_builtin_vector_alignment_reachable): New.
10980         * tree.h (contains_packed_reference): New.
10981         * expr.c (contains_packed_reference): New.
10982         * tree-vect-analyze.c (vector_alignment_reachable_p): New.
10983         (vect_enhance_data_refs_alignment): Call
10984         vector_alignment_reachable_p.
10985         * target.h (vector_alignment_reachable): New builtin.
10986         * target-def.h (TARGET_VECTOR_ALIGNMENT_REACHABLE): New.
10987         * config/rs6000/rs6000.c (rs6000_vector_alignment_reachable): New.
10988         (TARGET_VECTOR_ALIGNMENT_REACHABLE): Define.
10989
10990 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
10991
10992         * target.h (builtin_vectorization_cost): Add new target builtin.
10993         * target-def.h (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): New.
10994         * tree-vectorizer.h (TARG_SCALAR_STMT_COST): New.
10995         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST): New.
10996         * tree-vect-analyze.c (vect_analyze_slp_instance): Initisliaze
10997         uninitialized variables.
10998         * tree-vect-transform.c (cost_for_stmt): New function.
10999         (vect_estimate_min_profitable_iters): Call cost_for_stmt instead of
11000         using cost 1 for all scalar stmts. Be less conservative when
11001         estimating the number of prologue/epulogue iterations. Call
11002         targetm.vectorize.builtin_vectorization_cost. Return
11003         min_profitable_iters-1.
11004         (vect_model_reduction_cost): Use TARG_SCALAR_TO_VEC_COST for
11005         initialization cost instead of TARG_VEC_STMT_COST. Use
11006         TARG_VEC_TO_SCALAR_COST instead of TARG_VEC_STMT_COST for reduction
11007         epilogue code. Fix epilogue cost computation.
11008         * config/spu/spu.c (spu_builtin_vectorization_cost): New.
11009         (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): Implement.
11010         * config/spu/spu.h (TARG_COND_BRANCH_COST, TARG_SCALAR_STMT_COST):
11011         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST, TARG_VEC_STMT_COST):
11012         (TARG_VEC_TO_SCALAR_COST, TARG_SCALAR_TO_VEC, TARG_VEC_LOAD_COST):
11013         (TARG_VEC_UNALIGNED_LOAD_COST, TARG_VEC_STORE_COST): Define.
11014
11015 2007-07-12  Richard Guenther  <rguenther@suse.de>
11016
11017         * gimplify.c (gimplify_conversion): Make sure that the result
11018         from maybe_fold_offset_to_reference is trivially convertible
11019         to the desired type before doing the simplification.
11020         (gimplify_expr): Likewise.
11021         * fold-const.c (fold_binary): Use the correct types for
11022         building the simplified expression.
11023
11024 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
11025
11026         PR rtl-optimization/32729
11027         * cfghooks.c (can_duplicate_block_p): Do not forbid duplicating blocks
11028         that fallthru to exit.
11029
11030 2007-07-12  Kaz Kojima  <kkojima@gcc.gnu.org>
11031
11032         * config/sh/sh.md (symGOTOFF2reg): Add missing parenthesis.
11033         (symDTPOFF2reg): Likewise.
11034
11035 2007-07-11  Daniel Berlin  <dberlin@dberlin.org>
11036
11037         PR tree-optimization/32663
11038         
11039         * tree.h (VALUE_HANDLE_VUSES): Remove.
11040         (struct tree_value_handle): Remove vuses.
11041
11042         * tree-vn.c (create_value_handle_for_expr): Don't set
11043         VALUE_HANDLE_VUSES. 
11044
11045         * tree-ssa-pre.c (expression_vuses): New.
11046         (alloc_expression_id): Set up expression_vuses.
11047         (get_expression_vuses): New.
11048         (set_expression_vuses): Ditto.
11049         (clear_expression_ids): Modify for expression_vuses.
11050         (phi_translate_1): Ditto.
11051         (phi_translate_set): Ditto.
11052         (value_dies_in_block_x): Ditto
11053         (valid_in_sets): Ditto.
11054         (add_to_sets): Ditto.
11055         (find_existing_value_expr): Ditto.
11056         (create_value_handle_for_expr): Ditto.
11057         (make_values_for_stmt): Ditto.
11058         (vuse_equiv): Remove.
11059
11060 2007-07-11  Alexandre Oliva  <aoliva@redhat.com>
11061
11062         * Makefile.in (mostlyclean): Remove object files.
11063
11064 2007-07-11  Kenneth Zadeck <zadeck@naturalbridge.com>
11065
11066         * toplev.c (no_new_pseudos): Deleted.
11067         * rtl.h (no_new_pseudos): Deleted.
11068         * tree-pass.h (pass_no_new_pseudos): Deleted. 
11069         * passes.c (pass_no_new_pseudos): Deleted.
11070         * final.c (rest_of_clean_state): Removed no_new_pseudos.
11071         (rest_of_no_new_pseudos, pass_no_new_pseudos): Deleted.
11072         * struct-equiv.c (rtx_equiv_p): Replaced no_new_pseudos with 
11073         reload_completed.
11074         * cfgcleanup.c (try_crossjump_to_edge): Ditto. 
11075         * rtlhooks.c (gen_lowpart_general): Ditto.
11076         * optabs.c (prepare_operand): Ditto.
11077         * mode-switching.c (rest_of_handle_mode_switching): Deleted set of
11078         no_new_pseudos.
11079         * modulo-sched.c (rest_of_handle_sms): Ditto.
11080         * see.c (rest_of_handle_see): Ditto.
11081         * ifcvt.c (if_convert): Ditto.
11082         (gate_handle_if_after_combine): Replaced no_new_pseudos with 
11083         reload_completed.
11084         * init-regs.c (gate_initialize_regs): Deleted set of
11085         no_new_pseudos.
11086         * lower-subreg.c (decompose_multiword_subregs): Ditto. 
11087         * bb-reorder.c (rest_of_handle_partition_blocks): Ditto.
11088         * doc/md.texi: Changed no_new_pseudos to can_create_pseudo_p.
11089         
11090 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
11091
11092         PR target/32661
11093         * config/i386/sse.md (*sse2_storeq_rex64): Handle 64bit mem->reg moves.
11094         (*vec_extractv2di_1_sse2): Disable for TARGET_64BIT.
11095         (*vec_extractv2di_1_rex64): New insn pattern.
11096
11097 2007-07-11  David Daney  <ddaney@avtrex.com>
11098
11099         * config/mips/linux-unwind.h (mips_fallback_frame_state): Rewrite
11100         return address calculation.  Substitute DWARF_ALT_FRAME_RETURN_COLUMN
11101         for SIGNAL_UNWIND_RETURN_COLUMN.
11102         * config/mips/mips.h (SIGNAL_UNWIND_RETURN_COLUMN): Remove.
11103         (DWARF_FRAME_REGNUM): Rewrite.
11104         (DWARF_ALT_FRAME_RETURN_COLUMN) Define.
11105
11106 2007-07-11  Nick Clifton  <nickc@redhat.com>
11107
11108         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Revert previous
11109         delta and use gen_int_mode in place of GET_INT instead.
11110
11111 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
11112
11113         * reg-stack.c (struct tree_opt_pass pass_stack_regs): Nullify name
11114         and letter field.
11115
11116 2007-07-11  Douglas Gregor  <doug.gregor@gmail.com>
11117
11118         * params.def (PARAM_VERIFY_CANONICAL_TYPES): Remove.
11119         (PARAM_USE_CANONICAL_TYPES): New; decides whether to use canonical 
11120         types or not.
11121         * params.h (VERIFY_CANONICAL_TYPES): Remove.
11122         (USE_CANONICAL_TYPES): New.
11123         * doc/invoke.texi (verify-canonical-types): Remove.
11124         (use-canonical-types): Add.
11125
11126 2007-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
11127
11128         * config/spu/spu.c (spu_optimization_options): Remove setting of
11129         parameter PARAM_MAX_COMPLETELY_PEEL_TIMES.
11130         (spu_override_options): Move it here.
11131
11132 2007-07-11  Richard Sandiford  <richard@codesourcery.com>
11133
11134         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Handle -m4ksc and -m4ksd.
11135         * config/mips/mips.c (mips_cpu_info_table): Mention
11136         MIPS_ISA_LEVEL_SPEC in the comment.
11137
11138 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
11139
11140         PR tree-optimization/32713
11141         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle REAL_CST.
11142
11143 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
11144
11145         PR middle-end/30482
11146         * c-opts.c (c_common_post_options): Do not change flag_complex_method
11147         conditional to flag_isoc99.
11148         (c_common_init_options): Do it here, unconditionally.
11149
11150 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
11151
11152         PR tree-optimization/32589
11153         * doc/tree-ssa.texi (Rough GIMPLE Grammar): Add missing rule.
11154         * tree-gimple.c (is_gimple_min_invariant): Clarify head comment.
11155         * tree-ssa-propagate.c (valid_gimple_expression_p): New
11156         predicate, extracted from...
11157         (set_rhs): ...here.  Call it for the expression on entry.
11158         * tree-ssa-propagate.h (valid_gimple_expression_p): Declare.
11159         * tree-ssa-sccvn.c: Include tree-ssa-propagate.h.
11160         (simplify_binary_expression): Use valid_gimple_expression_p
11161         to validate the simplification.
11162         * Makefile.in (tree-ssa-sccvn.o): Depends on tree-ssa-propagate.h.
11163
11164 2007-07-11  Danny Smith  <dannysmith@users.sourceforge.net>
11165
11166         * config/i386/cygming.h (PREFERRED_DEBUGGING_TYPE): Define to
11167         DWARF2_DEBUG on 32 bit target too.
11168         (DWARF2_UNWIND_INFO): Reorganize 64-bit vs 32-bit definition. 
11169
11170 2007-07-11  Nick Clifton  <nickc@redhat.com>
11171
11172         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Provide alternative
11173         version for 64-bit hosts.
11174
11175 2007-07-10  David Daney  <ddaney@avtrex.com>
11176
11177         * config/mips/mips.h (ISA_HAS_SYNCI): New target capability
11178         predicate.
11179         (INITIALIZE_TRAMPOLINE): Emit clear_cache insn instead of  library
11180         call.
11181         * config/mips/mips.c (mips_expand_synci_loop): New function.
11182         * config/mips/mips.md (UNSPEC_CLEAR_HAZARD): New constant.
11183         (UNSPEC_RDHWR): Same.
11184         (UNSPEC_SYNCI): Same.
11185         (UNSPEC_SYNC): Same.
11186         (clear_cache): New expand.
11187         (sync): New insn.
11188         (synci): Same.
11189         (rdhwr): Same.
11190         (clear_hazard): Same.
11191         * config/mips/mips-protos.h (mips_expand_synci_loop): Declare
11192         function.
11193         * testsuite/gcc.target/mips/clear-cache-1.c: New test.
11194         * testsuite/gcc.target/mips/clear-cache-2.c: New test.
11195
11196 2007-07-10  Ian Lance Taylor  <iant@google.com>
11197
11198         * emit-rtl.c (gen_reg_rtx): Check can_create_pseudo_p rather than
11199         no_new_pseudos.
11200
11201 2007-07-10  David Daney  <ddaney@avtrex.com>
11202
11203         * builtins.def (BUILT_IN_CLEAR_CACHE): New builtin.
11204         * builtins.c (expand_builtin___clear_cache): New function.
11205         (expand_builtin): Call expand_builtin___clear_cache for
11206         BUILT_IN_CLEAR_CACHE case.
11207         * doc/extend.texi (__builtin___clear_cache): Document new builtin.
11208         * doc/md.texi (clear_cache): Document new instruction pattern.
11209         * testsuite/gcc.dg/builtins-64.c: New test.
11210
11211 2007-07-11  Hans-Peter Nilsson  <hp@axis.com>
11212
11213         * config/cris/cris.md ("movsi"): Fix typo in last change.
11214
11215 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
11216
11217         PR 32617
11218         * c-common.c (c_alignof_expr): Look at DECL_ALIGN of
11219         FUNCTION_DECLs.
11220         (handle_aligned_attribute): Allow use on FUNCTION_DECLs.
11221         * varasm.c (assemble_start_function): Honor DECL_ALIGN
11222         for FUNCTION_DECLs.  Don't use align_functions_log if
11223         DECL_USER_ALIGN.
11224         * print-tree.c (print_node): Print DECL_ALIGN and DECL_USER_ALIGN
11225         even for FUNCTION_DECLs.
11226         * c-decl.c (merge_decls): Propagate DECL_ALIGN even for
11227         FUNCTION_DECLs.
11228         * tree.h (DECL_ALIGN): Update for new location of 'align'.
11229         (DECL_FUNCTION_CODE): Update for new location and name of
11230         'function_code'.
11231         (DECL_OFFSET_ALIGN): Update for new location of 'off_align'.
11232         (struct tree_decl_common): Move 'align' and 'off_align' out
11233         of union, ensure they're still on a 32-bit boundary.  Remove
11234         other fields in union 'u1'.
11235         (struct tree_function_decl): Add field 'function_code' replacing
11236         'u1.f' in tree_decl_common.
11237         * tree.c (build_decl_stat): Set initial value of DECL_ALIGN.
11238         * doc/extend.texi (Function Attributes): Add 'aligned' attribute.
11239         (Variable Attributes): Cross-reference 'aligned' attribute
11240         to Function Attributes.
11241         * flags.h (force_align_functions_log): Delete.
11242         * toplev.c (force_align_functions_log): Delete.
11243
11244 2007-07-10  Uros Bizjak  <ubizjak@gmail.com>
11245
11246         PR target/32708
11247         * config/i386/sse.md (vec_concatv2di): Disable for TARGET_64BIT.
11248         (*vec_concatv2di_rex): New insn pattern.
11249
11250 2007-07-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
11251
11252         PR target/32538
11253         * config/mips/iris6.h (LIBGCC_SPEC): Add libm.
11254
11255 2007-07-10  Ian Lance Taylor  <iant@google.com>
11256
11257         Replace no_new_pseudos in backends.
11258         * rtl.h (can_create_pseudo_p): Define.
11259         * config/darwin.c (machopic_indirect_data_reference): Use
11260         can_create_pseudo_p () instead of no_new_pseudos.
11261         (machopic_indirect_data_reference): Likewise.
11262         (machopic_legitimize_pic_address): Likewise.
11263         * config/alpha/alpha.c (alpha_legitimize_address): Likewise.
11264         (alpha_emit_set_const_1): Likewise.
11265         (alpha_emit_set_const): Likewise.
11266         (alpha_emit_conditional_move): Likewise.
11267         (alpha_split_conditional_move): Likewise.
11268         * config/alpha/alpha.md (various splitters): Likewise.
11269         (movti): Likewise.
11270         * config/arm/arm.c (legitimize_pic_address): Likewise.
11271         (arm_load_pic_register): Likewise.
11272         * config/arm/arm.md (addsi3, subsi3, andsi3, iorsi3): Likewise.
11273         (movdi, movsi, movhi, movqi, movsf, movdf): Likewise.
11274         * config/bfin/bfin.c (legitimize_pic_address): Likewise.
11275         * config/cris/cris.c (cris_expand_pic_call_address): Likewise.
11276         * config/cris/cris.md (movsi): Likewise.
11277         * config/frv/frv.md (symGOT2reg_hilo): Likewise.
11278         (symGOTOFF2reg_hilo): Likewise.
11279         (symGPREL2reg, symGPREL2reg_hilo): Likewise.
11280         * config/h8300/h8300.md (insv, extzv): Likewise.
11281         * config/i386/i386.c (ix86_expand_move): Likewise.
11282         (ix86_expand_vector_move): Likewise.
11283         (ix86_prepare_fp_compare_args): Likewise.
11284         (ix86_expand_carry_flag_compare): Likewise.
11285         * config/i386/i386.md (tls_dynamic_gnu2_32): Likewise.
11286         (tls_dynamic_gnu2_combine_32): Likewise.
11287         (tls_dynamic_gnu2_64, tls_dynamic_gnu2_combine_64): Likewise.
11288         * config/ia64/ia64.c (ia64_expand_move): Likewise.
11289         (ia64_expand_movxf_movrf): Likewise.
11290         * config/m32c/m32c.c (m32c_prepare_move): Likewise.
11291         (m32c_split_move): Likewise.
11292         (m32c_expand_insv): Likewise.
11293         * config/m68k/m68k.md (movsi): Likewise.
11294         * config/mips/mips.c (mips_force_temporary): Likewise.
11295         (mips_split_symbol): Likewise.
11296         (mips_move_integer): Likewise.
11297         (mips_legitimize_const_move): Likewise.
11298         * config/mn10300/mn10300.md (movsi): Likewise.
11299         * config/pa/pa.c (emit_move_sequence): Likewise.
11300         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
11301         (rs6000_got_register): Likewise.
11302         (create_TOC_reference): Likewise.
11303         (rs6000_machopic_legitimize_pic_address): Likewise.
11304         * config/rs6000/rs6000.md (add<mode>3): Likewise.
11305         (various splitters): Likewise.
11306         (iorsi3, xorsi3, iordi3, xordi3): Likewise.
11307         (movsi_got): Likewise.
11308         * config/s390/s390.c (emit_symbolic_move): Likewise.
11309         * config/s390/s390.md (movhi, movqi): Likewise.
11310         (load_multiple, store_multiple): Likewise.
11311         * config/score/score.c (score_force_temporary): Likewise.
11312         * config/sh/sh.c (prepare_move_operands): Likewise.
11313         (prepare_cbranch_operands): Likewise.
11314         (emit_fpu_switch): Likewise.
11315         (fpscr_set_from_mem): Likewise.
11316         * config/sh/sh.md (movdicc, movsicc, movsicc_umin): Likewise.
11317         (adddi3, subsi3): Likewise.
11318         (various splitters): Likewise.
11319         (divsi_inv_fp_combine): Likewise.
11320         (symGOT_load, symGOTOFF2reg, symDTPOFF2reg): Likewise.
11321         (seq, slt, sle, sgt, sge, sgtu, sltu, sleu, sgeu): Likewise.
11322         (sne): Likewise.
11323         * config/sh/predicates.md (xor_operand): Likewise.
11324         * config/sparc/sparc.c (legitimize_tls_address): Likewise.
11325         * config/sparc/sparc.md (movsi_pic_label_ref): Likewise.
11326         (movdi_pic_label_ref): Likewise.
11327         * config/spu/spu.c (spu_split_immediate): Likewise.
11328         * config/alpha/alpha.md (various splitters): Remove test
11329         !no_new_pseudos || reload_completed.
11330         * config/ia64/ia64.c (ia64_output_mi_thunk): Don't set
11331         no_new_pseudos.
11332         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
11333         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
11334         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
11335         * config/score/score.c (th_output_mi_thunk): Likewise.
11336         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
11337         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
11338
11339 2007-07-10  Kaz Kojima  <kkojima@gcc.gnu.org>
11340
11341         PR rtl-optimization/32664
11342         * mode-switching.c (create_pre_exit): Skip barrier insns.
11343
11344 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
11345
11346         * tree-scalar-evolution.c (scev_const_prop): Add arguments to
11347         force_gimple_operand_bsi.
11348         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr,
11349         rewrite_use_compare): Ditto.
11350         * tree-ssa-address.c (gimplify_mem_ref_parts, create_mem_ref):
11351         Ditto.
11352         * tree-ssa-ifcombine.c (ifcombine_ifandif): Ditto.
11353         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
11354         * lambda-code.c (replace_uses_equiv_to_x_with_y): Ditto.
11355         * tree-profile.c (prepare_instrumented_value,
11356         tree_gen_interval_profiler, tree_gen_pow2_profiler,
11357         tree_gen_one_value_profiler, tree_gen_ic_profiler,
11358         tree_gen_ic_func_profiler, tree_gen_average_profiler,
11359         tree_gen_ior_profiler): Ditto.
11360         * tree-ssa-reassoc.c (negate_value): Ditto.
11361         * matrix-reorg.c (transform_access_sites, transform_allocation_sites):
11362         Use force_gimple_operand_bsi.
11363         * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Ditto.
11364         * tree-if-conv.c (add_to_dst_predicate_list,
11365         find_phi_replacement_condition): Ditto.
11366         * gimplify.c (force_gimple_operand_bsi): Add before and m arguments.
11367         Call mark_symbols_for_renaming for new statements.
11368         * tree-flow.h (force_gimple_operand_bsi): Declaration changed.
11369
11370 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
11371
11372         * cfghooks.c (remove_edge): New function.
11373         (redirect_edge_and_branch, remove_branch, merge_blocks): Updated
11374         loop exit rescans.
11375         * cfghooks.h (remove_edge): Declare.
11376         * cfg.c (remove_edge): Renamed to remove_edge_raw.
11377         * basic-block.h (remove_edge): Declaration changed to remove_edge_raw.
11378
11379 2007-07-09  Wolfgang Gellerich  <gellerich@de.ibm.com>
11380
11381         * optabs.h: Added declaration for signbit_optab.  
11382         * optabs.c: (init_optabs): Added initialization for signbit_optab.
11383         * genoptinit.c (optabs): Added entry for signbit insns.  
11384         * builtins.c (expand_builtin_signbit): Added code to use a signbit
11385         insn, if available.  
11386         * config/s390/s390.h (S390_TDC_SIGNBIT_SET): New constant.  
11387         * config/s390/s390.md (signbit<mode>2): New expander.  
11388
11389 2007-07-09  Richard Guenther  <rguenther@suse.de>
11390
11391         PR middle-end/32698
11392         * fold-const.c (fold_plusminus_mult_expr): Move constant
11393         arguments second to allow decomposing.
11394
11395 2007-07-09  Alexandre Oliva  <aoliva@oliva.athome.lsd.ic.unicamp.br>
11396
11397         Revert:
11398         2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
11399         PR debug/23551
11400         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
11401         Disregard DECL_FROM_INLINE.
11402
11403 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
11404
11405         PR target/27855
11406         * doc/invoke.texi: Add ftree-reassoc flag.
11407         * common.opt (ftree-reassoc): New flag.
11408         * tree-ssa-reassoc.c (gate_tree_ssa_reassoc): New static function.
11409         (struct tree_opt_pass pass_reassoc): Use gate_tree_ssa_reassoc.
11410
11411 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
11412
11413         PR tree-optimization/32681
11414         * tree-if-conv.c (find_phi_replacement_condition): Use the condition
11415         saved in second_edge->aux when first_bb is a loop header.
11416
11417 2007-07-09  Jan HUbicka  <jh@suse.cz>
11418
11419         * cse.c (cse_insn): Avoid invalid sharing on trial replacement.
11420
11421 2007-07-09  Richard Guenther  <rguenther@suse.de>
11422
11423         * c-decl.c (start_function): Do not promote return type.
11424
11425 2007-07-08  Daniel Franke  <franke.daniel@gmail.com>
11426
11427         * function.c (do_warn_unused_parameter): Do not warn if
11428         TREE_NO_WARNING is set.
11429
11430 2007-07-08  Andreas Schwab  <schwab@suse.de>
11431
11432         * doc/invoke.texi (DEC Alpha/VMS Options): Fix typo.
11433
11434 2007-07-08  Sandra Loosemore  <sandra@codesourcery.com>
11435
11436         Revert this patch:
11437         2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
11438
11439         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
11440         apply to assembly language, too.
11441         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
11442
11443 2007-07-07  Daniel Berlin  <dberlin@dberlin.org>
11444
11445         Revert (note the sccvn portions are *not* reverted)
11446         2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
11447
11448         Fix PR tree-optimization/23488
11449
11450         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
11451         handles.
11452         * tree-flow-inline.h (get_value_handle): Ditto.
11453         * tree-ssa-pre.c (decl_vh_map): New.
11454         (decl_node_pool): New.
11455         (can_value_number_operation): Support DECL_P.
11456         (can_PRE_operation): Ditto.
11457         (create_expression_by_pieces): Ditto.
11458         (find_existing_value_expr): Modify to differnetiate between
11459         addressing and top level.
11460         (create_value_handle_for_expr): Handle DECL's.
11461         (poolify_tree): Ditto.
11462         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
11463         (make_values_for_stmt): Handle DECL's properly.
11464         (init_pre): Reorg to not init useless things during FRE.
11465         (fini_pre): Ditto.
11466         * tree-flow.h: Include pointer-set.h.
11467         (decl_vh_map): Declare.
11468         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
11469
11470 2007-07-07 Eric Weddington  <eweddington@cso.atmel.com>
11471
11472         * config/avr/constraints.md (define_memory_constraint "Q"): Fix
11473         the constraint description.
11474         * doc/md.texi: Update documentation of AVR constraints.
11475
11476 2007-07-07  Kazu Hirata  <kazu@codesourcery.com>
11477
11478         * auto-inc-dec.c, config/arm/arm.c,
11479         config/m32r/constraints.md, config/mips/mips.md,
11480         config/rs6000/rs6000.c, cselib.c, dce.c, df-core.c,
11481         df-problems.c, df-scan.c, df.h, dse.c, gimplify.c,
11482         tree-if-conv.c, tree-ssa-sccvn.c, tree-ssa.c: Fix comment
11483         typos.  Follow spelling conventions.
11484         * doc/invoke.texi, doc/rtl.texi: Fix typos.
11485
11486         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
11487         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
11488
11489         * tree-ssa-operands.c (realloc_vop, realloc_vdef,
11490         realloc_vuse): Remove.
11491         * tree-ssa-operands.h: Remove the prototype for realloc_vdef
11492         and realloc_vuse.
11493
11494 2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
11495
11496         Fix PR tree-optimization/23488
11497
11498         * tree-ssa-sccvn.c (expr_has_constants): Handle tcc_declaration.
11499         (try_to_simplify): Ditto.
11500         (visit_use): Ditto.
11501         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
11502         handles.
11503         * tree-flow-inline.h (get_value_handle): Ditto.
11504         * tree-ssa-pre.c (decl_vh_map): New.
11505         (decl_node_pool): New.
11506         (can_value_number_operation): Support DECL_P.
11507         (can_PRE_operation): Ditto.
11508         (create_expression_by_pieces): Ditto.
11509         (find_existing_value_expr): Modify to differnetiate between
11510         addressing and top level.
11511         (create_value_handle_for_expr): Handle DECL's.
11512         (poolify_tree): Ditto.
11513         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
11514         (make_values_for_stmt): Handle DECL's properly.
11515         (init_pre): Reorg to not init useless things during FRE.
11516         (fini_pre): Ditto.
11517         * tree-flow.h: Include pointer-set.h.
11518         (decl_vh_map): Declare.
11519         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
11520                 
11521 2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
11522
11523         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
11524         apply to assembly language, too.
11525         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
11526
11527 2007-07-06  Ian Lance Taylor  <iant@google.com>
11528             Zack Weinberg  <zackw@panix.com>
11529
11530         PR middle-end/32441
11531         * builtins.c (std_expand_builtin_va_start): Don't use make_tree.
11532
11533 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
11534
11535         * config/sh/sh.md (*prefetch_i4): Disable for TARGET_VXWORKS_RTP.
11536         (prefetch): Likewise if "pref" would be used.
11537
11538 2007-07-06  Josh Conner  <jconner@apple.com>
11539
11540         PR middle-end/32602
11541         PR middle-end/32603
11542         * calls.c (store_one_arg): Handle arguments which are partially
11543         on the stack when detecting argument overlap.
11544
11545 2007-07-06  Bernd Schmidt  <bernd.schmidt@analog.com>
11546
11547         * reload1.c (choose_reload_regs): Set reload_spill_index for regs
11548         chosen during find_reloads.
11549
11550 2007-07-06  Richard Guenther  <rguenther@suse.de>
11551
11552         * gimplify.c (gimplify_call_expr): Prefer DECL_ARGUMENTS over
11553         TYPE_ARG_TYPES for verification of argument types.  Use
11554         DECL_ARG_TYPE instead of the PARM_DECL type.  Take excess
11555         parameters as variable arguments.
11556
11557 2007-07-06  Andreas Krebbel  <krebbel1@de.ibm.com>
11558
11559         * libgcc2.h (word_type): Type definition removed.
11560         (cmp_return_type, shift_count_type): Type definitions added.
11561         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
11562         replaced with shift_count_type.
11563         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
11564         cmp_return_type.
11565         * libgcc2.c (__udivmoddi4, __moddi3): Type of local variable c
11566         changed from word_type to Wtype.
11567         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
11568         replaced with shift_count_type.
11569         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
11570         cmp_return_type.
11571         * c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return
11572         and libgcc_shift_count attribute added.
11573         * target-def.h (TARGET_LIBGCC_CMP_RETURN_MODE,
11574         TARGET_LIBGCC_SHIFT_COUNT_MODE): New target hooks defined.
11575         (TARGET_INITIALIZER): New target hooks added.
11576         * targhooks.c (default_libgcc_cmp_return_mode,
11577         default_libgcc_shift_count_mode): Default implementations for the new
11578         target hooks added.
11579         * targhooks.h (default_libgcc_cmp_return_mode,
11580         default_libgcc_shift_count_mode): Function prototypes added.
11581         * target.h (struct gcc_target): Fields for the new target hooks added.
11582         * optabs.c (expand_binop): Use shift_count_mode when expanding shift
11583         as library call.
11584         (prepare_cmp_insn): Use cmp_return_mode when expanding comparison as
11585         library call.
11586
11587         * doc/tm.texi (TARGET_LIBGCC_CMP_RETURN_MODE,
11588         TARGET_LIBGCC_SHIFT_COUNT_MODE): Documentation added.
11589
11590         * config/s390/s390.c (s390_libgcc_cmp_return_mode,
11591         s390_libgcc_shift_count_mode): Functions added.
11592         (TARGET_LIBGCC_CMP_RETURN_MODE, TARGET_LIBGCC_SHIFT_COUNT_MODE):
11593         Target hooks defined.
11594
11595 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
11596
11597         * config/mips/mips.c (compute_frame_size): Restore the original
11598         gp_sp_offset for !GENERATE_MIPS16E_SAVE_RESTORE and remove the
11599         fp_size term from the GENERATE_MIPS16E_SAVE_RESTORE calculation.
11600         Document why the difference is needed.
11601
11602 2007-07-06  Richard Guenther  <rguenther@suse.de>
11603
11604         * c-common.c (boolean_increment): Use correctly typed
11605         constant.
11606
11607 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
11608
11609         * config/mips/mips.c (mips16e_save_restore_pattern_p): Check that
11610         the topmost argument register is not also included in the save mask.
11611         (mips16e_collect_argument_save_p): Take a pointer to the argument
11612         register, rather than a pointer to the number of arguments.
11613         (mips16e_collect_argument_saves): Only include argument saves
11614         that aren't in the register mask.
11615
11616 2007-07-06  Uros Bizjak  <ubizjak@gmail.com>
11617
11618         PR rtl-optimization/32450
11619         * function.c (thread_prologue_and_epilogue_insns): Emit blockage insn
11620         to ensure that instructions are not moved into the prologue when
11621         profiling is on.  Remove unused prologue_end variable.
11622         (expand_function_end): Emit blockage insn instead of ASM_INPUT rtx
11623         as a scheduling barrier.
11624
11625 2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
11626
11627         PR debug/23551
11628         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
11629         Disregard DECL_FROM_INLINE.
11630
11631 2007-07-05  Adam Nemet  <anemet@caviumnetworks.com>
11632
11633         * rtlanal.c (num_sign_bit_copies1): Improve cases of ANDing or
11634         IORing with a constant.
11635
11636 2007-07-05  Seongbae Park  <seongbae.park@gmail.com>
11637
11638         PR rtl-optimization/32475
11639         * df-scan.c (df_def_record_1): Add a use of the stack pointer
11640         for every definition of the stack pointer.
11641
11642 2007-07-05  Richard Earnshaw  <rearnsha@arm.com>
11643
11644         * arm.c (vfp3_const_double_index): Copy signed results of
11645         REAL_VALUE_TO_INT into unsigned vars.
11646
11647 2007-07-05  Richard Guenther  <rguenther@suse.de>
11648
11649         PR middle-end/32639
11650         * alias.c (get_alias_set): Tread METHOD_TYPE the same as
11651         FUNCTION_TYPE.
11652         * tree-ssa.c (useless_type_conversion_p): Check canonical
11653         types early.
11654
11655 2007-07-05 Anatoly Sokolov <aesok@post.ru>
11656
11657         * config/avr/avr.md (zero_extendqihi2, zero_extendqisi2, 
11658         zero_extendhisi2): Change to define_insn_and_split. 
11659         (zero_extendqidi2, zero_extendhidi2, zero_extendsidi2): New.
11660
11661 2007-07-05  Paolo Bonzini  <bonzini@gnu.org>
11662
11663         * function.c (match_asm_constraints_1, rest_of_match_asm_constraints,
11664         pass_match_asm_constraints): New.
11665         * passes.c (init_optimization_passes): Add new pass.
11666         * stmt.c (expand_asm_operands): Set cfun->has_asm_statement.
11667         * function.h (struct function): Add has_asm_statement bit.
11668         (current_function_has_asm_statement): New.
11669         * tree-pass.h (pass_match_asm_constraints): New.
11670
11671 2007-07-05  Richard Sandiford  <rsandifo@nildram.co.uk>
11672
11673         * config/mips/mips.c (mips_file_start): Avoid declaration
11674         after code.
11675
11676 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
11677
11678         * optabs.c (expand_binop_directly): Fix signed/unsigned comparison.
11679
11680 2007-07-05  Uros Bizjak  <ubizjak@gmail.com>
11681
11682         * rtl.def (NOTE): Change print format string to print
11683         operand 5 as a note insn name.
11684
11685 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
11686             David Ung  <davidu@mips.com>
11687
11688         * config/mips/mips.c (mips_cpu_info): Add 4ksc and 4ksd processors.
11689         * doc/invoke.texi: (MIPS Options): Document them.
11690
11691 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
11692             David Ung  <davidu@mips.com>
11693
11694         Add support for SmartMIPS ASE.
11695
11696         * optabs.c (expand_binop_directly): New, broken out from...
11697         (expand_binop): Here.  Make it try rotating in the other
11698         direction even when the second operand isn't constant.
11699         * config/mips/mips.md (*lwxs): New.
11700         * config/mips/mips.opt (msmartmips): New.
11701         * config/mips/mips.c (mips_lwxs_address_p): New.
11702         (mips_rtx_costs): Make it recognize scaled indexed addressing.
11703         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
11704         __mips_smartmips when compiling for TARGET_SMARTMIPS.
11705         (ISA_HAS_ROR): Define for TARGET_SMARTMIPS.
11706         (ISA_HAS_LWXS): New.
11707         (ASM_SPEC): Add -msmartmips/-mno-smartmips.
11708         * doc/invoke.texi (MIPS Options): Document -msmartmips/-mno-smartmips.
11709         * testsuite/gcc.target/mips/smartmips-lwxs.c: New test case.
11710         * testsuite/gcc.target/mips/smartmips-ror-1.c: New test case.
11711         * testsuite/gcc.target/mips/smartmips-ror-2.c: New test case.
11712         * testsuite/gcc.target/mips/smartmips-ror-3.c: New test case.
11713         * testsuite/gcc.target/mips/smartmips-ror-4.c: New test case.
11714
11715 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
11716
11717         * tree-vectorizer.c (new_loop_vec_info): Initialize
11718         LOOP_VINFO_COST_MODEL_MIN_ITERS.
11719         * tree-vectorizer.h (_loop_vec_info): Added new filed
11720         min_profitable_iters.
11721         (LOOP_VINFO_COST_MODEL_MIN_ITERS): New access macro to above new field.
11722         (TARG_SCALAR_TO_VEC_COST): Define cost of scalar to vector operation.
11723         * tree-vect-analyze.c (vect_analyze_operations): Set
11724         LOOP_VINFO_COST_MODEL_MIN_ITERS.
11725         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Use
11726         VEC_length to determine if there are any LOOP_VINFO_MAY_MISALIGN_STMTS.
11727         Fix calculation of peel_iters_prologue. Move consideration of epilogue
11728         and prologue cost to after they are computed.
11729         (vect_model_induction_cost): Use TARG_SCALAR_TO_VEC_COST instead of
11730         TARG_VEC_STMT_COST.
11731         (vect_model_simple_cost): Takes additional argument dt. Consider cost
11732         of creating vectors from scalars according to dt.
11733         (vect_model_store_cost): Likewise.
11734         (vectorizable_call): Use dt array instead of scalar dt. Call
11735         vect_model_simple_cost with additional argument dt.
11736         (vectorizable_assignment): Likewise.
11737         (vectorizable_operation): Likewise.
11738         (vectorizable_type_demotion): Likewise.
11739         (vectorizable_type_promotion): Likewise.
11740         (vectorizable_store): Use dt array instead of scalar dt. Call
11741         vect_model_store_cost with additional argument dt.
11742         (vect_do_peeling_for_loop_bound): Don't call
11743         vect_estimate_min_profitable_iters. Instead, lookup
11744         LOOP_VINFO_COST_MODEL_MIN_ITERS. Don't always print
11745         "may not be profitable".
11746
11747 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
11748
11749         PR testsuite/32014
11750         * config/rs6000/altivec.md (UNSPEC_VUPKHS_V4SF, UNSPEC_VUPKLS_V4SF):
11751         (UNSPEC_VUPKHU_V4SF, UNSPEC_VUPKLU_V4SF): New.
11752         (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi): New patterns.
11753         (vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): New patterns. 
11754
11755 2007-07-05  Zdenek Dvorak  <dvorakz@suse.cz>
11756
11757         * config/i386/i386.c (ix86_address_cost): Do not consider more complex
11758         addressing modes cheaper.
11759
11760 2007-07-05  Alexandre Oliva  <aoliva@redhat.com>
11761
11762         * dwarf2out.c (dw_ranges_by_label_ref): New typedef.
11763         (dw_ranges_struct): Rename block_num to num.  Adjust.
11764         (dw_ranges_by_label_struct): New.
11765         (ranges_by_label, ranges_by_label_allocated,
11766         ranges_by_label_in_use): New variables.
11767         (add_ranges_num): Factored most of the code out of...
11768         (add_ranges): ... this one.  Rewrite in terms of the former.
11769         (add_ranges_by_labels): New.
11770         (output_ranges): Output by-label ranges.
11771         (dwarf2out_finish): Output range for multiple-section
11772         compile_unit.  Output standard DW_AT_low_pc in addition to
11773         unexpected DW_AT_entry_pc.
11774
11775 2007-07-04  Daniel Berlin  <dberlin@dberlin.org>
11776
11777         PR tree-optimization/32604
11778         PR tree-optimization/32606
11779
11780         * tree-ssa-pre.c (bb_bitmap_sets): Removed antic_safe_loads.
11781         (compute_antic_safe): Removed.
11782         (ANTIC_SAFE_LOADS): Ditto.
11783         (compute_antic_aux): Don't print ANTIC_SAFE_LOADS.
11784         (execute_pre): Don't call compute_antic_safe.
11785         (vuse_equiv): New function.
11786         (make_values_for_stmt): Use it
11787         * tree-ssa-sccvn.c (set_ssa_val_to): Remove assert, since it is
11788         not always true.
11789
11790 2007-07-04 Anatoly Sokolov <aesok@post.ru>
11791
11792         PR target/31331
11793         * config/avr/avr.c (avr_naked_function_p): Handle receiving a type
11794         rather than a decl. 
11795         (avr_attribute_table): Make "naked" attribute apply to function types
11796         rather than to decls.
11797         (avr_handle_fntype_attribute): New function.
11798
11799 2007-07-04  Joseph Myers  <joseph@codesourcery.com>
11800
11801         * target-def.h (TARGET_INITIALIZER): Remove trailing whitespace
11802         after \.
11803
11804 2007-07-04  David Ung  <davidu@mips.com>
11805             Joseph Myers  <joseph@codesourcery.com>
11806
11807         * config/mips/mips.md (type): Add logical, signext and move.
11808         (one_cmpl<mode>2, *and<mode>3, *and<mode>3_mips16, *ior<mode>3,
11809         *ior<mode>3_mips16, two unnamed insns after *ior<mode>3_mips16,
11810         *nor<mode>3, "Combiner patterns to optimize truncate/zero_extend
11811         combinations", *zero_extend<SHORT:mode><GPR:mode>2,
11812         *zero_extendqihi2, *extend<SHORT:mode><GPR:mode>2_mips16e,
11813         *extend<SHORT:mode><GPR:mode>2_se<SHORT:size>, *movdi_64bit,
11814         *movdi_64bit_mips16, *movsi_internal, *movsi_mips16, movcc,
11815         *movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16,
11816         *movsf_hardfloat, *movsf_softfloat, *movsf_mips16,
11817         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit,
11818         movv2sf_hardfloat_64bit): Use the new types.
11819         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16,
11820         *movdf_softfloat, *movdf_mips16): Use "multi".
11821         (extendqihi2): Replace with a define_expand.
11822         (*extendqihi2_mips16e, *extendqihi2, *extendqihi2_seb): New.
11823         Based on extend<SHORT:mode><GPR:mode>2 patterns.
11824         * config/mips/74k.md (r74k_int_logical): New reservation and
11825         bypasses.
11826         (r74k_int_arith): Remove "slt".
11827         * config/mips/24k.md, config/mips/4130.md, config/mips/4k.md,
11828         config/mips/5400.md, config/mips/5500.md, config/mips/5k.md,
11829         config/mips/7000.md, config/mips/9000.md, config/mips/generic.md,
11830         config/mips/sb1.md, config/mips/sr71k.md: Add new types to
11831         reservations for "arith".
11832
11833 2007-07-04  Richard Guenther  <rguenther@suse.de>
11834
11835         * tree-ssa.c (useless_type_conversion_p): Add handling for
11836         scalar float and vector types.  Only call the types_compatible_p
11837         langhook for aggregate types as last resort.  Follow the
11838         rules.
11839
11840 2007-07-04  Richard Guenther  <rguenther@suse.de>
11841
11842         * tree-inline.c (estimate_num_insns_1): Treat CONVERT_EXPR
11843         the same as NOP_EXPR.
11844
11845 2007-07-04  Nick Clifton  <nickc@redhat.com>
11846
11847         * target.h (struct gcc_target): Add target_help field.
11848         * target-def.h (TARGET_HELP): New.
11849         (TARGET_INITIALIZER): Use TARGET_HELP.
11850         * opts.c (command_handle_option): Invoke target_help function, if
11851         defined, when the user has specified --target-help on the command
11852         line.
11853         * doc/invoke.texi: Mention that --target-help might print
11854         additional information.
11855         * doc/tm.texi: Document TARGET_HELP hook.
11856
11857         * arm.c (TARGET_HELP): Override default definition.
11858         (arm_target_help): New - display a wrapped list of cores and
11859         architectures supported.
11860
11861 2007-07-04  Rask Ingemann Lambertsen  <rask@sygehus.dk>
11862
11863         * config/v850/v850.c (expand_prologue): Make sure
11864         GEN_INT() argument is sign extended rather than zero extended.
11865         (expand_epilogue): Likewise.
11866         (output_move_double): Delete.
11867         * config/v850/v850-protos.h (output_move_double): Delete.
11868         * config/v850/v850.md (movdi): Delete.
11869         (*movdi_internal): Delete.
11870         (movdf): Delete.
11871         (*movdf_internal): Delete.
11872
11873 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
11874
11875         * config/sh/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Reject -mrelax
11876         unless compiling RTP PIC.
11877
11878 2007-07-04  Richard Guenther  <rguenther@suse.de>
11879
11880         PR tree-optimization/32482
11881         * tree-ssa-ifcombine.c (recognize_single_bit_test): Use the
11882         original ssa name if we didn't find a shift expression.
11883         Fix shift constant for bit zero test.
11884
11885 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
11886
11887         * config/sh/lib1funcs.asm (ic_invalidate): Align constant pool.
11888
11889 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
11890
11891         * config.gcc (arm-wrs-vxworks): Don't include svr4.h.
11892         * config/vxworks.h (PTRDIFF_TYPE, SIZE_TYPE, TARGET_POSIX_IO): Define.
11893         * config/arm/vxworks.h (ASM_SPEC): Delete.
11894         (SUBTARGET_EXTRA_ASM_SPEC): Define.
11895
11896 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
11897
11898         * tree-data-ref.h (data_dependence_relation): New flag reversed_p.
11899         (DDR_REVERSED_P): New.
11900         * tree-data-ref.c (initialize_data_dependence_relation,
11901         build_classic_dist_vector): Set DDR_REVERSED_P.
11902
11903 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
11904
11905         PR middle-end/32457
11906         * tree-data-ref.c (analyze_siv_subscript_cst_affine,
11907         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
11908         init_omega_for_ddr_1): Use non conservative number of iterations
11909         estimations.
11910         (analyze_subscript_affine_affine): Use HOST_WIDE_INT instead of int.
11911         (analyze_siv_subscript): Remove FIXME and reinitialization of 
11912         last_conflicts to chrec_dont_know.
11913         * testsuite/gfortran.dg/vect/pr32457.f90: New.
11914
11915 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
11916
11917         * tree.c (maybe_canonicalize_argtypes): Improve description.
11918
11919 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
11920
11921         * tree.c (maybe_canonicalize_argtypes): New.
11922         (build_function_type): Set canonical type.
11923         (build_method_type_directly): Ditto.
11924         (reconstruct_complex_type): Rebuild the METHOD_TYPE node
11925         properly.
11926
11927 2007-07-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11928
11929         * tree-ssa-loop-ivopts.c (strip_offset_1): Treat POINTER_PLUS_EXPR
11930         like PLUS_EXPR.
11931         (rewrite_use_nonlinear_expr): Likewise.
11932
11933 2007-07-03  Seongbae Park  <seongbae.park@gmail.com>
11934
11935         * rtl.def (UNSPEC, USE, CLOBBER): More comments.
11936
11937 2007-07-04  Ben Elliston  <bje@au.ibm.com>
11938
11939         * dwarf2out.c: Move DWARF2 abbreviation glossary closer to the top
11940         of this file.
11941
11942         * c-objc-common.c (c_types_compatible_p): Fix indentation.
11943
11944         * doc/tm.texi (Run-time Target): Capitalise "CPU".
11945         (Exception Handling): Likewise.
11946
11947 2007-07-03  Jan Hubicka  <jh@suse.cz>
11948
11949         * ifcvt.c (find_cond_trap): Avoid invalid RTL sharing.
11950
11951 2007-07-03  Eric Christopher  <echristo@apple.com>
11952
11953         * doc/cppopts.texi: Add conflicting option note to -dM.
11954         * doc/invoke.texi: Add note about possible conflicts with
11955         -E for -dCHARS and note that -dM will not produce
11956         any results if there is no machine dependent reorg.
11957         
11958 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
11959
11960         * tree.h (DECL_ALIGN): Back out previous change.
11961
11962 2007-07-03  Joseph Myers  <joseph@codesourcery.com>
11963
11964         * configure.ac: Test for .dtprelword support on MIPS.
11965         * configure, config.in: Regenerate.
11966         * config/mips/mips.c (mips_output_dwarf_dtprel): New.
11967         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
11968
11969 2007-07-03  Julian Brown  <julian@codesourcery.com>
11970
11971         * config.gcc (with_fpu): Allow --with-fpu=vfp3.
11972         * config/arm/aout.h (REGISTER_NAMES): Add D16-D31.
11973         * config/arm/aof.h (REGISTER_NAMES): Add D16-D31.
11974         * config/arm/arm.c (FL_VFPV3): New flag for VFPv3 processor
11975         capability.
11976         (all_fpus): Add FPUTYPE_VFP3.
11977         (fp_model_for_fpu): Add VFPv3 field.
11978         (arm_rtx_costs_1): Give cost to VFPv3 constants.
11979         (vfp3_const_double_index): New function. Return integer index of
11980         VFPv3 constant suitable for fconst[sd] insns, or -1 if constant
11981         isn't suitable.
11982         (vfp3_const_double_rtx): New function. True if VFPv3 is enabled
11983         and argument represents a valid RTX for a VFPv3 constant.
11984         (vfp_output_fldmd): Split fldmd with > 16 registers in the list into
11985         two instructions.
11986         (vfp_emit_fstmd): Similar, for fstmd.
11987         (arm_print_operand): Implement new code 'G' for VFPv3 floating-point
11988         constants, represented as integer indices.
11989         (arm_hard_regno_mode_ok): Use VFP_REGNO_OK_FOR_SINGLE,
11990         VFP_REGNO_OK_FOR_DOUBLE macros.
11991         (arm_regno_class): Handle VFPv3 d0-d7, low, high register split.
11992         (arm_file_start): Set float-abi attribute for VFPv3, and output
11993         correct ".fpu" assembler directive.
11994         (arm_dbx_register_numbering): Add FIXME.
11995         * config/arm/arm.h (TARGET_VFP3): New macro. Target supports VFPv3.
11996         (fputype): Add FPUTYPE_VFP3.
11997         (FIXED_REGISTERS): Add 32 registers for D16-D31.
11998         (CALL_USED_REGISTERS): Likewise.
11999         (CONDITIONAL_REGISTER_USAGE): Add note about conditional definition
12000         of LAST_VFP_REGNUM. Make D16-D31 caller-saved, if present.
12001         (LAST_VFP_REGNUM): Extend available VFP registers for VFPv3.
12002         (D7_VFP_REGNUM): New.
12003         (LAST_LO_VFP_REGNUM, FIRST_HI_VFP_REGNUM, LAST_HI_VFP_REGNUM)
12004         (VFP_REGNO_OK_FOR_SINGLE, VFP_REGNO_OK_FOR_SINGLE)
12005         (VFP_REGNO_OK_FOR_DOUBLE): Define new macros.
12006         (FIRST_PSEUDO_REGISTER): Shift up to 128 to accommodate VFPv3.
12007         (REG_ALLOC_ORDER): Adjust for VFPv3.
12008         (reg_class): Add VFP_D0_D7_REGS, VFP_LO_REGS, VFP_HI_REGS.
12009         (REG_CLASS_NAMES): Add entries corresponding to VFP_D0_D7_REGS,
12010         VFP_LO_REGS, VFP_HI_REGS.
12011         (REG_CLASS_CONTENTS): Likewise. Extend contents for VFP_REGS.
12012         (IS_VFP_CLASS): Define macro.
12013         (SECONDARY_OUTPUT_RELOAD_CLASS, SECONDARY_INPUT_RELOAD_CLASS): Use
12014         IS_VFP_CLASS.
12015         (REGISTER_MOVE_COST): Likewise.
12016         * config/arm/arm-protos.h (vfp3_const_double_rtx): Add prototype.
12017         * config/arm/vfp.md (VFPCC_REGNUM): Redefine as 127.
12018         (*arm_movsi_vfp, *thumb2_movsi_vfp, *movsfcc_vfp)
12019         (*thumb2_movsfcc_vfp, *abssf2_vfp, *negsf2_vfp, *addsf3_vfp)
12020         (*subsf3_vfp, *divsf_vfp, *mulsf_vfp, *mulsf3negsf_vfp)
12021         (*mulsf3addsf_vfp, *mulsf3subsf_vfp, *mulsf3negsfaddsf_vfp)
12022         (*extendsfdf2_vfp, *truncdfsf2_vfp, *truncsisf2_vfp)
12023         (*truncsidf2_vfp, fixuns_truncsfsi2, fixuns_truncdfsi2)
12024         (*floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2)
12025         (floatunssidf2, *sqrtsf2_vfp, *cmpsf_split_vfp)
12026         (*cmpsf_trap_split_vfp, *cmpsf_vfp, *cmpsf_trap_vfp): Use 't'
12027         where appropriate for single-word registers.
12028         (*movsf_vfp, *thumb2_movsf_vfp, *movdf_vfp, *thumb2_movdf_vfp):
12029         As above. Fix type attributes.
12030         * config/arm/constraints.md (register_contraint "t"): Define.
12031         (register_constraint "w"): Change to D0-D15, or D0-D31 for
12032         VFPv3/NEON.
12033         (register_constraint "x"): Define.
12034         (constraint "Dv"): Define.
12035
12036 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
12037
12038         * tree.h (DECL_ALIGN): Prevent use on a FUNCTION_DECL.
12039
12040 2007-07-03  Tom Tromey  <tromey@redhat.com>
12041
12042         * c-parser.c (objc_pq_context): Removed.
12043         (objc_need_raw_identifier): Likewise.
12044         (c_parser) <objc_pq_context>: New field.
12045         <objc_need_raw_identifier>: Likewise.
12046         (OBJC_NEED_RAW_IDENTIFIER): Removed.
12047         (c_lex_one_token): Update.
12048         (c_parser_objc_protocol_definition): Update.
12049         (c_parser_objc_method_definition): Update.
12050         (c_parser_objc_methodproto): Update.
12051         (c_parser_declspecs): Update.
12052
12053 2007-07-03  David Ung  <davidu@mips.com>
12054
12055         * config/mips/mips.c (mips_issue_rate): Return 4 for 74K processors.
12056
12057 2007-07-03  David Ung  <davidu@mips.com>
12058             Richard Sandiford  <richard@codesourcery.com>
12059
12060         * doc/invoke.texi: Document -march=74kf3_2.
12061         * config/mips/mips.h (PROCESSOR_74KF3_2): New processor_type.
12062         (TUNE_74K): Check for it.
12063         * config/mips/mips.c (mips_cpu_info): Add 74kf3_2.
12064         (mips_rtx_cost_data): Add an entry for PROCESSOR_74KF3_2.
12065         * config/mips/mips.md (cpu): Add 74kf3_2.
12066         * config/mips/74k.md (r74k_int_logical, r74k_int_arith, r74k_int_nop)
12067         (r74k_int_cmove, r74k_int_mult, r74k_int_mul3, r74k_int_mfhilo)
12068         (r74k_int_mthilo, r74k_int_div, r74k_int_call, r74k_int_jump)
12069         (r74k_int_load, r74k_int_store, r74k_unknown, r74k_multi): Add
12070         74kf3_2 to the CPU list.
12071         (r74kf3_2_fadd, r74kf3_2_fmove, r74kf3_2_fload, r74kf3_2_fstore)
12072         (r74kf3_2_fmul_sf, r74kf3_2_fmul_df, r74kf3_2_fdiv_sf)
12073         (r74kf3_2_fdiv_df, r74kf3_2_frsqrt_sf, r74kf3_2_frsqrt_df)
12074         (r74kf3_2_fcmp, r74kf3_2_fcvt, r74kf3_2_fxfer_to_c1)
12075         (r74kf3_2_fxfer_from_c1): New insn reservations.
12076
12077 2007-07-03  Richard Sandiford  <richard@codesourcery.com>
12078             David Ung  <davidu@mips.com>
12079
12080         * doc/invoke.texi: Replace -march=24kf with -march=24kf2_1 and
12081         -march=24kx with -march=24kf1_1.  Likewise 24ke[fx], 34k[fx]
12082         and 74k[fx].  Document aliases for the new options.
12083         * config/mips/mips.h (PROCESSOR_24KF): Rename to...
12084         (PROCESSOR_24KF2_1): ...this.
12085         (PROCESSOR_24KX): Rename to...
12086         (PROCESSOR_24KF1_1): ...this.
12087         (PROCESSOR_74KF): Rename to...
12088         (PROCESSOR_74KF2_1): ...this.
12089         (PROCESSOR_74KX): Rename to...
12090         (PROCESSOR_74KF1_1): ...this.
12091         (TUNE_74K): Update PROCESSOR_* names.
12092         * config/mips/mips.c (mips_cpu_info): Add 24kf2_1 as a synonym
12093         for 24kf.  Add 24kf1_1 and 24kfx as synonyms for 24kx.  Likewise
12094         the 24ke*, 34k* and 74k* processors.  Update PROCESSOR_* names.
12095         (mips_rtx_cost_data): Update processor names in comments.
12096         (mips_issue_rate): Update PROCESSOR_* names.
12097         * config/mips/mips.md (cpu): Rename 24kf to 24kf2_1, 24kx to
12098         24kf1_1, 74kf to 74kf2_1 and 74kx to 74kf1_1.
12099         * config/mips/24k.md: Rename FPU-related r24k_* insn reservations
12100         to r24kf2_1_*.  Rename r24kx_* insn reservations to r24kf1_1_*.
12101         Update cpu attribute names.
12102         (r24k_fpu_iss): Rename this reservation to...
12103         (r24kf2_1_fpu_iss): ...this and update all uses.
12104         (r24kx_fpu_iss): Rename this reservation to...
12105         (r24kf1_1_fpu_iss): ...this and update all uses.
12106         * config/mips/74k.md: Rename FPU-related r74kf_* insn reservations
12107         to r74kf2_1_*.  Rename r74kx_* insn reservations to r74kf1_1_*.
12108         Update cpu attribute names.
12109
12110 2007-07-01  Kaz Kojima  <kkojima@gcc.gnu.org>
12111
12112         * config/m32r/constraints.md: New file.
12113         * config/m32r/m32r.c: Include tm-constrs.h.
12114         (small_data_operand): Use satisfies_constraint_* instead of macro.
12115         (addr24_operand, gen_compare): Likewise.
12116         * config/m32r/m32r.h (REG_CLASS_FROM_LETTER): Remove.
12117         (INT8_P, UPPER16_P, UINT32_P, UINT5_P, INVERTED_SIGNED_8BIT,
12118         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
12119         EXTRA_CONSTRAINT): Likewise.
12120         * config/m32r/m32r.md: Include constraints.md.
12121         (*movsi_insn): Use satisfies_constraint_* instead of macro.
12122         (andsi3, iorsi3, xorsi3, seq_insn+1, sne): Likewise.
12123         * config/m32r/predicates.md (conditional_move_operand): Likewise.
12124         (two_insn_const_operand, int8_operand, uint16_operand,
12125         reg_or_int16_operand, reg_or_uint16_operand,
12126         reg_or_cmp_int16_operand, cmp_int16_operand,
12127         seth_add3_operand): Likewise.
12128
12129 2007-07-03  Eric Christopher  <echristo@gmail.com>
12130
12131         * libgcc2.h: Conditionally declare __bswapsi2 and
12132         __bswapdi2.
12133         
12134 2007-07-03  H.J. Lu  <hongjiu.lu@intel.com>
12135
12136         * ddg.c (check_sccs): Define only if ENABLE_CHECKING is
12137         defined.
12138
12139 2007-07-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
12140
12141         PR target/28307
12142         * gthr-posix.h [SUPPORTS_WEAK && GTHREAD_USE_WEAK]
12143         (__gthrw_pragma): Provide default definition.
12144         (__gthrw2): Use it.
12145         * gthr-posix.c (__gthrw_pragma): Define.
12146
12147 2007-07-03  Daniel Berlin  <dberlin@dberlin.org>
12148
12149         * tree-ssa-sccvn.c (set_ssa_val_to): Check for operand_equal_p
12150         before declaring inequality.
12151
12152 2007-07-03  Rask Ingemann Lambertsen  <rask@sygehus.dk>
12153
12154         * combine.c (recog_for_combine): Log the success or failure of
12155           matching new insn patterns against the machine description in
12156           detailed dumps.
12157
12158 2007-07-03  Revital Eres  <eres@il.ibm.com>
12159
12160         * ddg.c (print_sccs): New function.
12161         (check_sccs): New function.
12162         (create_ddg_all_sccs): Use it.
12163         * ddg.h (print_sccs): Declare.
12164         * modulo-sched.c (sms_order_nodes): Call print_sccs.
12165
12166 2007-07-03  Uros Bizjak  <ubizjak@gmail.com>
12167
12168         * targhooks.h (default_mode_for_suffix): New function declaration.
12169         * targhooks.c (default_mode_for_suffix): New default target hook.
12170         * target.h (struct c): New structure in the targetm struct.
12171         (mode_for_suffix): New target hook as part of struct c.
12172         target-def.h (TARGET_C_MODE_FOR_SUFFIX): Define as
12173         default_mode_for_suffix.
12174         (TARGET_C): New define.
12175         * c-lex.c: Include "target.h".
12176         (interpret_float): Use targetm.c.mode_for_suffix to determine
12177         the mode for a given non-standard suffix.
12178         Makefile.in (c-lex.o): Depend on $(TARGET_H).
12179
12180         * config/i386/i386.c (ix86_c_mode_for_suffix): New static function.
12181         (TARGET_C_MODE_FOR_SUFFIX): Define to ix86_c_mode_for_suffix.
12182
12183         * doc/extend.texi (Floating Types): New node.  Document __float80 and
12184         __float128 types.  Document 'w', 'W', 'q' and 'Q' suffixes.
12185
12186 2007-07-03  Kaz Kojima  <kkojima@gcc.gnu.org>
12187
12188         PR target/32506
12189         * config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
12190         predicate instead of target_operand.
12191         (divsi3_i1_media, divsi3_media_2): Likewise.
12192
12193 2007-07-02  Eric Botcazou  <ebotcazou@adacore.com>
12194
12195         * tree.h (alias_sets_might_conflict_p): Rename into
12196         alias_sets_must_conflict_p.
12197         * alias.c (alias_sets_might_conflict_p): Likewise.
12198         (alias_sets_conflict_p): Use it.
12199         (objects_must_conflict_p): Likewise.
12200         * c-common.c (strict_aliasing_warning): Adjust.
12201
12202 2007-07-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12203
12204         * rtlhooks.c (gen_lowpart_if_possible): Check for
12205         invalid subreg before calling gen_lowpart_SUBREG.
12206
12207 2007-07-02  Geoffrey Keating  <geoffk@apple.com>
12208
12209         * config/darwin9.h: Add copyright notice.
12210         (LINK_COMMAND_SPEC): Add comment.
12211         (DARWIN_LIBSYSTEM_HAS_UNWIND): Define.
12212         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Conditionalise on
12213         DARWIN_LIBSYSTEM_HAS_UNWIND.
12214
12215 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
12216
12217         PR libgomp/32468
12218         * omp-low.c (check_combined_parallel): New function.
12219         (lower_omp_parallel): Call it via walk_stmts, set
12220         OMP_PARALLEL_COMBINED if appropriate.
12221         (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
12222         isn't the only statement in WS_ENTRY_BB or OMP_RETURN
12223         the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
12224         don't consider it as combined parallel.
12225
12226 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
12227
12228         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
12229         (gcc_tooldir): Likewise.
12230         * configure: Regenerate.
12231         * Makefile.in (libsubdir_to_prefix): New variable, based on the
12232         old configure.ac gcc_tooldir setting.
12233         (prefix_to_exec_prefix): New variable.
12234         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
12235         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
12236
12237 2007-07-02  Daniel Berlin  <dberlin@dberlin.org>
12238
12239         Fix PR tree-optimization/32583
12240         Fix PR tree-optimization/32584
12241         * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
12242         (phi_translate_set): Use phi_translate directly now.
12243         (make_values_for_stmt): Don't value number RHS if we already know
12244         it is constant.
12245
12246 2007-07-02  Steve Ellcey  <sje@cup.hp.com>
12247             Jim Wilson <wilson@specifix.com>
12248
12249         PR target/31684
12250         * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
12251         copy_insn.
12252
12253 2007-07-02  Sandra Loosemore  <sandra@codesourcery.com>
12254             Richard Sandiford  <richard@codesourcery.com>
12255             Nigel Stephens  <nigel@mips.com>
12256
12257         * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
12258         (mips16e_output_save_restore): Declare.
12259         (mips16e_save_restore_pattern_p): Likewise.
12260         * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
12261         * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
12262         for GENERATE_MIPS16E_SAVE_RESTORE.  Return 0x400 for TARGET_MIPS16
12263         && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
12264         (BITSET_P): New global macro, extracted from...
12265         (mips_for_each_saved_reg): ...here.
12266         (mips16e_save_restore_info): New struct.
12267         (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
12268         (mips16e_save_restore_regs): New variable.
12269         (mips_split_plus, mips16e_find_first_register): New functions.
12270         (mips16e_mask_registers): New function.
12271         (compute_frame_size): Expand the commentary before the function.
12272         Enforce the MIPS16e save and restore register range restrictions.
12273         Pad the general register save area at the low end.
12274         (mips16e_save_restore_reg, mips16e_build_save_restore)
12275         (mips16e_save_restore_pattern_p, mips16e_add_register_range)
12276         (mips16e_output_save_restore, mips16e_collect_propagate_value)
12277         (mips16e_collect_argument_save, mips16e_collect_argument_saves):
12278         New functions.
12279         (mips_expand_prologue, mips_expand_epilogue): Handle
12280         GENERATE_MIPS16E_SAVE_RESTORE.
12281         * config/mips/mips.md (*mips16e_save_restore): New pattern.
12282
12283 2007-07-02  Uros Bizjak  <ubizjak@gmail.com>
12284
12285         PR tree-optimization/31966
12286         PR tree-optimization/32533
12287         * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
12288         "basic_block" description as its third argument.  Update function
12289         calls to get destination bb from "edge" argument.  Save "cond" into
12290         aux field of the edge.  Update prototype for changed arguments.
12291         (if_convertible_loop_p): Clear aux field of incoming edges if bb
12292         contains phi node.
12293         (find_phi_replacement_condition): Operate on incoming edges, not
12294         on predecessor blocks.  If there is a condition saved in the
12295         incoming edge aux field, AND it with incoming bb predicate.
12296         Return source bb of the first edge.
12297         (clean_predicate_lists): Clean aux field of outgoing node edges.
12298         (tree_if_conversion): Do not initialize cond variable. Move
12299         variable declaration into the loop.
12300         (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
12301         initializations of new_stmt, arg0 and arg1 variables.
12302
12303 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
12304
12305         * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
12306         SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
12307
12308 2007-07-02  Richard Guenther  <rguenther@suse.de>
12309
12310         * tree-ssa.c (useless_type_conversion_p): Document
12311         future intent as defining the middle-end type system.
12312         Re-structure to call langhook last, group by type class,
12313         mark questionable parts.
12314
12315 2007-07-02  Richard Guenther  <rguenther@suse.de>
12316
12317         * tree-flow.h (types_compatible_p): Declare.
12318         * tree-ssa.c (types_compatible_p): New function.
12319         * ipa-type-escape.c (discover_unique_type): Use
12320         types_compatible_p instead of lang_hooks.types_compatible_p.
12321         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
12322         * tree-vn.c (expressions_equal_p): Likewise.
12323         * tree.c (fields_compatible_p): Likewise.
12324         * tree-ssa-dom.c (avail_expr_eq): Likewise.
12325         (cprop_operand): Use useless_type_conversion_p instead of
12326         lang_hooks.types_compatible_p.
12327         * tree-inline.c (setup_one_parameter): Likewise.
12328         (declare_return_variable): Likewise.
12329         * tree-nrv.c (tree_nrv): Likewise.
12330         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
12331         (maybe_fold_offset_to_component_ref): Likewise.
12332         (maybe_fold_offset_to_reference): Likewise.
12333         * tree-ssa-copy.c (may_propagate_copy): Likewise.
12334         (merge_alias_info): Likewise.
12335         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
12336         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
12337         * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
12338         * tree-tailcall.c (find_tail_calls): Likewise.
12339         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
12340         * gimplify.c (canonicalize_addr_expr): Likewise.
12341         (fold_indirect_ref_rhs): Likewise.
12342         (gimplify_addr_expr): Likewise.  Swap parameters to cpt_same_type.
12343         (cpt_same_type): Likewise.
12344         (check_pointer_types_r): Swap parameters to cpt_same_type
12345         where appropriate.
12346         * fold-const.c (fold_convert): Revert fix for PR15988.
12347         * tree-inline.c (setup_one_parameter): Instead fix it here by
12348         using fold_build1 instead of fold_convert and checking for
12349         error_mark_node.  Convert only if the conversion is necessary.
12350
12351 2007-07-02  Joseph Myers  <joseph@codesourcery.com>
12352
12353         * configure.ac: Check for .gnu_attribute on Power.
12354         * configure: Regenerate.
12355         * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
12356         attribute for floating-point ABI.
12357
12358 2007-07-02  Ira Rosen  <irar@il.ibm.com>
12359
12360         PR tree-optimization/32230
12361         PR tree-optimization/32477
12362         * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base 
12363         address is a constant.
12364
12365 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
12366
12367         * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
12368         (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
12369         (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
12370         stanzas.  Use the first part of the triplet to set MIPS_ISA_DEFAULT.
12371         Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
12372         64-bit targets.  Add support for *-elfoabi*.
12373         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
12374         different settings if $(tm_defines) does not select the EABI.
12375         (MULTILIB_EXCLUSIONS): Define in those circumstances.
12376         * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
12377         (MIPS_ARCH_OPTION_SPEC): Likewise.
12378         (MIPS_ISA_LEVEL_SPEC): Likewise.
12379         (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
12380         * config/mips/elfoabi.h: New file.
12381
12382 2007-07-02  Richard Guenther  <rguenther@suse.de>
12383
12384         * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
12385         (useless_type_conversion_p): ... this.
12386         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
12387         (useless_type_conversion_p): ... this.
12388         * builtins.c (fold_builtin_memory_op): Rename
12389         tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
12390         * tree-cfg.c (verify_expr): Likewise.
12391         * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
12392         * tree-ssa-ccp.c (ccp_fold): Likewise.
12393         * tree-ssa-copy.c (may_propagate_copy): Likewise.
12394         * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
12395         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
12396         * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
12397         * tree-ssa-pre.c (eliminate): Likewise.
12398         * tree-ssa.c (delete_tree_ssa): Likewise.
12399         (tree_ssa_useless_type_conversion): Likewise.
12400         * tree.c (build2_stat): Likewise.
12401
12402 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
12403
12404         Fix PR tree-optimization/32571
12405         * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
12406         simplifying them.
12407
12408 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
12409
12410         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
12411         and other expected operations explicitly, change default to
12412         gcc_unreachable. 
12413
12414 2007-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
12415
12416         * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
12417         PARALLEL.
12418         * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
12419         (tls_load_dot_plus_eight): Move the label number into the unspec.
12420         * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
12421
12422 2007-07-01  Andreas Schwab  <schwab@suse.de>
12423
12424         * dwarf2out.c (initial_return_save): Define only if used.
12425
12426 2007-07-01  Kenneth Zadeck <zadeck@naturalbridge.com>
12427
12428         Unreverting Richard's Revert of:
12429
12430         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
12431
12432         * dce.c (deletable_insn_p_1): New function, split out from...
12433         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
12434         specially, not those inside PARALLELs.  Remove BODY argument
12435         and adjust recursive call accordingly.
12436         (prescan_insns_for_dce): Update call to delete_insn_p.
12437
12438 2007-07-01  Vladimir Yanovsky  <yanov@il.ibm.com>
12439             Revital Eres  <eres@il.ibm.com>
12440
12441         * ddg.c (create_ddg_all_sccs): Fix missed
12442         initialization of scc_nodes.
12443
12444 2007-07-01  Uros Bizjak  <ubizjak@gmail.com>
12445
12446         PR middle-end/32559
12447         * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
12448         X + ~X to 1 only for INTEGRAL_TYPE_P type.
12449
12450 2007-06-30  Joseph Myers  <joseph@codesourcery.com>
12451
12452         * configure.ac: Check for .gnu_attribute on MIPS.
12453         * configure, config.in: Regenerate.
12454         * config/mips/mips.c (mips_file_start): If supported, output
12455         attribute for floating-point ABI.
12456
12457 2007-06-30  Uros Bizjak  <ubizjak@gmail.com>
12458
12459         PR target/32433
12460         * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
12461         (ffs_cmove): New expander to expand using ctz pattern.
12462         (*ffs_cmove): Remove pattern.
12463         (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
12464         (ffsdi2): Expand using ctz pattern.
12465         (*ffs_rex64): Remove pattern.
12466
12467 2007-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12468
12469         PR rtl-optimization/32296
12470         * pa.md (return): Delete pattern.
12471         (return_internal): Remove "(const_int 1)" from pattern.
12472         (epilogue): Use return_internal pattern for trivial returns.
12473         * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
12474         * pa.c (hppa_can_use_return_insn_p): Delete function.  Include "df.h".
12475
12476 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
12477
12478         * tree-ssa-pre.c (is_exception_related): New function
12479         (can_value_number_operation): Use it.
12480
12481 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
12482         
12483         Fix PR tree-optimization/32540
12484         Fix PR tree-optimization/31651
12485
12486         * tree-ssa-sccvn.c: New file.
12487
12488         * tree-ssa-sccvn.h: Ditto.
12489         
12490         * tree-vn.c: Include tree-ssa-sccvn.h
12491         (val_expr_paid_d): Removed.
12492         (value_table): Ditto.
12493         (vn_compute): Ditto.
12494         (val_expr_pair_hash): Ditto.
12495         (val_expr_pair_expr_eq): Ditto.
12496         (copy_vuses_from_stmt): Ditto.
12497         (vn_delete): Ditto.
12498         (vn_init): Ditto.
12499         (shared_vuses_from_stmt): Ditto.
12500         (print_creation_to_file): Moved up.
12501         (sort_vuses): Ditto.
12502         (sort_vuses_heap): Ditto.
12503         (set_value_handle): Make non-static.
12504         (make_value_handle): Ditto.
12505         (vn_add): Rewritten to use sccvn lookups.
12506         (vn_add_with_vuses): Ditto.
12507         (vn_lookup): Ditto (and second argument removed).
12508         (vn_lookup_with_vuses): Ditto.
12509         (vn_lookup_or_add): Ditto (and second argument removed);
12510         (vn_lookup_or_add_with_vuses): Ditto.
12511         (vn_lookup_with_stmt): New.
12512         (vn_lookup_or_add_with_stmt): Ditto.
12513         (create_value_handle_for_expr): Ditto.
12514
12515         * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
12516         (seen_during_translate): New function.
12517         (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
12518         (phi_trans_add): Ditto.
12519         (constant_expr_p): FIELD_DECL is always constant.
12520         (phi_translate_1): Renamed from phi_translate, add seen bitmap.
12521         Use constant_expr_p.
12522         Avoid infinite recursion on mutually valued expressions.
12523         Change callers of vn_lookup_or_add.
12524         (phi_translate): New function.
12525         (compute_antic_safe): Allow phi nodes.
12526         (create_component_ref_by_pieces): Update for FIELD_DECL change.
12527         (find_or_generate_expression): Rewrite slightly.
12528         (create_expression_by_pieces): Updated for vn_lookup_or_add
12529         change.
12530         Update VN_INFO for new names.
12531         (insert_into_preds_of_block): Update for new names.
12532         (add_to_exp_gen): New function.
12533         (add_to_sets): Use vn_lookup_or_add_with_stmt.
12534         (find_existing_value_expr): Rewrite to changed vn_lookup.
12535         (create_value_expr_from): Ditto, and use add_to_exp_gen.
12536         (try_look_through_load): Removed.
12537         (try_combine_conversion): Ditto.
12538         (get_sccvn_value): New function.
12539         (make_values_for_phi): Ditto.
12540         (make_values_for_stmt): Ditto.
12541         (compute_avail): Rewritten for vn_lookup_or_add changes and to use
12542         SCCVN.
12543         (init_pre): Update for SCCVN changes.
12544         (fini_pre): Ditto.
12545         (execute_pre): Ditto.
12546
12547         * tree-flow.h (make_value_handle): Declare.
12548         (set_value_handle): Ditto.
12549         (sort_vuses_heap): Ditto.
12550         (vn_lookup_or_add_with_stmt): Ditto.
12551         (vn_lookup_with_stmt): Ditto.
12552         (vn_compute): Remove.
12553         (vn_init): Ditto.
12554         (vn_delete): Ditto.
12555         (vn_lookup): Update arguments.
12556
12557         * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
12558         (tree-vn.o): Ditto.
12559         (tree-ssa-sccvn.o): New.
12560         (OBJS-common): Add tree-ssa-sccvn.o
12561         
12562 2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12563
12564         PR c/4076
12565         * c-typeck.c (build_external_ref): Don't mark as used if called
12566         from itself.
12567         * calls.c (rtx_for_function_call): Likewise.
12568         
12569 2007-06-30  Richard Sandiford  <richard@codesourcery.com>
12570
12571         Revert:
12572
12573         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
12574
12575         * dce.c (deletable_insn_p_1): New function, split out from...
12576         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
12577         specially, not those inside PARALLELs.  Remove BODY argument
12578         and adjust recursive call accordingly.
12579         (prescan_insns_for_dce): Update call to delete_insn_p.
12580
12581 2007-06-30  Rask Ingemann Lambertsen <rask@sygehus.dk>
12582
12583         * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
12584         (try_combine): Move potential calls to undo_all() so they happen
12585         before we commit to using the combined insns.
12586
12587 2006-06-30  Jan Hubicka  <jh@suse.cz>
12588
12589         * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
12590         code.
12591
12592 2006-06-30  Thomas Neumann  <tneumann@users.sourceforge.net>
12593
12594         * ipa.c (cgraph_postorder): Cast according to the coding conventions.
12595         (cgraph_remove_unreachable_nodes): Likewise.
12596         * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
12597         * ipa-inline.c (update_caller_keys): Cast according to the coding
12598         conventions.
12599         (cgraph_decide_recursive_inlining): Likewise.
12600         (cgraph_decide_inlining_of_small_function): Likewise.
12601         (try_inline): Likewise.
12602         (cgraph_decide_inlining_incrementally): Likewise.
12603         * ipa-pure-const.c (get_function_state): Likewise.
12604         (scan_function): Likewise.
12605         (analyze_function): Likewise.
12606         (static_execute): Likewise.
12607         * ipa-reference.c (scan_for_static_refs): Likewise.
12608         (merge_callee_local_info): Likewise.
12609         (analyze_function): Use type safe memory macros.
12610         (static_execute): Likewise. Cast according to the coding conventions.
12611         * ipa-type-escape.c (scan_for_regs): Cast according to the coding
12612         conventions.
12613         * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
12614         names.
12615         (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
12616         * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
12617         variable names.
12618
12619 2007-06-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12620
12621         PR middle-end/30024
12622         * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
12623         for complex modes (both int and real).
12624
12625 2007-06-29  Jan Hubicka  <jh@suse.cz>
12626
12627         * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
12628
12629 2007-06-29  Jan Hubicka  <jh@suse.cz>
12630
12631         PR middle-end/32372
12632         * cse.c (cse_insn): Avoid invalid sharing in between register note and
12633         the insn pattern.
12634
12635 2007-06-29  Anatoly Sokolov <aesok@post.ru>
12636
12637         PR target/32335
12638         * config/avr/avr.c: Include dataflow header file.
12639         (expand_prologue): Adjust for prologue insn change.
12640         * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
12641         inside a insn.
12642
12643 2007-06-29  Richard Guenther  <rguenther@suse.de>
12644
12645         PR middle-end/32493
12646         * gimplify.c (gimplify_call_expr): Ignore variable argument parts
12647         during type verification.
12648
12649 2007-06-29  Jan Hubicka  <jh@suse.cz>
12650
12651         * recog.c (validate_change_rtx_1): Unshare TO argument.
12652
12653 2007-06-29  Uros Bizjak  <ubizjak@gmail.com>
12654
12655         PR tree-optimization/24659
12656         * tree-vect-transform.c (vectorizable_call): Handle
12657         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
12658
12659         * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
12660         * config/i386/i386.c (enum ix86_builtins)
12661         [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
12662         (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
12663         description.
12664         (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
12665         const using def_builtin_const.
12666         (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
12667         input operands in the same modes as the result.
12668         (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
12669
12670 2007-06-29  Richard Sandiford  <rsandifo@nildram.co.uk>
12671
12672         * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
12673         (df_set_dead_notes_for_mw): Likewise.
12674
12675 2007-06-29  Eric Botcazou  <ebotcazou@adacore.com>
12676
12677         * c-common.c (pointer_int_sum): Do the negation in sizetype.
12678
12679 2007-06-28  DJ Delorie  <dj@redhat.com>
12680
12681         * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
12682
12683 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
12684
12685         * doc/invoke.texi (C++ Dialect Options): Document
12686         fvisibility-ms-compat.
12687         * c.opt (fvisibility-ms-compat): New.
12688
12689 2007-06-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12690
12691         PR tree-opt/32417
12692         * tree-affine.c (aff_combination_add_elt): Handle
12693         pointer addition specially.
12694
12695 2007-06-28  Jakub Jelinek  <jakub@redhat.com>
12696
12697         * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
12698         decl is non-external for AIX ABI.
12699
12700 2007-06-28  David Edelsohn  <edelsohn@gnu.org>
12701
12702         * config/rs6000/predicates.md (current_file_function_operand):
12703         Ensure the symbol is non-external for AIX ABI.
12704
12705 2007-06-28  Nick Clifton  <nickc@redhat.com>
12706
12707         * common.opt (fipa-matrix-reorg): Add Optimization attribute.
12708         (fdce, fdse, fpredictive-commoning): Likewise.
12709
12710 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
12711
12712         PR other/31400
12713         * gcc.c (process_command): Recognize the new -static-libgfortran
12714         option.
12715
12716 2007-06-27  Rask Ingemann Lambertsen  <rask@sygehus.dk>
12717
12718         PR target/32418
12719         * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
12720         Use a call clobbered hard reg instead of a pseudo reg.
12721
12722 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
12723
12724         * config/sh/sh.md (load_gbr): Use correct operand constraint.
12725
12726 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
12727
12728         PR target/32479
12729         * config/sh/sh.md (udivsi3): Don't wrap the sequence with
12730         REG_LIBCALL and REG_RETVAL notes.
12731         (divsi3, mulsi3): Likewise.
12732         (mulhisi3): Likewise.  Use emit_libcall_block.
12733         (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
12734
12735 2007-06-27  Seongbae Park  <seongbae.park@gmail.com>
12736
12737         PR rtl-optimization/32481
12738         * combine.c (adjust_for_new_dest): Rescan the changed insn.
12739
12740 2007-06-27  Richard Sandiford  <richard@codesourcery.com>
12741
12742         * dce.c (deletable_insn_p_1): New function, split out from...
12743         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
12744         specially, not those inside PARALLELs.  Remove BODY argument
12745         and adjust recursive call accordingly.
12746         (prescan_insns_for_dce): Update call to delete_insn_p.
12747
12748 2007-06-27  Richard Guenther  <rguenther@suse.de>
12749
12750         PR middle-end/32492
12751         * tree.h (fold_convertible_p): Declare.
12752         * fold-const.c (fold_convertible_p): New function.
12753         * gimplify.c (gimplify_call_expr): Use fold_convertible_p
12754         instead of lang_hooks.types_compatible_p.
12755
12756 2007-06-26  Jan Hubicka  <jh@suse.cz>
12757
12758         * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
12759         * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
12760         early use validate_unshare_change.
12761         (reload_combine): Likewise.
12762         * recog.c (change_t): New field unshare.
12763         (validate_change_1): Rename from validate_change; add argument unshare.
12764         (validate_change): Turn into wrapper of validate_change_1; update
12765         prototype for bools.
12766         (validate_unshare_change): New.
12767         (confirm_change_group): Unshare changes if asked for; avoid unnecesary
12768         calls of df_insn_rescan.
12769         * recog.h (validate_change): Replace ints by bools.
12770         (validate_unshare_change): Declare.
12771
12772 2007-06-26  Kenneth Zadeck <zadeck@naturalbridge.com>
12773
12774         * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
12775         
12776 2007-06-26  Steve Ellcey  <sje@cup.hp.com>
12777
12778         * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
12779
12780 2007-06-25  Jan Hubicka  <jh@suse.cz>
12781
12782         * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
12783         uninlinable call.
12784         (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
12785         cgraph_decide_inlining_incrementally): Move uninlinability checks to
12786         places other call site specific checks are performed.
12787
12788 2007-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12789
12790         PR tree-opt/32421
12791         * tree-vect-transform.c (vectorizable_operation): Convert
12792         POINTER_PLUS_EXPR over to PLUS_EXPR.
12793
12794 2007-06-25  Chao-ying Fu  <fu@mips.com>
12795
12796         * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
12797         UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
12798         Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
12799         Document GET_MODE_IBIT, and GET_MODE_FBIT.
12800
12801         * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
12802         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
12803         (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
12804         SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
12805         SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
12806         ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
12807         ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
12808         SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
12809         ALL_FIXED_POINT_MODE_P): New define.
12810         (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
12811         MODE_UACCUM.
12812         (GET_MODE_IBIT, GET_MODE_FBIT): New define.
12813
12814         * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
12815         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
12816         MODE_VECTOR_UACCUM): New mode classes.
12817
12818         * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
12819         UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
12820         Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
12821         USA, UDA, and UTA.
12822
12823         * genmodes.c (struct mode_data): Add ibit and fbit fields.
12824         (blank_mode): Initialize ibit and fbit.
12825         (adj_ibit, adj_fbit): New to adjust ibit and fbit.
12826         (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
12827         MODE_UACCUM.
12828         (new_adjust): Change required_class to required_class_from and
12829         required_class_to for testing within a range.
12830         (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
12831         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
12832         MODE_VECTOR_UACCUM.
12833         (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
12834         (make_fixed_point_mode): New.
12835         (_ADD_ADJUST): Change C to C1 and C2.
12836         (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
12837         use a range for machine classes.
12838         (ADJUST_IBIT, ADJUST_FBIT): New.
12839         (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
12840         CONST_MODE_FBIT.
12841         (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
12842         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
12843         Emit adjustment for ibit and fbit.
12844         (emit_mode_ibit, emit_mode_fbit): New.
12845         (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
12846
12847 2007-06-25  Nathan Froyd  <froydnj@codesourcery.com>
12848
12849         * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
12850         as the source of the set.
12851
12852 2007-06-25  Roman Zippel <zippel@linux-m68k.org>
12853
12854         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
12855         FP_REGNO_P): Use IN_RANGE.
12856         (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
12857         (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
12858         (DATA_REG_P): Use DATA_REGNO_P.
12859         (FP_REG_P): Use FP_REGNO_P.
12860         (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
12861         * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
12862         REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
12863
12864 2007-06-24  Jan Hubicka  <jh@suse.cz>
12865
12866         PR middle-end/30563
12867         * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
12868
12869 2007-06-24  Sebastian Pop  <sebpop@gmail.com>
12870
12871         PR middle-end/32461
12872         * fold-const.c (fold_binary): Strip nops of operand 0
12873         of BIT_NOT_EXPR before calling operand_equal_p.
12874         * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
12875         * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
12876
12877 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
12878
12879         * doc/extend.texi: Document that dllimport and dllexport imply
12880         default visibility.
12881         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
12882         imported or exported declaration, including type declarations.
12883         * c-common.c (handle_visibility_attribute): Check for conflicts
12884         with dllimport/dllexport.
12885         (c_determine_visibility): Handle dllimport/dllexport as an
12886         explicit visibility atttribute.
12887
12888 2007-06-23  Richard Guenther  <rguenther@suse.de>
12889
12890         PR tree-optimization/16876
12891         PR middle-end/29478
12892         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
12893         for CALL_EXPRs.
12894         * tree-inline.c (initialize_inlined_parameters): Do not call
12895         lang_hooks.tree_inlining.convert_parm_for_inlining.
12896         * cgraphbuild.c (initialize_inline_failed): Set inline failed
12897         reason for mismatched types.
12898         * gimplify.c (gimplify_call_expr): Verify the call expression
12899         arguments match the called function type signature.  Otherwise
12900         mark the call expression to be not considered for inlining
12901         using CALL_CANNOT_INLINE_P flag.
12902         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
12903         edges call expression.
12904         (cgraph_decide_inlining_of_small_function): Likewise.
12905         (cgraph_decide_inlining): Likewise.
12906         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
12907         Remove define.
12908         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
12909         * c-typeck.c (c_convert_parm_for_inlining): Remove.
12910         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
12911         Remove declaration.
12912         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
12913         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
12914         Remove.
12915         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
12916         convert_parm_for_inlining member.
12917
12918 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
12919
12920         PR target/31152
12921         * arm.md (negscc): Match the correct operand for optimized LT0 test.
12922         Remove optimization for GT.
12923
12924 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
12925
12926         PR middle-end/32437
12927         * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
12928         is a PARALLEL.
12929         (prescan_insns_for_dce): Add extra parameter.
12930         
12931 2007-06-23  Jan Hubicka  <jh@suse.cz>
12932
12933         PR middle-end/31541
12934         * gimplify.c (mark_addressable): New function.
12935         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
12936
12937 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
12938
12939         PR middle-end/32374
12940         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
12941
12942 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
12943
12944         PR target/32413
12945         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
12946         moves between MMX/SSE registers to at least 8 units to prevent
12947         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
12948
12949 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
12950
12951         * config/i386/i386.c (override_options): Correct x86_sahf
12952         setting condition.
12953
12954 2007-06-21  David Daney  <ddaney@avtrex.com>
12955
12956         PR target/32406
12957         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
12958         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
12959         (exception_receiver): Renamed to ...
12960         (nonlocal_goto_receiver): ... this.
12961
12962 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
12963
12964         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
12965         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
12966         partial register accesses.
12967
12968 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
12969
12970         * fold-const.c (debug_fold_checksum): Move it under
12971         ENABLE_FOLD_CHECKING.
12972
12973 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
12974
12975         PR middle-end/20623
12976         * tree.h (debug_fold_checksum): Declared.
12977         * fold-const.c (build_fold_addr_expr_with_type_1): New.
12978         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
12979         build_fold_addr_expr_with_type_1.
12980         (fold_addr_expr, debug_fold_checksum): New.
12981         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
12982         (fold_unary, fold_comparison, split_address_to_core_and_offset):
12983         Use fold_addr_expr.
12984         
12985 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
12986
12987         PR tree-optimization/19590
12988         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
12989         of scev is a constant.
12990
12991 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
12992
12993         * df-problems.c (df_note_bb_compute): Made computation of live
12994         info consistent with df_lr.
12995
12996 2007-06-21  Richard Guenther  <rguenther@suse.de>
12997
12998         PR tree-optimization/32453
12999         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
13000         for pointer anti-range.
13001
13002 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
13003
13004         * config/i386/i386.c (processor_target_table): Increase maximum
13005         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
13006         default 64bit.
13007
13008         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
13009         byte alignment if > 8 byte alignment is preferred.
13010         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
13011
13012 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
13013
13014         PR tree-optimization/31866
13015         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
13016         if ASM_EXPR's input is not a SSA_NAME.
13017
13018         PR middle-end/32362
13019         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
13020         but decl is a global var, instead return decl.
13021         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
13022         even for is_global_var decls, if they are private in some outer
13023         context.
13024
13025 2007-06-21  Richard Guenther  <rguenther@suse.de>
13026
13027         PR tree-optimization/32451
13028         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
13029
13030 2007-06-21  Christian Bruel  <christian.bruel@st.com>
13031
13032         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
13033         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
13034         (push_regs): Changed saving order or banked registers.
13035         (sh_expand_epilogue): Likewise.
13036         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
13037         (FIRST_BANKED_REG): Likewise.
13038         (LAST_BANKED_REG): Likewise.
13039         * config/sh/sh.md (banked) New attribute.
13040         (in_delay_slot): Check banked attribute.
13041         
13042 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
13043
13044         PR tree-optimization/32075
13045         * tree-data-ref.c (subscript_dependence_tester_1, 
13046         analyze_miv_subscript, analyze_overlapping_iterations,
13047         add_distance_for_zero_overlaps, build_classic_dist_vector,
13048         subscript_dependence_tester_1, analyze_overlapping_iterations,
13049         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
13050         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
13051         to evolution_function_is_affine_multivariate_p.
13052
13053 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
13054
13055         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
13056
13057 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
13058
13059         PR target/32335
13060         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
13061         for TARGET_A16.
13062         * config/m32c/prologue.md (epilogue_exitd_16): New.
13063         (epilogue_reit_16): New.
13064         (epilogue_exitd): Rename to epilogue_exitd_24.
13065         (epilogue_reit): Rename to epilogue_reit_24.
13066
13067 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
13068             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
13069
13070         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
13071         New counters.
13072         * haifa-sched.c (queue_to_ready): Don't requeue next insn
13073         if dbg_cnt (sched_insn) reaches the limit.
13074         (choose_ready): New parameter INSN_PTR and new return value.
13075         (schedule_block): Handle dbg_cnt (sched_insn). Handle
13076         the new return value from choose_ready.
13077         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
13078         (rest_of_handle_global_alloc): New global_alloc_at_func.
13079
13080 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
13081
13082         PR tree-optimization/25737
13083         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
13084         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
13085         * tree-flow.h (struct fieldoff): Add new field alias_set.
13086         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
13087         argument addressable_type.  Set alias_set of fieldoff.
13088         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
13089         (create_overlap_variables_for): Pass alias_set from fieldoff to
13090         create_sft.
13091         * alias.c (get_alias_set): Use alias_set from SFT if set.
13092
13093 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
13094
13095         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
13096         of a variable as an unsigned HOST_WIDE_INT integer.
13097
13098 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
13099
13100         PR rtl-optimization/32405
13101         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
13102
13103 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
13104
13105         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
13106
13107         PR middle-end/31959
13108         * builtins.c: Include diagnostic.h.
13109         (expand_builtin_expect): Make gcc_assert more permissive.
13110         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
13111
13112         PR inline-asm/32109
13113         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
13114         and !allows_mem.
13115
13116         PR middle-end/32285
13117         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
13118         if ACCUMULATE_OUTGOING_ARGS.
13119
13120 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
13121
13122         * config/m68hc11/m68hc11.c: Include dataflow header file.
13123         (m68hc11_reorg): Port to dataflow.
13124
13125 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
13126
13127         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
13128         (struct df_problem.free_blocks_on_set_blocks): New field.
13129         (struct dataflow.optional_p): New field.
13130         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
13131         (df_live_set_all_dirty): New function.
13132         * df-scan.c (df_scan_alloc): Initialize optional_p.
13133         (problem_SCAN): Initialize free_blocks_on_set_blocks.
13134         * df-core.c (df_set_blocks): Removed use of
13135         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
13136         df_problem.free_blocks_on_set_blocks to determine which blocks are
13137         recycled.
13138         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
13139         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
13140         uses dataflow.optional_p to determine if problem should be
13141         deleted.
13142         (rest_of_handle_df_initialize): Only start live problem if 
13143         -02 or above.
13144         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
13145         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
13146         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
13147         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
13148         problem_NOTE): Initialize free_blocks_on_set_blocks.
13149         (df_lr_bb_local_compute): Recompute luids if df_live problem is
13150         not active.
13151         (df_live_set_all_dirty, df_note_alloc): New function.
13152         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
13153         df_get_live_*.
13154         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
13155         * postreload.c (reload_combine): Ditto.
13156         * cse.c (cse_extended_basic_block): Ditto.
13157         * regmove.c (mark_flags_life_zones): Ditto.
13158         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
13159         erase_matching_seqs): Ditto.
13160         * bt-load.c (compute_defs_uses_and_gen): Ditto.
13161         * integrate (allocate_initial_values): Ditto.
13162         * combine.c (reg_dead_at_p): Ditto.
13163         * resource.c (mark_target_live_regs): Ditto.
13164         * sched-rgn.c (check_live_1, update_live_1): Ditto.
13165         * config/sh/sh.c (find_r0_life_regions): Ditto.
13166         * global.c (rest_of_handle_global_alloc): Only add back df_live
13167         for -O > 1.
13168         * local-alloc.c (rest_of_handle_local_alloc): Only remove
13169         df_live for -O > 1.
13170         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
13171         df_get_live_*.
13172         (if_convert): Make sure df_live is there at -O == 1.
13173         (pass_if_after_combine): Cleanup flags.
13174         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
13175         is there at -O == 1.
13176         
13177 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
13178
13179         * config/arm/arm.c (arm_get_frame_offsets): Set
13180         offsets->locals_base to avoid negative stack size.
13181         (thumb1_expand_prologue): Assert on negative stack size.
13182
13183 2007-06-19  Sebastian Pop  <sebpop@gmail.com>
13184
13185         PR tree-optimization/32367
13186         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
13187         of the chrec has no evolution in that loop.
13188         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
13189
13190 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
13191
13192         * config/xtensa/xtensa.c: Include "df.h".
13193         (xtensa_builtin_saveregs): Use adjust_address instead of
13194         change_address.
13195         (xtensa_va_start): Invoke make_tree with sizetype for
13196         expand_builtin_saveregs and then convert the result to a pointer.
13197         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
13198         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
13199         Subtract argument size from index value as integers and then use
13200         POINTER_PLUS_EXPR to add the result to the array address.
13201         
13202 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
13203
13204         PR target/32335
13205         * config/m32c/m32c.c: Include dataflow header file.
13206         (m32c_emit_prologue): Adjust for prologue insn change.
13207         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
13208         once inside a PARALLEL. Assume frame size passed in operand 0
13209         includes space to save the fb register.
13210         (prologue_enter_24): Likewise.
13211         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
13212
13213 2007-06-19  David Daney  <ddaney@avtrex.com
13214
13215         PR target/32313
13216         * config/mips/mips.md (cprestore): Mark $gp as used.
13217
13218 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
13219
13220         PR target/32369
13221         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
13222         (frv_ifcvt_modify_insn): Likewise.
13223
13224 2007-06-19  Richard Guenther  <rguenther@suse.de>
13225
13226         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
13227         only handle positive offsets that fit in a HOST_WIDE_INT.
13228
13229 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
13230
13231         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
13232         result of rsqrt insn for zero input argument to avoid NaN.
13233
13234 2007-06-19  Richard Guenther  <rguenther@suse.de>
13235
13236         PR middle-end/31950
13237         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
13238
13239 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
13240
13241         PR tree-optimization/32353
13242         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
13243
13244 2007-06-19  Nick Clifton  <nickc@redhat.com>
13245
13246         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
13247
13248 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
13249
13250         PR target/32389
13251         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
13252         * config/i386/i386.c (assign_386_stack_local): Assert that
13253         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
13254         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
13255         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
13256         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
13257
13258 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
13259
13260         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
13261
13262 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
13263
13264         PR rtl-optimization/32321
13265         * gcse.c (replace_store_insn): Update the note before
13266         calling emit_insn_after.
13267
13268 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
13269
13270         PR middle-end/32355
13271         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
13272         cse_main.
13273         * df-problems.c (df_note_bb_compute): Fix dumping info.
13274         
13275 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
13276
13277         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
13278         insn with emit_jump_insn.
13279
13280 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
13281
13282         PR tree-optimization/32383
13283         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
13284         * targhooks.h (default_builtin_reciprocal): Update prototype.
13285         * target.h (struct gcc_target): Update builtin_reciprocal.
13286         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
13287         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
13288         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
13289         when fndecl is in BUILT_IN_MD class.
13290         (execute_convert_to_rsqrt): Ditto.
13291
13292         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
13293         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
13294         Convert BUILT_IN_SQRTF code only  when md_fn is false.
13295
13296 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
13297
13298         * bt-load.c (move_btr_def): Fix the order of arguments
13299         to validate_replace_rtx.
13300
13301 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
13302
13303         * config/m68k/m68k-devices.def: Add 54450..54455.
13304
13305 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
13306
13307         PR rtl-optimization/32366
13308         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
13309         FLOAT_EXTEND]: Prevent non-scalar modes from entering
13310         significand_size.
13311
13312 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
13313
13314         PR middle-end/32349
13315         * modulo-sched (generate_reg_moves): Added rescan parameter and if
13316         this is true, rescan insn being modified.
13317         (sms_schedule): Added rescan parameter.
13318         (rest_of_handle_sms): Moved freeing of dominance info to before
13319         getting out of cfg_layout.
13320         
13321 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
13322
13323         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
13324         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
13325         appropriate.
13326
13327         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
13328         FL_CF_EMAC from the entry for isac.
13329
13330         * config/m68k/predicates.md (const_call_operand): Adjust comment.
13331         (const_sibcall_operand): New.
13332         (sibcall_operand): Use it.
13333         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
13334         (m68k_isas): ISAC does not imply FPU or EMAC.
13335         (override_options): Add ISA_C logic for symbolic jump & call.
13336
13337 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
13338
13339         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
13340         return mode from the builtin itself.
13341         (sparc_fold_builtin): Fix cast of zero constant.
13342
13343 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
13344
13345         * targhooks.c (default_builtin_reciprocal): New default target hook.
13346         * targhooks.h (default_builtin_reciprocal): Add prototype.
13347         * hooks.c (hook_tree_tree_bool_null): Remove hook.
13348         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
13349         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
13350         default_builtin_reciprocal.
13351
13352 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
13353
13354         PR middle-end/31723
13355         * hooks.c (hook_tree_tree_bool_null): New hook.
13356         * hooks.h (hook_tree_tree_bool_null): Add prototype.
13357         * tree-pass.h (pass_convert_to_rsqrt): Declare.
13358         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
13359         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
13360         and convert it to reciprocal a*rfunc(b).
13361         (execute_convert_to_rsqrt): New function.
13362         (gate_convert_to_rsqrt): New function.
13363         (pass_convert_to_rsqrt): New pass definition.
13364         * target.h (struct gcc_target): Add builtin_reciprocal.
13365         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
13366         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
13367         TARGET_BUILTIN_RECIPROCAL.
13368         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
13369
13370         * config/i386/i386.h (TARGET_RECIP): New define.
13371         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
13372         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
13373         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
13374         and not optimizing for size.
13375         (*rcpsf2_sse): New insn pattern.
13376         (*rsqrtsf2_sse): Ditto.
13377         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
13378         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
13379         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
13380         and not optimizing for size.
13381         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
13382         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
13383         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
13384         and not optimizing for size.
13385         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
13386         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
13387         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
13388         and not optimizing for size.
13389         (*sse_rsqrtv4sf2): Do not export.
13390         (sqrtv4sf2): Ditto.
13391         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
13392         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
13393         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
13394         and not optimizing for size.
13395         (sqrtv4sf2): Ditto.
13396         * config/i386/i386.opt (mrecip): New option.
13397         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
13398         (ix86_emit_swsqrtsf): Ditto.
13399         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
13400         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
13401         builtin definition.
13402         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
13403         ix86_expand_unop1_builtin.
13404         (ix86_emit_swdivsf): New function.
13405         (ix86_emit_swsqrtsf): Ditto.
13406         (ix86_builtin_reciprocal): New function.
13407         (TARGET_BUILTIN_RECIPROCAL): Use it.
13408         (ix86_vectorize_builtin_conversion): Rename from
13409         ix86_builtin_conversion.
13410         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
13411         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
13412         "i386 and x86_64 Options" section.
13413         (Intel 386 and AMD x86_64 Options): Document -mrecip.
13414
13415 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
13416             Zdenek Dvorak <dvorakz@suse.cz>
13417             Richard Guenther  <rguenther@suse.de>
13418             Kaz Kojima  <kkojima@gcc.gnu.org>
13419
13420         * tree-vrp.c (compare_values_warnv): Convert val2 to
13421         the type of val1.
13422         (extract_range_from_assert): Create
13423         POINTER_PLUS_EXPR for pointer types.
13424         (extract_range_from_binary_expr): Handle
13425         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
13426         for pointer types.
13427         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
13428         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
13429         POINTER_PLUS_EXPR as PLUS_EXPR.
13430         (number_of_iterations_lt_to_ne):
13431         For pointer types, use sizetype when
13432         creating MINUS_EXPR/PLUS_EXPRs.
13433         (assert_loop_rolls_lt): For pointer types, use sizetype when
13434         creating MINUS_EXPR/PLUS_EXPRs.
13435         (number_of_iterations_le): Likewise.
13436         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
13437         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
13438         like PLUS_EXPR and MINUS_EXPR.
13439         * tree-pretty-print.c (dump_generic_node): Handle
13440         POINTER_PLUS_EXPR.
13441         (op_prio): Likewise.
13442         (op_symbol_1): Likewise.
13443         * optabs.c (optab_for_tree_code): Likewise.
13444         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
13445         specially.
13446         * tree-tailcall.c (process_assignment): Mention
13447         POINTER_PLUS_EXPR in a TODO comment.
13448         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
13449         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
13450         not used with a pointer and an integer type.
13451         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
13452         increment using chrec_convert_rhs instead of chrec_convert.
13453         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
13454         PLUS_EXPR except for the right hand side's type will be
13455         sizetype.
13456         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
13457         (fold_used_pointer_cast): Kill.
13458         (pointer_offset_p): Kill.
13459         (fold_used_pointer): Kill.
13460         (pointer_used_p): Kill.
13461         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
13462         call fold_used_pointer.
13463         (instantiate_parameters_1): Convert the increment
13464         using chrec_convert_rhs instead of chrec_convert.
13465         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
13466         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
13467         instead of PLUS_EXPR.
13468         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
13469         PLUS_EXPR for pointers.
13470         (std_gimplify_va_arg_expr): Likewise.
13471         (fold_builtin_memory_op): Likewise.
13472         (fold_builtin_strstr): Likewise.
13473         (fold_builtin_strchr): Likewise.
13474         (fold_builtin_strrchr): Likewise.
13475         (fold_builtin_strpbrk): Likewise.
13476         (expand_builtin_memory_chk): Likewise.
13477         (fold_builtin_memory_chk): Likewise.
13478         (std_expand_builtin_va_start): Use
13479         sizetype for the call to make_tree and then convert
13480         to the pointer type.
13481         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
13482         instead of PLUS_EXPR for adding to a pointer.
13483         (std_gimplify_va_arg_expr): Use fold_build2 for
13484         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
13485         the operands to sizetype first and then cast the BIT_AND_EXPR
13486         back to the pointer type.
13487         * fold-const.c (build_range_check): Handle pointer types
13488         specially.
13489         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
13490         of PLUS_EXPR's. Make sure the offset is converted to
13491         sizetype.
13492         (try_move_mult_to_index): Strip the NOPs from the offset.
13493         Remove code argument and replace all uses with PLUS_EXPR.
13494         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
13495         specially. Don't use a pointer type for MINUS_EXPR.
13496         (fold_unary): Handle for (T1)(X op Y),
13497         only p+ as that is the only as that can be handled for
13498         binary operators now.
13499         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
13500         POINTER_PLUS_EXPR.
13501         <case PLUS_EXPR>: Add folding of PTR+INT into
13502         PTR p+ INT.
13503         Don't call try_move_mult_to_index.
13504         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
13505         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
13506         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
13507         Don't call try_move_mult_to_index.
13508         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
13509         (tree_expr_nonzero_p): Likewise.
13510         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
13511         of PLUS_EXPR for the complex expression folding.
13512         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
13513         first chrec is a pointer type, then the second should
13514         be sizetype and not the first's type.
13515         For POINTER_PLUS_EXPR, use a different right hand side type.
13516         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
13517         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
13518         different right hand side type.
13519         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
13520         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
13521         instead of PLUS_EXPR.
13522         When either operand is zero, convert the other operand.
13523         (chrec_apply): Use chrec_convert_rhs
13524         on the argument x instead of chrec_convert.
13525         (reset_evolution_in_loop): For pointer types, the new_evol
13526         should be sizetype.
13527         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
13528         different right hand side type.
13529         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
13530         (chrec_convert_rhs): New function.
13531         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
13532         different right hand side type.
13533         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
13534         * tree-chrec.h (chrec_convert_rhs): New prototype.
13535         (build_polynomial_chrec): For pointer types, the right hand
13536         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
13537         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
13538         Remove subtraction case as it is always addition now.
13539         Make sure the offset is converted to sizetype.
13540         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
13541         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
13542         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
13543         PLUS_EXPR in pointer type.
13544         Handle POINTER_PLUS_EXPR.
13545         (tree_to_aff_combination): Likewise.
13546         (force_expr_to_var_cost): Likewise.
13547         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
13548         instead of PLUS_EXPR for pointers.
13549         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
13550         instead of PLUS_EXPR of pointer types.
13551         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
13552         as PLUS_EXPR.
13553         (check_va_list_escapes): Likewise.
13554         (check_all_va_list_escapes): Likewise.
13555         * dwarf2out.c (loc_descriptor_from_tree_1):
13556         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
13557         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
13558         (string_constant): Likewise.
13559         * tree-ssa-address.c (tree_mem_ref_addr): When adding
13560         the offset to the base, use POINTER_PLUS_EXPR.
13561         (add_to_parts): Convert the index to sizetype.
13562         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
13563         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
13564         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
13565         Offset only holds something for PLUS_EXPR.
13566         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
13567         a PLUS_EXPR.
13568         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
13569         and not PLUS_EXPR.
13570         (analyze_accesses_for_modify_stmt): Likewise.
13571         Remove comment about the type being integral type as it is
13572         wrong now.
13573         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
13574         PLUS_EXPR.
13575         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
13576         and not PLUS_EXPR.
13577         Correct the type which the artimentic is done in (is now
13578         sizetype).
13579         Reindent one loop.
13580         * tree-data-ref.c (split_constant_offset): Handle
13581         POINTER_PLUS_EXPR
13582         * tree-affine.c (tree_to_aff_combination): Likewise.
13583         * c-typeck.c (build_unary_op): For pointers create the increment
13584         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
13585         for pointers.
13586         * gimplify.c (gimplify_self_mod_expr): Create a
13587         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
13588         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
13589         * tree.def (POINTER_PLUS_EXPR): New tree code.
13590         * tree-predcom.c (ref_at_iteration): If we have a pointer
13591         type do the multiplication in sizetype.
13592         * tree-mudflap.c (mf_xform_derefs_1): Create a
13593         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
13594         * tree-ssa-forwprop.c 
13595         (forward_propagate_addr_into_variable_array_index):
13596         Don't expect there to be a cast for the index as that
13597         does not exist anymore.
13598         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
13599         instead of PLUS_EXPR.
13600         Don't check for the first operand of the POINTER_PLUS_EXPR
13601         was the index as it cannot be.
13602         Call forward_propagate_addr_into_variable_array_index with
13603         the SSA_NAME instead of the statement.
13604         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
13605         (compare_constant): Likewise.
13606         (copy_constant): Likewise.
13607         (compute_reloc_for_constant): Likewise.
13608         (output_addressed_constants): Likewise.
13609         (initializer_constant_valid_p): Likewise.
13610         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
13611         Convert the MIN/MAX of the inner type to the outer
13612         type before comparing them.
13613         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Handle
13614         POINTER_PLUS_EXPR instead of PLUS_EXPR.
13615         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
13616         of PLUS_EXPR for pointers.
13617         * tree-inline.c (estimate_num_insns_1): Handle
13618         POINTER_PLUS_EXPR.
13619         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
13620         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
13621         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
13622         instead of PLUS_EXPR for the pointer increment statement.
13623         (vect_update_ivs_after_vectorizer): For pointer types, create
13624         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
13625         MULT_EXPR in sizetype.
13626         (vect_gen_niters_for_prolog_loop): Add a cast when creating
13627         byte_misalign.
13628         * tree-object-size.c (plus_expr_object_size): Handle
13629         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
13630         code which is trying to figure out which side is a pointer and 
13631         is the index.
13632         (check_for_plus_in_loops_1): Likewise.
13633         (check_for_plus_in_loops): Likewise.
13634         * c-common.c (pointer_int_sum): Create a
13635         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
13636         * tree-ssa-structalias.c (handle_ptr_arith): Handle
13637         only POINTER_PLUS_EXPR.  Removing all the extra
13638         code which is trying to figure out which side is a pointer and 
13639         is the index.
13640         * tree-cfg.c (verify_expr): Add extra checking for pointers and
13641         PLUS_EXPR and MINUS_EXPR.
13642         Also add checking to make sure the operands of POINTER_PLUS_EXPR
13643         are correct.
13644         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
13645         with make_tree, instead of a pointer type.
13646         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
13647         for pointers instead of PLUS_EXPR.
13648         (s390_gimplify_va_arg): Likewise.
13649         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
13650         instead of PLUS_EXPR when doing addition on pointer
13651         types.  Use sizetype for the second operand.
13652         (spu_gimplify_va_arg_expr): Likewise.
13653         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
13654         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
13655         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
13656         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
13657         for the pointer addition and also use size_int/sizetype
13658         for the offset.
13659         (ix86_gimplify_va_arg): Likewise.
13660         Perform BIT_AND_EXPR on sizetype arguments.
13661         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
13662         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
13663         for the pointer additions and also use size_int for the offsets.
13664         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
13665         additions and also use size_int for the offsets.  Perform
13666         BIT_AND_EXPR on sizetype arguments.
13667         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
13668         POINTER_PLUS_EXPR for pointers and create the
13669         BIT_AND_EXPR in sizetype.
13670         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
13671         instead of PLUS_EXPR for pointer addition.
13672         (rs6000_va_start): Likewise.
13673         Also use sizetype for the offset.
13674         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
13675         as PLUS_EXPR/MINUS_EXPR.
13676         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
13677         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
13678         Don't use BIT_AND_EXPR on a pointer type, convert the
13679         expression to sizetype first.
13680         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
13681         for pointers.
13682         (mips_gimplify_va_arg_expr): Likewise.
13683         Don't create BIT_AND_EXPR in a pointer type.
13684
13685 2007-06-15  Eric Christopher  <echristo@apple.com>
13686
13687         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
13688         (x86_64-*-darwin*): Ditto.
13689         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
13690         for above.
13691
13692 2007-06-15  Matthew Wilcox <matthew@wil.cx>
13693
13694         * doc/extend.texi: Document behavior of __attribute__((aligned))
13695         on typedefs.
13696
13697 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
13698
13699         * rtlanal.c (note_stores): Improve documentation.
13700
13701 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
13702
13703         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
13704         LOCAL_LABEL_PREFIX): Delete.
13705         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
13706         (bfin_internal_label): Delete.
13707
13708 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
13709
13710         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
13711         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
13712         otherwise define to LIBGCC2_TF_CEXT.
13713         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
13714         (LIBGCC_TF_CEXT): Ditto.
13715         (TF_SIZE): Ditto.
13716
13717 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
13718
13719         PR rtl-optimization/32339
13720         * df-scan.c (df_uses_record): Don't modify flags but just add to
13721         it for df_ref_record.
13722
13723 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13724
13725         * tree-mudflap.c: Fix whitespace issues.
13726
13727 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
13728
13729         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
13730
13731 2007-06-14  Eric Christopher  <echristo@apple.com>
13732
13733         * config/i386/sse.md (movdi_to_sse): Rewrite body.
13734         (movv4sf): Use gcc_unreachable instead of abort.
13735
13736 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
13737
13738         PR target/32268
13739         * config/i386/sfp-machine.h (CMPtype): New define.
13740         (mach stubs): Use CMPtype instead of int as a return type.
13741
13742 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
13743
13744         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
13745         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
13746         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
13747         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
13748         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
13749         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
13750         config/soft-fp/soft-fp.h: Update from glibc CVS.
13751
13752 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
13753
13754         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
13755
13756 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
13757
13758         PR target/32341
13759         * config/v850/v850.c: Include dataflow header file.
13760         (substitute_ep_register): Fix typo.
13761
13762 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
13763
13764         * configure.ac: Fix earlier checkin.
13765         * configure: Regenerated.
13766
13767 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
13768
13769         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
13770         * aclocal.m4: Regenerate.
13771         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
13772         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
13773         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
13774         * configure: Regenerate.
13775         * Makefile.in (LOOSE_WARN): Subst loose_warn.
13776
13777         * Makefile.in (quickstrap): Build libgcc too.
13778
13779 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
13780
13781         * configure.ac: Add --enable-checking=df.  Explicitly mention that
13782         the variables are initialized as for "release".
13783         * df-core.c: Use it.
13784         * configure: Regenerate.
13785         * config.in: Regenerate.
13786
13787 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
13788
13789         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
13790         validate_replace_rtx instead of replace_rtx.
13791         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
13792
13793 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
13794
13795         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
13796         (DWARF2_UNWIND_INFO): Override default if configured with
13797         SJLJ EH disabled.
13798         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
13799         (ENDFILE_SPEC): Add crtend.o.
13800         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
13801         (ENDFILE_SPEC): Add crtend.o.
13802         (TARGET_USE_JCR_SECTION): Define.
13803         (MD_UNWIND_SUPPORT): Define for 32-bit target.
13804
13805         * config/i386/cygming-crtbegin.c: New file.
13806         * config/i386/cygming-crtend.c: New file.
13807
13808 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
13809
13810         * config/i386/w32-unwind.h: New file.
13811
13812 2007-06-13  Eric Christopher  <echristo@apple.com>
13813
13814         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
13815         the user set a value below STACK_BOUNDARY.
13816
13817 2007-06-13  Thiemo Seufer  <ths@networkno.de>
13818
13819         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
13820         imply -lpthread for -pthread.
13821
13822 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
13823
13824         * basic-block.h: Remove the prototype for
13825         free_basic_block_vars.
13826         * cfglayout.h: Remove the prototype for
13827         insn_locators_initialize.
13828         * tree.h: Remove the prototype for emit_line_note.
13829
13830         * tree-ssa-pre.c (mergephitemp): Remove.
13831         (init_pre): Don't use mergephitemp.
13832
13833 2007-06-13  Eric Christopher  <echristo@apple.com>
13834
13835         * config/i386/i386.c (override_options): If we've specified
13836         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
13837
13838 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
13839
13840         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
13841         is defined.
13842
13843 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
13844
13845         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
13846         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
13847         (eh_store_handler): New pattern.
13848         (eh_return): Emit it instead of a plain move.
13849
13850 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
13851
13852         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
13853         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
13854         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
13855         def_builtin_const.
13856
13857 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
13858
13859         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
13860         (find_next_insn_start, find_load): New functions.
13861         (bfin_reorg): Use them to deal with the fact that parallel insns are
13862         no longer represented as a SEQUENCE.
13863
13864 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
13865
13866         * config/sparc/sparc.c (sparc_override_options): Initialize
13867         fpu mask correctly.
13868
13869 2007-06-13  Dave Korn  <dave.korn@artimi.com>
13870
13871         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
13872         df_get_live_out.
13873
13874 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
13875
13876         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
13877         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
13878         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
13879         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
13880         tree-vect-transform.c: Fix comment typos.  Follow spelling
13881         conventions.
13882
13883 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
13884
13885        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
13886        to the exit block use set.
13887        (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
13888        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
13889        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
13890
13891 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
13892
13893         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
13894         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
13895         to indicate an error.
13896         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters):
13897         New functions.
13898         (dbg_cnt_process_opt): Print an error on a bad argument.
13899         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
13900         * common.opt (-fdbg-cnt-list): New.
13901         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
13902
13903 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
13904
13905         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
13906         flag on ref-all pointers.
13907
13908 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13909
13910         PR middle-end/31579
13911         * expr.c (expand_expr_addr_expr_1): Call expand_expr
13912         for the offset with the modifier as EXPAND_INITIALIZER
13913         if the modifier is EXPAND_INITIALIZER.
13914         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
13915         a register if we had an overflow.
13916
13917 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13918
13919         * real.c (real_isfinite): New.
13920         (real_sqrt): Use it.
13921         * real.h (real_isfinite): New.
13922         * builtins.c: Use it.
13923
13924 2007-06-12  Ian Lance Taylor  <iant@google.com>
13925             Daniel Berlin  <dberlin@dberlin.org>
13926
13927         PR libstdc++/29286
13928         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
13929         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
13930         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
13931         (DECL_NO_TBAA_P): Define.
13932         (struct tree_decl_common): Add no_tbaa_flag field.
13933         * tree-ssa-structalias.c (struct variable_info): Add
13934         no_tbaa_pruning field.
13935         (new_var_info): Initialize no_tbaa_pruning field.
13936         (unify_nodes): Copy no_tbaa_pruning field.
13937         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
13938         (dump_solution_for_var): Print no_tbaa_pruning flag.
13939         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
13940         callers.
13941         (compute_tbaa_pruning): New static function.
13942         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
13943         Call compute_tbaa_pruning.
13944         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
13945         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
13946         * gimple-low.c (lower_stmt): Likewise.
13947         * tree-gimple.c (is_gimple_stmt): Likewise.
13948         * tree-ssa-operands.c (get_expr_operands): Likewise.
13949         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
13950         * tree-inline.c (estimate_num_insns_1): Likewise.
13951         (copy_result_decl_to_var): Likewise.
13952         * expr.c (expand_expr_real_1): Likewise.
13953         * tree-pretty-print.c (dump_generic_node): Likewise.
13954         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
13955         * omp-low.c (omp_copy_decl_2): Likewise.
13956         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
13957         * doc/c-tree.texi (Expression trees): Document
13958         CHANGE_DYNAMIC_TYPE_EXPR.
13959
13960 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13961
13962         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
13963         with !HONOR_NANS and !HONOR_INFINITIES.
13964         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
13965
13966 2007-06-12  Tristan Gingold  <gingold@adacore.com>
13967
13968         * gcov.c: Comments updated.
13969         (source_info): Add file_time field.
13970         (source_index): New variable.
13971         (mutiple_files): New variable.
13972         (generate_results): New function extracted from process_file.
13973         (process_file): Save and restore chain of functions, generate
13974         results and free structures only if not merging results.
13975         (release_structures): File names are now freed in create_file_names
13976         (create_file_names): Free previous file names.
13977         (find_source): File date is now read here and modifications in
13978         source files is checked here.
13979         (read_graph_file): Only reverse order of functions for the current
13980         object file.
13981         (make_gcov_file_name): Do not generate long names if input_name is
13982         NULL.
13983         (output_lines): If merging results do not display graph, data and
13984         runs informations.
13985         Checking source file modification is done in find_source.
13986
13987         * doc/gcov.texi: Append an s to sourcefile.
13988
13989 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
13990
13991         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
13992         (forced_nop): New pattern.
13993         * config/bfin/bfin.c: Include "df.h".
13994         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
13995         (bfin_discover_loop): Use df_get_live_in instead of
13996         global_live_at_start.
13997         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
13998         df_analyze when done.
13999         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
14000         the insns.  Use QImode for the final insn in a bundle.  Call
14001         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
14002         gen_nop.
14003         (reorder_var_tracking_notes): New function.
14004         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
14005         update_life_info.  Call df_analyze after scheduling and bundle
14006         generation.  Call reorder_var_tracking_notes if generating these
14007         notes.  Call df_finish_pass at the end.
14008
14009 2007-06-12  Dirk Mueller  <dmueller@suse.de>
14010
14011         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
14012         a comparison, not an assignment.
14013
14014 2007-06-12  Olivier Hainque  <hainque@adacore.com>
14015
14016         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
14017         Request walking the subtrees only, leaving the current is_lhs/val_only
14018         untouched.
14019         (convert_non_local_reference): Likewise.
14020
14021 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
14022
14023         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
14024
14025 2007-06-12  Richard Guenther  <rguenther@suse.de>
14026
14027         PR tree-optimization/15353
14028         PR tree-optimization/31657
14029         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
14030         * timevar.def: Add TV_TREE_IFCOMBINE.
14031         * tree-pass.h (pass_tree_ifcombine): Declare.
14032         * tree-ssa-ifcombine.c: New file.
14033         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
14034         * tree-flow.h (blocks_in_phiopt_order): Declare.
14035         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
14036         (tree-ssa-ifcombine.o): New dependencies.
14037
14038 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
14039
14040         PR rtl-optimization/32293
14041         * combine.c (simplify_if_then_else): Truncate return from
14042         nonzero_bits() to correct mode.
14043
14044 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
14045
14046         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
14047         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
14048
14049 2007-06-11  Diego Novillo  <dnovillo@google.com>
14050
14051         * Makefile.in (reload1.o-warn): Remove.
14052
14053 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
14054
14055         * combine.c (subst): Use reg_overlap_mentioned_p
14056         instead of comparing register numbers directly.
14057
14058 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
14059
14060         * reload1.c (mark_home_live_1): Use the mode parameter.
14061
14062 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
14063
14064         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
14065         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
14066         word "deferred".
14067         * df-core.c: Ditto.
14068
14069 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
14070
14071         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
14072
14073 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
14074
14075         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
14076         from integer registers.
14077         (FP mode splitters): Handle TFmode.
14078
14079 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
14080
14081         * tree-ssa-structalias.c (find_what_p_points_to): Return false
14082         for ref-all pointers that point-to anything.
14083
14084 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
14085
14086         * config/arm/arm.c (arm_output_dwarf_dtprel,
14087         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
14088
14089 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
14090
14091         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
14092         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
14093         to memory moves.
14094
14095 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
14096
14097         * tree.c (signed_or_unsigned_type_for): New.
14098         (unsigned_type_for): Use signed_or_unsigned_type_for.
14099         (signed_type_for): Use signed_or_unsigned_type_for.
14100         * tree.h (signed_or_unsigned_type_for): New.
14101         (get_signed_or_unsigned_type): Remove.
14102         * fold-const.c (fold_negate_expr): Use signed_type_for instead of
14103         lang_hooks.types.signed_type
14104         (size_diffop): Likewise.
14105         (all_ones_mask_p): Likewise.
14106         (build_range_check): Likewise.
14107         (fold_cond_expr_with_comparison): Likewise.
14108         (fold_cond_expr_with_comparison): Likewise.
14109         (unextend): Likewise.
14110         (extract_muldiv_1): Likewise.
14111         (fold_single_bit_test_into_sign_test): Likewise.
14112         (fold_binary): Likewise.
14113         (fold_ternary): Likewise.
14114         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
14115         instead of get_signed_or_unsigned_type.
14116         * c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
14117         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
14118         * expr.c (signed_or_unsigned_type_for): Use
14119         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
14120         * langhooks.c (get_signed_or_unsigned_type): Remove.
14121         (lhd_signed_or_unsigned_type): Remove.
14122         * langhooks.h (lang_hooks_for_types): Remove signed_type and
14123         signed_or_unsigned_type.
14124         (lhd_signed_or_unsigned_type): Remove.
14125         * expmed.c (make_tree): Use signed_type_for instead of
14126         lang_hooks.types.signed_type.
14127         * c-common.c (same_scalar_type_ignoring_signedness): Use
14128         c_common_signed_type instead of lang_hooks.types.signed_type.
14129         (c_common_unsigned_type): New.
14130         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
14131         (shorten_compare): Use c_common_unsigned_type instead of
14132         c_common_signed_or_unsigned_type.
14133         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
14134         unsigned_type_for.
14135         * convert.c (convert_to_integer): Use signed_type_for instead of
14136         lang_hooks.types.signed_type.
14137         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
14138         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
14139         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
14140         * c-format.c (check_format_types): Use c_common_unsigned_type
14141         instead of unsigned_type_for.
14142         * c-decl.c (groakdeclarator): Likewise.
14143         * c-typeck.c (convert_for_assignment): Likewise.
14144         * c-common.h (c_common_unsigned_type): New.
14145
14146 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
14147
14148         PR target/32280
14149         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
14150         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
14151
14152 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
14153
14154         PR middle-end/32279
14155         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
14156         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
14157
14158 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
14159             Sebastian Pop  <sebpop@gmail.com>
14160
14161         * lambda-code.c (remove_iv): New.
14162         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
14163
14164 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
14165
14166         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
14167         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
14168         * tree-ssa-loop-prefetch.c: Include optabs.h.
14169         (FENCE_FOLLOWING_MOVNT): New macro.
14170         (struct mem_ref): Add independent_p and storent_p fields.
14171         (record_ref): Initalize the new fields.
14172         (gather_memory_references_ref): Return true if the reference
14173         could be analysed.
14174         (gather_memory_references): Check whether all memory accesses
14175         in loop were recorded.
14176         (should_issue_prefetch_p): Return false for nontemporal stores.
14177         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
14178         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
14179         (determine_loop_nest_reuse): Detect independent memory references.
14180         (loop_prefetch_arrays): Call mark_nontemporal_stores.
14181         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
14182         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
14183         * config/i386/i386.h (x86_mfence): Declare.
14184         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
14185         * config/i386/i386.c (x86_mfence): New variable.
14186         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
14187
14188         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
14189         * optabs.c (init_optabs): Initialize storent_optab.
14190         * optabs.h (enum optab_index): Add OTI_storent.
14191         (storent_optab): Declare.
14192         * genopinit.c (optabs): Add initialization for storent_optab.
14193         * tree.h (MOVE_NONTEMPORAL): New macro.
14194         * expr.c (expand_assignment, store_expr, store_constructor_field,
14195         store_constructor, store_field, expand_expr_real_1): Propagate
14196         nontemporality of the expanded store.
14197         (emit_storent_insn): New function.
14198         * expr.h (expand_assignment, store_expr): Declaration changed.
14199         * function.c (assign_parm_setup_reg): Pass false as nontemporality
14200         to expand_assignment.
14201         * stmt.c (expand_asm_expr): Ditto.
14202         * calls.c (initialize_argument_information): Pass false as
14203         nontemporality to store_expr.
14204         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
14205         storentsi): New.
14206
14207 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
14208
14209         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
14210         parameter, use it.
14211         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
14212
14213 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
14214
14215         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
14216         and allow DECL_P here.
14217
14218 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
14219
14220         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
14221         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
14222         track of the size of the expression.
14223         * cfghooks.c (merge_blocks): Remove block from loops structure only
14224         after call of the merge_blocks hook.
14225
14226 2007-06-09  Tom Tromey  <tromey@redhat.com>
14227
14228         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
14229         (deprecated_state): Removed.
14230         (start_decl): Update.
14231         (enum deprecated_states): Moved earlier.
14232         (groktypename): Update.
14233         (push_parm_decl): Likewise.
14234         (grokfield): Likewise.
14235         (start_function): Likewise.
14236
14237 2007-06-09  Ian Lance Taylor  <iant@google.com>
14238
14239         PR tree-optimization/32169
14240         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
14241         CONVERT_EXPR, check whether min and max both converted to an
14242         overflow infinity representation.
14243
14244 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
14245
14246         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
14247         not inserted on the edge.
14248
14249 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
14250
14251         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
14252         instructions if they are supported.
14253         (__divsi3, __umodsi3, __modsi3): Likewise.
14254         (__ashldi3, __ashrdi3, __lshrdi3): New.
14255         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
14256
14257 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
14258             Tony Linthicum <tony.linthicum@amd.com>
14259
14260         * doc/invoke.texi: Add fvect-cost-model flag.
14261         * common.opt (fvect-cost-model): New flag.
14262         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
14263         cost fields in stmt_vec_info struct for STMT.
14264         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
14265         fields in stmt_vec_info struct and access functions for the same.
14266         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
14267         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
14268         load, store and vector to scalar operation.
14269         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
14270         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
14271         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
14272         (TARG_VEC_STORE_COST): Define cost of vector store.
14273         (vect_estimate_min_profitable_iters): Define new function.
14274         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
14275         check to evaluate if loop iterations are less than minimum profitable
14276         iterations determined by cost model or minimum vect loop bound defined
14277         by user, whichever is more conservative.
14278         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
14279         run-time check to evaluate if loop iterations are less than minimum
14280         profitable iterations determined by cost model or minimum vect loop
14281         bound defined by user, whichever is more conservative.
14282         (vect_estimate_min_profitable_iterations): New function to estimate
14283         mimimimum iterartions required for vector version of loop to be
14284         profitable over scalar version.
14285         (vect_model_reduction_cost): New function.
14286         (vect_model_induction_cost): New function.
14287         (vect_model_simple_cost): New function.
14288         (vect_cost_strided_group_size): New function.
14289         (vect_model_store_cost): New function.
14290         (vect_model_load_cost): New function.
14291         (vectorizable_reduction): Call vect_model_reduction_cost during
14292         analysis phase.
14293         (vectorizable_induction): Call vect_model_induction_cost during
14294         analysis phase.
14295         (vectorizable_load): Call vect_model_load_cost during analysis phase.
14296         (vectorizable_store): Call vect_model_store_cost during analysis phase.
14297         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
14298         vectorizable_promotion, vectorizable_demotion): Call
14299         vect_model_simple_cost during analysis phase.
14300
14301 2007-06-08  Simon Baldwin  <simonb@google.com>
14302
14303         * reg-stack.c (get_true_reg): Readability change.  Moved default case
14304         label into direct switch statement scope.
14305
14306 2007-06-08  Simon Baldwin  <simonb@google.com>
14307
14308         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
14309         in gcc_assert() with '==' comparison.
14310
14311 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
14312
14313         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
14314         TARGET_ABM handling of x86_popcnt variable.
14315
14316 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
14317
14318         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
14319         __builtin_copysignq and __builtin_infq built-in functions.
14320
14321 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
14322
14323         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
14324         SSE4.2 section.  Correct built-in function names in SSE4A section.
14325
14326 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
14327
14328         PR tree-optimization/32243
14329         * tree-vect-transform.c (vectorizable_type_promotion): Move check
14330         for ncopies after ratio check between nunits_out and nunits_in.
14331         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
14332
14333 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
14334
14335         PR tree-optimization/32224
14336         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
14337         vectorization upon a non GIMPLE_MODIFY_STMT.
14338
14339 2007-06-08  Christian Bruel  <christian.bruel@st.com>
14340
14341         PR target/29953
14342         * config/sh/sh.md (doloop_end): New pattern and splitter.
14343         * loop-iv.c (simple_rhs_p): Check for hardware registers.
14344
14345 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
14346
14347         PR middle-end/32209
14348         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
14349         functions.
14350         (verify_dominators): Do not change dominance tree.
14351
14352 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
14353
14354         * config/sh/constraints.md: New file.
14355         * config/sh/sh.c: Include tm-constrs.h.
14356         (reg_class_from_letter): Remove.
14357         (prepare_cbranch_operands): Use satisfies_constraint_*
14358         function instead of macro.
14359         (andcosts, broken_move, sh_secondary_reload): Likewise.
14360         * config/sh/predicates.md (trapping_target_operand): Likewise.
14361         (and_operand, arith_operand, arith_reg_or_0_operand,
14362         cmp_operand, logical_operand, target_operand,
14363         ua_address_operand, ua_offset, xor_operand): Likewise.
14364         * config/sh/sh.md: Include constraints.md.
14365         (*movsicc_t_false): Use satisfies_constraint_* function
14366         instead of macro.
14367         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
14368         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
14369         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
14370         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
14371         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
14372         (REG_CLASS_FROM_CONSTRAINT): Remove.
14373         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
14374         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
14375         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
14376         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
14377         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
14378         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
14379         function instead of macro.
14380         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
14381         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
14382         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
14383         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
14384         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
14385         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
14386         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
14387         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
14388         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
14389         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
14390         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
14391         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
14392         EXTRA_CONSTRAINT_STR): Likewise.
14393         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
14394
14395 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
14396
14397         * config/i386/darwin.h (STACK_BOUNDARY): Define.
14398
14399 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
14400
14401         PR c++/30759
14402         * c-common.h (flag_cpp0x): Replaced by...
14403         (cxx_dialect): ... this new variable specifying the C++ dialect that
14404         is used.
14405         * c-common.c (flag_cpp0x): Removed.
14406         (cxx_dialect): Defined.
14407         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
14408         cxx_dialect.
14409         * c-opts.c (c_common_post_options): Likewise.
14410         (set_std_cxx98): Set cxx_dialect to cxx98.
14411         (set_std_cxx0x): Set cxx_dialect to cxx0x.
14412
14413 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
14414             Hui-May Chang <hm.chang@apple.com>
14415
14416         * doc/invoke.texi (Darwin Options): Update documentation for
14417         -mmacosx-version-min.
14418         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
14419         * config/darwin-driver.c: New file.
14420         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
14421         * config/t-darwin (darwin-driver.o): New rule.
14422
14423         * config/darwin-c.c (version_as_macro): Ignore low digit.
14424
14425 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
14426
14427         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
14428         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
14429         (CSGNMODE): New mode macro.
14430         (CSGNVMODE): New mode attribute.
14431         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
14432         expander using CSGNMODE mode macro.  Handle TFmode.
14433         (copysign<mode>3_const): Rename from copysignsf3_const and
14434         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
14435         Handle TFmode.
14436         (copysign<mode>3_var): Rename from copysignsf3_var and
14437         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
14438         Handle TFmode.
14439         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
14440         mode macro.  Handle TFmode.
14441         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
14442         (iortf3, *iortf3): Ditto.
14443         (xortf3, *xortf3): Ditto.
14444         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
14445         TFmode and TImode masks.
14446         (ix86_expand_copysign): Expand TFmode copysign insn.
14447         (IX86_BUILTIN_INFQ): New.
14448         (IX86_BUILTIN_FABSQ): Ditto.
14449         (IX86_BUILTIN_COPYSIGNQ): Ditto.
14450         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
14451         [__builtin_fabsq]: Ditto.
14452         [__builtin_copysignq]: Ditto.
14453         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
14454         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
14455         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
14456         ix86_expand_binop_builtin().
14457
14458 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
14459
14460         * config/xtensa/lib1funcs.asm: Clean up whitespace.
14461
14462 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
14463
14464         PR target/31850
14465         * rtl.h (push_to_sequence2): New.
14466         * emit-rtl.c (push_to_sequence2): New.
14467         * function.c (assign_parm_data_all): Add new fields.
14468         (assign_parm_setup_block): Call push_to_sequence2 instead of
14469         push_to_sequence.
14470         (assign_parm_setup_reg): Ditto.
14471         (assign_parm_setup_stack): Ditto.
14472         (assign_parms_unsplit_complex): Ditto.
14473         (assign_parms): Change field name.
14474
14475 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
14476
14477         PR tree-optimization/32220
14478         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
14479         phi node is reached before defining statement.
14480
14481 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14482
14483         PR tree-opt/32231
14484         * tree-vect-transform.c (vectorizable_call): Call update_stmt
14485         after changing the right hand side of the assignment.
14486
14487 2007-06-06  Eric Christopher  <echristo@apple.com>
14488
14489         * config.gcc (i?86-*-darwin*): Remove arch parameter.
14490         (x86_64-*-darwin*): Ditto.
14491         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
14492         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
14493
14494 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
14495
14496         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
14497         coding conventions.
14498         (add_key): Likewise.
14499         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
14500         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
14501         variable names.
14502         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory
14503         macros.
14504         (add_cost_one_coalesce): Likewise.
14505         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
14506         variable names. Rename orig to orig_name for consistency.
14507         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the
14508         coding conventions.
14509         (cprop_into_successor_phis): Avoid using C++ keywords as variable
14510         names.
14511         (record_equivalences_from_stmt): Likewise.
14512         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
14513         the coding conventions.
14514         (memory_ssa_name_same): Likewise.
14515         (dse_optimize_stmt): Likewise.
14516         (dse_record_phis): Likewise.
14517         (dse_finalize_block): Likewise.
14518         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
14519         keywords as variable names.
14520         (may_move_till): Cast according to the coding conventions.
14521         (force_move_till_expr): Avoid using C++ keywords as variable names.
14522         (force_move_till): Cast according to the coding conventions.
14523         (memref_hash): Likewise.
14524         (memref_eq): Likewise.
14525         (gather_mem_refs_stmt): Likewise.
14526         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid
14527         using C++ keywords as variable names.
14528         (idx_find_step): Cast according to the coding conventions.
14529         (idx_record_use): Likewise.
14530         (find_depends): Likewise.
14531         (prepare_decl_rtl): Likewise.
14532         (mbc_entry_hash): Likewise.
14533         (mbc_entry_eq): Likewise.
14534         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
14535         (simplify_replace_tree): Avoid using C++ keywords as variable names.
14536         (idx_infer_loop_bounds): Cast according to the coding conventions.
14537         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
14538         * tree-ssa-math-opts.c (occ_new ): Likwise.
14539         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
14540         macros.
14541         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as
14542         variable names.
14543         (add_use_op): Likewise.
14544         (add_vop): Likewise.
14545         (add_vuse_op): Likewise.
14546         (add_vdef_op): Likewise.
14547         (get_expr_operands): Likewise.
14548         (push_stmt_changes): Use type safe memory macros.
14549         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
14550         keywords as variable names.
14551         (conditional_replacement): Likewise.
14552         (minmax_replacement): Likewise.
14553         (abs_replacement): Likewise.
14554         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
14555         coding conventions.
14556         (insert_fake_stores): Avoid using C++ keywords as variable names.
14557         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
14558         conventions.
14559         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
14560         (heapvar_insert): Use type safe memory macros.
14561         (new_var_info): Cast according to the coding conventions.
14562         (new_constraint): Likewise.
14563         (remove_preds_and_fake_succs): Use type safe memory macros.
14564         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
14565         conventions.
14566         (thread_single_edge): Likewise.
14567         (thread_through_loop_header): Likewise.
14568
14569 2007-06-06  Eric Christopher  <echristo@apple.com>
14570
14571         * config/i386/i386.c (override_options): Move handling
14572         of TARGET_SUBTARGET* earlier.
14573
14574 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
14575
14576         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
14577         use %n on printf.
14578
14579 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
14580
14581         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
14582         emited outside of basic block.
14583         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
14584         the created blocks.
14585         * rtl.h (delete_insn_chain): Declaration changed.
14586         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
14587         non-removed insns.
14588         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
14589         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
14590         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
14591         to delete_insn_chain.
14592         (rtl_verify_flow_info_1): Verify that the insns in header and footer
14593         do not have bb field set.
14594         (rtl_verify_flow_info): Verify that insns between basic blocks do not
14595         have bb field set.
14596         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
14597         * cfgcleanup.c (try_optimize_cfg): Ditto.
14598
14599 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
14600
14601         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
14602         (lambda_body_vector_new): Use type safe memory macros.
14603         (lambda_linear_expression_new): Likewise.
14604         (lambda_loopnest_new): Likewise.
14605         (lambda_lattice_new): Likewise.
14606         (replace_uses_equiv_to_x_with_y): Cast according to the coding
14607         conventions. Use type safe memory macros.
14608         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
14609         (lambda_body_vector_s): Likewise.
14610         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
14611         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
14612
14613 2007-06-06  Richard Guenther  <rguenther@suse.de>
14614
14615         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
14616         if we need to schedule cfg_cleanup.
14617         (tree_ssa_forward_propagate_single_use_vars): Do so.
14618
14619 2007-06-06  Ian Lance Taylor  <iant@google.com>
14620
14621         * fold-const.c (merge_ranges): If range_successor or
14622         range_predecessor fail, just return 0.
14623
14624 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
14625
14626         PR tree-optimization/32216
14627         * tree-vectorizer.c (supportable_widening_operation): Determine
14628         signedness of FIX_TRUNC_EXPR from output operand.
14629         (supportable_narrowing_operation): Ditto.
14630         * tree-vect-generic.c (expand_vector_operations_1): Determine
14631         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
14632         from input operand.
14633
14634 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
14635
14636         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
14637         (struct pta): ...from here. Change flags to unsigned to avoid
14638         excessive casting (as it is used as a bit mask).
14639         (override_options): Add casts according to the coding convenventions.
14640         (x86_64_elf_unique_section): Likewise.
14641         (examine_argument): Avoid using C++ keywords as variable names.
14642         (construct_container): Likewise.
14643         (legitimize_pic_address): Likewise.
14644         (get_dllimport_decl): Cast according to the coding conventions. Use
14645         type safe memory macros.
14646         (legitimize_address): Cast according to the coding conventions.
14647         (emit_i387_cw_initialization): Corrected the type of slot to enum
14648         ix86_stack_slot.
14649         (ix86_init_machine_status): Use type safe memory macros.
14650         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
14651         (bdesc_pcmpistr): Likewise.
14652         (bdesc_crc32): Likewise.
14653         (bdesc_sse_3arg): Likewise.
14654         (bdesc_2arg): Likewise.
14655         (bdesc_1arg): Likewise.
14656         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
14657         (ix86_expand_sse_pcmpistr): Likewise.
14658         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
14659         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
14660         int to match the langhook definition.
14661         (ix86_builtin_conversion): Change the type of code to unsigned init to
14662         match the langhook definition.
14663         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
14664         names.
14665         (ix86_preferred_output_reload_class): Likewise.
14666         (ix86_cannot_change_mode_class): Likewise.
14667         (ix86_memory_move_cost): Likewise.
14668         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
14669         avoid excessive casting later on.
14670         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
14671
14672 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
14673
14674         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
14675         as flags setting insn.
14676         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
14677
14678 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
14679
14680         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
14681         (UNSPEC_ROUND): New.
14682         ("sse4_1_round<mode>2"): New insn pattern.
14683         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
14684         SSE4.1 targets.
14685         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
14686         expander using SSEMODEF mode macro.  Expand using
14687         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
14688         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
14689         expander using SSEMODEF mode macro.  Expand using
14690         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
14691         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
14692         expander using SSEMODEF mode macro.  Expand using
14693         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
14694         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
14695         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
14696         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
14697         UNSPEC_ROUNDS.
14698
14699 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
14700             Sebastian Pop  <sebpop@gmail.com>
14701
14702         * lambda.h (build_linear_expr): New.
14703         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
14704         Use build_linear_expr, call fold and force_gimple_operand.
14705         (lambda_loopnest_to_gcc_loopnest): Check that there is
14706         something to insert.
14707         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
14708
14709 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
14710
14711         PR preprocessor/23479
14712         * doc/extend.texi: Document the 0b-prefixed binary integer
14713         constant extension.
14714
14715 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
14716
14717         PR tree-optimization/32215
14718         * tree-vectorizer.c (supportable_widening_operation): Return false
14719         for unsupported FIX_TRUNC_EXPR tree code.
14720         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
14721
14722 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
14723
14724         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
14725         register on SPE targets.  Change documentation to reflect
14726         reality.
14727         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
14728         Change FIXED_SCRATCH to 14 and document why we're keeping r14
14729         out of the register allocation pool.
14730         (rs6000_reg_live_or_pic_offset_p): New function.
14731         (rs6000_emit_prologue): Move the actual saving of LR up to free
14732         r0 for holding r11.  Split saving of SPE 64-bit registers into
14733         its own case.  Ensure that offsets will always be in-range for
14734         'evstdd' by using r11 as a scratch register to point at the start
14735         of the SPE save area.  Save r11 if necessary, as it is the static
14736         chain register.
14737         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
14738         into its own case.  Ensure that offsets will always be in-range
14739         for 'evldd' by using r11 as a scratch register to point at the
14740         start of the SPE save area.  Also adjust r11 when restoring
14741         the stack pointer to compensate for pre-loading r11.
14742
14743 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
14744
14745         * cfg.c (init_flow): Use type safe memory macros.
14746         (alloc_block): Likewise.
14747         (unchecked_make_edge): Likewise.
14748         (dump_flow_info): Avoid using C++ keywords as variable names.
14749         (copy_original_table_clear): Cast according to the coding conventions.
14750         (copy_original_table_set): Likewise.
14751         * cfgexpand (label_rtx_for_bb): Likewise.
14752         (expand_gimple_basic_block): Likewise.
14753         * cfghooks.c (dump_bb): Likewise.
14754         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
14755         variable names.
14756         (lv_add_condition_to_bb): Likewise.
14757         * cfglayout (relink_block_chain): Cast according to the coding
14758         conventions.
14759         (fixup_reorder_chain): Likewise.
14760         (fixup_fallthru_exit_predecessor): Likewise.
14761         * cfgloop.c (glb_enum_p): Likewise.
14762         (get_exit_description): Likewise.
14763         (dump_recorded_exit): Likewise.
14764         * cfgloop.h (enum loop_estimation): Move out of struct scope...
14765         (struct loop): ... from here.
14766         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
14767         conventions.
14768         * cfgrtl.c (rtl_create_basic_block): Likewise.
14769         (rtl_split_block): Likewise.
14770         (rtl_dump_bb): Likewise.
14771         (cfg_layout_split_block): Likewise.
14772         (init_rtl_bb_info): Use typesafe memory macros.
14773
14774         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
14775         * graphds.h: Updated all usages of edge to graph_edge.
14776         * graphds.c: Likewise.
14777         * cfgloopanal.c: Likewise.
14778
14779 2007-06-05  Ian Lance Taylor  <iant@google.com>
14780
14781         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
14782         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
14783         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
14784         expression.
14785         (test_for_singularity): Likewise.
14786
14787 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
14788
14789         * config/i386/constraints.md ("Y2"): Replaced by ...
14790         ("Yt"): This.
14791         * config/i386/i386.md: Likewise.
14792         * config/i386/mmx.md: Likewise.
14793         * config/i386/sse.md: Likewise.
14794
14795 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
14796
14797         * config/i386/constraints.md ("z"): Replaced by ...
14798         ("Y0"): This.
14799         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
14800         (sse4_1_blendvps): Likewise.
14801         (sse4_1_pblendvb): Likewise.
14802         (sse4_2_pcmpestr): Likewise.
14803         (sse4_2_pcmpestrm): Likewise.
14804         (sse4_2_pcmpestr_cconly): Likewise.
14805         (sse4_2_pcmpistr): Likewise.
14806         (sse4_2_pcmpistrm): Likewise.
14807         (sse4_2_pcmpistr_cconly): Likewise.
14808
14809 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
14810
14811         * matrix-reorg.c (transform_access_sites): Fix computation.
14812         (transform_allocation_sites): Same.
14813
14814 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
14815
14816         * config/i386/i386.c (override_options): Use
14817         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
14818
14819 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
14820
14821         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
14822         (nonimm_not_xmm0_operand): Ditto.
14823         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
14824         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
14825         as operand[2] predicate.  Require "z" class XMM register for
14826         operand[3].  Adjust asm template.
14827         ("sse4_1_blendvpd"): Ditto.
14828         ("sse4_1_pblendvb"): Ditto.
14829         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
14830         force op2 into xmm0 register for variable blend instructions.
14831
14832 2007-06-04  Tom Tromey  <tromey@redhat.com>
14833
14834         * c-tree.h (start_enum): Update.
14835         (build_enumerator): Likewise.
14836         * c-decl.c (enum_next_value): Removed.
14837         (enum_overflow): Likewise.
14838         (start_enum): Add c_enum_contents argument.  Don't use globals.
14839         (build_enumerator): Likewise.
14840         * c-tree.h (struct c_enum_contents): New struct.
14841
14842 2007-06-04  Tom Tromey  <tromey@redhat.com>
14843
14844         * c-common.c (c_common_get_alias_set): Fix indentation.
14845
14846 2007-06-04  Ian Lance Taylor  <iant@google.com>
14847
14848         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
14849         to overflow, reduce overflow infinity to regular infinity.
14850         (vrp_var_may_overflow): New static function.
14851         (vrp_visit_phi_node): Check vrp_var_may_overflow.
14852
14853 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
14854
14855         * stor-layout.c (layout_type): Remove duplicate code.
14856
14857 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
14858
14859         PR c/32191
14860         * c-common.c (c_define_builtins): Call targetm.init_builtins ()
14861         before build_common_builtin_nodes ().
14862
14863 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
14864
14865         PR target/31733
14866         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
14867
14868 2007-06-04  Jan Hubicka  <jh@suse.cz>
14869
14870         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
14871         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
14872         instead of _stat version.
14873
14874 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
14875
14876         PR tree-optimization/32194
14877         * tree-predcom.c (determine_offset): Check that both references have
14878         the same type.
14879
14880 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
14881
14882         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
14883         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
14884         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
14885         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
14886         Add argument to iterate_fix_dominators call.
14887         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
14888         * gcse.c (hoist_code): Change domby to vector.
14889         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
14890         Add argument to iterate_fix_dominators call.
14891         * loop-doloop.c (doloop_modify): Changed recount_dominator to
14892         recompute_dominator.
14893         * lambda-code.c (perfect_nestify): Ditto.
14894         * cfgloopanal.c: Include graphds.h.
14895         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
14896         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
14897         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
14898         add_edge call.
14899         * graphds.c: New file.
14900         * graphds.h: New file.
14901         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
14902         (get_dominated_by, get_dominated_by_region): Change return type to
14903         vector.
14904         (verify_dominators): Recompute all dominators and compare the results.
14905         (recount_dominator): Renamed to ...
14906         (recompute_dominator): ... this.  Do not check that the block is
14907         dominated by entry.
14908         (iterate_fix_dominators): Reimplemented.
14909         (prune_bbs_to_update_dominators, root_of_dom_tree,
14910         determine_dominators_for_sons): New functions.
14911         * et-forest.c (et_root): New function.
14912         * et-forest.h (et_root): Declare.
14913         * Makefile.in (graphds.o): Add.
14914         (cfgloopanal.o): Add graphds.h dependency.
14915         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
14916         * basic-block.h (get_dominated_by, get_dominated_by_region,
14917         iterate_fix_dominators): Declaration changed.
14918         (recount_dominator): Renamed to ...
14919         (recompute_dominator): ... this.
14920         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
14921         (thread_through_all_blocks): Do not free dominance info.
14922
14923 2007-06-03  Andreas Schwab  <schwab@suse.de>
14924
14925         * config/m68k/m68k.c (override_options): Don't override
14926         REAL_MODE_FORMAT.
14927         * config/m68k/m68k-modes.def (SF, DF): Define to use
14928         motorola_single_format and motorola_double_format, resp.
14929         * real.c (motorola_single_format): Renamed from
14930         coldfire_single_format.
14931         (motorola_double_format): Renamed from coldfire_double_format.
14932         (encode_ieee_extended): Generate a proper canonical NaN image
14933         respecting canonical_nan_lsbs_set.
14934         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
14935         true.
14936         * real.h: Adjust declarations.
14937
14938 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
14939
14940         PR target/32163
14941         * config/sh/sh.md (symGOT_load): Don't schedule insns when
14942         the symbol is generated with the stack protector.
14943
14944 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
14945
14946         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
14947         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
14948         "interrupt".
14949         * doc/extend.texi (interrupt): Mention m68k.
14950
14951 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
14952
14953         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
14954         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
14955         (ix86_expand_sse_pcmpestr): Do not check operands for
14956         "register_operand", when insn operand predicate is "register_operand".
14957         (ix86_expand_sse_pcmpistr): Ditto.
14958
14959 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
14960             Uros Bizjak  <ubizjak@gmail.com>
14961
14962         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
14963         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
14964         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
14965         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
14966         * config/i386/constraints.md ("z"): New register constraint
14967         for members of SSE_FIRST_REG class.
14968         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
14969         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
14970         SSE_FIRST_REG class.
14971         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
14972         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
14973         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
14974         (IX86_BUILTIN_PCMPESTRM128): Likewise.
14975         (IX86_BUILTIN_PCMPESTRA128): Likewise.
14976         (IX86_BUILTIN_PCMPESTRC128): Likewise.
14977         (IX86_BUILTIN_PCMPESTRO128): Likewise.
14978         (IX86_BUILTIN_PCMPESTRS128): Likewise.
14979         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
14980         (IX86_BUILTIN_PCMPISTRI128): Likewise.
14981         (IX86_BUILTIN_PCMPISTRM128): Likewise.
14982         (IX86_BUILTIN_PCMPISTRA128): Likewise.
14983         (IX86_BUILTIN_PCMPISTRC128): Likewise.
14984         (IX86_BUILTIN_PCMPISTRO128): Likewise.
14985         (IX86_BUILTIN_PCMPISTRS128): Likewise.
14986         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
14987         (struct builtin_description): Change "flag" field to unsigned.
14988         (bdesc_pcmpestr): New builtin description table.
14989         (bdesc_pcmpistr): Likewise.
14990         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
14991         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
14992         Initialize pcmp[ei]str[im] insns for SSE4.2.
14993         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
14994         (ix86_expand_sse_pcmpistr): Likewise.
14995         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
14996         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
14997         (UNSPEC_PCMPISTR): Likewise.
14998         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
14999         (sse4_2_pcmpestri):New isns pattern.
15000         (sse4_2_pcmpestrm): Likewise.
15001         (sse4_2_pcmpestr_cconly): Likewise.
15002         (sse4_2_pcmpistr): New insn patern and splitter.
15003         (sse4_2_pcmpistri):New isns pattern.
15004         (sse4_2_pcmpistrm): Likewise.
15005         (sse4_2_pcmpistr_cconly): Likewise.
15006         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
15007         in SSE4.2.
15008
15009 2007-06-01  David Daney  <ddaney@avtrex.com>
15010
15011         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
15012         LOADGP_ABSOLUTE and not binds_local_p.
15013
15014 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
15015
15016         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
15017
15018 2007-06-01  Ian Lance Taylor  <iant@google.com>
15019
15020         * tree-vrp.c (compare_name_with_value): Always set
15021         used_strict_overflow if we get a result from the variable itself.
15022
15023 2007-06-01  Ian Lance Taylor  <iant@google.com>
15024
15025         PR rtl-optimization/31455
15026         * lower-subreg.c (find_decomposable_subregs): Don't decompose
15027         subregs which have a cast between modes which are not tieable.
15028
15029 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
15030
15031         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
15032         breaks after return statements.
15033
15034 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
15035
15036         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
15037         only after no_new_pseudos.
15038
15039 2007-05-31  Eric Christopher  <echristo@apple.com>
15040
15041         * expr.c (convert_move): Assert that we don't have a BLKmode
15042         operand.
15043         (store_expr): Handle BLKmode moves by calling emit_block_move.
15044
15045 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
15046
15047         * c-typeck.c (build_indirect_ref): Include type in error message.
15048         (build_binary_op): Pass types to binary_op_error.
15049         * c-common.c (binary_op_error): Take two type arguments, print out
15050         types with error.
15051         * c-common.h (binary_op_error): Update prototype.
15052
15053 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
15054
15055         * config/i386/i386.c: Correct coments on -mno-sse4.
15056
15057 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
15058
15059         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
15060         (x86_64-*-*): Likewise.
15061         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
15062         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
15063         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
15064         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
15065         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
15066         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
15067         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
15068         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
15069         (OPTION_MASK_ISA_SSE4): Likewise.
15070         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
15071         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
15072         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
15073         (override_options): Support SSE4.2.
15074         (ix86_build_const_vector): Support SImode and DImode.
15075         (ix86_build_signbit_mask): Likewise.
15076         (ix86_expand_int_vcond): Support V2DImode.
15077         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
15078         (IX86_BUILTIN_CRC32HI): Likewise.
15079         (IX86_BUILTIN_CRC32SI): Likewise.
15080         (IX86_BUILTIN_CRC32DI): Likewise.
15081         (IX86_BUILTIN_PCMPGTQ): Likewise.
15082         (bdesc_crc32): Likewise.
15083         (bdesc_sse_3arg): Likewise.
15084         (ix86_expand_crc32): Likewise.
15085         (ix86_init_mmx_sse_builtins): Support SSE4.2.
15086         (ix86_expand_builtin): Likewise.
15087         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
15088         __SSE4_2__ for -msse4.2.
15089         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
15090         (CRC32MODE): Likewise.
15091         (crc32modesuffix): Likewise.
15092         (crc32modeconstraint): Likewise.
15093         (sse4_2_crc32<mode>): Likewise.
15094         (sse4_2_crc32di): Likewise.
15095         * config/i386/i386.opt (msse4.2): New for SSE4.2.
15096         (msse4): Likewise.
15097         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
15098         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
15099         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
15100         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
15101         (vcondu<mode>): Likewise.
15102         * doc/extend.texi: Document SSE4.2 built-in functions.
15103         * doc/invoke.texi: Document -msse4.2/-msse4.
15104
15105 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
15106
15107         PR tree-optimization/32160
15108         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
15109         variable as gimple reg.
15110         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
15111
15112 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
15113
15114         * gcc.c (main): Don't consider linker options when issuing the
15115         warning about a linker input file not being used.
15116
15117 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15118
15119         * tree-vrp.c (compare_names): Initialize sop.
15120
15121 2007-05-30  Dirk Mueller  <dmueller@suse.de>
15122
15123         * cgraphunit.c (cgraph_analyze_function): Remove
15124         computation of inline parameters.
15125
15126 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
15127
15128         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
15129
15130 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
15131
15132         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
15133         Add vx-common.h.  Include vxworks.h between vx-common.h and
15134         arm/vxworks.h.
15135         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
15136         redefining.
15137         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
15138         (TARGET_ASM_DESTRUCTOR): Likewise.
15139         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
15140         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
15141         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
15142         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
15143         (VXWORKS_ENDIAN_SPEC): Define.
15144         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
15145         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
15146         VXWORKS_* equivalents.
15147         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
15148         (ASM_FILE_START): Delete.
15149         (TARGET_VERSION): Reformat.
15150         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
15151         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
15152         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
15153         (FPBIT, DPBIT): Define.
15154         (fp-bit.c, dp-bit.c): New rules.
15155         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
15156         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
15157         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
15158         * config/arm/arm.h: Include vxworks-dummy.h.
15159         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
15160         Mark with ATTRIBUTE_UNUSED.
15161         (arm_override_options): Do not allow VxWorks RTP PIC to be used
15162         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
15163         make it incompatible with -msingle-pic-base.
15164         (arm_function_ok_for_sibcall): Return false for calls that might
15165         go through a VxWorks PIC PLT entry.
15166         (require_pic_register): New function, split out from...
15167         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
15168         for VxWorks RTPs.
15169         (arm_load_pic_register): Handle the VxWorks RTP initialization
15170         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
15171         (arm_emit_call_insn): New function.
15172         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
15173         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
15174         (pic_offset_arm): New pattern.
15175         (call, call_value): Use arm_emit_call_insn.
15176         (call_internal, call_value_internal): New expanders.
15177         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
15178         VxWorks unless __PIC__.
15179
15180 2007-05-30  Eric Christopher  <echristo@gmail.com>
15181
15182         * genrecog.c: Include regs.h in generated file.
15183         * genemit.c: Ditto. Fix up formatting.
15184         * config/mn10300/constraints.md: New.
15185         * config/mn10300/mn10300.md: Include.
15186         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
15187         Fix up for removed macro.
15188         * config/mn10300/predicates.md (call_address_operand): Ditto.
15189         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
15190         (CONST_OK_FOR_I): Ditto.
15191         (CONST_OK_FOR_J): Ditto.
15192         (CONST_OK_FOR_K): Ditto.
15193         (CONST_OK_FOR_L): Ditto.
15194         (CONST_OK_FOR_M): Ditto.
15195         (CONST_OK_FOR_N): Ditto.
15196         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
15197         (OK_FOR_Q): Ditto.
15198         (OK_FOR_R): Ditto.
15199         (OK_FOR_T): Ditto.
15200         (EXTRA_CONSTRAINT): Ditto.
15201
15202 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
15203
15204         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
15205         Remove defines.
15206         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
15207         OPTION_MASK_ISA_64BIT.
15208         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
15209
15210 2007-05-30  Richard Guenther  <rguenther@suse.de>
15211
15212         PR middle-end/32152
15213         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
15214         types for comparison.
15215         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
15216         with original typed arguments.
15217         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
15218
15219 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
15220
15221         PR tree-optimization/31769
15222         * except.c (duplicate_eh_regions): Clear prev_try if
15223         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
15224
15225 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
15226
15227         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
15228         * tree-ssa-sink.c (statement_sink_location): Return basic block and
15229         bsi of the location where statements should be inserted.
15230         (sink_code_in_bb): Take bsi from statement_sink_location.
15231         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
15232         instead of bsi_start.
15233         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
15234         bsi_insert_after.
15235         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
15236         (bsi_move_before): Document inconsistency with bsi_move_after.
15237         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
15238
15239 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
15240
15241         * config/i386/i386.h (TARGET_ABM): New define.
15242         (TARGET_POPCNT): Ditto.
15243         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
15244         New temporary defines to redefine from OPTION_ISA_* defines.
15245         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
15246         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
15247         (ix86_isa_flags): New extern int declaration.
15248         (TARGET_SUBTARGET_DEFAULT): New define.
15249         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
15250         (TARGET_SUBTARGET32_DEFAULT): Ditto.
15251         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
15252         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
15253         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
15254         * config/i386/darwin.h: Change TARGET_64BIT define to
15255         OPTION_ISA_64BIT.
15256
15257         * config/i386/i386.opt (m3dnowa): Define as undocumented option
15258         using existing "ix86_isa_flags" varible.
15259         (m32, m64): Use existing "ix86_isa_flags" variable.
15260         (mmmx, m3dnow): Ditto.
15261         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
15262         (mabm): Define as non-negative option using "x86_abm" variable.
15263         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
15264
15265         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
15266         Rewrite feature test bitmap.
15267         (ix86_isa_flags): New initialized global int varible.
15268         (ix86_isa_flags_explicit): New static int variable.
15269         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
15270         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
15271         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
15272         target_flags_explicit.
15273         (override_options): Remove "target_enable" and "target_disable" fields
15274         from "struct ptt". Update processor_target_table accordingly. Remove
15275         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
15276         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
15277         "target_flags" and "ix86_isa_flags_explicit" instead of
15278         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
15279         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
15280         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
15281         to true when either of PTA_POPCNT or PTA_ABM is set in
15282         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
15283         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
15284         processor_alias_table flags entry.  Remove handling of
15285         "target_enable" and "target_disable" fields of processor_target_table.
15286         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
15287         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
15288         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
15289         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
15290         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
15291         "target_flags".
15292         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
15293
15294 2007-05-29  David Daney  <ddaney@avtrex.com>
15295
15296         PR gcc/31975
15297         * config/mips/mips.c (mips_output_mi_thunk): Emit
15298         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
15299
15300 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
15301         * config/i386/i386.c (ix86_function_regparm): Added checking of
15302         ix86_force_align_arg_pointer to determine the number of
15303         register parameters.
15304
15305 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
15306
15307         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
15308         (SET_DR_MISALIGNMENT): New.
15309         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
15310         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
15311         Use SET_DR_MISALIGNMENT.
15312         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
15313         pointer.
15314         * tree-data-ref.c (create_data_ref, compute_all_dependences,
15315         find_loop_nest): Export.
15316         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
15317         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
15318         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
15319         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
15320         New macros.
15321         (struct mem_ref): Add field reuse_distance.
15322         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
15323         Initialize reuse_distance field.
15324         (issue_prefetch_ref): Select temporality of prefetch according to
15325         reuse_distance.
15326         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
15327         self_reuse_distance, determine_loop_nest_reuse): New functions.
15328         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
15329         (tree_ssa_prefetch_arrays): Dump L2 cache size.
15330         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
15331         dependency.
15332
15333 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
15334
15335         * tree-ssa-alias.c: Add aliasing overview.
15336
15337 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
15338             Danny Smith  <dannysmith@users.sourceforge.net>
15339
15340         PR target/29498
15341         * config/i386/t-crtfm: Compile crtfastmath.o with
15342         -minline-all-stringops.
15343         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
15344         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
15345
15346 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15347
15348         * doc/md.texi: Document constraints on HP PA-RISC.
15349
15350         * pa/constraints.md: New file.
15351         * pa.md: Include constraints.md.
15352         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
15353         (integer_store_memory_operand, ldil_cint_p): New functions.
15354         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
15355         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
15356         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
15357         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
15358         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
15359
15360 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
15361
15362         PR c/31339
15363         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
15364         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
15365         case POSTDECREMENT_EXPR>): Return the error_mark_node
15366         if either the real or imaginary parts would an
15367         error_mark_node.
15368
15369 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
15370
15371         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
15372         name when we remove it from a call.
15373
15374 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
15375
15376         * targhooks.c (default_narrow_bitfield): Remove.
15377         * targhooks.h: Remove the prototype for
15378         default_narrow_bitfield.
15379
15380         * langhooks-def.h: Remove the prototype for
15381         hook_get_alias_set_0.
15382         * langhooks.c (hook_get_alias_set_0): Remove.
15383
15384         * global.c (EXECUTE_IF_CONFLICT): Remove.
15385
15386 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15387
15388         PR tree-opt/32100
15389         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
15390         return true when truth_value_p is true and the type
15391         is of signed:1.
15392
15393 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
15394
15395         * doc/install.texi (Prerequisites): We no longer require Autoconf
15396         2.13 for the top-level.
15397
15398 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
15399
15400         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
15401         memory access via x86_expand_vector_move_misalign() only for
15402         TImode values on 32-bit targets.
15403
15404 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
15405
15406         * matrix-reorg.c: New file. Implement matrix flattening and
15407         transposing optimization.
15408         * tree-pass.h: Add matrix reorg pass.
15409         * common.opt: Add fipa-mreorg flag.
15410         * Makefile.in: Add matrix-reorg.c.
15411         * passes.c: Add matrix reorg pass.
15412         * varpool.c (add_new_static_var): New function.
15413         * cgraph.h (add_new_static_var): Declare.
15414
15415 2007-05-27  Eric Christopher  <echristo@apple.com>
15416
15417         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
15418         sp_offset depending on stack size. Save r12 depending
15419         on registers we're saving later.
15420         (rs6000_emit_epilogue): Update sp_offset depending only
15421         on stack size.
15422
15423 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
15424
15425         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
15426         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
15427         * ifcvt.c (if_convert): Ditto.
15428         * tree-ssa-threadupdate.c (thread_block): Ditto.
15429         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
15430         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
15431         verify_loop_closed_ssa): Check number_of_loops instead of
15432         current_loops.
15433         * predict.c (tree_estimate_probability): Ditto.
15434         * tree-if-conv.c (main_tree_if_conversion): Ditto.
15435         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
15436         * modulo-sched.c (sms_schedule): Ditto.
15437         * tree-scalar-evolution.c (scev_const_prop): Ditto.
15438         (scev_finalize): Do not do anything if scev analysis was not
15439         initialized.
15440         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
15441         current_loops == NULL.
15442         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
15443         * loop-init.c (loop_optimizer_init): Do not free current_loops when
15444         there are no loops.
15445         (loop_optimizer_finalize): Assert that loops were analyzed.
15446         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
15447         rtl_doloop): Check number_of_loops instead of current_loops.
15448         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
15449         current_loops == NULL.
15450         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
15451         gate_tree_vectorize tree_linear_transform, check_data_deps,
15452         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
15453         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
15454         Check number_of_loops instead of current_loops.
15455         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
15456         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
15457         free loops if available.
15458         (execute_pre): Do not pass do_fre to fini_pre.
15459
15460 2007-05-27  Tobias Burnus  <burnus@net-b.de>
15461
15462         PR middle-end/32083
15463         * real.c (mpfr_from_real): Fix sign of -Inf.
15464
15465 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
15466
15467         * tree-vect-transform.c (vectorizable_conversion): Initialize
15468         tree_code variables to ERROR_MARK.
15469         (vectorizable_type_demotion): Likewise.
15470         (vectorizable_type_promotion): Likewise.
15471
15472 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
15473
15474         PR target/32065
15475         * config/i386/i386.md (movti): Handle push operands via
15476         ix86_expand_push().
15477
15478 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
15479
15480         * basic-block.h: Remove the prototype for merge_seq_blocks.
15481         * cfgcleanup.c (merge_seq_blocks): Remove.
15482
15483         * tree-flow.h: Remove the prototype for is_aliased_with.
15484         * tree-ssa-alias.c (is_aliased_with): Remove.
15485
15486 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
15487
15488         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
15489
15490         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
15491
15492         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
15493         ix86_expand_sse4_unpack if SSE4.1 is enabled.
15494         (vec_unpacks_hi_v16qi): Likewise.
15495         (vec_unpacku_lo_v16qi): Likewise.
15496         (vec_unpacks_lo_v16qi): Likewise.
15497         (vec_unpacku_hi_v8hi): Likewise.
15498         (vec_unpacks_hi_v8hi): Likewise.
15499         (vec_unpacku_lo_v8hi): Likewise.
15500         (vec_unpacks_lo_v8hi): Likewise.
15501         (vec_unpacku_hi_v4si): Likewise.
15502         (vec_unpacks_hi_v4si): Likewise.
15503         (vec_unpacku_lo_v4si): Likewise.
15504         (vec_unpacks_lo_v4si): Likewise.
15505
15506 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
15507
15508         * c-typeck.c, config/arm/arm.c, config/darwin.c,
15509         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
15510         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
15511         follow spelling conventions in various
15512         warning/error/diagnostic messages.
15513
15514         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
15515         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
15516         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
15517         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
15518         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
15519         * doc/tm.texi: Follow spelling conventions.
15520
15521 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15522
15523         PR tree-opt/32090
15524         * tree-ssa-forwprop.c
15525         (forward_propagate_addr_into_variable_array_index): Remove
15526         the lhs argument.  Use the type of def_rhs instead of lhs.
15527         (forward_propagate_addr_expr_1): Update use of
15528         forward_propagate_addr_into_variable_array_index.
15529
15530 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
15531             Nigel Stephens  <nigel@mips.com>
15532
15533         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
15534         function attributes, "far" being an alias for "long_call".
15535         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
15536         (mips_near_type_p, mips_far_type_p): New.
15537         (mips_comp_type_attributes): New function to check that attributes
15538         attached to a function type are compatible.
15539         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
15540         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
15541         to the target function of the thunk.
15542         (mips_encode_section_info): Check for "near" and "far" function
15543         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
15544
15545         * config/mips/predicates.md (const_call_insn_operand): Test only
15546         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
15547
15548         * doc/extend.texi (Function Attributes): Document MIPS "near" and
15549         "far" attributes.
15550
15551         * testsuite/gcc.target/mips/near-far-1.c: New test case.
15552         * testsuite/gcc.target/mips/near-far-2.c: New test case.
15553         * testsuite/gcc.target/mips/near-far-3.c: New test case.
15554         * testsuite/gcc.target/mips/near-far-4.c: New test case.
15555
15556 2007-05-25  Eric Christopher  <echristo@apple.com>
15557
15558         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
15559         to x86-darwin configurations.
15560         * config/i386/t-darwin: Add softfp support.
15561         * config/i386/t-darwin64: Ditto.
15562         * config/i386/sfp-machine.h: If mach then don't use
15563         aliasing, emit a stub to call.
15564
15565 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
15566
15567         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
15568         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
15569         tree-predcom.c, tree-ssa-alias-warnings.c,
15570         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
15571         comment typos.  Follow spelling conventions.
15572         * doc/cpp.texi, doc/invoke.texi: Fix typos.
15573
15574 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
15575
15576         PR target/32065
15577         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
15578         constants into memory.  Expand unaligned memory references for
15579         SSE modes via x86_expand_vector_move_misalign() function.
15580
15581 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
15582
15583         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
15584         "memory" attribute for "sseishft" type insn without operands[2].
15585
15586 2007-05-25  Dirk Mueller  <dmueller@suse.de>
15587             Marcus Meissner <meissner@suse.de>
15588
15589         * doc/extend.texi (alloc_size): New attribute.
15590         * c-common.c (handle_alloc_size_attribute): New.
15591         * tree-object-size.c (alloc_object_size): Use alloc_size
15592         attribute, if available.
15593
15594 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
15595
15596         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
15597         with MASK_SSE2.
15598         (__builtin_ia32_vec_ext_v2di): Likewise.
15599         (__builtin_ia32_vec_ext_v4si): Likewise.
15600         (__builtin_ia32_vec_ext_v8hi): Likewise.
15601         (__builtin_ia32_vec_ext_v16qi): Likewise.
15602         (__builtin_ia32_vec_set_v8hi): Likewise.
15603
15604 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
15605
15606         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
15607
15608 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
15609
15610         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
15611         (arm_is_longcall_p): Rename to...
15612         (arm_is_long_call_p): ...this.  Take a single tree argument and
15613         return a bool.
15614         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
15615         (CUMULATIVE_ARGS): Remove call_cookie.
15616         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
15617         (ENCODED_LONG_CALL_ATTR_P): Delete.
15618         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
15619         LONG_CALL_FLAG_CHAR cases.
15620         (ARM_DECLARE_FUNCTION_SIZE): Delete.
15621         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
15622         ARM_DECLARE_FUNCTION_SIZE.
15623         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
15624         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
15625         (arm_encode_call_attribute, current_file_function_operand): Delete.
15626         (arm_function_in_section_p): New function.
15627         (arm_is_longcall_p): Rename to...
15628         (arm_is_long_call_p): ...this.  Take the target function as a single
15629         argument and return a bool.  Do not rely on call cookies.  Check
15630         whether the target symbol is in the same section as the current
15631         function, not just the same compilation unit.
15632         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
15633         (arm_encode_section_info): Don't encode a call type.
15634         * config/arm/arm.md (call, call_value): Update calls to
15635         arm_is_long(_)call_p.  Simplify logic.
15636         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
15637         Update calls to arm_is_long(_)call_p.
15638
15639 2007-05-25  Richard Guenther  <rguenther@suse.de>
15640
15641         PR tree-optimization/31982
15642         * tree-ssa-forwprop.c
15643         (forward_propagate_addr_into_variable_array_index): Handle arrays
15644         with element size one.
15645
15646 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15647
15648         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
15649         (umulsi3_highpart): Likewise.
15650
15651 2007-05-24  Ian Lance Taylor  <iant@google.com>
15652
15653         PR rtl-optimization/32069
15654         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
15655         is NULL.
15656
15657 2007-05-24  Ollie Wild  <aaw@google.com>
15658
15659         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
15660         description.
15661
15662 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
15663
15664         * postreload-gcse.c (reg_changed_after_insn_p): New function.
15665         (oprs_unchanged_p): Use it to check all registers in a REG.
15666         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
15667         (reg_set_between_after_reload_p): Delete.
15668         (reg_used_between_after_reload_p): Likewise.
15669         (reg_set_or_used_since_bb_start): Likewise.
15670         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
15671         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
15672         Use reg_set_between_p instead of reg_set_between_after_reload_p.
15673         * rtlanal.c (reg_set_p): Check whether REG overlaps
15674         regs_invalidated_by_call, rather than just checking the
15675         membership of REGNO (REG).
15676
15677 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
15678
15679         * doc/passes.texi: Document predictive commoning.
15680         * doc/invoke.texi (-fpredictive-commoning): Document.
15681         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
15682         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
15683         adding indices to the generated name.
15684         (schedule_sm): Pass 0 to get_lsm_tmp_name.
15685         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
15686         * tree-pretty-print.c (op_symbol_1): Renamed to ...
15687         (op_symbol_code): ... and exported.
15688         (dump_omp_clause, op_symbol): Use op_symbol_code
15689         instead of op_symbol_1.
15690         * tree-pass.h (pass_predcom): Declare.
15691         * timevar.def (TV_PREDCOM): New timevar.
15692         * tree-ssa-loop.c (run_tree_predictive_commoning,
15693         gate_tree_predictive_commoning, pass_predcom): New.
15694         * tree-data-ref.c (find_data_references_in_loop): Find the
15695         references in dominance order.
15696         (canonicalize_base_object_address): Ensure that the result has
15697         pointer type.
15698         (dr_analyze_innermost): Export.
15699         (create_data_ref): Code to fail for references with invariant
15700         address moved ...
15701         (find_data_references_in_stmt): ... here.
15702         * tree-data-ref.h (dr_analyze_innermost): Declare.
15703         * tree-affine.c: Include tree-gimple.h and hashtab.h.
15704         (aff_combination_find_elt, name_expansion_hash,
15705         name_expansion_eq, tree_to_aff_combination_expand,
15706         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
15707         New functions.
15708         * tree-affine.h (aff_combination_constant_multiple_p,
15709         tree_to_aff_combination_expand): Declare.
15710         * tree-predcom.c: New file.
15711         * common.opt (fpredictive-commoning): New option.
15712         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
15713         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
15714         * Makefile.in (tree-predcom.o): Add.
15715         (tree-affine.o): Add TREE_GIMPLE_H dependency.
15716         * passes.c (init_optimization_passes): Add dceloop after
15717         copy propagation in loop optimizer.  Add predictive commoning
15718         to loop optimizer passes.
15719
15720 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
15721
15722         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
15723         default hook.
15724
15725 2007-05-24  Jan Hubicka  <jh@suse.cz>
15726
15727         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
15728         statistics.
15729         (genheader): Include statistics.h.
15730
15731         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
15732         notes are gone.
15733         * print-rtl.c (flag_dump_unnumbered): Update comments.
15734         (print_rtl): Fix my previous change.
15735         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
15736         specific data.
15737
15738 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
15739
15740         PR middle-end/32018
15741         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
15742         set_loop_copy.
15743         (thread_through_all_blocks): Call initialize_original_copy_tables
15744         and free_original_copy_tables.
15745         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
15746         Use set_loop_copy.
15747         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
15748         * cfghooks.c (duplicate_block): Use get_loop_copy.
15749         * cfg.c: Include cfgloop.h.
15750         (loop_copy): New hash table.
15751         (initialize_original_copy_tables): Initialize loop_copy table.
15752         (free_original_copy_tables): Free loop_copy table.
15753         (copy_original_table_clear, copy_original_table_set,
15754         set_loop_copy, get_loop_copy): New functions.
15755         (set_bb_original, set_bb_copy): Use copy_original_table_set.
15756         * cfgloop.h (struct loop): Remove copy field.
15757         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
15758         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
15759
15760 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
15761
15762         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
15763         -msse/-msse2/-msse3.
15764
15765 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
15766
15767         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
15768         __builtin_ia32_vec_set_v2di with MASK_64BIT.
15769
15770 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
15771
15772         PR target/27067
15773         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
15774         * targhooks.h (default_mangle_decl_assembler_name): Declare
15775         default hook.
15776         * targhooks.c (default_mangle_decl_assembler_name): Define
15777         default hook.
15778         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
15779         default hook.
15780         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
15781         * langhooks.c (lhd_set_decl_assembler_name): Call
15782         targetm.mangle_decl_assembler_name for names with global scope.
15783
15784         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
15785         default.
15786         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
15787         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
15788         Declare.
15789         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
15790         New. Factored out of i386_pe_encode_section_info.
15791         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
15792         Move check for prior decoration of stdcall
15793         symbols to i386_pe_encode_section_info.
15794         (i386_pe_encode_section_info): Adjust call to
15795         gen_stdcall_or_fastcall_suffix.  Use
15796         i386_pe_maybe_mangle_decl_assembler_name, if needed.
15797         (i386_pe_mangle_decl_assembler_name): New. Wrap
15798         i386_pe_maybe_mangle_decl_assembler_name.
15799
15800 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
15801
15802         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
15803         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
15804         * langhooks.c (get_signed_or_unsigned_type): Don't check for
15805         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
15806         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
15807         TYPE_UNSIGNED.
15808
15809 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
15810             Nigel Stephens  <nigel@mips.com>
15811             Richard Sandiford  <richard@codesourcery.com>
15812
15813         Fix up MIPS16 hard float and add support for complex.
15814
15815         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
15816         (TARGET_SOFT_FLOAT_ABI): New.
15817         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
15818         __mips_soft_float to reflect the ABI in use, not whether the
15819         FPU is directly accessible (e.g., in MIPS16 mode).
15820         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
15821         (UNITS_PER_FPVALUE): Likewise.
15822
15823         * config/mips/mips.c (mips_expand_call): Remove redundant
15824         TARGET_MIPS16 check.
15825         (mips_arg_regno): New.
15826         (function_arg_advance): When setting bits in cum->fp_code for
15827         MIPS16, don't subtract 1 from cum->arg_number, since it is now
15828         zero-based.
15829         (function_arg): Use mips_arg_regno.
15830         (mips_return_mode_in_fpr_p): New.
15831         (mips16_call_stub_mode_suffix): New.
15832         (mips16_cfun_returns_in_fpr_p): New.
15833         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
15834         (mips_output_function_prologue): Test mips16_hard_float, not
15835         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
15836         (mips_expand_epilogue): Call MIPS16 helper routines to copy
15837         return value into a floating-point register.
15838         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
15839         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
15840         (mips16_fp_args): Handle MIPS32r2 ISA which supports
15841         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
15842         word of double arguments from or to the high bits of 64-bit
15843         floating point registers.
15844         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
15845         (mips16_fpret_double): New helper function.
15846         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
15847         support for complex modes.  Fill in DECL_RESULT for stubdecl.
15848         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
15849
15850         * config/mips/mips16.S
15851         (RET, ARG1, ARG2): New.
15852         (MERGE_GPRf, MERGE_GPRt): New.
15853         (DELAYt, DELAYf): New.
15854         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
15855         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
15856         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
15857         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
15858         (SFOP): Renamed to...
15859         (OPSF3): This, and macro-ified.  Updated all uses.
15860         (SFOP2): Renamed to...
15861         (OPSF2): This, and macro-ified.  Updated all uses.
15862         (SFCMP): Renamed to...
15863         (CMPSF): This, and macro-ified.  Updated all uses.
15864         (SFREVCMP): Renamed to...
15865         (REVCMPSF): This, and macro-ified.  Updated all uses.
15866         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
15867         (LDDBL1, LDDBL2, RETDBL): Deleted.
15868         (DFOP): Renamed to...
15869         (OPDF3): This, and macro-ified.  Updated all uses.
15870         (DFOP2): Renamed to...
15871         (OPDF2): This, and macro-ified.  Updated all uses.
15872         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
15873         (DFCMP): Renamed to...
15874         (CMPDF): This, and macro-ified.  Updated all uses.
15875         (DFREVCMP): Renamed to...
15876         (REVCMPDF): This, and macro-ified.  Updated all uses.
15877         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
15878         (RET_FUNCTION): New.
15879         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
15880         (__mips16_ret_sc, __mips16_ret_dc): New.
15881         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
15882         STUB_ARGS_6, STUB_ARGS_10): New.
15883         (CALL_STUB_NO_RET): New.
15884         (__mips16_call_stub_1): Macro-ified.
15885         (__mips16_call_stub_5): Macro-ified.
15886         (__mips16_call_stub_2): Macro-ified.
15887         (__mips16_call_stub_6): Macro-ified.
15888         (__mips16_call_stub_9): Macro-ified.
15889         (__mips16_call_stub_10): Macro-ified.
15890         (CALL_STUB_RET): New.
15891         (__mips16_call_stub_sf_0): Macro-ified.
15892         (__mips16_call_stub_sf_1): Macro-ified.
15893         (__mips16_call_stub_sf_5): Macro-ified.
15894         (__mips16_call_stub_sf_2): Macro-ified.
15895         (__mips16_call_stub_sf_6): Macro-ified.
15896         (__mips16_call_stub_sf_9): Macro-ified.
15897         (__mips16_call_stub_sf_10): Macro-ified.
15898         (__mips16_call_stub_df_0): Macro-ified.
15899         (__mips16_call_stub_df_1): Macro-ified.
15900         (__mips16_call_stub_df_5): Macro-ified.
15901         (__mips16_call_stub_df_2): Macro-ified.
15902         (__mips16_call_stub_df_6): Macro-ified.
15903         (__mips16_call_stub_df_9): Macro-ified.
15904         (__mips16_call_stub_df_10): Macro-ified.
15905         (__mips16_call_stub_sc_0): New.
15906         (__mips16_call_stub_sc_1): New.
15907         (__mips16_call_stub_sc_5): New.
15908         (__mips16_call_stub_sc_2): New.
15909         (__mips16_call_stub_sc_6): New.
15910         (__mips16_call_stub_sc_9): New.
15911         (__mips16_call_stub_sc_10): New.
15912         (__mips16_call_stub_dc_0): New.
15913         (__mips16_call_stub_dc_1): New.
15914         (__mips16_call_stub_dc_5): New.
15915         (__mips16_call_stub_dc_2): New.
15916         (__mips16_call_stub_dc_6): New.
15917         (__mips16_call_stub_dc_9): New.
15918         (__mips16_call_stub_dc_10): New.
15919
15920         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
15921         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
15922         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
15923
15924 2007-05-23  Ian Lance Taylor  <iant@google.com>
15925
15926         * doc/invoke.texi (Invoking GCC): Document that the order of the
15927         -l option matters.
15928
15929 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
15930
15931         PR target/30987
15932         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
15933         * config/score/predicate.md (const_pow2, const_npow2): Remove.
15934         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
15935         undef.
15936
15937         PR target/30474
15938         * config/score/score.c (score_print_operand): Make sure that only
15939         lower bits are used.
15940
15941 2007-05-22  Ian Lance Taylor  <iant@google.com>
15942
15943         * tree-vrp.c (avoid_overflow_infinity): New static function,
15944         broken out of set_value_range_to_value.
15945         (set_value_range_to_value): Call avoid_overflow_infinity.
15946         (extract_range_from_assert): Likewise.
15947
15948 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15949
15950         PR middle-end/31095
15951          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
15952         change the type before looking for a COMPOUND_EXPR.
15953
15954 2007-05-22  Ian Lance Taylor  <iant@google.com>
15955
15956         * lower-subreg.c (decompose_multiword_subregs): If we change an
15957         insn, call remove_retval_note on it.
15958
15959 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
15960
15961         * regs.h (end_hard_regno): New function.
15962         (END_HARD_REGNO, END_REGNO): New macros.
15963         (add_to_hard_reg_set): New function.
15964         (remove_from_hard_reg_set): Likewise.
15965         (in_hard_reg_set_p): Likewise.
15966         (overlaps_hard_reg_set_p): Likewise.
15967         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
15968         (note_btr_set): Use END_HARD_REGNO.
15969         * caller-save.c (setup_save_areas): Use end_hard_regno.
15970         (mark_set_regs): Use END_HARD_REGNO.
15971         (add_stored_regs): Use end_hard_regno.
15972         (mark_referenced_regs): Use add_to_hard_reg_set.
15973         * combine.c (update_table_tick): Use END_REGNO.
15974         (record_value_for_reg): Likewise.
15975         (record_dead_and_set_regs): Likewise.
15976         (get_last_value_validate): Likewise.
15977         (use_crosses_set_p): Likewise.
15978         (reg_dead_at_p_1): Likewise.
15979         (reg_dead_at_p): Likewise.
15980         (mark_used_regs_combine): Use add_to_hard_reg_set.
15981         (move_deaths): Use END_HARD_REGNO.
15982         (reg_bitfield_target_p): Use end_hard_regno.
15983         (distribute_notes): Use END_HARD_REGNO.
15984         * cse.c (mention_regs): Use END_REGNO.
15985         (insert): Use add_to_hard_reg_set.
15986         (invalidate): Use END_HARD_REGNO.
15987         (invalidate_for_call): Likewise.
15988         (exp_equiv_p): Use END_REGNO.
15989         (cse_insn): Likewise.
15990         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
15991         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
15992         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
15993         * function.c (keep_stack_depressed): Use end_hard_regno.
15994         * global.c (global_alloc): Use end_hard_regno.
15995         (global_conflicts): Use add_to_hard_reg_set instead of
15996         mark_reg_live_nc.
15997         (find_reg): Likewise.
15998         (mark_reg_store): Likewise.
15999         (mark_reg_conflicts): Likewise.
16000         (mark_reg_death): Use remove_from_hard_reg_set.
16001         (mark_reg_live_nc): Delete.
16002         (set_preference): Use end_hard_regno.
16003         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
16004         remove_from_hard_reg_set.
16005         (post_mark_life): Use add_to_hard_reg_set.
16006         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
16007         (reg_becomes_live): Use add_to_hard_reg_set.
16008         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
16009         (peep2_find_free_register): Use add_to_hard_reg_set.
16010         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
16011         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
16012         * regrename.c (note_sets): Use add_to_hard_reg_set.
16013         (clear_dead_regs): Use remove_from_hard_reg_set.
16014         (regrename_optimize): Use add_to_hard_reg_set.
16015         (find_oldest_value_reg): Use in_hard_reg_set_p.
16016         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
16017         (hard_reg_set_here_p): Use end_hard_regno.
16018         (decompose): Likewise.
16019         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
16020         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
16021         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
16022         (mark_home_live): Use end_hard_regno.
16023         (spill_hard_reg): Likewise.
16024         (clear_reload_reg_in_use): Likewise.
16025         * reorg.c (delete_prior_computation): Use END_REGNO.
16026         * resource.c (update_live_status): Use END_HARD_REGNO.
16027         (mark_referenced_resources): Use add_to_hard_reg_set.
16028         (mark_set_resources): Likewise.
16029         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
16030         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
16031         (reg_overlap_mentioned_p): Likewise.
16032         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
16033         (covers_regno_no_parallel_p): Use END_REGNO.
16034         (find_regno_note): Likewise.
16035         (find_reg_fusage): Use END_HARD_REGNO.
16036         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
16037         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
16038
16039 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
16040
16041         * mode-switching.c (reg_dies): Change type of second argument to
16042         "HARD_REG_SET *".
16043         (optimize_mode_switching): Update accordingly.
16044
16045 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
16046
16047         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
16048         in favor of...
16049         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
16050         (hard_reg_set_empty_p): ...these new functions.
16051         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
16052         GO_IF_HARD_REG_SUBSET.
16053         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
16054         instead of GO_IF_HARD_REG_EQUAL.
16055         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
16056         instead of GO_IF_HARD_REG_EQUAL.
16057         * global.c (find_reg): Use hard_reg_set_empty_p instead of
16058         GO_IF_HARD_REG_SUBSET.
16059         (modify_reg_pav): Use hard_reg_set_empty_p instead of
16060         GO_IF_HARD_REG_EQUAL.
16061         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
16062         of GO_IF_HARD_REG_SUBSET.
16063         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
16064         instead of GO_IF_HARD_REG_EQUAL.
16065         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
16066         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
16067         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
16068         of GO_IF_HARD_REG_SUBSET,
16069         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
16070         GO_IF_HARD_REG_SUBSET.
16071         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
16072         instead of GO_IF_HARD_REG_EQUAL.
16073         * config/sh/sh.c (push_regs, calc_live_regs): Use
16074         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
16075         (hard_regs_intersect_p): Delete.
16076
16077 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
16078
16079         * doc/sourcebuild.texi (Test Directives) Add dg-message.
16080
16081 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
16082             Richard Henderson  <rth@redhat.com>
16083
16084         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
16085         extra_headers.
16086         (x86_64-*-*): Likewise.
16087
16088         * i386/i386-modes.def (V2QI): New.
16089
16090         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
16091         SSE4A.
16092         (override_options): Support SSE4.1.
16093         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
16094         (IX86_BUILTIN_BLENDPS): Likewise.
16095         (IX86_BUILTIN_BLENDVPD): Likewise.
16096         (IX86_BUILTIN_BLENDVPS): Likewise.
16097         (IX86_BUILTIN_PBLENDVB128): Likewise.
16098         (IX86_BUILTIN_PBLENDW128): Likewise.
16099         (IX86_BUILTIN_DPPD): Likewise.
16100         (IX86_BUILTIN_DPPS): Likewise.
16101         (IX86_BUILTIN_INSERTPS128): Likewise.
16102         (IX86_BUILTIN_MOVNTDQA): Likewise.
16103         (IX86_BUILTIN_MPSADBW128): Likewise.
16104         (IX86_BUILTIN_PACKUSDW128): Likewise.
16105         (IX86_BUILTIN_PCMPEQQ): Likewise.
16106         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
16107         (IX86_BUILTIN_PMAXSB128): Likewise.
16108         (IX86_BUILTIN_PMAXSD128): Likewise.
16109         (IX86_BUILTIN_PMAXUD128): Likewise.
16110         (IX86_BUILTIN_PMAXUW128): Likewise.
16111         (IX86_BUILTIN_PMINSB128): Likewise.
16112         (IX86_BUILTIN_PMINSD128): Likewise.
16113         (IX86_BUILTIN_PMINUD128): Likewise.
16114         (IX86_BUILTIN_PMINUW128): Likewise.
16115         (IX86_BUILTIN_PMOVSXBW128): Likewise.
16116         (IX86_BUILTIN_PMOVSXBD128): Likewise.
16117         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
16118         (IX86_BUILTIN_PMOVSXWD128): Likewise.
16119         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
16120         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
16121         (IX86_BUILTIN_PMOVZXBW128): Likewise.
16122         (IX86_BUILTIN_PMOVZXBD128): Likewise.
16123         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
16124         (IX86_BUILTIN_PMOVZXWD128): Likewise.
16125         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
16126         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
16127         (IX86_BUILTIN_PMULDQ128): Likewise.
16128         (IX86_BUILTIN_PMULLD128): Likewise.
16129         (IX86_BUILTIN_ROUNDPD): Likewise.
16130         (IX86_BUILTIN_ROUNDPS): Likewise.
16131         (IX86_BUILTIN_ROUNDSD): Likewise.
16132         (IX86_BUILTIN_ROUNDSS): Likewise.
16133         (IX86_BUILTIN_PTESTZ): Likewise.
16134         (IX86_BUILTIN_PTESTC): Likewise.
16135         (IX86_BUILTIN_PTESTNZC): Likewise.
16136         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
16137         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
16138         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
16139         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
16140         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
16141         (bdesc_ptest): New.
16142         (bdesc_sse_3arg): Likewise.
16143         (bdesc_2arg): Likewise.
16144         (bdesc_1arg): Likewise.
16145         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
16146         with 3 args.
16147         (ix86_expand_sse_4_operands_builtin): New.
16148         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
16149         smaller than 8 bits as the 2nd arg.
16150         (ix86_expand_sse_ptest): New.
16151         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
16152         (ix86_expand_vector_set): Support SSE4.1.
16153         (ix86_expand_vector_extract): Likewise.
16154
16155         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
16156         __SSE4_1__ for -msse4.1.
16157
16158         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
16159         (UNSPEC_INSERTPS): Likewise.
16160         (UNSPEC_DP): Likewise.
16161         (UNSPEC_MOVNTDQA): Likewise.
16162         (UNSPEC_MPSADBW): Likewise.
16163         (UNSPEC_PHMINPOSUW): Likewise.
16164         (UNSPEC_PTEST): Likewise.
16165         (UNSPEC_ROUNDP): Likewise.
16166         (UNSPEC_ROUNDS): Likewise.
16167
16168         * config/i386/i386.opt (msse4.1): New for SSE4.1.
16169
16170         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
16171         (const_pow2_1_to_32768_operand): Likewise.
16172
16173         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
16174         file.
16175
16176         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
16177         SSE4.1.
16178         (sse4_1_insertps): Likewise.
16179         (*sse4_1_extractps): Likewise.
16180         (sse4_1_ptest): Likewise.
16181         (sse4_1_mulv2siv2di3): Likewise.
16182         (*sse4_1_mulv4si3): Likewise.
16183         (*sse4_1_smax<mode>3): Likewise.
16184         (*sse4_1_umax<mode>3): Likewise.
16185         (*sse4_1_smin<mode>3): Likewise.
16186         (*sse4_1_umin<mode>3): Likewise.
16187         (sse4_1_eqv2di3): Likewise.
16188         (*sse4_1_pinsrb): Likewise.
16189         (*sse4_1_pinsrd): Likewise.
16190         (*sse4_1_pinsrq): Likewise.
16191         (*sse4_1_pextrb): Likewise.
16192         (*sse4_1_pextrb_memory): Likewise.
16193         (*sse4_1_pextrw_memory): Likewise.
16194         (*sse4_1_pextrq): Likewise.
16195         (sse4_1_blendpd): Likewise.
16196         (sse4_1_blendps): Likewise.
16197         (sse4_1_blendvpd): Likewise.
16198         (sse4_1_blendvps): Likewise.
16199         (sse4_1_dppd): Likewise.
16200         (sse4_1_dpps): Likewise.
16201         (sse4_1_movntdqa): Likewise.
16202         (sse4_1_mpsadbw): Likewise.
16203         (sse4_1_packusdw): Likewise.
16204         (sse4_1_pblendvb): Likewise.
16205         (sse4_1_pblendw): Likewise.
16206         (sse4_1_phminposuw): Likewise.
16207         (sse4_1_extendv8qiv8hi2): Likewise.
16208         (*sse4_1_extendv8qiv8hi2): Likewise.
16209         (sse4_1_extendv4qiv4si2): Likewise.
16210         (*sse4_1_extendv4qiv4si2): Likewise.
16211         (sse4_1_extendv2qiv2di2): Likewise.
16212         (*sse4_1_extendv2qiv2di2): Likewise.
16213         (sse4_1_extendv4hiv4si2): Likewise.
16214         (*sse4_1_extendv4hiv4si2): Likewise.
16215         (sse4_1_extendv2hiv2di2): Likewise.
16216         (*sse4_1_extendv2hiv2di2): Likewise.
16217         (sse4_1_extendv2siv2di2): Likewise.
16218         (*sse4_1_extendv2siv2di2): Likewise.
16219         (sse4_1_zero_extendv8qiv8hi2): Likewise.
16220         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
16221         (sse4_1_zero_extendv4qiv4si2): Likewise.
16222         (*sse4_1_zero_extendv4qiv4si2): Likewise.
16223         (sse4_1_zero_extendv2qiv2di2): Likewise.
16224         (*sse4_1_zero_extendv2qiv2di2): Likewise.
16225         (sse4_1_zero_extendv4hiv4si2): Likewise.
16226         (*sse4_1_zero_extendv4hiv4si2): Likewise.
16227         (sse4_1_zero_extendv2hiv2di2): Likewise.
16228         (*sse4_1_zero_extendv2hiv2di2): Likewise.
16229         (sse4_1_zero_extendv2siv2di2): Likewise.
16230         (*sse4_1_zero_extendv2siv2di2): Likewise.
16231         (sse4_1_roundpd): Likewise.
16232         (sse4_1_roundps): Likewise.
16233         (sse4_1_roundsd): Likewise.
16234         (sse4_1_roundss): Likewise.
16235         (mulv4si3): Don't expand for SSE4.1.
16236         (smax<mode>3): Likewise.
16237         (umaxv4si3): Likewise.
16238         (uminv16qi3): Likewise.
16239         (umin<mode>3): Likewise.
16240         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
16241
16242         * doc/extend.texi: Document SSE4.1 built-in functions.
16243
16244         * doc/invoke.texi: Document -msse4.1.
16245
16246 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
16247
16248         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
16249         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
16250         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
16251         (ASM_SPEC): Add asm_pcrel_spec.
16252         (EXTRA_SPECS): Add asm_pcrel_spec.
16253
16254 2007-05-21  David Daney  <ddaney@avtrex.com>
16255
16256         * doc/install.texi (Building a cross compiler): Add requirements
16257         for Java cross compiler.
16258
16259 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16260
16261         PR middle-end/31995
16262         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
16263         Add loopno argument.  Use evolution_function_is_invariant_rec_p
16264         instead of evolution_function_is_constant_p.
16265         Update calls to evolution_function_is_affine_multivariate_p.
16266         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
16267         Add loopno argument.
16268         * tree-scalar-evolution.c (gather_chrec_stats): Call
16269         evolution_function_is_affine_multivariate_p with a loop
16270         number of 0.
16271         * tree-data-ref.c (analyze_miv_subscript): Likewise.
16272         (analyze_overlapping_iterations): Likewise.
16273         (access_functions_are_affine_or_constant_p): Likewise.
16274         (build_classic_dist_vector_1): If the access functions
16275         are equal, don't do anything.
16276
16277 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
16278             Paolo Carlini  <pcarlini@suse.de>
16279             Uros Bizjak  <ubizjak@gmail.com>
16280
16281         * c-cppbuiltin.c (c_cpp_builtins): Define
16282         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
16283         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
16284         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
16285         * doc/cpp.texi ([Standard Predefined Macros]): Document.
16286
16287 2007-05-21  Mike Stump  <mrs@apple.com>
16288
16289         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
16290         handling as well.
16291         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
16292
16293 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
16294
16295         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
16296         implementation if __OPTIMIZE__ is not defined.
16297         (_mm_alignr_pi8): Ditto.
16298         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
16299         (_mm_inserti_si64): Ditto.
16300         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
16301         (_mm_slli_epi16): Ditto.
16302         (_mm_slli_epi32): Ditto.
16303         (_mm_slli_epi64): Ditto.
16304         (_mm_srai_epi16): Ditto.
16305         (_mm_srai_epi32): Ditto.
16306         (_mm_srli_si128): Ditto.
16307         (_mm_slli_si128): Ditto.
16308         (_mm_srli_epi16): Ditto.
16309         (_mm_srli_epi32): Ditto.
16310         (_mm_srli_epi64): Ditto.
16311         (_mm_extract_epi16): Ditto.
16312         (_mm_insert_epi16): Ditto.
16313         (_mm_shufflehi_epi16): Ditto.
16314         (_mm_shufflelo_epi16): Ditto.
16315         (_mm_shuffle_epi32): Ditto.
16316         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
16317         (_m_pextrw): Ditto.
16318         (_mm_insert_pi16): Ditto.
16319         (_m_pinsrw): Ditto.
16320         (_mm_shuffle_pi16): Ditto.
16321         (_m_pshufw): Ditto.
16322         (_mm_shufle_ps): Ditto.
16323         (_mm_prefetch): Ditto.
16324
16325 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
16326
16327         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
16328         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
16329         * real.c (encode_i370_single, decode_i370_single,
16330         encode_i370_double, decode_i370_double): Functions removed.
16331         (i370_single_format, i370_double_format): Initializations removed.
16332         (real_maxval, round_for_format, exact_real_truncate, significand_size):
16333         Consider the log2_b field to always be one.
16334         (ieee_single_format, mips_single_format, coldfire_single_format,
16335         ieee_double_format, mips_double_format, coldfire_double_format,
16336         ieee_extended_motorola_format, ieee_extended_intel_96_format,
16337         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
16338         ibm_extended_format, mips_extended_format, ieee_quad_format,
16339         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
16340         decimal_single_format, decimal_double_format, decimal_quad_format,
16341         c4x_single_format, c4x_extended_format, real_internal_format): Remove
16342         initialization of log2_b.
16343         * real.h (i370_single_format, i370_double_format): Declarations
16344         removed.
16345         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
16346         field to always be one.
16347
16348 2007-05-21  Andreas Schwab  <schwab@suse.de>
16349
16350         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
16351         NOTE_INSN_BASIC_BLOCK_P.
16352         (process_for_unwind_directive): Likewise.
16353
16354 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
16355
16356         * builtins.c (expand_builtin_setjmp_setup): Update comment.
16357         * function.h (struct function): Move va_list_gpr_size,
16358         va_list_fpr_size, function_frequency to front of bitfields.  Add
16359         calls_unwind_init.
16360         (current_function_calls_unwind_init): New.
16361         * except.c (expand_builtin_unwind_init): Set
16362         current_function_calls_unwind_init not
16363         current_function_has_nonlocal_label.
16364         * reload1.c (has_nonexceptional_receiver): New.
16365         (reload): Use it and current_function_calls_unwind_init to
16366         determine whether call-saved regs must be saved.
16367
16368 2007-05-20  Jan Hubicka  <jh@suse.cz>
16369
16370         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
16371         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
16372         * ddg.c (create_ddg): LIkewise.
16373         * final.c (final): Remove hunk moving line number notes around since
16374         they are no longer present at this stage.
16375         (final_scan_insn): Use NOTE_KIND instead of
16376         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
16377         (output_asm_label): Likewise.
16378         * reorg.c (dbr_schedule): Likewise.
16379         * haifa-sched.c (unlink_other_notes): Likewise.
16380         * mode-switching.c (optimize_mode_switching): Likewise.
16381         * graph.c (start_bb): Likewise.
16382         * rtl.def (NOTE): Update description.
16383         * jump.c (squeeze_notes): Delete.
16384         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
16385         NOTE_INSN_BASIC_BLOCK_P when possible.
16386         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
16387         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
16388         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
16389         (dwarf2out_var_location): Likewise.
16390         * cfgbuild.c (make_edges): Likewise.
16391         (find_basic_blocks_1): Likewise.
16392         * function.c (reorder_blocks_1): Likewise.
16393         (epilogue_done): Likewise.
16394         (reposition_prologue_and_epilogue_notes): Likewise.
16395         * print-rtl.c (print_rtx): Likewise; drop code for printing
16396         line number notes.
16397         (print_rtl): Likewise.
16398         (print_rtl_single): Likewise.
16399         * gcse.c (insert_insn_start_bb): Likewise.
16400         * alias.c (init_alias_analysis): Likewise.
16401         * calls.c (fixup_tail_calls): Likewise.
16402         * except.c (sjlj_emit_function_enter): Likewise.
16403         * emit-rtl.c (add_insn_after): Likeiwse.
16404         (emit_label_before): Likewise.
16405         (emit_label_after): Likewise.
16406         (emit_note_before, emit_note_after, emit_note): Update
16407         parameter to be enum insn_note; do not deal with source
16408         files.
16409         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
16410         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
16411         when possible.
16412         (merge_blocks_move_successor_nojumps): Simplify now when
16413         we don't have BLOCK notes.
16414         (try_optimize_cfg): Likewise.
16415         * cfglayout.c (skip_insns_after_block): Likewise.
16416         (record_effective_endpoints): Likewise.
16417         (duplicate_insn_chain): Likewise.
16418         * varasm.c (output_constant_pool_1): Likewise.
16419         * sched-deps.c (sched_analyze): Likewise.
16420         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
16421         Exterminate.
16422         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
16423         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
16424         (SET_INSN_DELETED): Simplify.
16425         (NOTE_LINE_NUMBER): Exterminate.
16426         (NOTE_LINE_KIND): New.
16427         (NOTE_INSN_BASIC_BLOCK_P): Update.
16428         (enum insn_note): Simplify.
16429         (GET_NOTE_INSN_NAME) Simplify.
16430         (emit_note_before, emit_note_after, emit_note): Update prototype.
16431         (squeeze_notes): Remove.
16432         * sched-int.h (NOTE_NOT_BB_P): Update.
16433         * resource.c (mark_target_live_regs): Update.
16434         * sched-rgn.c (debug_dependencies): Update.
16435         * sched-vis.c (print_insn): Update.
16436         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
16437         * config/i386/i386.c (ix86_output_function_epilogue): Update.
16438         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
16439         (TARGET_ADJUST_UNROLL_MAX): Likewise.
16440         (split_branches): Update.
16441         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
16442         4.0.0.
16443         (sh_adjust_unroll_max): Exterminate.
16444         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
16445         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
16446         (m68hc11_reorg): Likewise.
16447         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
16448         (emit_predicate_relation_info): Update.
16449         (process_for_unwind_directive): Update.
16450         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
16451         (output_call): Update.
16452         * config/pa/pa.c (output_lbranch): Update.
16453         (output_millicode_call): Update.
16454         (output_call): Update.
16455         (pa_combine_instructions): Update.
16456         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
16457         * config/bfin/bfin.c (gen_one_bundle): Update.
16458         * cfgrtl.c (can_delete_note_p): Update.
16459         (delete_insn): Update.
16460         (rtl_merge_blocks): Update.
16461         (commit_one_edge_insertion): Update.
16462         (rtl_verify_flow_info): Update.
16463         * stmt.c (expand_case): Do not call squeeze_notes.
16464
16465 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16466
16467         PR middle-end/7651
16468         PR c++/11856
16469         PR c/12963
16470         PR c/23587
16471         PR other/29694
16472         * c.opt (Wtype-limits): New.
16473         * doc/invoke.texi (Wtype-limits): Document it.
16474         (Wextra): Enabled by -Wextra.
16475         * c-opts.c (c_common_post_options): Enabled by -Wextra.
16476         * c-common.c (shorten_compare): Warn with Wtype-limits.
16477
16478 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
16479
16480         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
16481         inlined function, not as a macro.
16482         (_mm_alignr_pi8): Ditto.
16483         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
16484         (_mm_inserti_si64): Ditto.
16485         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
16486         (_mm_extract_epi16): Ditto.
16487         (_mm_insert_epi16): Ditto.
16488         (_mm_shufflehi_epi16): Ditto.
16489         (_mm_shufflelo_epi16): Ditto.
16490         (_mm_shuffle_epi32): Ditto.
16491         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
16492         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
16493         all functions.
16494         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
16495         float constant.
16496         (_m_to_float): Use C89 compatible assignment.
16497
16498 2007-05-20  Martin Michlmayr  <tbm@cyrius.com>
16499
16500         PR target/32007
16501         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
16502
16503 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16504
16505         PR middle-end/7651
16506         * doc/invoke.texi (Wreturn-type): Complete description.
16507         (Wextra): Delete item about return-type warning.
16508         * c-decl.c: Delete redundant Wextra warning.
16509
16510 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
16511
16512         PR target/31585
16513         * config/i386/pmmintrin.h: Do not include xmmintrin.h
16514         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
16515         inlined function, not as a macro.
16516         (_mm_prefetch): Ditto.
16517         (_m_pextrw): Ditto.
16518         (_mm_insert_pi16): Ditto.
16519         (_m_pinsrw): Ditto.
16520         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
16521         (_m_pshufw): Ditto. Add const to __N argument.
16522         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
16523         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
16524         (_mm_slli_epi32): Ditto.
16525         (_mm_srli_si128): Implement as always inlined function, not as a
16526         macro.  Add __inline to function declaration.
16527         (_mm_slli_si128): Ditto.
16528
16529 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
16530
16531         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
16532         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
16533         New constants.
16534         (struct fenv): New structure.
16535         (FP_HANDLE_EXCEPTIONS): New define.
16536         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
16537         (_FP_DECL_EXP): New define.
16538         (FP_INIT_ROUNDMODE): New define.
16539         (FP_ROUNDMODE): New define.
16540
16541 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16542
16543         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
16544         (Wconversion): Update description.
16545         (Wconversion-sign): New.
16546         * c.opt (Wconversion-sign): New.
16547         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
16548         means disabled for C++. Otherwise, take the status of Wconversion.
16549         * c-common.c (conversion_warning): Warn with either Wconversion or
16550         Wconversion-sign.
16551         (warnings_for_convert_and_check): Conditions are already checked by
16552         conversion_warning.
16553         (convert_and_check): Don't check warnings if the conversion failed.
16554
16555 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
16556            Anatoly Sokolov <aesok@dol.ru>
16557
16558         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
16559         avr_epilogue_uses) : Add declaration.
16560         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
16561         * config/avr/constraints.md (R): New constraint.
16562         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
16563         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
16564         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
16565         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
16566         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
16567         call_prologue_saves, epilogue_restores, return_from_epilogue,
16568         return_from_main_epilogue, return_from_interrupt_epilogue,
16569         return_from_naked_epilogue, prologue, epilogue): New patterns.
16570         (jump): Handle symbol reference.
16571         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
16572         avr_output_function_prologue, avr_output_function_epilogue): Remove
16573         functions.
16574         (avr_init_machine_status, expand_prologue, expand_epilogue,
16575         avr_asm_function_end_prologue, avr_epilogue_uses,
16576         avr_asm_function_begin_epilogue): New functions.
16577         (prologue_size, epilogue_size, jump_tables_size): Remove global
16578         variables.
16579         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
16580         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
16581         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
16582         (avr_override_options): Initialise init_machine_status.
16583         (output_movhi): Handle all stack pointer loads.
16584         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
16585         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
16586         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
16587         (EPILOGUE_USES) Redefine.
16588         (machine_function) Declare.
16589
16590 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
16591
16592         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
16593         Use a single return statement.
16594
16595 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16596
16597         PR middle-end/30250
16598         * builtins.c (do_mpfr_lgamma_r): New.
16599         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
16600         * tree.h (CASE_FLT_FN_REENT): New.
16601
16602 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
16603
16604         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
16605         (output_die): Use 'unsigned long' with %x.
16606         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
16607         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
16608         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
16609
16610         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
16611
16612 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
16613
16614         PR target/31989
16615         PR target/31681
16616         PR target/31666
16617         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
16618         true if function has no argument.
16619
16620 2007-05-18  DJ Delorie  <dj@redhat.com>
16621
16622         * config/mips/mips.c (mips_offset_within_alignment_p): New.
16623         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
16624
16625 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
16626
16627         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
16628         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
16629         count_trailing_zeros.
16630         (__i386__): Implement count_leading_zeros using __builtin_clz().
16631         Implement count_trailing_zeros usign __builtin_ctz().
16632
16633 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
16634
16635         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
16636
16637 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
16638
16639         PR middle-end/31344
16640         * expr.c (emit_move_change_mode): Change mode of push operands here.
16641
16642 2007-05-17  Ian Lance Taylor  <iant@google.com>
16643
16644         PR tree-optimization/31953
16645         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
16646         Change all callers.
16647         (set_value_range_to_null): Call set_value_range_to_value.
16648         (extract_range_from_comparison): Likewise.
16649
16650 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16651
16652         * toplev.c (print_version): Output GMP/MPFR version info.
16653
16654         * builtins.c (CASE_MATHFN_REENT): New macro.
16655         (mathfn_built_in): Use it.
16656         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
16657         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
16658         BUILT_IN_LGAMMAL_R): New.
16659         * doc/extend.texi: Document new builtins.
16660
16661         PR middle-end/31796
16662         * builtins.c (do_mpfr_remquo): New.
16663         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
16664         (fold_builtin_3): Handle BUILT_IN_REMQUO.
16665
16666         PR middle-end/30251
16667         * builtins.c (fold_builtin_1): Handle y0, y1.
16668         (fold_builtin_2): Handle yn.
16669
16670         PR middle-end/30251
16671         * builtins.c (do_mpfr_bessel_n): New.
16672         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
16673         (fold_builtin_2): Handle BUILT_IN_JN.
16674
16675 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
16676
16677         PR target/31965
16678         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
16679         TYPE_PRECISION (intmax_type_node).
16680
16681 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
16682
16683         PR target/31850
16684         * reload.c (subst_reloads): Remove checking.
16685
16686 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
16687
16688         PR rtl-optimization/31691
16689         * combine.c (simplify_set): Build a new src pattern instead of
16690         substituting its operands in the COMPARE case.
16691
16692 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
16693
16694         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
16695         (execute_vrp): Preserve loops through jump threading.
16696         * tree-ssa-threadupdate.c (thread_single_edge,
16697         dbds_continue_enumeration_p, determine_bb_domination_status,
16698         thread_through_loop_header): New functions.
16699         (create_edge_and_update_destination_phis,
16700         create_edge_and_update_destination_phis): Set loops for the new blocks.
16701         (prune_undesirable_thread_requests): Removed.
16702         (redirect_edges): Do not pretend that redirect_edge_and_branch can
16703         create new blocks.
16704         (thread_block): Do not call prune_undesirable_thread_requests.
16705         Update loops.
16706         (mark_threaded_blocks): Select edges to thread here.
16707         (thread_through_all_blocks): Take may_peel_loop_headers argument.
16708         Thread edges through loop headers independently.
16709         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
16710         * tree-pass.h (TODO_mark_first_instance): New.
16711         (first_pass_instance): Declare.
16712         * cfghooks.c (duplicate_block): Put the block to the original loop
16713         if copy is not specified.
16714         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
16715         jump threading.  Pass may_peel_loop_headers to
16716         thread_through_all_blocks according to first_pass_instance.
16717         * cfgloop.h (create_preheader): Declare.
16718         * tree-flow.h (thread_through_all_blocks): Declaration changed.
16719         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
16720         * passes.c (first_pass_instance): New variable.
16721         (next_pass_1): Set TODO_mark_first_instance.
16722         (execute_todo): Set first_pass_instance.
16723
16724 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
16725
16726         PR tree-optimization/24659
16727         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
16728         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
16729         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
16730         OTI_vec_pack_ufix_trunc.
16731         (vec_unpacks_float_hi_optab): Define new macro.
16732         (vec_unpacks_float_lo_optab): Ditto.
16733         (vec_unpacku_float_hi_optab): Ditto.
16734         (vec_unpacku_float_lo_optab): Ditto.
16735         (vec_pack_sfix_trunc_optab): Ditto.
16736         (vec_pack_ufix_trunc_optab): Ditto.
16737         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
16738         and vec_pack_[s|u]fix_trunc_optab using
16739         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
16740         * tree-vectorizer.c (supportable_widening_operation): Handle
16741         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
16742         (supportable_narrowing_operation): New function.
16743         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
16744         * tree-vect-transform.c (vectorizable_conversion): Handle
16745         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
16746         (vect_gen_widened_results_half): Move before vectorizable_conversion.
16747         (vectorizable_type_demotion): Call supportable_narrowing_operation()
16748         to check for target support.
16749         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
16750         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
16751         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
16752         for VEC_PACK_FIX_TRUNC_EXPR.
16753         (expand_binop): Special case mode of the result for
16754         vec_pack_[u|s]fix_trunc_optab.
16755         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
16756         vec_pack_[u|s]fix_trunc_optab.
16757
16758         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
16759         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
16760         * tree-pretty-print.c (dump_generic_node): Handle
16761         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
16762         VEC_PACK_FIX_TRUNC_EXPR.
16763         (op_prio): Ditto.
16764         * expr.c (expand_expr_real_1): Ditto.
16765         * tree-inline.c (estimate_num_insns_1): Ditto.
16766         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
16767
16768         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
16769         (vec_unpacks_float_lo_v8hi): Ditto.
16770         (vec_unpacku_float_hi_v8hi): Ditto.
16771         (vec_unpacku_float_lo_v8hi): Ditto.
16772         (vec_unpacks_float_hi_v4si): Ditto.
16773         (vec_unpacks_float_lo_v4si): Ditto.
16774         (vec_pack_sfix_trunc_v2df): Ditto.
16775
16776         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
16777         Document.
16778         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
16779         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
16780         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
16781         [vec_pack_ufix_trunc]: Ditto.
16782         [vec_unpacks_float_hi]: Ditto.
16783         [vec_unpacks_float_lo]: Ditto.
16784         [vec_unpacku_float_hi]: Ditto.
16785         [vec_unpacku_float_lo]: Ditto.
16786
16787 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
16788
16789         * soft-fp/README: Update for new files.
16790         * soft-fp/floattisf.c: New file.
16791         * soft-fp/floattidf.c: New file.
16792         * soft-fp/floattitf.c: New file.
16793         * soft-fp/floatuntisf.c: New file.
16794         * soft-fp/floatuntidf.c: New file.
16795         * soft-fp/floatuntitf.c: New file.
16796         * soft-fp/fixsfti.c: New file.
16797         * soft-fp/fixdfti.c: New file.
16798         * soft-fp/fixtfti.c: New file.
16799         * soft-fp/fixunssfti.c: New file.
16800         * soft-fp/fixunsdfti.c: New file.
16801         * soft-fp/fixunstfti.c: New file.
16802         * soft-fp/extendxftf.c: New file.
16803         * soft-fp/trunctfxf.c: New file.
16804
16805         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
16806         (__trunctfxf2): Ditto.
16807
16808         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
16809         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
16810         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
16811         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
16812         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
16813         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
16814
16815         * config/i386/t-fprules-softfp64: New file.
16816         * config/i386/sfp-machine.h: New file.
16817         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
16818         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
16819         and soft-fp/t-softfp to tmake_file.
16820         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
16821         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
16822
16823         * config/i386/t-linux64 (softfp_wrap_start): New.
16824         (softfp_wrap_end): New.
16825         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
16826         supported for TARGET_64BIT.
16827
16828 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
16829
16830         * c-common.c (c_common_signed_or_unsigned_type): Emulate
16831         c_common_unsigned_type behavior.
16832
16833 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
16834
16835         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
16836         calls as pure.
16837
16838 2007-05-16  Eric Christopher  <echristo@apple.com>
16839
16840         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
16841         saving after stack push. Set sp_offset whenever we push.
16842         (rs6000_emit_epilogue): Move altivec register restore before
16843         stack push.
16844
16845 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
16846
16847         * configure.ac: Allow sysroots to be relocated under $prefix as
16848         well as $exec_prefix.
16849         * configure: Regenerate.
16850
16851 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
16852
16853         Revert:
16854
16855         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
16856
16857         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
16858         (gcc_tooldir): Likewise.
16859         * configure: Regenerate.
16860         * Makefile.in (libsubdir_to_prefix): New variable, based on the
16861         old configure.ac gcc_tooldir setting.
16862         (prefix_to_exec_prefix): New variable.
16863         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
16864         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
16865
16866 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
16867
16868         * c-typeck.c (build_binary_op): Return early for error.
16869
16870 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
16871
16872         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
16873         struct nb_iter_bound.
16874         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
16875         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
16876         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
16877         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
16878         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
16879         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
16880         (del_scev_info): Use ggc_free.
16881         (scev_initialize): Allocate scalar_evolution_info in gc memory.
16882         * loop-init.c: Include ggc.h.
16883         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
16884         (loop_optimizer_finalize): Use ggc_free.
16885         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
16886         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
16887         pass_iv_optimize): Add TODO_ggc_collect.
16888         * function.h (struct function): Remove skip marker from
16889         x_current_loops.
16890         * cfgloop.c: Include ggc.h.
16891         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
16892         memory.
16893         (establish_preds): Vector superloops is gc allocated.
16894         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
16895         loop->exits list.
16896         (flow_loops_find): Vector larray is gc allocated.
16897         (loop_exit_free): Use ggc_free.
16898         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
16899         that head of exits list is now not a part of struct loop.
16900         (record_loop_exits): Allocate exits table in gc memory.
16901         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect
16902         that head of exits list is now not a part of struct loop.
16903         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
16904         struct loop_exit): Add GTY marker.
16905         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
16906         Add skip marker to aux field.  Make head of exits list a separate
16907         object.
16908         (struct loops): Add GTY marker.  Make larray vector gc allocated.
16909         Add param marker to exits table.
16910         (get_loops): Type changed.
16911         * Makefile.in (tree-scalar-evolution.o): Add
16912         gt-tree-scalar-evolution.h dependency.
16913         (cfgloop.o, loop-init.o): Add ggc.h dependency.
16914         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
16915         * basic-block.h (struct basic_block_def): Remove skip marker from
16916         loop_father field.
16917
16918 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
16919
16920         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
16921         of 0 in the call to expand_expr().
16922         (expand_builtin_mathfn_3): Ditto.
16923         (expand_builtin_interclass_mathfn): Ditto.
16924         (expand_builtin_cexpi): Ditto.
16925         (expand_builtin_int_roundingfn): Ditto.
16926         (expand_builtin_int_roundingfn_2): Ditto.
16927         (expand_builtin_pow): Ditto.
16928         (expand_builtin_powi): Ditto.
16929         (expand_builtin_bswap): Ditto.
16930         (expand_builtin_unop): Ditto.
16931         (expand_builtin_fabs): Ditto.
16932         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
16933         the call to expand_expr().
16934         (expand_builtin_sync_operation): Ditto.
16935         (expand_builtin_compare_and_swap): Ditto.
16936         (expand_builtin_lock_test_and_set): Ditto.
16937         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
16938         instead of 0 in the call to expand_expr().
16939         (expand_builtin_extract_return_addr): Ditto.
16940         (expand_builtin_eh_return): Ditto.
16941         (expand_eh_return): Ditto.
16942         * explow.c (expr_size): Ditto.
16943         * expr.c (optimize_bitfield_assignment_op): Ditto.
16944         (expand_assignement): Ditto.
16945         (store_expr): Ditto.
16946         (store_field): Ditto.
16947         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
16948         the call to expand_expr().
16949         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
16950         in the call to expand_expr().
16951         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
16952         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
16953         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
16954         of expand_expr().
16955         * optabs.c (expand_vec_shift_expr): Ditto.
16956         (expand_vec_cond_expr): Ditto.
16957         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
16958         call to expand_expr().
16959         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
16960         in the call to expand_expr().
16961
16962 2007-05-14  Dave Korn  <dave.korn@artimi.com>
16963
16964         * genautomata.c (gen_regexp_el): Allocate correct size for regexp.
16965
16966 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
16967
16968         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
16969         instead of c_common_unsigned_type.
16970         (c_common_unsigned_type): Remove.
16971         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
16972         c_common_unsigned_type.
16973         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
16974         c_common_unsigned_type.
16975         * c-common.h (c_common_unsigned_type): Remove.
16976         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
16977         c_common_unsigned_type.
16978         * c-format.c (check_format_types): Use unsigned_type_for instead of
16979         c_common_unsigned_type.
16980         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
16981         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead
16982         of c_common_unsigned_type.
16983         * convert.c (convert_to_integer): Use unsigned_type_for instead of
16984         lang_hooks.types.unsigned_type.
16985         * expmed.c (make_tree): Use unsigned_type_for instead of
16986         lang_hooks.types.unsigned_type.
16987         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
16988         lang_hooks.types.unsigned_type.
16989         (build_range_check): Likewise.
16990         (fold_unary): Likewise.
16991         (fold_binary): Likewise.
16992         (fold_ternary): Likewise.
16993         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
16994         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
16995         * tree.c (get_unsigned_type): New.
16996         (unsigned_type_for): Use get_unsigned_type instead of
16997         lang_hooks.types.unsigned_type.
16998
16999 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
17000
17001         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
17002         to m68k_get_function_kind.  Update its prototype.
17003         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
17004         interrupt_thread.
17005         (m68k_interrupt_function_p): Return enum m68k_function_type
17006         instead of bool.  Rename to m68k_get_function_kind.
17007         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
17008         target is not fido.
17009         (m68k_compute_frame_layout): Don't mark any register for save
17010         if an interrupt_thread attribute is specified.
17011         (m68k_hard_regno_rename_ok): Update a use of
17012         m68k_interrupt_function_p.
17013         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
17014         m68k_interrupt_function_p.
17015         (m68k_function_type): New.
17016         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
17017         for a function with an interrupt_thread attribute.
17018         * doc/extend.texi: Document the interrupt_thread attribute.
17019
17020 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
17021
17022         Fix PR tree-optimization/31911
17023         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
17024         if they didn't change the expression.
17025
17026 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
17027
17028         * tree-scalar-evolution.c (resolve_mixers): Exported.
17029         * tree-scalar-evolution.h (resolve_mixers): Declare.
17030         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
17031         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
17032         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
17033         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
17034         init_array_ref, init_pointer_ref, analyze_indirect_ref,
17035         strip_conversion, analyze_offset_expr, address_analysis,
17036         object_analysis, analyze_offset): Removed.
17037         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
17038         split_constant_offset, canonicalize_base_object_address,
17039         object_address_invariant_in_loop_p, disjoint_objects_p,
17040         dr_may_alias_p, dr_address_invariant_p): New functions.
17041         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
17042         and dr_analyze_alias.
17043         (initialize_data_dependence_relation): Use dr_may_alias_p
17044         and object_address_invariant_in_loop_p.
17045         (compute_self_dependence): Handle the case when
17046         DDR_ARE_DEPENDENT (ddr) is chrec_dont_know.
17047         (find_data_references_in_stmt): Restrict the analysis of data
17048         references to the given loop nest.
17049         (find_data_references_in_loop): Made static.  Pass loop nest to
17050         find_data_references_in_stmt.
17051         (compute_data_dependences_for_loop): Use DR_VOPS.
17052         (free_data_ref): Free DR_VOPS.
17053         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
17054         (struct innermost_loop_behavior): ... new.
17055         (struct base_object_info): Replaced by ...
17056         (struct indices): ... new.
17057         (struct dr_alias): New.
17058         (enum data_ref_type): Removed.
17059         (struct data_reference): Consist of struct innermost_loop_behavior,
17060         struct indices and struct dr_alias.
17061         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
17062         (DR_MEMTAG): Renamed to ...
17063         (DR_SYMBOL_TAG): ... this.
17064         (find_data_references_in_loop): Declaration removed.
17065         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
17066         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
17067         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
17068         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
17069
17070 2007-05-13  Revital Eres  <eres@il.ibm.com>
17071
17072         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
17073         which walks virtual def-use chains to find redundant stores.
17074         (dse_optimize_stmt): Call it.
17075
17076 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
17077
17078         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
17079         * passes.c (init_optimization_passes): Move pass_jump_bypass
17080         after loop2.
17081
17082         * basic-block.h (bb_has_eh_pred): Fix style issue.
17083
17084 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
17085
17086         PR rtl-optimization/31848
17087         * loop-invariant.c (move_invariant_reg): If we move an insn
17088         with a REG_EQUAL note, and that insn is not always executed,
17089         remove the REG_EQUAL note.
17090
17091 2007-05-12  Richard Guenther  <rguenther@suse.de>
17092
17093         PR tree-optimization/31797
17094         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
17095         propagate into a stmt that has volatile ops.
17096
17097 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
17098
17099         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
17100         (gcc_tooldir): Likewise.
17101         * configure: Regenerate.
17102         * Makefile.in (libsubdir_to_prefix): New variable, based on the
17103         old configure.ac gcc_tooldir setting.
17104         (prefix_to_exec_prefix): New variable.
17105         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
17106         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
17107
17108 2007-05-11  Silvius Rus  <rus@google.com>
17109
17110         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
17111         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
17112         * c-common.h (strict_aliasing_warning): Change return type.
17113         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
17114         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
17115         (build_c_cast): Condition call to strict_aliasing_warning.
17116         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
17117         * flags.h (set_Wstrict_aliasing): Declare.
17118         * opts.c (set_Wstrict_alising): Define, add call to.
17119         * tree-flow.h (strict_aliasing_warning_backend): Declare.
17120         * tree-ssa-alias-warnings.c: New file.
17121         * tree-ssa-alias.c (compute_may_aliases): Add call to
17122         strict_aliasing_warning_backend.
17123
17124 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
17125
17126         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
17127         Use loop_depth and loop_outer accessor functions.
17128         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
17129         determine_invariantness_stmt, move_computations_stmt): Ditto.
17130         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
17131         add_loop, loopify, unloop, fix_loop_structure): Ditto.
17132         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
17133         * tree-scalar-evolution.c (interpret_loop_phi,
17134         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
17135         instantiate_parameters_1, scev_const_prop): Ditto.
17136         * cfghooks.c (make_forwarder_block): Ditto.
17137         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
17138         * modulo-sched.c (loop_canon_p): Ditto.
17139         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
17140         slpeel_can_duplicate_loop_p): Ditto.
17141         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
17142         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
17143         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
17144         cancel_loop, verify_loop_structure): Ditto.
17145         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
17146         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
17147         superloops vector instead of "pred" array.
17148         (establish_preds): Take father loop as an argument.  Initialize the
17149         superloops vector.
17150         (flow_loop_tree_node_add): Pass father loop to establish_preds.
17151         Do not initialize loop->outer.
17152         (flow_loop_tree_node_remove): Truncate the superloops vector.
17153         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
17154         "pred" merged to "superloops" vector.
17155         (loop_depth, loop_outer): New.
17156         (fel_init): Use loop_outer.
17157
17158 2007-05-11  Jan Hubicka  <jh@suse.cz>
17159
17160         * cgraphunit.c: Include gt-cgraphunit.h
17161         (static_ctors, static_dtors): New static vars.
17162         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
17163         based on implementation in c-common.c
17164         (cgraph_finalize_function): Call record_cdtor_fn.
17165         (cgraph_optimize): Call cgraph_build_cdtor_fns.
17166         * decl.c (finish_function): Do not call c_record_cdtor_fn.
17167         (c_write_global_declarations): Do not call c_build_cdtor_fns.
17168         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
17169         build_cdtor, c_build_cdtor_fns): Remove.
17170         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
17171         c_build_cdtor_fns): Remove prototype.
17172
17173 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
17174
17175         PR other/31852
17176         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
17177         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
17178         * builtins.c (fold_builtin_memchr): New.
17179         (expand_builtin_memchr): Call the latter.
17180         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
17181         * doc/extend.texi ([Other built-in functions provided by GCC]):
17182         Document memchr.
17183
17184 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
17185
17186         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
17187         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
17188         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
17189         PFPO_OP1_TYPE_SHIFT): Constants added.
17190         (DFP_ALL): Mode macro defined.
17191         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
17192         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
17193         Insn definitions added.
17194         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
17195         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
17196         Expanders added.
17197
17198 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
17199
17200         PR tree-optimization/31885
17201         * tree-chrec.c (chrec_contains_undetermined): Do not consider
17202         NULL_TREE to be undetermined.
17203         (automatically_generated_chrec_p): Return false for NULL.
17204
17205 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
17206
17207         * config/bfin/bfin.h (MOVE_RATIO): Define.
17208
17209 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
17210
17211         * config.gcc (sparc-wrs-vxworks): New target.
17212         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
17213         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
17214         * config/sparc/sparc.h: Include vxworks-dummy.h.
17215         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
17216         include LABEL_REFs too.
17217         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
17218         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
17219         VxWorks.
17220         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
17221         on VxWorks.
17222         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
17223         (sparc_emit_call_insn): New function.
17224         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
17225         functions when generating VxWorks PIC.
17226         * config/sparc/sparc.md (vxworks_load_got): New pattern.
17227         (call, call_value): Use sparc_emit_call_insn instead of
17228         emit_call_insn.
17229
17230 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
17231
17232         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
17233
17234 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
17235
17236         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
17237         for floating-point values if HOST_BITS_PER_LONG > 32.  Use
17238         split_double instead of operand_subword.
17239
17240 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
17241
17242         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
17243         * config/bfin/bfin.c (bfin_local_alignment): New function.
17244         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
17245
17246 2007-05-08  Chao-ying Fu  <fu@mips.com>
17247
17248         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
17249         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
17250         (smsub_widen_optab, umsub_widen_optab): Define.
17251         * optabs.c (init_optabs): Initialize smsub_widen_optab and
17252         umsub_widen_optab.
17253         * genopinit.c (optabs): Fill in smsub_widen_optab and
17254         umsub_widen_optab.
17255         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
17256         and umsub_widen_optab to implement multiply-subtract sequences.
17257         * config/mips/mips.md (*msac<u>_di): Rename to...
17258         (<u>msubsidi4): ...this.  Extend condition to include
17259         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
17260         of operand 0 to "ka" and use the three-operand form of msub<u>
17261         for TARGET_DSPR2.
17262         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
17263         to define_expands.
17264
17265 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
17266
17267         PR rtl-optimization/28011
17268         * reload.c (push_reload): Set dont_share if IN appears in OUT
17269         also when IN is a PLUS rtx.
17270         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
17271         are same PLUS rtx.
17272
17273 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
17274
17275         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
17276         call unshare_all_decls.
17277         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
17278         (unshare_all_decls): Remove.
17279
17280 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
17281
17282         PR 31847
17283         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
17284         dumps.
17285
17286 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
17287             Nigel Stephens  <nigel@mips.com>
17288
17289         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
17290         Update comments and all uses.
17291         (MIN_FPRS_PER_FMT): Define.
17292         * config/mips/mips.c (function_arg): Fix to correctly handle
17293         the -mips32r2 -mfp64 -mabi=32 case.
17294         (override_options): Enable use of odd-numbered registers for
17295         SFmode values on MIPS32.
17296         (mips_save_reg_p): Save whole floating-point register pair if
17297         either half is used.
17298         (compute_frame_size): Fix comment.
17299
17300 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
17301
17302         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
17303         argument of type bool.
17304         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
17305         argument. Safely select temporary P register according to it.
17306         (do_link): Change call site of add_to_reg accordingly.
17307         (do_unlink): Add epilogue_p as a fourth argument and pass it
17308         to add_to_reg.
17309         (expand_interrupt_handler_epilogue): Change call of do_unlink
17310         accordingly.
17311         (bfin_expand_prologue): Add a third argument sibcall_p.
17312         * config/bfin/bfin.md (epilogue): Change call of
17313         bfin_expand_epilogue accordingly.
17314         (sibcall_epilogue): Likewise.
17315         (eh_return_internal): Likewise.
17316
17317         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
17318         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
17319         * config/bfin/bfin.c (bfin_handle_option): Handle
17320         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
17321         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
17322         Support bf534, bf536 and bf561.
17323         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
17324
17325 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
17326
17327         PR target/31854
17328         * config/i386/i386.c (ix86_function_regparm): Process local
17329         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
17330
17331 2007-05-07  Mike Stump  <mrs@apple.com>
17332
17333         * doc/invoke.texi (Warning Options): Document that -Wempty-body
17334         also checks for and while statements in C++.
17335
17336 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
17337
17338         * gcc.c (at_file_supplied): New variable.
17339         (main): Set it if we expanded argv.
17340         (do_spec_1): Pass an @-file to the linker if we were called with
17341         an @-file argument and HAVE_GNU_LD.
17342         * collect2.c (at_file_supplied): New variable.
17343         (response_file): New variable.
17344         (collect_exit): Unlink response_file if necessary.
17345         (handler): Likewise.
17346         (do_wait): Likewise.
17347         (main): Set at_file_supplied if we expanded argv.
17348         (collect_execute): Pass an @-file to subprocesses if we were called
17349         with an @-file argument.
17350         * configure.ac: Add define for HAVE_GNU_LD.
17351         * configure: Regenerate.
17352         * config.in: Regenerate.
17353
17354 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
17355
17356         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
17357         operand to HI mode.
17358         (mulsi3): New.
17359         (divsi3): New.
17360         (udivsi3): New.
17361
17362 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
17363
17364         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
17365         (TARGET_ENCODE_SECTION_INFO): Re-define.
17366         (m32c_encode_section_info): New
17367         (function_vector_handler): New
17368         (current_function_special_page_vector): New
17369         (m32c_special_page_vector_p): New.
17370         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
17371         Prototype.
17372         * config/m32c/jump.md: Added instruction JSRS for functions
17373         with attribute "function_vector".
17374         * doc/extend.texi (function_vector): Added description
17375         for M16C, M32C targets.
17376
17377 2007-05-07  DJ Delorie  <dj@redhat.com>
17378
17379         PR 31794
17380         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
17381         ashrpsi3, lshrpsi3): Update shift count constraint.
17382
17383 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
17384             Nathan Froyd  <froydnj@codesourcery.com>
17385
17386         PR 22133
17387         * c-incpath.c (add_path): Strip trailing path separators.
17388
17389 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
17390
17391         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
17392         Free dominance info before purging EH edges.
17393         (eliminate_degenerate_phis): Likewise.
17394         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
17395
17396 2007-05-07  Jan Hubicka  <jh@suse.cz>
17397
17398         * gimplify.c (gimplify_expr): Do not crash when folding
17399         (void *)(int)&a + 4.
17400
17401 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
17402
17403         PR driver/31694
17404         * c-opts.c (lang_fortran): Make it non static.
17405         * c-common.h (lang_fortran): New prototype.
17406         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
17407         -lang-fortran option was passed by the driver.
17408
17409 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
17410
17411         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
17412         of ASSERT_CHECKING.  Tweak message.
17413
17414 2007-05-06  Revital Eres  <eres@il.ibm.com>
17415
17416         PR 30957
17417         * loop-unroll.c (insert_var_expansion_initialization):
17418         Initialize the expansions with -zero instead of +zero.
17419
17420 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
17421
17422         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
17423         into pic and non-pic versions. Mark r19 as used for
17424         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
17425         for tgd_load, tld_load and tie_load .
17426         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
17427         version of tgd_load, tld_load and tie_load depending on the
17428         value of flag_pic.
17429
17430 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
17431             Jakub Jelinek  <jakub@redhat.com>
17432
17433         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
17434         (__do_global_dtors_aux): Use more paranoid loop to run
17435         destructors if HIDDEN_DTOR_LIST_END.
17436         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
17437
17438 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
17439
17440         * varasm.c (align_variable): Don't increase alignment for
17441         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
17442         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
17443
17444 2007-05-04  Josh Conner  <jconner@apple.com>
17445
17446         * basic-block.h (cdi_direction): Assign values to all enumeration
17447         constants.
17448         (dom_computed): Remove.
17449         (dom_info_state): New.
17450         (set_dom_info_availability): New.
17451         * tree-ssa-loop-im.c (determine_invariantness): Initialize
17452         walk_data.dom_direction.
17453         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
17454         instead of dom_computed[].
17455         (split_edge): Likewise.
17456         (create_basic_block): Likewise.
17457         (merge_blocks): Likewise.
17458         * ifcvt.c (find_if_header): Likewise.
17459         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
17460         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
17461         * tree-ssa.c (verify_ssa): Likewise.
17462         * tree-cfg.c (tree_verify_flow_info): Likewise.
17463         (remove_edge_and_dominated_blocks): Likewise.
17464         * dominance.c (dom_computed): Make static.
17465         (calc_dfs_tree_nonrec): Change third param to a bool.
17466         (calc_dfs_tree): Change second param to a bool.
17467         (calc_idioms): Change second param to a bool.  Use
17468         dom_convert_dir_to_idx.
17469         (init_dom_info): Validate dir before using.
17470         (dom_convert_dir_to_idx): New.
17471         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
17472         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
17473         (free_dominance_info): Use dom_convert_dir_to_idx.
17474         (get_immediate_dominator): Likewise.
17475         (set_immediate_dominator): Likewise.
17476         (get_dominated_by): Likewise.
17477         (redirect_immediate_dominators): Likewise.
17478         (nearest_common_denominator): Likewise.
17479         (dominated_by_p): Likewise.
17480         (bb_dom_dfs_in): Likewise.
17481         (bb_dom_dfs_out): Likewise.
17482         (recount_dominator): Likewise.
17483         (iterate_fix_dominators): Likewise.
17484         (add_to_dominance_info): Likewise.
17485         (delete_from_dominance_info): Likewise.
17486         (first_dom_son): Likewise.
17487         (next_dom_son): Likewise.
17488         (dom_info_available_p): Likewise.
17489         (dom_info_state): New.
17490         (set_dom_info_availability): New.
17491
17492 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
17493
17494         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
17495         Expander removed.
17496         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
17497
17498 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
17499
17500         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
17501         (subdi3, subdi_carry): Delete.
17502
17503 2007-05-04  Jan Hubicka  <jh@suse.cz>
17504             Richard Guenther  <rguenther@suse.de>
17505
17506         * opts.c (decode_options): Do not fiddle with inlining
17507         parameters in case of optimizing for size.
17508         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
17509         for size do nothing.
17510         (cgraph_decide_inlining_of_small_function): When optimizing for
17511         size never inline functions increasing caller size.
17512         (cgraph_early_inlining): Inline for size when optimizing for size.
17513
17514 2007-05-04  Bernd Schmidt  <bernd.schmidt@analog.com>
17515
17516         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
17517         logical operations piecewise.
17518         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
17519         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
17520         subdi_sesidi_di): Delete.
17521         (add_with_carry): Produce carry in CC instead of a DREG to shorten
17522         the generated sequence.  Allow three-reg add in constraints.  Rewrite
17523         the rtl expression for carry to avoid zero_extend of a constant.
17524         (sub_with_carry): New pattern.
17525         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
17526         different sequence not involving jumps.
17527         (notbi): Now a named pattern.
17528
17529 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
17530
17531         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
17532         Add the note about a significant loss of accuracy of some
17533         mathematical routines when these options are used.
17534
17535 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
17536
17537         * haifa-sched.c (rtx_vec_t): New typedef.
17538         (contributes_to_priority_p): Extract piece of priority () into new
17539         static function.
17540         (priority): Use the function.  Add assertion.
17541         (rank_for_schedule, set_priorities): Add assertion to check that
17542         insn's priority is initialized.
17543         (clear_priorities, calc_priorities): Change signature.  Make it update
17544         all relevant insns.  Update all callers ('add_to_speculative_block ()'
17545         and 'create_block_check_twin ()').
17546         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
17547         Add new field 'priority_status'.
17548         (INSN_PRIORITY_STATUS): New macro.
17549         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
17550
17551 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
17552
17553         * sched-ebb.c (debug_ebb_dependencies): New static function.
17554         (init_ready_list): Use it.
17555
17556         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
17557         with changed signature and 'debug_rgn_dependencies ()'.
17558         (debug_rgn_dependencies): New static function.
17559         (init_ready_list): Use it.
17560
17561         * sched-int.h (debug_dependencies): Declare.
17562
17563 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
17564
17565         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
17566
17567 2007-05-04  Dirk Mueller  <dmueller@suse.de>
17568
17569         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
17570
17571 2007-05-03  Jan Hubicka  <jh@suse.cz>
17572
17573         * fold-const.c (fold_unary): Convert (T1)(X op Y) into
17574         ((T1)X op (T1)Y), for pointer type in more cases than before.
17575
17576         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
17577
17578         * tree-object-size.c (plus_expr_object_size): When operand size is
17579         unknown, return unknown.
17580
17581 2007-05-03  Dirk Mueller  <dmueller@suse.de>
17582
17583         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
17584
17585         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
17586         options.
17587
17588         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
17589
17590 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
17591
17592         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
17593
17594 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
17595
17596         * config/soft-fp/double.h, config/soft-fp/extended.h,
17597         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
17598         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
17599         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
17600         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
17601         glibc CVS.
17602
17603 2007-05-03  Ian Lance Taylor  <iant@google.com>
17604
17605         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
17606         MASK_PPC_GFXOPT for 8540 or 8548.
17607
17608 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
17609
17610         * tree-vect-transform.c (vect_update_inits_of_drs): Use
17611         vect_print_dump_info() to output debug information.
17612
17613 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
17614
17615         PR target/31768
17616         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
17617         operands of size 2 when operand is not MEM_P.
17618
17619 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
17620
17621         PR tree-optimization/30565
17622         * lambda-code.c (perfect_nestify): Fix updating of dominators.
17623
17624 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
17625
17626         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
17627         (umulsi3_highpart): Use them.
17628         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
17629         for final accumulator to D regisster tranfser.
17630
17631 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
17632
17633         PR tree-optimization/31699
17634         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove
17635         wrong code.
17636         (vect_enhance_data_refs_alignment): Compute peel amount using
17637         TYPE_VECTOR_SUBPARTS instead of vf.
17638         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
17639
17640 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
17641
17642         PR bootstrap/31776
17643         * system.h: Remove inclusion of double-int.h
17644         * tree.h: Include double-int.h
17645         * gengtype.c: Likewise
17646         * cfgloop.h: Likewise
17647         * Makefile.in: Adjust dependencies on double-int.h
17648
17649 2007-05-02  Eric Christopher  <echristo@apple.com>
17650
17651         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
17652         -shared to -Zdynamiclib.
17653
17654 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
17655
17656         PR c++/31663
17657         * c-common.c (strip_pointer_or_array_types): New function.
17658         * c-common.h (strip_pointer_or_array_types): New function declaration.
17659
17660 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
17661
17662         PR tree-optimization/31771
17663         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
17664
17665 2007-05-02  Paul Brook  <paul@codesourcery.com>
17666
17667         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
17668
17669 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17670
17671         PR middle-end/29715
17672         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
17673         transformation.
17674
17675 2007-05-02  Nick Clifton  <nickc@redhat.com>
17676
17677         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
17678
17679 2007-05-02  Richard Guenther  <rguenther@suse.de>
17680
17681         PR tree-optimization/31146
17682         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
17683         argument, single_use_p.  If we have a single use that is
17684         a conversion to the definition rhs type, propagate that rhs.
17685         (forward_propagate_addr_expr): Pass single_use_p argument
17686         to forward_propagate_addr_expr_1.
17687
17688 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
17689
17690         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
17691         variable.
17692
17693 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
17694
17695         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
17696         'AMD Family 10 core'.
17697
17698 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
17699
17700         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
17701         and athlon64-sse3 as improved versions of k8, opteron and athlon64
17702         with SSE3 instruction set support.
17703         * doc/invoke.texi: Likewise.
17704
17705 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
17706
17707         * config/i386/i386.c (override_options): Tuning 32-byte loop
17708         alignment for amdfam10 architecture. Increasing the max loop
17709         alignment to 24 bytes.
17710
17711 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
17712
17713         * config/m68k/constraints.md: New.
17714         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
17715         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
17716         EXTRA_CONSTRAINT): Remove.
17717         * config/m68k/m68k.md: Include constraints.md.
17718         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
17719
17720 2007-05-01  Ian Lance Taylor  <iant@google.com>
17721
17722         PR tree-optimization/31739
17723         * tree-vrp.c (vrp_val_is_max): New static function.
17724         (vrp_val_is_min): New static function.
17725         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
17726         copying the node.
17727         (set_value_range): Use vrp_val_is_{max,min}.
17728         (extract_range_from_assert): Likewise.
17729         (extract_range_from_binary_expr): Likewise.
17730         (extract_range_from_unary_expr): Likewise.
17731         (dump_value_range, vrp_meet): Likewise.
17732         (vrp_visit_phi_node): Likewise.
17733         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
17734
17735 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
17736
17737         * config/i386/gmon-sol2.c (size_t): New type.
17738         (intptr_t): Likewise.
17739         (s_textsize): Declare as size_t.
17740         (sbrk): Declare.
17741         (monstartup): Use size_t for sizes.
17742         (_mcount): Save and restore registers.
17743         (internal_mcount): Pass 0 as the first argument to monstartup
17744         in 64-bit mode.
17745         (moncontrol): Convert pointer to appropriately sized integer
17746         before passing to profil.
17747
17748 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
17749
17750         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
17751         __NO_FPRS__, not just if _SOFT_DOUBLE.
17752         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
17753         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
17754         also for E500 double.
17755         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
17756         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
17757         && !TARGET_FPRS).
17758
17759 2007-05-01  Richard Guenther  <rguenther@suse.de>
17760
17761         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
17762         is NULL.
17763
17764 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
17765
17766         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
17767
17768 2007-05-01  Jan Hubicka  <jh@suse.cz>
17769
17770         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
17771         invariant.
17772
17773 2007-05-01  Jan Hubicka  <jh@suse.cz>
17774
17775         * tree.h (maybe_fold_offset_to_component_ref): Remove.
17776         (maybe_fold_offset_to_reference): Declare.
17777         * fold-const.c (fold_unary): Do not fold
17778         (type *)&A into &A->field_of_type_and_offset_0
17779         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
17780         size is unknown, give up.
17781         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
17782         offsets.
17783         (maybe_fold_offset_to_reference): New.
17784         (maybe_fold_stmt_indirect): Use it.
17785         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
17786         * gimplify.c (gimplify_conversion): Canonicalize conversions to
17787         field references.
17788         (gimplify_expr): Likewise for plus_expr.
17789
17790 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
17791
17792         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
17793         bsi_after_labels.  Always insert statements before bsi.
17794         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
17795         * predict.c (apply_return_prediction): Check for empty blocks.
17796         * cfgexpand.c (lab_rtx_for_bb): New variable.
17797         (label_rtx_for_bb): Do not create new tree labels.
17798         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
17799         (tree_expand_cfg): Initialize lab_rtx_for_bb.
17800         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
17801         creating edges.
17802         (label_for_bb): Add field used.
17803         (update_eh_label, main_block_label): Mark the label used.
17804         (cleanup_dead_labels): Remove unused labels.
17805
17806 2007-05-01  Richard Guenther  <rguenther@suse.de>
17807
17808         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
17809         if it is not about to be set.
17810         (get_value_range): Do not pre-allocate equiv bitmap.
17811         (update_value_range): No need to clear equiv field.
17812         (add_equivalence): Change prototype to get bitmap pointer.
17813         Allocate bitmap here if it is not already.
17814         (extract_range_from_assert): Do not allocate bitmap here.
17815         Update callers to add_equivalence.
17816         (extract_range_from_ssa_name): Likewise.
17817         (get_vr_for_comparison): New static helper.
17818         (compare_name_with_value): Handle NULL equiv bitmap by
17819         peeling the first iteration of the comparison loop.
17820         Use get_vr_for_comparison.
17821         (compare_names): Handle NULL equiv bitmaps by using fake
17822         ones.  Use get_vr_for_comparison.
17823
17824 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
17825
17826         * double-int.c (mpz_set_double_int): Moved from
17827         tree-ssa-loop-niter.c.
17828         (mpz_get_double_int): Likewise; also, add option to wrap
17829         out-of-range integers.
17830         * double-int.h: New prototypes for above.
17831         * tree.c (get_static_type_bounds): Moved from
17832         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
17833         TYPE_MAX_VALUE if they exist..
17834         * tree.h: New prototype for above.
17835         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
17836         get_type_bounds calls.
17837         (mpz_set_double_int): Move to double-int.c.
17838         (get_type_bounds): Move to tree.c, rename to
17839         get_static_type_bounds.
17840         (mpz_to_double_int): Move to double-int.c, rename to
17841         mpz_get_double_int.
17842
17843 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
17844
17845         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
17846         DIV0 exception can fall through to a normal return.
17847
17848 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
17849
17850         PR middle-end/22156
17851         Temporarily revert:
17852         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
17853         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
17854         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
17855         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
17856         initialize align to silence bogus warning.
17857         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
17858         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
17859         all_no_warning.
17860         (struct sra_walk_fns): Remove use_all parameter from use.
17861         (sra_hash_tree): Handle BIT_FIELD_REFs.
17862         (sra_elt_hash): Don't hash bitfld blocks.
17863         (sra_elt_eq): Skip them in parent compares as well.  Handle
17864         BIT_FIELD_REFs.
17865         (sra_walk_expr): Don't maintain or pass down use_all_p.
17866         (scan_use): Remove use_all parameter.
17867         (scalarize_use): Likewise.  Re-expand assignment to
17868         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
17869         output, and re-scalarize after output.  Don't mark anything
17870         for no warning.
17871         (scalarize_ldst): Adjust.
17872         (scalarize_walk_gimple_modify_statement): Likewise.
17873         (build_element_name_1): Handle BIT_FIELD_REFs.
17874         (instantiate_element): Don't warn for any element whose parent
17875         is used as a whole.
17876         (instantiate_missing_elements_1): Return the sra_elt.
17877         (canon_type_for_field): New.
17878         (try_instantiate_multiple_fields): New.
17879         (instantiate_missing_elemnts): Use them.
17880         (mark_no_warning): Removed.
17881         (generate_one_element_ref): Handle BIT_FIELD_REFs.
17882         (REPLDUP, sra_build_elt_assignment): New.
17883         (generate_copy_inout): Use them.
17884         (generate_element_copy): Likewise.  Handle bitfld differences.
17885         (generate_element_zero): Don't recurse for blocks.  Use
17886         sra_build_elt_assignment.
17887         (generate_one_element_int): Take elt instead of var.  Use
17888         sra_build_elt_assignment.
17889         (generate_element_init_1): Adjust.
17890         (scalarize_use, scalarize_copy): Use REPLDUP.
17891         (scalarize_ldst): Move assert before dereference.
17892         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
17893
17894 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17895
17896         PR C++/31721
17897         * tree.c (reconstruct_complex_type): Reconstruct a reference
17898         correctly.
17899         Also use the same mode for the pointer as the old pointer type.
17900
17901 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
17902
17903         * doc/trouble.texi (Interoperation): Remove note about Ultrix
17904         Fortran compiler.
17905
17906 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
17907
17908         PR rtl-optimization/31676
17909         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
17910         (df_refs_record): Call it.
17911
17912 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
17913
17914         * rtl.def (SS_ABS): New code.
17915         * config/bfin/bfin.c (print_operand): New modifier 'v'.
17916         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
17917         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
17918         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
17919         (bfin_init_builtins): Define them.
17920         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
17921         (bfin_expand_builtin): ... and handle the others here.
17922         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
17923         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
17924         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
17925         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
17926         operand is only HImode.
17927
17928 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
17929
17930         * regclass.c (scan_one_insn): Remove splitting of
17931         two address insns.
17932
17933 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
17934             Nigel Stephens  <nigel@mips.com>
17935
17936         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
17937
17938 2007-04-28  Jan Hubicka  <jh@suse.cz>
17939
17940         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
17941         insn_locators_alloc instead of insn_locators_initialize;
17942         call reset_block_changes.
17943         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
17944         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
17945         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
17946         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
17947         * config/score/score.c (th_output_mi_thunk): Likewise.
17948         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
17949         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
17950         tolerate uninitialized locator info.
17951
17952         Re-apply:
17953         * function.c (init_function_start): Don't init line number info.
17954         (expand_function_end): Update.
17955         (reset_block_changes, record_block_change, finalize_block_changes,
17956         check_block_change, free_block_changes): Kill.
17957         * function.h (reset_block_changes, record_block_change,
17958         finalize_block_changes, check_block_change, free_block_changes):
17959         Remove prototypes.
17960         (struct function): Remove ib_boundaries_block.
17961         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
17962         Use curr_insn_locator to initialize locator.
17963         (emit_line_note): Remove.
17964         * cfgexpand.c (expand_gimple_cond_expr): Update.
17965         (construct_exit_block): Likewise.
17966         (tree_expand_cfg): Initialize/finalize locators.
17967         * expr.c (expand_expr_real): Update.
17968         * cfglayout.c (line_locators_locs, line_locators_lines,
17969         file_locators_locs, file_locators_files): Remove.
17970         (set_block_levels): Move to cfgexpand.c.
17971         (insn_locators_initialize): Remove.
17972         (pass_insn_locators_initialize): Remove.
17973         (locations_locators_locs, locations_locators_vals): New static vars.
17974         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
17975         Likewise.
17976         (insn_locators_alloc, insn_locators_finalize,
17977         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
17978         New functions.
17979         (locator_location): New.
17980         (locator_line, locator_file): Rewrite.
17981         * rtl.h (emit_line_note): Kill.
17982         (insn_locators_alloc, insn_locators_finalize,
17983         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
17984         Declare.
17985         * tree-inline.c (initialize_cfun): Do not initialize
17986         ib_boundaries_block.
17987         * passes.c (pass_insn_locators_initialize): Remove.
17988
17989 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
17990
17991         * tree-cfg.c (move_block_to_fn): Release bb from dominance
17992         info.  Update last_basic_block correctly.
17993
17994 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
17995
17996         PR target/31701
17997         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
17998         register itself to hold the offset constant.  Tell flow the use
17999         of r4 and r5 when they are used.
18000
18001 2007-04-27  Richard Guenther  <rguenther@suse.de>
18002
18003         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
18004         if we simplified anything.
18005         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
18006         warnings until we did a simplification and the stmt was not
18007         marked as TREE_NO_WARNING.
18008
18009 2007-04-27  Mike Stump  <mrs@apple.com>
18010
18011         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
18012
18013 2007-04-27  Ian Lance Taylor  <iant@google.com>
18014
18015         PR middle-end/31710
18016         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
18017         TYPE_MAX_VALUE exist, convert them to the new type.
18018
18019 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
18020
18021         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
18022         if it claims to be available.
18023         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
18024         edge is redirected.
18025         (perform_tree_ssa_dce): Always free postdominators.
18026
18027 2007-04-27  Richard Henderson  <rth@redhat.com>
18028
18029         * config/alpha/predicates.md (aligned_memory_operand): Mark
18030         as define_special_predicate.
18031         (unaligned_memory_operand, normal_memory_operand): Likewise.
18032         (reg_or_unaligned_mem_operand): Remove.
18033         (any_memory_operand): Match the documentation and check for
18034         non-renumbered pseudos during reload.
18035         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
18036         alpha_secondary_reload_class, update to new interface, make static.
18037         Handle CQImode like HImode.  Remove FP subreg check.
18038         (alpha_expand_mov): Use replace_equiv_address.
18039         (alpha_expand_mov_nobwx): Use any_memory_operand.
18040         (TARGET_SECONDARY_RELOAD): New.
18041         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
18042         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
18043         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
18044         * config/alpha/alpha.md: ... here.
18045         (RELOAD12, reloadmode): New.
18046         (movcqi): New.
18047         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
18048         Don't handle the aligned case here.
18049         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
18050         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
18051         reload_inhi_help.  Don't expect a scratch register.
18052         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
18053         reload_outhi_help.
18054         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
18055
18056 2007-04-27  Richard Guenther  <rguenther@suse.de>
18057
18058         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
18059
18060 2007-04-27  Richard Guenther  <rguenther@suse.de>
18061
18062         PR tree-optimization/30965
18063         PR tree-optimization/30978
18064         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
18065         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
18066         (find_equivalent_equality_comparison): Likewise.
18067         (simplify_cond): Likewise.
18068         (get_prop_source_stmt): New helper.
18069         (get_prop_dest_stmt): Likewise.
18070         (can_propagate_from): Likewise.
18071         (remove_prop_source_from_use): Likewise.
18072         (combine_cond_expr_cond): Likewise.
18073         (forward_propagate_comparison): New function.
18074         (forward_propagate_into_cond): Rewrite to use fold for
18075         tree combining.
18076         (tree_ssa_forward_propagate_single_use_vars): Call
18077         forward_propagate_comparison to propagate comparisons.
18078
18079 2007-04-27  Richard Guenther  <rguenther@suse.de>
18080
18081         PR tree-optimization/31715
18082         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
18083         sure to do computation on the offset in an appropriate
18084         signed type.
18085
18086 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
18087
18088         * reload.h (elimination_target_reg_p): Declare.
18089         * reload.c (find_reloads): Don't apply the reg_rtx move
18090         optimization if the SET_DEST satisfies elimination_target_reg_p.
18091         * reload1.c (elimination_target_reg_p): New function.
18092         (gen_reload): In the move/add2 fallback, make sure that op0
18093         does not overlap the destination register.
18094
18095 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
18096
18097         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
18098         transform only GIMPLE_MODIFY_STMTs.
18099         * tree-complex.c (expand_complex_operations_1): Ditto.
18100         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
18101         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
18102         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
18103         branches.
18104         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
18105         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
18106         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
18107         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
18108         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
18109         slpeel_add_loop_guard): Ditto.
18110         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
18111         * lambda-code.c (perfect_nestify): Ditto.
18112         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
18113         before the first statement.
18114         * tree-optimize.c (execute_free_datastructures): Fix comments.
18115         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
18116         * tree-flow.h (disband_implicit_edges): Declaration removed.
18117         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
18118         branches.
18119         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle
18120         COND_EXPRs without gotos.
18121         (disband_implicit_edges, has_label_p): Removed.
18122         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
18123         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
18124         branches.
18125         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
18126         side effects.
18127         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
18128         also for COND_EXPRs.
18129         * cfgexpand.c (label_rtx_for_bb): New function.
18130         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
18131         Use label_rtx_for_bb to find the labels.
18132         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
18133         last block.  Detect fallthru edges.
18134
18135 2007-04-26  Ian Lance Taylor  <iant@google.com>
18136
18137         PR target/28675
18138         * reload.c (find_reloads_subreg_address): If the address was valid
18139         in the original mode but not in the new mode, reload the whole
18140         address.
18141
18142 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
18143
18144         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
18145         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
18146         (cleanup_control_expr_graph): Do not invalidate dominance info.
18147         Record altered blocks.
18148         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
18149         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
18150         cleanup_tree_cfg_bb): New functions.
18151         (remove_forwarder_block): Do not maintain the worklist of blocks.
18152         Record altered blocks.
18153         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
18154         not over whole cfg.
18155         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
18156         delete_unreachable_blocks if dominators are not available.
18157         * tree-inline.c (optimize_inline_calls): Free dominance information
18158         earlier.
18159         * tree-flow.h (remove_edge_and_dominated_blocks,
18160         cfgcleanup_altered_bbs): Altered.
18161         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
18162         blocks.
18163         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
18164         functions.
18165         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
18166         do not invalidate dominators.
18167
18168 2007-04-26  Anatoly Sokolov <aesok@post.ru>
18169
18170         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
18171         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
18172         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
18173         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
18174
18175 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
18176
18177         * config/ia64/ia64.md (ip_value): Fix itanium_class attribute.
18178
18179 2007-04-26  Richard Guenther  <rguenther@suse.de>
18180
18181         PR tree-optimization/31703
18182         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
18183         the right type for the target of the bittest.
18184
18185 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
18186
18187         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
18188         ix86_sol10_return_in_memory.
18189
18190 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
18191
18192         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
18193         variables.
18194
18195 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
18196
18197         PR c++/31598
18198         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
18199
18200         PR tree-optimization/30558
18201         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
18202         clear this_state.prev_try.
18203
18204 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
18205             Mark Mitchell  <mark@codesourcery.com>
18206
18207         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
18208         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
18209         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
18210
18211 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
18212
18213         PR driver/31107
18214         * doc/invoke.texi (%:print-asm-header): Document.
18215         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
18216         and -ftarget-help.
18217         (static_spec_functions): Add print-asm-header.
18218         (main): Print a banner before the --target-help linker options.
18219         (print_asm_header_spec_function): New function.
18220
18221 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
18222
18223         PR target/31403
18224         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
18225         (movsf_ie): Likewise.
18226
18227 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
18228
18229         * doc/extend.texi ([Type Traits]): Adjust per N2255.
18230
18231 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
18232
18233         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an
18234         exception for divide-by-zero.
18235         (__umodsi3, __modsi3): Likewise.
18236
18237 2007-04-25  Dirk Mueller  <dmueller@suse.de>
18238
18239         * c-typeck.c (build_compound_expr): Annotate warning()
18240         call with OPT_Wunused_value.
18241         * tree-ssa.c (warn_uninit): Annotate warning with
18242         OPT_Wunintialized.
18243         * c-common.c (handle_sentinel_attribute): Annotate warning
18244         call with OPT_Wattributes.
18245
18246 2007-04-25  Thiemo Seufer  <ths@mips.com>
18247
18248         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
18249         (mips16): Fix typo.
18250         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
18251         on to the assembler.  Improve handling of -mno-mips16.  Add handling
18252         of -mno-mips3d, -mno-dsp, -mno-dspr2.
18253         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
18254         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
18255         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
18256
18257 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
18258
18259         PR target/31680
18260         * config/i386/winnt.c (i386_pe_file_end): Strip only
18261         USER_LABEL_PREFIX when writing export name.
18262
18263 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
18264
18265         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
18266         sh/elf.h, vx-common.h and vxworks.h.
18267         * config/sh/sh.h: Include config/vxworks-dummy.h.
18268         (SUBTARGET_OVERRIDE_OPTIONS): Define.
18269         (OVERRIDE_OPTIONS): Use it.
18270         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
18271         (vxworks_picreg): New pattern.
18272         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
18273         VXWORKS_OS_CPP_BUILTINS.
18274         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
18275         to their VXWORKS_* equivalents.
18276         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
18277         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
18278         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
18279         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
18280         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
18281         -mrtp/-fPIC multilibs.
18282         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
18283         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
18284         (MULTILIB_OSDIRNAMES): Delete.
18285
18286 2007-04-25  Anatoly Sokolov <aesok@post.ru>
18287
18288         PR target/18989
18289         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
18290
18291 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
18292
18293         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
18294         rounding mode to be specified by the caller.
18295         (real_to_mpfr) Likewise.
18296         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
18297         include new arguments.
18298         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
18299
18300 2007-04-24  Ian Lance Taylor  <iant@google.com>
18301
18302         PR tree-optimization/31605
18303         * tree-vrp.c (set_value_range): Check that min and max are not
18304         both overflow infinities.
18305         (set_value_range_to_value): New static function.
18306         (extract_range_from_binary_expr): Call set_value_range_to_value.
18307         (extract_range_from_cond_expr): Likewise.
18308         (extract_range_from_expr): Likewise.
18309         (extract_range_from_unary_expr): Likewise.  Don't create a range
18310         which overflows on both sides.
18311         (vrp_meet): Check for a useless range.
18312         (vrp_visit_phi_node): If we see a constant which looks like an
18313         overflow infinity, turn off the TREE_OVERFLOW flag.
18314
18315 2007-04-24  Ian Lance Taylor  <iant@google.com>
18316
18317         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
18318
18319 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
18320
18321         PR diagnostic/25923
18322         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
18323         diagnostic message is being built.
18324         * tree-pretty-print.c (dump_generic_node): Only write the
18325         formatted text into BUFFER's stream if we are not building a
18326         diagnostic message.
18327         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
18328         dump_generic_node.
18329         * Makefile.in (toplev.o): Depend on tree-pass.h.
18330
18331 2007-04-24  Ian Lance Taylor  <iant@google.com>
18332
18333         PR tree-optimization/31602
18334         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
18335         conditionals in the copied loop header.
18336         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
18337         warnings if TREE_NO_WARNING is set.
18338         * doc/invoke.texi (Warning Options): Clarify that
18339         -Wstrict-overflow does not warn about loops.
18340
18341 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
18342
18343         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
18344         expand on the comment about _Decimal128 arguments and check the
18345         integer result of the modulus operation; for 64-bit ELF ABI, ensure
18346         that _Decimal128 argument uses even/odd register pair.
18347         (function_arg): Ditto.
18348
18349 2007-04-24  Hui-May Chang <hm.chang@apple.com>
18350
18351         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
18352         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
18353
18354 2007-04-24  Richard Guenther  <rguenther@suse.de>
18355             Olga Golovanevsky  <olga@il.ibm.com>
18356
18357         * fold-const.c (multiple_of_p): Check for bottom
18358         to be zero.
18359
18360 2007-04-24  Richard Henderson  <rth@redhat.com>
18361
18362         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
18363         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
18364         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
18365         looking for non-zero bits shifted out.  Avoid a recursive call
18366         when constructing the scalar.
18367         (__floatundisf): Likewise.
18368
18369 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
18370
18371         * dwarf2out.c (field_byte_offset): Move the existing logic
18372         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
18373         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
18374
18375 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
18376
18377         PR target/31641
18378         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant
18379         length argument of 0 for memset.
18380         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
18381         unsigned shift instead of the signed variant.
18382
18383 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
18384
18385         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
18386         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
18387         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
18388         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
18389         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
18390         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
18391         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
18392         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
18393         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
18394         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
18395         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
18396         "mul<mode>3", "div<mode>3"): Insn definitions added.
18397         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
18398         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
18399         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
18400         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
18401         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
18402         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
18403         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
18404         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
18405         TARGET_FLOAT_FORMAT): Macro definitions removed.
18406         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
18407         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
18408         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
18409         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
18410         (s390_gen_rtx_const_DI): Function removed.
18411         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
18412
18413 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
18414
18415         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
18416         over an external ffs function.
18417
18418 2007-04-24  Chao-ying Fu  <fu@mips.com>
18419             Richard Sandiford  <richard@nildram.co.uk>
18420
18421         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
18422         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
18423         (smadd_widen_optab, umadd_widen_optab): Define.
18424         * optabs.c (init_optabs): Initialize smadd_widen_optab and
18425         umadd_widen_optab.
18426         * genopinit.c (optabs): Fill in smadd_widen_optab and
18427         umadd_widen_optab.
18428         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
18429         and umadd_widen_optab to implement multiply-add sequences.
18430         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
18431         (<u>maddsidi4): ...this.  Extend condition to include
18432         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
18433         of operand 0 to "ka" and use the three-operand form of madd<u>
18434         for TARGET_DSPR2.
18435         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
18436         to define_expands.
18437         * config/mips/constraints.md (ka): New register constraint.
18438
18439 2007-04-24  Jan Hubicka  <j@suse.cz>
18440
18441         Revert:
18442
18443         2007-04-23  Jan Hubicka  <jh@suse.cz>
18444         * function.c (init_function_start): Don't init line number info.
18445         (expand_function_end): Update.
18446         (reset_block_changes, record_block_change, finalize_block_changes,
18447         check_block_change, free_block_changes): Kill.
18448         * function.h (reset_block_changes, record_block_change,
18449         finalize_block_changes, check_block_change, free_block_changes):
18450         Remove prototypes.
18451         (struct function): Remove ib_boundaries_block.
18452         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
18453         Use curr_insn_locator to initialize locator.
18454         (emit_line_note): Remove.
18455         * cfgexpand.c (expand_gimple_cond_expr): Update.
18456         (construct_exit_block): Likewise.
18457         (tree_expand_cfg): Initialize/finalize locators.
18458         * expr.c (expand_expr_real): Update.
18459         * cfglayout.c (line_locators_locs, line_locators_lines,
18460         file_locators_locs, file_locators_files): Remove.
18461         (set_block_levels): Move to cfgexpand.c.
18462         (insn_locators_initialize): Remove.
18463         (pass_insn_locators_initialize): Remove.
18464         (locations_locators_locs, locations_locators_vals): New static vars.
18465         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
18466         Likewise.
18467         (insn_locators_alloc, insn_locators_finalize,
18468         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
18469         New functions.
18470         (locator_location): New.
18471         (locator_line, locator_file): Rewrite.
18472         * rtl.h (emit_line_note): Kill.
18473         (insn_locators_alloc, insn_locators_finalize,
18474         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
18475         Declare.
18476         * tree-inline.c (initialize_cfun): Do not initialize
18477         ib_boundaries_block.
18478         * passes.c (pass_insn_locators_initialize): Remove.
18479
18480 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
18481
18482         * doc/invoke.texi: Removed leading '-' from option index entries.
18483
18484 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
18485
18486         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
18487         Use phi_nodes_ptr.
18488         (create_phi_node): Use set_phi_nodes.
18489         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
18490         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
18491         (combine_blocks): Use bb_stmt_list and set_bb_stmt_list.
18492         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
18493         (bsi_start, bsi_last): Use bb_stmt_list.
18494         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
18495         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
18496         Traverse the statements using tsi iterator.
18497         * basic-block.h (struct basic_block_def): Fields stmt_list
18498         and phi_nodes moved to ...
18499         (struct tree_bb_info): ... new structure.
18500         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
18501         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
18502         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
18503         (tree_verify_flow_info): Verify that il.tree is not set for
18504         entry and exit block.
18505         (tree_split_block): Use set_bb_stmt_list.
18506
18507 2007-04-23  Mike Stump  <mrs@apple.com>
18508
18509         * config/i386/i386.c (ix86_tune_features
18510         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
18511         nocona and core2.
18512
18513 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
18514
18515         * config/i386/i386.md (prefix_extra): New attribute.
18516         (length): Add prefix_extra.
18517
18518         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
18519         (sse2_movntv2di): Likewise.
18520         (sse2_cvtps2dq): Likewise.
18521         (sse2_cvtpd2pi): Likewise.
18522         (sse2_cvttpd2pi): Likewise.
18523         (*sse2_cvtpd2ps): Likewise.
18524         (*add<mode>3): Likewise.
18525         (sse2_ssadd<mode>3): Likewise.
18526         (sse2_usadd<mode>3): Likewise.
18527         (*sub<mode>3): Likewise.
18528         (sse2_sssub<mode>3): Likewise.
18529         (sse2_ussub<mode>3): Likewise.
18530         (*mulv8hi3): Likewise.
18531         (*smulv8hi3_highpart): Likewise.
18532         (*umulv8hi3_highpart): Likewise.
18533         (sse2_umulv2siv2di3): Likewise.
18534         (sse2_pmaddwd): Likewise.
18535         (ashr<mode>3): Likewise.
18536         (lshr<mode>3): Likewise.
18537         (ashl<mode>3): Likewise.
18538         (sse2_ashlti3): Likewise.
18539         (sse2_lshrti3): Likewise.
18540         (*umaxv16qi3): Likewise.
18541         (*smaxv8hi3): Likewise.
18542         (*uminv16qi3): Likewise.
18543         (*sminv8hi3): Likewise.
18544         (sse2_eq<mode>3): Likewise.
18545         (sse2_gt<mode>3): Likewise.
18546         (*and<mode>3): Likewise.
18547         (sse2_nand<mode>3): Likewise.
18548         (*ior<mode>3): Likewise.
18549         (*xor<mode>3): Likewise.
18550         (sse2_packsswb): Likewise.
18551         (sse2_packssdw): Likewise.
18552         (sse2_packuswb): Likewise.
18553         (sse2_punpckhbw): Likewise.
18554         (sse2_punpcklbw): Likewise.
18555         (sse2_punpckhwd): Likewise.
18556         (sse2_punpcklwd): Likewise.
18557         (sse2_punpckhdq): Likewise.
18558         (sse2_punpckldq): Likewise.
18559         (sse2_punpckhqdq): Likewise.
18560         (sse2_punpcklqdq): Likewise.
18561         (*sse2_pinsrw): Likewise.
18562         (*sse2_pextrw): Likewise.
18563         (sse2_pshufd_1): Likewise.
18564         (sse2_uavgv16qi3): Likewise.
18565         (sse2_uavgv8hi3): Likewise.
18566         (sse2_psadbw): Likewise.
18567         (sse2_pmovmskb): Likewise.
18568         (*sse2_maskmovdqu): Likewise.
18569         (*sse2_maskmovdqu_rex64): Likewise.
18570         (sse4a_extrqi): Likewise.
18571         (sse4a_extrq): Likewise.
18572         (sse3_lddqu): Set prefix_rep.
18573         (sse3_addsubv4sf3): Likewise.
18574         (sse3_haddv4sf3): Likewise.
18575         (sse3_hsubv4sf3): Likewise.
18576         (sse_cvtss2si): Likewise.
18577         (sse_cvtss2si_2): Likewise.
18578         (sse_cvtss2siq): Likewise.
18579         (sse_cvtss2siq_2): Likewise.
18580         (sse_cvttss2si): Likewise.
18581         (sse_cvttss2siq): Likewise.
18582         (sse2_cvttps2dq): Likewise.
18583         (sse3_movshdup): Likewise.
18584         (sse3_movsldup): Likewise.
18585         (sse2_cvtsd2si): Likewise.
18586         (sse2_cvtsd2si_2): Likewise.
18587         (sse2_cvtsd2siq): Likewise.
18588         (sse2_cvtsd2siq_2): Likewise.
18589         (sse2_cvttsd2si): Likewise.
18590         (sse2_cvttsd2siq): Likewise.
18591         (*sse2_cvtpd2dq): Likewise.
18592         (*sse2_cvttpd2dq): Likewise.
18593         (sse2_pshuflw_1): Likewise.
18594         (sse2_pshufhw_1): Likewise.
18595         (sse4a_insertqi): Likewise.
18596         (sse4a_insertq): Likewise.
18597         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
18598         (ssse3_phadddv4si3): Likewise.
18599         (ssse3_phaddswv8hi3): Likewise.
18600         (ssse3_phsubwv8hi3): Likewise.
18601         (ssse3_phsubdv4si3): Likewise.
18602         (ssse3_phsubswv8hi3): Likewise.
18603         (ssse3_pmaddubswv8hi3): Likewise.
18604         (ssse3_pmulhrswv8hi3): Likewise.
18605         (ssse3_pshufbv16qi3): Likewise.
18606         (ssse3_psign<mode>3): Likewise.
18607         (ssse3_palignrti): Likewise.
18608         (abs<mode>2): Likewise.
18609         (ssse3_phaddwv4hi3): Set prefix_extra.
18610         (ssse3_phadddv2si3): Likewise.
18611         (ssse3_phaddswv4hi3): Likewise.
18612         (ssse3_phsubwv4hi3): Likewise.
18613         (ssse3_phsubdv2si3): Likewise.
18614         (ssse3_phsubswv4hi3): Likewise.
18615         (ssse3_pmaddubswv4hi3): Likewise.
18616         (ssse3_pmulhrswv4hi3): Likewise.
18617         (ssse3_pshufbv8qi3): Likewise.
18618         (ssse3_psign<mode>3): Likewise.
18619         (ssse3_palignrdi): Likewise.
18620         (abs<mode>2): Likewise.
18621         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
18622         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
18623         (sse2_pmovmskb): Set mode to SI instead of V2DF.
18624
18625 2007-04-23  Nick Clifton  <nickc@redhat.com>
18626
18627         * params.def: Fix formatting of emacs local variables.
18628
18629 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
18630
18631         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
18632         move if inter-unit move isn't allowed.
18633         Don't split moving the first element of V2DI to DI to inter-unit
18634         move if inter-unit move isn't allowed.
18635
18636 2007-04-23  Richard Guenther  <rguenther@suse.de>
18637
18638         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
18639         and CDI_POST_DOMINATORS separately.
18640
18641 2007-04-23  Nick Clifton  <nickc@redhat.com>
18642
18643         * c.opt (Wformat-contains-nul): Add warning attribute.
18644
18645 2007-04-23  Jan Hubicka  <jh@suse.cz>
18646
18647         * function.c (init_function_start): Don't init line number info.
18648         (expand_function_end): Update.
18649         (reset_block_changes, record_block_change, finalize_block_changes,
18650         check_block_change, free_block_changes): Kill.
18651         * function.h (reset_block_changes, record_block_change,
18652         finalize_block_changes, check_block_change, free_block_changes):
18653         Remove prototypes.
18654         (struct function): Remove ib_boundaries_block.
18655         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
18656         Use curr_insn_locator to initialize locator.
18657         (emit_line_note): Remove.
18658         * cfgexpand.c (expand_gimple_cond_expr): Update.
18659         (construct_exit_block): Likewise.
18660         (tree_expand_cfg): Initialize/finalize locators.
18661         * expr.c (expand_expr_real): Update.
18662         * cfglayout.c (line_locators_locs, line_locators_lines,
18663         file_locators_locs, file_locators_files): Remove.
18664         (set_block_levels): Move to cfgexpand.c.
18665         (insn_locators_initialize): Remove.
18666         (pass_insn_locators_initialize): Remove.
18667         (locations_locators_locs, locations_locators_vals): New static vars.
18668         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
18669         Likewise.
18670         (insn_locators_alloc, insn_locators_finalize,
18671         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
18672         New functions.
18673         (locator_location): New.
18674         (locator_line, locator_file): Rewrite.
18675         * rtl.h (emit_line_note): Kill.
18676         (insn_locators_alloc, insn_locators_finalize,
18677         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
18678         Declare.
18679         * tree-inline.c (initialize_cfun): Do not initialize
18680         ib_boundaries_block.
18681         * passes.c (pass_insn_locators_initialize): Remove.
18682
18683 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18684
18685         PR middle-end/31448
18686         * expr.c (reduce_to_bit_field_precision): Handle
18687         CONST_INT rtx's.
18688
18689 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
18690
18691         PR tree-optimization/24659
18692         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
18693         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
18694         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
18695         * genopinit.c (optabs): Rename vec_pack_mod_optab
18696         to vec_pack_trunc_optab.
18697         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
18698         early for scalar floating point operands for NOP_EXPR.
18699         (vectorizable_type_promotion): Ditto.
18700         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
18701         vec_pack_trunc_optab.
18702         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
18703
18704         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
18705         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
18706         Rename from VEC_PACK_MOD_EXPR.
18707         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
18708         * expr.c (expand_expr_real_1): Ditto.
18709         * tree-inline.c (estimate_num_insns_1): Ditto.
18710         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
18711
18712         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
18713         (vec_unpacks_lo_v4sf): Ditto.
18714         (vec_pack_trunc_v2df): Ditto.
18715         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
18716         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
18717         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
18718
18719         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
18720         vec_pack_mod_v8hi.
18721         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
18722
18723         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
18724         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
18725         packing of floating point operands.
18726         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
18727         represent unpacking of floating point operands.
18728         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
18729         [vec_unpacks_hi]: Ditto.
18730         [vec_unpacks_lo]: Ditto.
18731
18732 2007-04-22  Jan Hubicka  <jh@suse.cz>
18733
18734         * final.c (rest_of_handle_final): Call
18735         targetm.asm_out.constructor/targetm.asm_out.destructor
18736         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
18737         proper priority via decl_*_priority_insert.
18738         * c-common.c (c_expand_body): Likewise.
18739
18740 2007-04-22  Richard Guenther  <rguenther@suse.de>
18741
18742         PR tree-optimization/29789
18743         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
18744         (rewrite_reciprocal): New helper split out from
18745         determine_invariantness_stmt.
18746         (rewrite_bittest): Likewise.
18747         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
18748         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
18749         is not.
18750
18751 2007-04-22  Revital Eres  <eres@il.ibm.com>
18752
18753         * loop-unroll.c (var_to_expand): New field to support also
18754         insns of the form x = something + x.
18755         (analyze_insn_to_expand_var): Use it.
18756         (expand_var_during_unrolling): Likewise.
18757
18758 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
18759
18760         * predict.c: Include pointer-set.h.
18761         (bb_predictions): New variable.
18762         (tree_predicted_by_p, tree_predict_edge,
18763         remove_predictions_associated_with_edge): Use bb_predictions map
18764         instead of bb->predictions.
18765         (clear_bb_predictions, assert_is_empty): New functions.
18766         (combine_predictions_for_bb): Use bb_predictions map.  Call
18767         clear_bb_predictions.
18768         (tree_estimate_probability): Create and free bb_predictions map.
18769         * Makefile.in (predict.o): Add pointer-set.h dependency.
18770         * basic-block.h (struct basic_block_def): Remove predictions
18771         field.
18772         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
18773
18774 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
18775
18776         PR target/31480
18777         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
18778         is null.
18779
18780 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18781
18782         * timevar.c (timevar_print): Change reference of --disable-checking to
18783         --enable-checking=release.  Also warn if assert checking is disabled.
18784
18785 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18786
18787         PR C/30265
18788         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
18789         decl as addressable if the compound literal was marked as
18790         addressable.
18791         Mark the decl as a gimple register if it is a complex or
18792         vector decl and does not live in memory.
18793
18794 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18795
18796         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
18797         (GENERIC_NEXT): New function macro.
18798         (PHI_CHAIN): Use phi_node's new chain variable.
18799         (tree_phi_node): Change tree_common to tree_base
18800         and add the chain field.
18801         * tree-phinodes.c (make_phi_node): Don't set
18802         TREE_TYPE on the new node.
18803         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
18804         instead of checking GIMPLE_TUPLE_P in chain_next.
18805         * tree-vect-transform.c
18806         (get_initial_def_for_induction): Look at
18807         PHI_RESULT_TREE for the type of the phi node.
18808         (update_vuses_to_preheader): Use PHI_CHAIN
18809         instead of TREE_CHAIN on the phi node.
18810         * tree-ssa-structalias.c (compute_points_to_sets):
18811         Likewise.
18812         (ipa_pta_execute): Likewise.
18813
18814 2007-04-21  Richard Guenther  <rguenther@suse.de>
18815
18816         PR middle-end/31136
18817         * fold-const.c (fold_unary): Call fold_convert_const on the
18818         original tree.
18819
18820 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
18821
18822         * gcse.c (store_killed_in_insn): Handle PARALLELs.
18823         (store_killed_in_pat): New.
18824
18825 2007-04-20  Richard Henderson  <rth@redhat.com>
18826
18827         PR target/31628
18828         * config/i386/i386.c (type_has_variadic_args_p): Look for any
18829         TREE_LIST with a void_type_node value, not void_list_node exactly.
18830
18831 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
18832
18833         * doc/standards.texi: Re-arrange into language-specific
18834         subsections. Add a C++ section, documenting which standards we
18835         support.
18836
18837 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
18838
18839         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
18840         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
18841
18842 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
18843
18844         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
18845         ecrti.o and crtbegin.o.
18846         (LIB_DEFAULT_SPEC): Include -lc.
18847         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
18848
18849 2007-04-20  Richard Henderson  <rth@redhat.com>
18850
18851         PR target/28623
18852         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
18853         argument; update all callers.
18854         (get_unaligned_offset): New.
18855         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
18856         get_unaligned_address, just pass on the address directly.
18857         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
18858         the subreg in the helper patterns.
18859         (unaligned_extendqidi_le): Use get_unaligned_offset.
18860         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
18861         (unaligned_extendhidi_be): Likewise.
18862         (unaligned_extendhidi): Tidy.
18863         * config/alpha/alpha-protos.h: Update.
18864
18865 2007-04-20  Richard Henderson  <rth@redhat.com>
18866
18867         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
18868         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
18869         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
18870         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
18871         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
18872         (CPP_SPEC): Don't include %(cpp_subtarget).
18873         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
18874         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
18875         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
18876
18877 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
18878
18879         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
18880         for __builtin_ia32_cmpordss.
18881
18882         PR tree-optimization/31632
18883         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
18884         and arg1 for optimizations of comparison against min/max values.
18885         Fold arg0 to arg1's type for optimizations of comparison against
18886         min+1 and max-1 values.
18887
18888 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
18889
18890         * reload.c (combine_reloads): When trying to use a dying register,
18891         check whether it's uninitialized and don't use if so.
18892
18893 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
18894
18895         * fold-const.c: Remove prototypes for native_encode_expr and
18896         native_interpret_expr.
18897         (native_encode_expr): Make non-static.
18898         (native_interpret_expr): Likewise.
18899         * tree.h: Add prototypes for the above.
18900
18901 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
18902
18903         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
18904         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
18905         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
18906         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
18907         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
18908         Add length attributes.
18909
18910 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
18911
18912         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
18913         not that it is 1.
18914
18915         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
18916         __STDC_WANT_DEC_FP__.
18917
18918 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
18919
18920         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
18921         for long double compatibility.
18922         * configure: Regenerate.
18923
18924 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
18925
18926         PR rtl-optimization/29841
18927         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
18928         trap instructions.
18929         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
18930         that may cause control flow transfer from being moved.
18931
18932 2007-04-18  Jan Hubicka  <jh@suse.cz>
18933
18934         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
18935         types.
18936
18937 2007-04-18  Eric Christopher  <echristo@apple.com>
18938
18939         * config/rs6000/darwin.md (load_macho_picbase): Use link register
18940         only. Update operands.
18941         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
18942         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
18943         link register to pic register.
18944
18945 2007-04-18  Dirk Mueller  <dmueller@suse.de>
18946
18947         PR diagnostic/31227
18948         * tree-vrp.c (search_for_addr_array): New.
18949         (check_array_bounds): Suppress warning about
18950         address taken of array refs if its not de-referenced.
18951
18952 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
18953
18954         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
18955         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
18956
18957         * tree-vectorizer.h (NITERS_KNOWN_P): New.
18958         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
18959         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
18960
18961         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
18962         dump print.
18963         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
18964         print message.
18965         (vect_analyze_scalar_cycles): Fix indentation.
18966         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
18967         (vect_mark_relevant): Include phis in relevance analysis.
18968
18969         * tree-vect-transform.c (vect_transform_loop): Add an assert.
18970
18971 2007-04-18  Anatoly Sokolov <aesok@post.ru>
18972
18973         * config/avr/avr.c (ptrreg_to_str): Replace error() with
18974         output_operand_lossage().
18975
18976 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
18977
18978         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
18979         the unused code for reduction without adjust-in-epilog to simplify the
18980         function.
18981
18982 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
18983
18984         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
18985         (S390_TDC_NEGATIVE_ZERO): New constant.
18986         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
18987         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
18988         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
18989         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
18990         (S390_TDC_POSITIVE_INFINITY): New constant.
18991         (S390_TDC_NEGATIVE_INFINITY): New constant.
18992         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
18993         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
18994         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
18995         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
18996         (S390_TDC_INFINITY): New constant.
18997         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
18998         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
18999         optimization for UNSPEC_CCZ_TO_INT.
19000         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
19001         ("*ccz_to_int"): New insn.
19002         ("isinf<mode>2"): New insn.
19003         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
19004         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
19005         (UNSPEC_CCZ_TO_INT): New constant.
19006
19007 2007-04-18  Richard Guenther  <rguenther@suse.de>
19008
19009         PR tree-optimization/19431
19010         PR tree-optimization/21463
19011         * tree-pass.h (pass_phiprop): Declare.
19012         * passes.c (init_optimization_passes): New phiprop pass.
19013         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
19014         (phivn_valid_p): New helper function.
19015         (phiprop_insert_phi): Likewise.
19016         (propagate_with_phi): Likewise.
19017         (tree_ssa_phiprop): New propagator propagating loads
19018         through phi nodes if profitable.
19019
19020 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
19021
19022         * tree-vect-analyze.c (process_use): New function.
19023         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
19024         Check phis in all bbs.
19025         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
19026         assert.
19027
19028 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
19029
19030         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
19031         we use REG_EQUAL.
19032
19033 2007-04-17  Anatoly Sokolov <aesok@post.ru>
19034
19035         PR target/30483
19036         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
19037         error().
19038
19039 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
19040
19041         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
19042         on "0".
19043         (sse_vmmulv4sf3): Likewise.
19044         (sse2_vmaddv2df3): Likewise.
19045         (sse2_vmmulv2df3): Likewise.
19046
19047 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
19048
19049         PR rtl-optimization/31360
19050         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
19051         (target_reg_cost): New.
19052         (init_set_costs): Initialize target_reg_cost.  Add comments
19053         regarding the rationale of the costs.
19054         (global_cost_for_size): Renamed to...
19055         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
19056         of register pressure.
19057         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
19058         estimate_reg_pressure_cost.  Add number of ivs.
19059         (determine_set_costs): Dump target_reg_cost.
19060         * loop-invariant.c (gain_for_invariant): Use
19061         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
19062         (best_gain_for_invariant, find_invariants_to_move): Remove
19063         n_inv_uses.
19064         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
19065         (target_reg_cost): Declare.
19066         (global_cost_for_size): Declaration removed.
19067         (estimate_reg_pressure_cost): Declare.
19068
19069 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
19070
19071         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
19072         regnos into even/odd register pairs.
19073         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
19074         TDmode similar to the other floating point modes.
19075         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
19076         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
19077         define_expand's.
19078         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
19079         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
19080         (movdd_hardfloat64): Use TARGET_MFPGPR.
19081
19082 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
19083
19084         * reload1.c (delete_output_reload): Don't count output in n_inherited.
19085
19086         Revert
19087         2005-01-05  Richard Henderson  <rth@redhat.com>
19088         PR rtl-opt/10692
19089         * reload1.c (do_input_reload): Restrict the optimization deleteing
19090         a previous output reload to RELOAD_FOR_INPUT.
19091
19092 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
19093
19094         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
19095         induc_vec_info_type.
19096         (vectorizable_induction): New function declaration.
19097         * tree-vect-transform.c (get_initial_def_for_induction): No need to
19098         check if already vectorized.  Find first place in BB where new stmts
19099         can be inserted.  Takes only one argument.
19100         (vectorizable_induction): New function.
19101         (vect_transform_stmt): Add case for induc_vec_info_type to call
19102         vectorizable_induction.
19103         (vect_transform_loop): Consider phis for vectorization.
19104         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
19105         condition.
19106         (analyze_operations): Call vectorizable_induction when analyzing phis.
19107         Fix comment.
19108         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
19109         (vect_mark_relevant): Include phis in relevance analysis.
19110         (vect_mark_stmts_to_be_vectorize): Likewise.
19111         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
19112
19113 2007-04-16  Lawrence Crowl  <crowl@google.com>
19114
19115         * doc/invoke.texi (Debugging Options): Add documentation for the
19116         -femit-struct-debug options -femit-struct-debug-baseonly,
19117         -femit-struct-debug-reduced, and
19118         -femit-struct-debug-detailed[=...].
19119
19120         * c-opts.c (c_common_handle_option): Add
19121         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
19122         and OPT_femit_struct_debug_detailed_.
19123         * c.opt: Add specifications for
19124         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
19125         and -femit-struct-debug-detailed[=...].
19126         * opts.c (set_struct_debug_option): Parse the
19127         -femit-struct-debug-... options.
19128         * opts.c (matches_main_base, main_input_basename,
19129         main_input_baselength, base_of_path, matches_main_base): Add
19130         variables and functions to compare header base name to compilation
19131         unit base name.
19132         * opts.c (should_emit_struct_debug): Add to determine to emit a
19133         structure based on the option.
19134         (dump_struct_debug) Also disabled function to debug this
19135         function.
19136         * opts.c (handle_options): Save the base name of the
19137         compilation unit.
19138
19139         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
19140         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
19141         This hook indicates if a type is generic.  Set it by default
19142         to "never generic".
19143         * langhooks.h (struct lang_hooks_for_types): Add a new hook
19144         to determine if a struct type is generic or not.
19145         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
19146         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
19147         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
19148         with live C++ hook.
19149
19150         * flags.h (enum debug_info_usage): Add an enumeration to describe
19151         a program's use of a structure type.
19152         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
19153         to indicate the program's usage of the type.  Filter structs based
19154         on the -femit-struct-debug-... specification.
19155         (gen_type_die): Split into two routines, gen_type_die and
19156         gen_type_die_with_usage.  gen_type_die is now a wrapper
19157         that assumes direct usage.
19158         (gen_type_die_with_usage): Replace calls to gen_type_die
19159         with gen_type_die_with_usage adding the program usage of
19160         the referenced type.
19161         (dwarf2out_imported_module_or_decl): Suppress struct debug
19162         information using should_emit_struct_debug when appropriate.
19163
19164 2007-04-16  Ian Lance Taylor  <iant@google.com>
19165
19166         PR tree-optimization/31522
19167         * tree-vrp.c (vr_phi_edge_counts): New static variable.
19168         (vrp_initialize): Allocate vr_phi_edge_counts.
19169         (vrp_visit_phi_node): Don't push to infinity if we saw a new
19170         executable edge.  Drop test for all constants.
19171         (vrp_finalize): Free vrp_phi_edge_counts.
19172
19173         * doc/cpp.texi (Common Predefined Macros): Clarify description of
19174         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
19175
19176         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
19177         predecessors at head rather than tail.
19178
19179 2007-04-16  Matthias Klose  <doko@debian.org>
19180
19181         * config/alpha/linux.h (CPP_SPEC): Define.
19182         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
19183
19184 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
19185
19186         * function.h: Remove sequence_stack extern declaration.
19187
19188 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
19189
19190         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
19191         TARGET_FIDOA.
19192         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
19193         defined.
19194
19195 2007-04-16  Anatoly Sokolov <aesok@post.ru>
19196
19197         * config/avr/avr.c (avr_arch_types): Rearranging  array.
19198         (enum avr_arch): Add.
19199         (avr_mcu_types): Use avr_arch enumeration constants instead of
19200         numbers.
19201         * config/avr/avr.h (LINK_SPEC): Simplify.
19202
19203 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
19204
19205         * config/m68k/m68k.c (m68k_libcall_value,
19206         m68k_function_value): Use macros for register names more.
19207
19208         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
19209         instead.
19210         (M68K_REGNAME): Use A6_REG.
19211         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
19212
19213 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
19214
19215         PR middle-end/28071
19216         * sched-int.h (struct deps): Split field 'pending_lists_length' into
19217         'pending_read_list_length' and 'pending_write_list_length'.  Update
19218         comment.
19219         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
19220         to handle two length counters instead of one.  Update all uses.
19221         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
19222         two length counters instead of one.
19223         * sched-rgn.c (propagate_deps): Update to handle two length counters
19224         instead of one.
19225
19226 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
19227
19228         PR target/31582
19229         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
19230         copy of source, pass it to ix86_expand_vector_set and return
19231         it as target.
19232
19233 2007-04-16  David Ung  <davidu@mips.com>
19234             Joseph Myers  <joseph@codesourcery.com>
19235
19236         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
19237         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
19238         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
19239         Add 74K processor information.
19240         * config/mips/mips.md: Include 74k.md.
19241         (cpu): Add 74kc,74kf,74kx.
19242         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
19243         * config/mips/74k.md: New.
19244         * doc/invoke.texi (MIPS Options): Document 74K support.
19245
19246 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
19247
19248         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
19249         vectorizable_* functions.
19250         * tree-vect-transform.c (vectorizable_call): Add check for
19251         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
19252         (vectorizable_store): likewise.
19253         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
19254         Add comments.
19255         (vectorizable_operation, vectorizable_type_demotion): Likewise.
19256         (vectorizable_type_promotion, vectorizable_load): Likewise.
19257         (vectorizable_live_operation, vectorizable_condition): Likewise.
19258         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
19259         STMT_VINFO_LIVE_P.
19260         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
19261
19262 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
19263
19264         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
19265         register numbers more.
19266         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
19267         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
19268         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
19269         FUNCTION_VALUE_REGNO_P): Likewise.
19270         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
19271         STATIC_CHAIN_REGNUM): Likewise.
19272         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
19273         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
19274         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
19275         * config/m68k/m68k.md (FP_REG): New.
19276
19277 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
19278
19279         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
19280         alignment on fido.
19281
19282 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
19283
19284         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
19285         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
19286         comment typos.
19287
19288 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
19289
19290         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
19291         cold loops.
19292
19293 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19294
19295         PR c/31520
19296         * c-decl.c (finish_decl): Grab the type of the decl after the call
19297         to store_init_value.
19298
19299 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
19300
19301         * common.opt (fforward-propagate): Fix "Optimization" annotation.
19302
19303 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
19304
19305         PR c++/25874
19306         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free
19307         dominators, post dominators and cleanup cfg before returning.
19308
19309 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
19310
19311         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
19312         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
19313
19314 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
19315
19316         * config.gcc: Recognize fido.
19317         * config/m68k/m68k-devices.def (fidoa): New.
19318         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
19319         __mfido__.
19320         (FL_FIDOA, TARGET_FIDOA): New.
19321         * config/m68k/m68k.opt (mfidoa): New.
19322
19323 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19324
19325         PR middle-end/31322
19326         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
19327         when a personality function is used.
19328
19329 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
19330
19331         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
19332
19333 2007-04-13  Mike Stump  <mrs@apple.com>
19334
19335         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
19336         we can...
19337         * config/darwin.opt (fapple-kext): Make C++ only.
19338         * config/darwin.c (darwin_override_options): Remove code to ensure
19339         -fapple-kext is given for C++ only.
19340
19341 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
19342
19343         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
19344         * config/mips/mips.c (override_options): Call
19345         SUBTARGET_OVERRIDE_OPTIONS, if defined.
19346
19347 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
19348
19349         * config/i386/i386.opt (msvr3-shlib): Removed.
19350
19351         * doc/invoke.texi: Remove -msvr3-shlib.
19352
19353 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
19354
19355         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
19356         with "popcnt" instruction.
19357
19358 2007-04-13  Richard Guenther  <rguenther@suse.de>
19359
19360         PR tree-optimization/21258
19361         * tree-vrp.c (compare_case_labels): New helper.
19362         (find_switch_asserts): New function.
19363         (find_assert_locations): Call it for SWITCH_EXPRs.
19364
19365 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
19366
19367         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
19368         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
19369         check is now implied in X87_FLOAT_MODE_P.
19370         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
19371         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
19372         (fix_trunc<mode>_i386_fisttp): Ditto.
19373         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
19374         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
19375         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
19376         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
19377         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
19378         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
19379         (unnamed_splitters): Ditto.
19380         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
19381         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
19382         FIRST_SSE_REG for local functions when SSE math is enabled or
19383         for functions with sseregparm attribute.
19384         (standard_80387_constant_p): Return -1 if mode is not
19385         X87_FLOAT_MODE_P.
19386         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
19387         (ix86_expand_compare): Ditto.
19388         (ix86_expand_carry_flag_compare): Ditto.
19389         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
19390         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
19391         DECIMAL_FLOAT_MODE_P.
19392         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
19393         of SCALAR_FLOAT_MODE_P.
19394         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
19395         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
19396         checks before FLOAT_MODE_P.
19397         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
19398         before FLOAT_MODE_P.
19399         [DIV]: Ditto.
19400         [NEG]: Ditto.
19401         [ABS]: Ditto.
19402         [SQRT]: Ditto.
19403         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
19404
19405 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
19406             Charles Wilson  <libtool@cwilson.fastmail.fm>
19407
19408         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
19409         (libgcc.mvars): Don't depend on them.
19410         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
19411         * exec-tool.in: New.
19412
19413 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
19414
19415         * doc/invoke.text (--help): Document --help=common.
19416
19417 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
19418
19419         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
19420
19421 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
19422
19423         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
19424         * genemit.c (main): Emit #include "integrate.h".
19425         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
19426         (LOADGP_RTP): New mips_loadgp_style.
19427         * config/mips/mips.h: Include config/vxworks-dummy.h.
19428         (TARGET_RTP_PIC): New macro.
19429         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
19430         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
19431         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
19432         for TARGET_RTP_PIC.
19433         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
19434         -mvxworks-pic when using -mrtp and a PIC option.
19435         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
19436         for RTP PIC.
19437         (mips_symbolic_constant_p, mips_symbolic_address_p)
19438         (mips_symbol_insns): Handle SYMBOL_HALF.
19439         (override_options): Warn about -G and -mrtp being used together.
19440         Initialize mips_lo_relocs[SYMBOL_HALF].
19441         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
19442         (mips_emit_loadgp): Handle LOADGP_RTP.
19443         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
19444         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
19445         (tablejump): Handle function-relative case table entries if
19446         TARGET_RTP_PIC.
19447         * config/mips/predicates.md (symbol_ref_operand): New predicate.
19448
19449 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
19450
19451         * config/mips/mips.md (load_call<mode>): Allow any general register.
19452         destination.
19453         (sibcall_value_internal, sibcall_value_multiple_internal)
19454         (call_value_internal, call_value_split, call_value_multiple_internal)
19455         (call_value_multiple_split): Remove constraints from operand 0.
19456
19457 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
19458
19459         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
19460         rather than loadgp_noshared.
19461         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
19462         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
19463         gen_loadgp.
19464         * config/mips/mips.md (loadgp): Rename to...
19465         (loadgp_newabi): ...this.
19466         (loadgp_noshared): Rename to...
19467         (loadgp_absolute): ...this.
19468
19469 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
19470
19471         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
19472         false for locally-binding symbols.
19473         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
19474
19475 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
19476
19477         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
19478         (SYMBOL_GOT_PAGE_OFST): ...this.
19479         (SYMBOL_GOT_GLOBAL): Rename to...
19480         (SYMBOL_GOT_DISP): ...this.
19481         (SYMBOL_GOTOFF_GLOBAL): Rename to...
19482         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
19483         * config/mips/mips.c (mips_global_symbol_p): New function.
19484         (mips_symbol_binds_local_p): Likewise.
19485         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
19486         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use
19487         mips_global_symbol_p and mips_symbol_binds_local_p.
19488         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
19489         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
19490         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
19491         SYMBOL_GOTOFF_DISP.
19492         (mips_ok_for_lazy_binding_p): New function.
19493         (mips_load_call_address, mips_expand_call): Use it.
19494         (mips_dangerous_for_la25_p): Likewise.
19495         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
19496         (*got_disp<mode>): Use got_disp_operand instead of
19497         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
19498         SYMBOL_GOTOFF_GLOBAL.
19499         (*got_page<mode>): Use got_page_ofst_operand instead of
19500         local_got_operand.
19501         * config/mips/predicates.md (const_call_insn_operand): Use
19502         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
19503         (global_got_operand): Rename to...
19504         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
19505         SYMBOL_GOT_GLOBAL.
19506         (local_got_operand): Rename to...
19507         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
19508         of SYMBOL_GOT_LOCAL.
19509
19510 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
19511
19512         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
19513         TARGET_CALL_CLOBBERED_GP.
19514         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
19515         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
19516         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
19517         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
19518         of TARGET_ABICALLS && !TARGET_NEWABI.
19519         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
19520         * config/mips/mips.c (mips_load_call_address): Check
19521         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
19522         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
19523         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
19524         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
19525         TARGET_ABICALLS && TARGET_NEWABI.
19526         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
19527         TARGET_ABICALLS.
19528         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
19529         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
19530         TARGET_ABICALLS && TARGET_NEWABI.
19531         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
19532         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
19533         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
19534         whether indirect calls must use $25.
19535         (mips_extra_live_on_entry): Check TARGET_GOT instead of
19536         TARGET_ABICALLS.
19537         * config/mips/mips.md (jal_macro): Check flag_pic and
19538         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
19539         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
19540         instead of TARGET_ABICALLS.
19541         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
19542         TARGET_ABICALLS && TARGET_OLDABI.
19543         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
19544         (sibcall): In the comment above the define_insn, mention
19545         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
19546         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
19547         instead of TARGET_ABICALLS.
19548
19549 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
19550
19551         * doc/md.texi (Blackfin family constraints): Document PA and PB.
19552         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
19553         (MACFLAGS_MATCH_P): New macro.
19554         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
19555         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
19556         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
19557         the other MACFLAG constants.
19558         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
19559         (flag_machi): Tighten constraints.  Renumber some of the operands.
19560         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
19561         output template.
19562         (flag_machi_parts_acconly): New pattern.
19563         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
19564         used.
19565         (flag_macinit1hi): Tighten constraints.
19566         (flag_mul_macv2hi_parts_acconly): New pattern.
19567
19568         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
19569         Use a more efficient implementation.
19570         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
19571         inline sequences when not optimizing for size.
19572
19573         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
19574         movhi_high2low): Delete, merge functionality into...
19575         (packv2hi): ... this pattern.
19576
19577         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
19578         * config/bfin/bfin.opt (msim): New option.
19579         (mcpu=): New option.
19580         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
19581         (bfin_cpu_t): Typedef of enum bfin_cpu.
19582         (bfin_cpu_type): New declaration.
19583         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
19584         -msim and -mcpu= options.
19585         (LIB_SPEC): Likewise.
19586         * config/bfin/bfin.c (bfin_cpu_type): Define.
19587         (bfin_handle_option): Handle -mcpu= option.
19588         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
19589         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
19590         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
19591
19592 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
19593
19594         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
19595         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
19596         (powerpc-wrs-vxworksae): Use ${tm_file}.
19597         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
19598         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
19599         * config/i386/vx-common.h: New file.
19600
19601 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
19602
19603         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
19604         of crt0.o%s.
19605
19606 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
19607
19608         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
19609         ldxtr.
19610
19611 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
19612
19613         PR c++/31078
19614         PR c++/31103
19615         * c-common.c (c_build_qualified_type): Set canonical type
19616         appropriately.
19617
19618 2007-04-12  Richard Guenther  <rguenther@suse.de>
19619
19620         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
19621         lower bound and element size if lower bound is not zero
19622         or either of the ARRAY_REF operands is set.
19623
19624 2007-04-12  Richard Guenther  <rguenther@suse.de>
19625
19626         PR tree-optimization/24689
19627         PR tree-optimization/31307
19628         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
19629         indices by value.
19630         * gimplify.c (canonicalize_addr_expr): To be consistent with
19631         gimplify_compound_lval only set operands two and three of
19632         ARRAY_REFs if they are not gimple_min_invariant.  This makes
19633         it never at this place.
19634         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
19635
19636 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19637
19638         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
19639         null before emitting a .nsubspa directive.
19640
19641 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
19642
19643         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
19644         need_to_partition_p if there are no memory statements in the
19645         function.
19646
19647 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
19648
19649         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
19650         (gcd_of_steps_may_divide_p): New function.
19651         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
19652
19653 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
19654
19655         * reload.c (find_reloads_toplev, find_reloads_address,
19656         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
19657         not a pointer equality test, to decide if we need to call
19658         push_reg_equiv_alt_mem.
19659
19660 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
19661
19662         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
19663         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps):
19664         New.
19665         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
19666
19667 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
19668
19669         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
19670         vector to be positive.
19671
19672 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
19673
19674         PR 30735
19675         PR 31090
19676         * doc/invoke.texi: Document --params max-aliased-vops and
19677         avg-aliased-vops.
19678         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
19679         debug_memory_partitions): Move to tree-flow.h
19680         * params.h (AVG_ALIASED_VOPS): Define.
19681         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
19682         users.
19683         (mp_info_t): Likewise.
19684         (get_mem_sym_stats_for): New.
19685         (set_memory_partition): Move from tree-flow-inline.h.
19686         (mark_non_addressable): Only clear the set of symbols for the
19687         partition if it exists.
19688         (dump_memory_partitions): Move from tree-ssa-operands.c
19689         (debug_memory_partitions): Likewise.
19690         (need_to_partition_p): New.
19691         (dump_mem_ref_stats): New.
19692         (debug_mem_ref_stats): New.
19693         (dump_mem_sym_stats): New.
19694         (debug_mem_sym_stats): New.
19695         (update_mem_sym_stats_from_stmt): New.
19696         (compare_mp_info_entries): New.
19697         (mp_info_cmp): Call it.
19698         (sort_mp_info): Change argument to a list of mem_sym_stats_t
19699         objects.
19700         (get_mpt_for): Move from tree-ssa-operands.c.
19701         (find_partition_for): New.
19702         (create_partition_for): Remove.
19703         (estimate_vop_reduction): New.
19704         (update_reference_counts): New.
19705         (build_mp_info): New.
19706         (compute_memory_partitions): Refactor.
19707         Document new heuristic.
19708         Call build_mp_info, update_reference_counts,
19709         find_partition_for and estimate_vop_reduction.
19710         (compute_may_aliases): Populate virtual operands before
19711         calling debugging dumps.
19712         (delete_mem_sym_stats): New.
19713         (delete_mem_ref_stats): New.
19714         (init_mem_ref_stats): New.
19715         (init_alias_info): Call it.
19716         (maybe_create_global_var): Remove alias_info argument.
19717         Get number of call sites and number of pure/const call sites
19718         from gimple_mem_ref_stats().
19719         (dump_alias_info): Call dump_memory_partitions first.
19720         (dump_points_to_info_for): Show how many times a pointer has
19721         been dereferenced.
19722         * opts.c (decode_options): For -O2 set --param
19723         max-aliased-vops to 500.
19724         For -O3 set --param max-aliased-vops to 1000 and --param
19725         avg-aliased-vops to 3.
19726         * fortran/options.c (gfc_init_options): Remove assignment to
19727         MAX_ALIASED_VOPS.
19728         * tree-flow-inline.h (gimple_mem_ref_stats): New.
19729         * tree-dfa.c (dump_variable): Dump memory reference
19730         statistics.
19731         Dump NO_ALIAS* settings.
19732         (referenced_var_lookup): Tidy.
19733         (mem_sym_stats): New.
19734         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
19735         and ORIG are different SSA names for a memory partition.
19736         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
19737         * tree-flow.h (struct mem_sym_stats_d): Define.
19738         (mem_sym_stats_t): Define.
19739         (struct mem_ref_stats_d): Define.
19740         (struct gimple_df): Add field mem_ref_stats.
19741         (enum noalias_state): Define.
19742         (struct var_ann_d): Add bitfield noalias_state.
19743         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
19744         debug_mem_ref_stats, debug_memory_partitions,
19745         debug_mem_sym_stats): Declare.
19746         * tree-ssa-structalias.c (update_alias_info): Update call
19747         sites, pure/const call sites and asm sites in structure
19748         returned by gimple_mem_ref_stats.
19749         Remove local variable IS_POTENTIAL_DEREF.
19750         Increase NUM_DEREFS if the memory expression is a potential
19751         dereference.
19752         Call update_mem_sym_stats_from_stmt.
19753         If the memory references memory, call
19754         update_mem_sym_stats_from_stmt for all the direct memory
19755         symbol references found.
19756         (intra_create_variable_infos): Set noalias_state field for
19757         pointer arguments according to the value of
19758         flag_argument_noalias.
19759         * tree-ssa-structalias.h (struct alias_info): Remove fields
19760         num_calls_found and num_pure_const_calls_found.
19761         (update_mem_sym_stats_from_stmt): Declare.
19762         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
19763         Set default value to 100.
19764         (PARAM_AVG_ALIASED_VOPS): Define.
19765
19766 2007-04-11  Richard Guenther  <rguenther@suse.de>
19767
19768         PR middle-end/31530
19769         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
19770         a * -b + c as c - a * b if we honor sign dependent rounding.
19771
19772 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
19773
19774         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
19775         bfin_expand_strmov.
19776         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
19777         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
19778         variables.
19779         (initialize_trampoline): Don't use old-style function definition.
19780         (bfin_secondary_reload): Mark IN_P argument as unused.
19781
19782 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
19783
19784         PR tree-optimization/31343
19785         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
19786         (build_polynomial_chrec): Return a scalar when the evolution is zero.
19787         * testsuite/gcc.dg/vect/pr31343.c: New.
19788
19789 2007-04-10  Eric Christopher  <echristo@apple.com>
19790
19791         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
19792         * config/i386/i386.md (*cmpfp0): Use.
19793         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
19794         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
19795         (fix_trunc<mode>_i386_fisttp): Ditto.
19796         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
19797         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
19798         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
19799         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
19800         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
19801         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
19802         (unnamed_splitters): Ditto.
19803         * config/i386/i386.c (output_fix_trunc): Assert that
19804         we're not being passed a TFmode operand.
19805
19806 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
19807
19808         PR tree-optimization/31526
19809         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
19810         n_basic_blocks to find newly added blocks.
19811
19812 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
19813
19814         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
19815         alternative.
19816         (fix_trunc<mode>si_sse): Ditto.
19817         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
19818         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
19819         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
19820         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
19821         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
19822         expander using SSEMODEF mode macro.
19823         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
19824         expander using SSEMODEF mode macro.
19825         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
19826         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
19827         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
19828         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
19829         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
19830         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
19831         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
19832         Macroize insn using X87MODEF mode macro.
19833
19834 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
19835
19836         * config/i386/sse.md (sse2_pinsrw): Removed.
19837         (sse2_pextrw): Renamed to ...
19838         (*sse2_pextrw): This.
19839
19840 2007-04-09  Jan Hubicka  <jh@suse.cz>
19841
19842         PR target/27869
19843         * config/i386/sse.md
19844         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
19845         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
19846         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
19847         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
19848
19849 2007-04-09  Jan Hubicka  <jh@suse.cz>
19850
19851         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
19852         multiple fields of union.
19853
19854 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
19855
19856         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
19857         (create_preheaders): Check that loops are available.
19858         (fix_loop_structure): Clean up, improve comments.
19859         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
19860         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
19861         state flags.
19862         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
19863         * predict.c (tree_estimate_probability): Do not call
19864         calculate_dominance_info.  Call create_preheaders.
19865         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
19866         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
19867         flags.
19868         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
19869         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
19870         * tree-cfg.c (tree_split_edge): Make an assert more precise.
19871         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
19872         arguments.
19873
19874 2007-04-08  Jan Hubicka  <jh@suse.cz>
19875
19876         * tree.h (maybe_fold_offset_to_component_ref): Declare.
19877         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
19878         * fold-const.c (fold_unary): Use it.
19879
19880 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19881
19882         * varasm.c (assemble_variable): Remove call to
19883         lang_hooks.decls.prepare_assemble_variable.
19884         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
19885         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
19886         * langhooks.h (lang_hooks_for_decls): Remove
19887         prepare_assemble_variable.
19888
19889 2007-04-08  Mike Stump  <mrs@apple.com>
19890
19891         * config/i386/i386.c: Use inc/dec on Core2.
19892
19893 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
19894
19895         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
19896         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
19897         lhd_tree_inlining_end_inlining): Remove.
19898         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
19899         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
19900         end_inlining hooks.
19901         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
19902         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
19903         lhd_tree_inlining_end_inlining): Remove prototypes.
19904         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
19905         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
19906         LANG_HOOKS_TREE_INLINING_START_INLINING,
19907         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
19908
19909         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
19910         not set it.
19911
19912 2007-04-08  Anatoly Sokolov <aesok@post.ru>
19913
19914         PR target/29932
19915         * config/avr/predicates.md (io_address_operand): Delete predicate.
19916         (low_io_address_operand): Don't use 'mode' argument.
19917         (higth_io_address_operand): Rename ...
19918         (high_io_address_operand): ... to this. Don't use 'mode' argument.
19919         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
19920         for above change.
19921
19922 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
19923
19924         Revert change removing staticp.
19925
19926 2007-04-07  Anatoly Sokolov <aesok@post.ru>
19927
19928         PR target/30289
19929         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
19930         earlyclobber.
19931
19932 2007-04-07  Bruce Korb  <bkorb@gnu.org>
19933
19934         * c.opt: Add -Wformat-contains-nul.
19935         * c-format.c (set_Wformat): Set warn_format_contains_nul to the
19936           -Wformat setting.
19937         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
19938         the NUL byte warning.
19939
19940 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
19941
19942         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
19943
19944 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
19945
19946         * tree.c (staticp): No longer use staticp langhook.
19947         * langhooks.c (lhd_staticp): Removed.
19948         * langhooks.h (struct lang_hooks): Remove staticp.
19949         * c-common.c (c_staticp): Remove.
19950         * c-common.h (c_staticp): Ditto.
19951         * langhooks-defs.h (lhd_staticp): Ditto.
19952         (LHD_HOOKS_STATICP): Ditto
19953         * tree.h (gcc_assert_lowered): New macro.
19954
19955 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
19956
19957         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
19958         argument "reliable".
19959         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
19960         Add argument "reliable".  Propagate it through calls.
19961         (infer_loop_bounds_from_undefined): Derive number of iterations
19962         estimates from references in blocks that do not dominate loop latch.
19963         (gcov_type_to_double_int): New function.
19964         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
19965         and expected_loop_iterations_unbounded.
19966         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
19967         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
19968         * tree-data-ref.c (estimated_loop_iterations): Export.
19969         (get_references_in_stmt): Fix -- do not return addresses of local
19970         objects.
19971         * cfgloop.h (expected_loop_iterations_unbounded,
19972         estimated_loop_iterations): Declare.
19973
19974 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
19975
19976         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
19977
19978 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
19979
19980         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
19981         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
19982         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
19983         Use output_387_reg_move().
19984         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
19985         expander using X87MODEF12 mode macro.
19986         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
19987         choosing register preferences.  Use output_387_reg_move().
19988         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
19989         instead of "x".  Use output_387_reg_move().
19990         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
19991         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
19992         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
19993         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
19994         Use output_387_reg_move().
19995         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
19996         mode macro.
19997         (*truncxf?f_i387 splitter): Ditto.
19998
19999 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
20000
20001         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
20002         LANG_HOOKS_SAFE_FROM_P.
20003         * expr.c (safe_from_p): Remove langhook call.
20004         * langhooks.h (lang_hooks): Remove safe_from_p.
20005         (lhd_safe_from_p): Remove prototype.
20006         * langhooks.c (lhd_safe_from_p): Remove.
20007
20008 2007-04-06  Jan Hubicka  <jh@suse.cz>
20009
20010         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
20011         functions.
20012
20013 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
20014
20015         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
20016         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
20017         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
20018         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
20019         alternative.
20020         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
20021         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
20022
20023 2007-04-05  Richard Henderson  <rth@redhat.com>
20024
20025         * config/alpha/alpha.c (print_operand) [+]: Remove.
20026         (alpha_end_function): Print nop if call at end of function.
20027         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
20028         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
20029         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
20030         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
20031         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
20032         the call pattern. Update peepholes to match.
20033
20034 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
20035
20036         * doc/extend.texi (Other Builtins): Add decimal float variants
20037         of signbit.
20038         * builtins.def: Ditto.
20039         * builtins.c (expand_builtin): Ditto.
20040
20041 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
20042             H.J. Lu  <hongjiu.lu@intel.com>
20043
20044         PR target/31478
20045         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
20046         of V8HImode when calling ix86_binary_operator_ok.
20047         (sse2_pmaddwd): Call ix86_binary_operator_ok.
20048         (sdot_prodv8hi): Operands 1 and 2 must be register.
20049
20050 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
20051
20052         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
20053         initialize align to silence bogus warning.
20054
20055 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
20056
20057         PR middle-end/22156
20058         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
20059         all_no_warning.
20060         (struct sra_walk_fns): Remove use_all parameter from use.
20061         (sra_hash_tree): Handle BIT_FIELD_REFs.
20062         (sra_elt_hash): Don't hash bitfld blocks.
20063         (sra_elt_eq): Skip them in parent compares as well.  Handle
20064         BIT_FIELD_REFs.
20065         (sra_walk_expr): Don't maintain or pass down use_all_p.
20066         (scan_use): Remove use_all parameter.
20067         (scalarize_use): Likewise.  Re-expand assignment to
20068         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
20069         output, and re-scalarize after output.  Don't mark anything
20070         for no warning.
20071         (scalarize_ldst): Adjust.
20072         (scalarize_walk_gimple_modify_statement): Likewise.
20073         (build_element_name_1): Handle BIT_FIELD_REFs.
20074         (instantiate_element): Don't warn for any element whose parent
20075         is used as a whole.
20076         (instantiate_missing_elements_1): Return the sra_elt.
20077         (canon_type_for_field): New.
20078         (try_instantiate_multiple_fields): New.
20079         (instantiate_missing_elemnts): Use them.
20080         (mark_no_warning): Removed.
20081         (generate_one_element_ref): Handle BIT_FIELD_REFs.
20082         (REPLDUP, sra_build_elt_assignment): New.
20083         (generate_copy_inout): Use them.
20084         (generate_element_copy): Likewise.  Handle bitfld differences.
20085         (generate_element_zero): Don't recurse for blocks.  Use
20086         sra_build_elt_assignment.
20087         (generate_one_element_int): Take elt instead of var.  Use
20088         sra_build_elt_assignment.
20089         (generate_element_init_1): Adjust.
20090         (scalarize_use, scalarize_copy): Use REPLDUP.
20091         (scalarize_ldst): Move assert before dereference.
20092         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
20093
20094 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
20095
20096         * regmove.c: Fix unused variable warnings due to previous commit.
20097
20098 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
20099
20100         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
20101         (regmove_bb_head): Remove.
20102         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
20103         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
20104         problems with fixup_match_1.
20105         Don't initialize/free regmove_bb_head.
20106
20107         (reg_is_remote_constant_p): If an insn is in the same basic block
20108         but not before INSN, consider it remote, too.
20109
20110 2007-04-05  Anatoly Sokolov <aesok@post.ru>
20111
20112         PR target/25448
20113         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
20114         DECL_ASSEMBLER_NAME, not the DECL_NAME.
20115
20116 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
20117
20118         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
20119         (CONDITIONAL_REGISTER_USAGE): Likewise.
20120
20121 2007-04-04  Richard Henderson  <rth@redhat.com>
20122
20123         * config/alpha/lib1funcs.asm: Remove unused file.
20124
20125 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
20126
20127         PR other/31356
20128         * opts.c (print_specific_help): Fix --help=<language>
20129         header line.
20130         (common_handle_option): Support --help=common.
20131
20132 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
20133
20134         PR other/31353
20135         * gcc.c (main): Do not run the linker if
20136         print_subprocess_help indicates that it shouldn't be
20137         run.
20138
20139 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
20140
20141         PR doc/31355
20142         * doc/invoke.texi (--help=): Document <languages> value, fix
20143         formatting in tables of values.
20144
20145 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
20146
20147         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
20148         dllimport attribute of virtual methods.
20149
20150 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
20151
20152         * config/score/crti.asm: Change _bss_start to __bss_start.
20153         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
20154         (OUTGOING_REG_PARM_STACK_SPACE) update.
20155         * config/score/score.opt: add options to make backend support
20156         score5, score5u, score7 and score7d.
20157         * config/score/score.md: Likewise.
20158         * config/score/misc.md: Likewise.
20159         * config/score/mac.md: Likewise.
20160         * doc/invoke.texi: Likewise.
20161         * doc/md.texi: update constraints define.
20162
20163 2007-04-03  Richard Henderson  <rth@redhat.com>
20164
20165         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
20166         an appropriate type, use the mode instead.
20167
20168 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
20169
20170         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
20171         Set the default --with-arch setting to mips2.
20172         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
20173         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
20174         (MULTILIB_OSDIRNAMES): Delete.
20175         (MULTILIB_DIRNAMES): Define.
20176         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
20177         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
20178         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
20179         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
20180         VXWORKS_OS_CPP_BUILTINS.
20181         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
20182         (MIPS_DEBUGGING_INFO): Undefine.
20183         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
20184
20185 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
20186
20187         PR middle-end/30704
20188         * fold-const.c (native_encode_real): Encode real.c provided longs
20189         as a series of 32-bit native integers.
20190         (native_interpret_real): Interpret buffer as a series of 32-bit
20191         native integers.
20192
20193 2007-04-03  Richard Guenther  <rguenther@suse.de>
20194
20195         * genpreds.c (write_insn_constraint_len): Write function
20196         optimized for CONSTRAINT_LEN implementation.
20197         (write_tm_preds_h): Output insn_constraint_len inline and
20198         use it for CONSTRAINT_LEN.
20199         (write_insn_preds_c): Don't output insn_constraint_len.
20200         * doc/md.texi (define_register_constraint): Document multi-letter
20201         constraints shall have the same length if they start with the same
20202         letter.
20203
20204 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
20205
20206         PR target/31175
20207         * config/i386/i386.md (isinf<mode>2): Expand only when
20208         TARGET_C99_FUNCTIONS is set.
20209
20210 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
20211
20212         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
20213         (x86_64-*-linux*): Ditto.
20214         * config/i386/i386.opt (mpc): New option.
20215         * config/i386/i386.c (overrride_options): Handle
20216         ix87_precision_string.
20217         * config/i386/crtprec.c: New file.
20218         * config/i386/t-crtpc: Ditto.
20219         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
20220         and -mpc80 options.
20221         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
20222         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
20223         crtprec32.o, crtprec64.o and crtprec80.o.
20224
20225         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
20226         and -mpc80 options.
20227         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
20228
20229 2007-04-02  Eric Christopher  <echristo@apple.com>
20230
20231         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
20232         limitations on darwin.
20233
20234 2007-04-02  Anatoly Sokolov <aesok@post.ru>
20235
20236         PR target/31137
20237         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
20238
20239 2007-04-02  Dave Korn  <dave.korn@artimi.com>
20240
20241         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
20242
20243 2007-04-02  Dave Korn  <dave.korn@artimi.com>
20244
20245         * libgcc2.h (exception_descriptor): Don't forward-declare.
20246         (__get_eh_table_language, __get_eh_table_version): Delete
20247         prototypes of long-dead functions.
20248
20249 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
20250
20251         * ebitmap.h: New file
20252         * ebitmap.c: New file
20253         * Makefile.in (ebitmap.o): New target.
20254
20255 2007-04-01  Jan Hubicka  <jh@suse.cz>
20256
20257         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
20258         before very first instruction.
20259
20260 2007-04-01  Jan Hubicka  <jh@suse.cz>
20261
20262         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
20263         waring on 64bit hosts.
20264         * bitmap.h: Fix typo in bitmap_head_def.
20265
20266 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
20267
20268         PR rtl-optimization/31391
20269         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
20270         into a DELETED_LABEL note, and the label is in an empty basic
20271         block, update BB_END as well as BB_HEAD.
20272
20273 2007-04-01  Richard Henderson  <rth@redhat.com>
20274
20275         PR tree-optimization/31169
20276         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
20277         to varying if the range is outside [0,  prec-1].
20278
20279 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
20280
20281         PR target/31388
20282         * config/mips/mips.md (load_const_gp): New insn.
20283         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
20284         the MIPS16 GP pseudo register if no_new_pseudos.
20285         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
20286
20287 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20288
20289         PR target/31364
20290         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
20291         secureplt.
20292         (call_value): Likewise.
20293
20294 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
20295             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20296
20297         PR 14737
20298         * doc/invoke.texi: (optimization options): Reword description
20299         of -ffast-math. Document its primary purpose.
20300
20301 2007-03-31  Richard Guenther  <rguenther@suse.de>
20302
20303         * omp-low.c (splay-tree.h): Include.
20304         (lookup_decl): Replace splay-tree usage by pointer-map.
20305         (maybe_lookup_decl): Likewise.
20306         (new_omp_context): Likewise.
20307         (delete_omp_context): Likewise.
20308         * gimplify.c (splay-tree.h): Include.
20309         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
20310         pointer-map.
20311         (remap_ssa_name): Likewise.
20312         (remap_decl): Likewise.
20313         (remap_type_1): Likewise.
20314         (remap_type): Likewise.
20315         (copy_body_r): Likewise.
20316         (expand_call_inline): Likewise.
20317         (clone_body): Likewise.
20318         (copy_tree_r): Likewise.
20319         (remap_save_expr): Likewise.
20320         (unsave_r): Likewise.
20321         (unsave_expr_now): Likewise.
20322         (tree_function_versioning): Likewise.
20323         (build_duplicate_type): Likewise.
20324         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
20325         (struct copy_body_data): Replace splay-tree by pointer-map.
20326         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
20327         not $(SPLAY_TREE_H).
20328         (gimplify.o): Depend on $(SPLAY_TREE_H).
20329         (omp-low.p): Likewise.
20330
20331 2007-03-31  Anatoly Sokolov <aesok@post.ru>
20332
20333         * config/avr/predicates.md (even_register_operand,
20334         odd_register_operand): New predicates.
20335         * config/avr/avr.md (movw peephole2): New.
20336         (movw_r peephole2): New.
20337
20338 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
20339
20340         * tree.h (get_signed_or_unsigned_type): New.
20341         * fold-const.c (operand_equal_for_comparison_p): Use
20342         get_signed_or_unsigned_type instead of
20343         lang_hooks.types.signed_or_unsigned_type.
20344         * expr.c (store_expr): Ditto.
20345         * langhooks.c (get_signed_or_unsigned_type): New.
20346         (lhd_signed_or_unsigned_type): New.
20347         * langhooks.h (lhd_signed_or_unsigned_type): New.
20348         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
20349
20350 2007-03-30  Richard Henderson  <rth@redhat.com>
20351
20352         * tree-ssa-loop-ivopts.c: Include target.h.
20353         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
20354         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
20355         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
20356         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
20357
20358 2007-03-30  Richard Henderson  <rth@redhat.com>
20359             Kai Tietz  <kai.tietz@onevision.com>
20360
20361         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
20362         default for 64-bit.
20363         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
20364         (TARGET_64BIT_MS_ABI): New.
20365         (DBX_REGISTER_NUMBER): Handle 64-bit.
20366         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
20367         (LONG_TYPE_SIZE): Force to 32.
20368         (REG_PARM_STACK_SPACE): New.
20369         (OUTGOING_REG_PARM_STACK_SPACE): New.
20370         (REGPARM_MAX, SSE_REGPARM_MAX): New.
20371         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
20372         (STACK_BOUNDARY): Use 128 for 64-bit.
20373         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
20374         Add 64-bit implementation.
20375         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
20376         argument unused.
20377         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
20378         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
20379         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
20380         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
20381         (ix86_handle_cconv_attribute): Don't warn when ignoring if
20382         TARGET_64BIT_MS_ABI.
20383         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
20384         (ix86_pass_by_reference): Likewise.
20385         (ix86_function_value_regno_p): Likewise.
20386         (ix86_build_builtin_va_list): Likewise.
20387         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
20388         (function_arg_advance_ms_64): New.
20389         (function_arg_advance): Call it.
20390         (function_arg_ms_64): New.
20391         (function_arg): Call it.
20392         (function_value_ms_64): New.
20393         (ix86_function_value_1): Call it.
20394         (return_in_memory_ms_64): New.
20395         (ix86_return_in_memory): Call it.
20396         (setup_incoming_varargs_ms_64): New.
20397         (ix86_setup_incoming_varargs): Call it.
20398         (ix86_expand_prologue): Handle 64-bit stack probing.
20399         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
20400         (output_pic_addr_const): Likewise.
20401         (x86_this_parameter): Likewise.
20402         (x86_output_mi_thunk): Likewise.
20403         (x86_function_profiler): Likewise.
20404         (TARGET_STRICT_ARGUMENT_NAMING): New.
20405         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
20406         (TARGET_64BIT_MS_ABI): New.
20407         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
20408         * config/i386/i386.md (allocate_stack_worker): Remove.
20409         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
20410         describe the clobber of eax without a match_scratch.
20411         (allocate_stack_worker_postreload): Remove.
20412         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
20413         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
20414         (allocate_stack_worker_rex64_postreload): Remove.
20415         (allocate_stack): Handle 64-bit.
20416         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
20417         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
20418         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
20419         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
20420         (STANDARD_STARTFILE_PREFIX_1): Likewise.
20421         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
20422         * config.build (x86_64-*-mingw*): New host.
20423         * config.host (x86_64-*-mingw*): New host.
20424         * config.gcc (x86_64-*-mingw*): New target.
20425         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
20426
20427 2007-03-30  Richard Henderson  <rth@redhat.com>
20428             Kai Tietz  <kai.tietz@onevision.com>
20429
20430         * c-pragma.c (struct def_pragma_macro_value): New.
20431         (struct def_pragma_macro): New.
20432         (pushed_macro_table): New.
20433         (dpm_hash, dpm_eq): New.
20434         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
20435         (init_pragma): Install them.
20436         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
20437
20438 2007-03-30  Anatoly Sokolov <aesok@post.ru>
20439
20440         * config/avr/avr.c (avr_override_options): Clear
20441         'flag_delete_null_pointer_checks'.
20442
20443 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
20444
20445         PR c++/26099
20446         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
20447         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
20448         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
20449         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
20450         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
20451         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
20452         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
20453         C++ extensions.
20454         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
20455
20456 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
20457
20458         * regmove.c: Move all of pass_stack_adjustments from here...
20459         * combine-stack-adj.c: ...to this new file.
20460         * Makefile.in: Add rules for combine-stack-adj.o.
20461
20462 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
20463
20464         PR tree-optimization/31383
20465         * tree-data-ref.c (affine_function_equal_p): Do not require the
20466         vectors to have the same length.
20467
20468 2007-03-30  Jan Hubicka  <jh@suse.cz>
20469
20470         PR middle-end/30700
20471         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
20472         availablility; add more sanity checking; ask varpool only about
20473         VAR_DECL.
20474
20475 2007-03-29  Richard Henderson  <rth@redhat.com>
20476
20477         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
20478         to decide, but __SIZEOF_LONG_LONG__.
20479
20480 2007-03-29  Richard Henderson  <rth@redhat.com>
20481
20482         * emutls.c (struct __emutls_array): New.
20483         (emutls_destroy): Use it instead of casting element 0 from void*.
20484         (__emutls_get_address): Likewise.
20485
20486 2007-03-29  Richard Henderson  <rth@redhat.com>
20487
20488         * varasm.c (initializer_constant_valid_p): Don't deny
20489         DECL_DLLIMPORT_P on functions.
20490
20491         * config/i386/cygming.h: Remove function declarations.
20492         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
20493         (ASM_OUTPUT_LABELREF): Remove.
20494         (COMMON_ASM_OP): Remove.
20495         (ASM_OUTPUT_COMMON): Remove.
20496         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
20497         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
20498         (ASM_DECLARE_FUNCTION_NAME): Likewise.
20499         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
20500         Rename from TARGET_ENCODE_SECTION_INFO.
20501         * config/i386/netware.h: Likewise.
20502         * config/i386/i386-protos.h: Update.
20503         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
20504         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
20505         (legitimate_constant_p): Reject dllimports.
20506         (dllimport_map, get_dllimport_decl): New.
20507         (legitimize_dllimport_symbol): New.
20508         (legitimize_address, ix86_expand_move): Use it.
20509         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
20510         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
20511         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
20512         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
20513         * config/i386/predicates.md (constant_call_address_operand): Only
20514         accept symbols; reject dllimport_p symbols.
20515         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
20516         i386_pe_maybe_record_exported_symbol.
20517         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
20518         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
20519         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
20520         trust the setting of DECL_DLLIMPORT_P.
20521         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
20522         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
20523         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
20524         tidy the argument scanning loop.
20525         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
20526         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
20527         (i386_pe_strip_name_encoding): Remove.
20528         (i386_pe_binds_local_p): New.
20529         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
20530         (i386_pe_output_labelref): Remove.
20531         (i386_pe_asm_output_aligned_decl_common): New.
20532         (i386_pe_maybe_record_exported_symbol): Rename from
20533         i386_pe_record_exported_symbol; check for dllexported symbols.
20534
20535 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
20536
20537         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
20538         add comment explaining why vsnprintf cannot be used.
20539
20540 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
20541
20542         PR tree-optimization/30666
20543         * tree.c (build_complex_type): When creating type names for DWARF2
20544         debug info, create TYPE_DECLs for TYPE_NAME instead of
20545         IDENTIFIER_NODEs.
20546         (build_common_tree_nodes_2): Use build_complex_type when building
20547         predefined complex types, to preserve canonical types.
20548
20549 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
20550
20551         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
20552         (noce_get_alt_condition): Look at it to determine whether to
20553         reverse the condition or not.
20554         (noce_get_condition): Substitute the truth for lies.
20555         (noce_find_if_block): Set the then_else_reversed field.
20556
20557 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
20558
20559         * config/fr30/fr30.md (movdi): Do not accept immediates as the
20560         destination of this insn.
20561         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
20562         than calling gen_rtx_SET directly.  Use r0 to hold the value of
20563         'address + 4' rather than a stack based temporary which can be
20564         mis-optimized away.
20565
20566 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
20567
20568         * config/s390/s390.c (s390_secondary_input_reload_class,
20569         s390_secondary_output_reload_class): Functions removed.
20570         (s390_secondary_reload): New function.
20571         (TARGET_SECONDARY_RELOAD): Target macro defined.
20572         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
20573         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
20574         * config/s390/s390.md ("reload_outti", "reload_outdi",
20575         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
20576         "reload_out<mode>"): Expanders removed.
20577         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
20578         "reload<mode>_nonoffmem_out"): Expanders added.
20579
20580 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
20581
20582         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair
20583         action if SRC->DEST replacement failed anyway.
20584
20585 2007-03-28  Mike Stump  <mrs@apple.com>
20586
20587         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
20588         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
20589         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
20590
20591 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
20592
20593         * config.gcc: Accept barcelona as a variant of amdfam10.
20594         * config/i386/i386.c (override_options): Likewise.
20595         * doc/invoke.texi: Likewise.
20596
20597 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
20598
20599         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
20600         offsets for BIT_FIELD_REF and COMPONENT_REF.
20601
20602 2007-03-28  Richard Guenther  <rguenther@suse.de>
20603
20604         * tree.c (is_global_var): Move ...
20605         * tree-flow-inline.h (is_global_var): ... here.
20606         * tree.h (is_global_var): Remove declaration.
20607
20608 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
20609
20610         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
20611         option.
20612         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
20613         * config/i386/i386.c (ix86_tune_features): Initialize new
20614         tuning option.
20615         * config/i386/predicates.md (promotable_binary_operator): Use
20616         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
20617
20618 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
20619
20620         PR target/31380
20621         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
20622
20623 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
20624
20625         * config/fr30/fr30.md (movsi_internal): Change destination
20626         constraint from m to V and add m to the end.
20627
20628 2007-03-28  Christian Bruel  <christian.bruel@st.com>
20629
20630         * config/sh/sh.md (movsi_i): Fix type attribute.
20631
20632 2007-03-28  Christian Bruel  <christian.bruel@st.com>
20633
20634         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
20635         (movsf_ie): Likewise.
20636
20637 2007-03-28  Christian Bruel  <christian.bruel@st.com>
20638
20639         * config.gcc: Add sh4-300 to multilib.
20640         * config/sh/t-mlib-sh4-300: New file.
20641
20642 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
20643
20644         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
20645         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
20646         fix_trunc<mode>di2.
20647         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
20648         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
20649         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
20650         "fixuns_trunctddi2"): Whitespace fix.
20651
20652 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
20653
20654         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
20655         the definition of struct sh_args.
20656         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
20657         CALL_COOKIE_INT_REG_GET): Likewise.
20658
20659 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
20660
20661         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
20662         transformations are applied successfully.
20663
20664 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
20665
20666         * tree.c (tree_contains_struct): Permit 512 tree codes.
20667         * tree.h (tree_contains_struct): Ditto.
20668         (MAX_TREE_CODES): Ditto.
20669         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
20670         SPARE member to store remaining padding bits.
20671
20672 2007-03-27  Anatoly Sokolov <aesok@post.ru>
20673
20674         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
20675         architecture.
20676
20677 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
20678
20679         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
20680         * configure: Regenerate.
20681
20682         * configure: Regenerate using the correct version of autoconf.
20683
20684 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
20685
20686         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
20687         pointer regs.
20688         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
20689         regs to "__SP_L__" and "__SP_H__".
20690
20691 2007-03-27  Richard Guenther  <rguenther@suse.de>
20692
20693         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
20694         computations with it with a HOST_WIDE_INT variable.
20695
20696 2007-03-26  Mike Stump  <mrs@apple.com>
20697
20698         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
20699         objective-c-header, objective-c++-header and objc++-cpp-output
20700         support.
20701         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
20702
20703 2007-03-26  Richard Henderson  <rth@redhat.com>
20704
20705         PR target/31361
20706         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
20707         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
20708         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
20709         IX86_BUILTIN_PSRLQ128): New.
20710         (ix86_init_mmx_sse_builtins): Add them.
20711         (ix86_expand_builtin): Expand them.
20712         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
20713         operand 2 be TImode.
20714         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
20715         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
20716         _mm_srli_epi64): Mark __B const.
20717         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
20718         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
20719         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
20720         new two-vector shift builtins.
20721
20722 2007-03-26  Ian Lance Taylor  <iant@google.com>
20723
20724         PR tree-optimization/31345
20725         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
20726         [+INF, +INF(OVF)] into VARYING.
20727
20728 2007-03-26  Zack Weinberg  <zackw@panix.com>
20729
20730         * gengtype-parse.c: New file.
20731         * gengtype-yacc.y: Delete.
20732         * gengtype-lex.l: Don't include gengtype-yacc.h.
20733         Define YY_DECL and yyterminate appropriately for recursive
20734         descent parser.  yylval is now a string out-parameter to yylex.
20735         (HWS, EOID): New shorthand.
20736         (IWORD): Add a couple more types.
20737         (yylex): Add a setup stanza.  Remove the complex rules for
20738         detecting GTY'ed types and typedefs; replace with simple
20739         keyword detectors.  Adjust everything for the changed
20740         definition of yylval.  Ignore all pp-directives, not just #define.
20741         (yyerror): Delete.
20742         (parse_file): Rename yybegin; do not call yyparse.
20743         (yyend): New.
20744         * gengtype.c (xasprintf): Export again.
20745         (this_file): New.  Use everywhere __FILE__ was being used.
20746         (get_lang_bitmap): Special case types defined in gengtype.c.
20747         (do_typedef, new_structure): Suppress definition of certain types.
20748         (new_structure): Improve diagnostics of duplicate definitions.
20749         Make sure location_s is associated with input.h.
20750         (nreverse_pairs, define_location_structures): New functions.
20751         (main): Improve tagging of kludge types.  Remove old kludges
20752         for input.h types; use define_location_structures.
20753         * gengtype.h: Update prototypes.  Define token codes here.
20754         * Makefile.in: Remove all references to gengtype-yacc.
20755         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
20756         and gengtype.
20757         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
20758         add GTY((skip)) to the field that's only conditionally there.
20759         * doc/install.texi: Document that Bison is no longer required
20760         unless building treelang.
20761
20762         * gengtype.c: Don't include gtyp-gen.h.
20763         (srcdir): Declare here.
20764         (base_files, lang_dir_names): Allocate dynamically.
20765         (gt_files, num_gt_files, num_lang_dirs): New globals.
20766         (measure_input_list, read_input_line, read_input_list)
20767         (set_lang_bitmap): New functions.
20768         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
20769         simplify, relying on read_input_list to set up the bitmaps.
20770         (main): Arguments are no longer unused.  Check for correct number
20771         of command line arguments, set srcdir and srcdir_len, then call
20772         read_input_list, before doing anything else.  No need to worry
20773         about duplicates in main loop.
20774         * configure.ac: Simplify the calculation of all_gtfiles.
20775         Put language tags in there.  Don't set or substitute
20776         all_gtfiles_files_langs or all_gtfiles_files_frags.
20777         * Makefile.in: Revamp the way gengtype is invoked, now that it
20778         takes a file on its command line with a much simpler format.
20779         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
20780         (GTFILES): Remove duplicates and C source files.
20781         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
20782         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
20783         * configure: Regenerate.
20784
20785         * gengtype.h: Remove all type definitions to gengtype.c; leave
20786         only definitions of options_p, type_p, and pair_p as opaque
20787         pointers.  Update prototypes.
20788         * gengtype.c: Many type definitions moved here from gengtype.h.
20789         Consolidate type definitions at the top of the file.
20790         (xvasprintf): Delete.
20791         (xasprintf): Make static.
20792         (create_nested_pointer_option): Add 'next' parameter.
20793         (create_field_all, create_field_at): New functions.
20794         (create_field): Now a thin wrapper around create_field_all.
20795         (create_optional_field): Rename create_optional_field_ and add
20796         line argument.  Original name is now a macro which supplies
20797         __LINE__.
20798         (oprintf): Use vsnprintf directly.
20799         (close_output_files): Use fatal rather than perror/exit.
20800         (note_def_vec, note_def_vec_alloc): Use create_field_at.
20801         (main): Set progname.  Don't use exit.
20802         * gengtype-yacc.y (struct_fields): Use create_field_at.
20803         (option, optionseqopt): Delete.
20804         (optionseq): Consolidate productions from option here so we
20805         can use the first argument to create_option.
20806
20807         * gengtype-lex.l: Distinguish unions from structures in the
20808         token type.  Don't call find_structure; return the tag as a string.
20809         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and
20810         ENT_UNION.  Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is
20811         string.  Reorganize typedef_struct production accordingly.
20812         Use create_nested_ptr_option.
20813         * gengtype.c (create_nested_ptr_option): New function.
20814         * gengtype.h: Declare it.
20815
20816         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
20817         (string_type): Don't declare.
20818         (do_scalar_typedef): Declare.
20819         (create_scalar_type): Update prototype.
20820         * gengtype.c (string_type): Make static.
20821         (scalar_nonchar, scalar_char): New.
20822         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
20823         (resolve_typedef): Use scalar_nonchar for error recovery.
20824         (create_scalar_type): Remove name_len field.  Return scalar_char
20825         or scalar_nonchar as appropriate.
20826         (adjust_field_type): Look at scalar_is_char boolean to decide whether
20827         to use string_type.
20828         (throughout): Use scalar_nonchar instead of calling
20829         create_scalar_type, whenever possible.
20830         (main): Initialize scalar_char and scalar_nonchar before calling
20831         gen_rtx_next.
20832         * gengtype-lex.l: Adjust for removal of second argument to
20833         create_scalar_type.  Use yylval.s instead of yylval.t when
20834         returning SCALAR.
20835         * gengtype-yacc.y: Type of SCALAR is string.  Call
20836         create_scalar_type from type:SCALAR rule.  Adjust for removal of
20837         second argument to create_scalar_type.
20838
20839         * vec.h: Remove all #if IN_GENGTYPE blocks.
20840         Add comment saying that changes may require adjustments to gengtype.
20841         * gengtype.c: Don't include coretypes.h or tm.h.
20842         Add comment to inclusion of errors.h.
20843         (note_def_vec, note_def_vec_alloc): New functions.
20844         * gengtype.h: Declare new functions.
20845         * gengtype-lex.l: Don't include coretypes.h.
20846         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
20847         Delete.
20848         (update_lineno): Remove unnecessary prototype.
20849         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
20850         (VEC rule): Just return VEC_TOKEN.
20851         * gengtype-yacc.y (VEC_TOKEN): New token type.
20852         (type): Add a production for VEC(a,b).
20853         * Makefile.in: Update dependencies.
20854
20855         * gengtype-lex.l: Remove rules for parsing pointer-to-function
20856         typedefs that use the old PARAMS macro.
20857
20858         * gengtype-lex.l: Remove all rules and states relating to yacc
20859         input files.
20860         * gengtype-yacc.y: Similarly.
20861         * gengtype.c (note_yacc_type): Delete function.
20862         * gengtype.h: Update prototypes.
20863
20864 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
20865
20866         * tree-pretty-print.c (dump_generic_node): Report precision of
20867         unnamed integer types.
20868
20869 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
20870
20871         * ifcvt.c (noce_try_store_flag_constants): Don't check
20872         no_new_pseudos here.
20873         (noce_try_store_flag_constants): Don't check no_new_pseudos.
20874         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
20875         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
20876         noce_try_sign_mask): Likewise.
20877         (if_convert): Check no_new_pseudos here.
20878
20879         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
20880         Remove prototypes.
20881         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
20882         (noce_get_condition): Handle new then_else_reversed argument.
20883         (noce_init_if_info): Remove, fold into noce_find_if_block.
20884         (noce_process_if_block): Take a struct noce_if_info as the
20885         argument.  Don't set up one based on ce_if_info.  Update pointer
20886         references accordingly.
20887         (cond_move_process_if_block): Likewise.
20888         (process_if_block): Removed.
20889         (find_if_block): Removed.  Move functionality two new functions,
20890         noce_find_if_block and cond_exec_find_if_block.
20891         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
20892         blocks and the symmetric IF-ELSE-JOIN case.
20893         (cond_exec_find_if_block): Also new function mostly based on old
20894         find_if_block and process_if_block.
20895         (find_if_header): Replace find_if_block call with separately
20896         guarded calls to noce_find_if_block and cond_exec_find_if_block.
20897         (find_cond_trap): Update noce_get_condition call.
20898         (dead_or_predicable): Likewise.
20899
20900 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
20901
20902         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
20903         Remove.
20904         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
20905         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
20906         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
20907         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
20908         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
20909         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
20910         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
20911         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
20912         __builtin_ia32_psrad128 builtins.
20913
20914 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
20915
20916         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
20917         * config/i386/constraints.md
20918         (define_constraint "I"): Use IN_RANGE macro.
20919         (define_constraint "J"): Ditto.
20920         (define_constraint "K"): Ditto.
20921         (define_constraint "M"): Ditto.
20922         (define_constraint "N"): Ditto.
20923         (define_constraint "O"): Ditto.
20924         * config/i386/predicates.md
20925         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
20926         (define_predicate "const_0_to_3_operand"): Ditto.
20927         (define_predicate "const_0_to_7_operand"): Ditto.
20928         (define_predicate "const_0_to_15_operand"): Ditto.
20929         (define_predicate "const_0_to_63_operand"): Ditto.
20930         (define_predicate "const_0_to_255_operand"): Ditto.
20931         (define_predicate "const_1_to_31_operand"): Ditto.
20932         (define_predicate "const_2_to_3_operand"): Ditto.
20933         (define_predicate "const_4_to_7_operand"): Ditto.
20934
20935 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
20936
20937         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
20938         in SImode for save_world.
20939         * config/rs6000/altivec.md (save_world, restore_world): Convert to
20940         LR hard reg.
20941
20942 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
20943
20944         PR tree-optimization/30784
20945         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
20946         BIT_FIELD_REF.
20947
20948 2007-03-25  Revital Eres  <eres@il.ibm.com>
20949
20950         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
20951           Fold movement_possibility function into it.
20952
20953 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
20954
20955         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
20956         (load_macho_picbase_{si,di}): Convert to LR hard reg.
20957         (call_indirect_nonlocal_darwin64): Same.
20958         (call_nonlocal_darwin64): Same.
20959         (call_value_indirect_nonlocal_darwin64): Same.
20960         (call_value_nonlocal_darwin64): Same.
20961         (sibcall_nonlocal_darwin64): Same.
20962         (sibcall_value_nonlocal_darwin64): Same.
20963         (sibcall_symbolic_64): Same.
20964         (sibcall_value_symbolic_64): Same.
20965         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
20966         LR pseudo.
20967         (rs6000_emit_load_toc_table): Same.
20968         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
20969         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
20970         (mull_call): Same.
20971         (divss_call): Same.
20972         (divus_call): Same.
20973         (quoss_call): Same.
20974         (quous_call): Same.
20975         (load_toc_v4_pic_si): Same
20976         (load_toc_v4_PIC_1): Same.
20977         (load_toc_v4_PIC_1b): Same.
20978         (call_indirect_aix{32,64}): Same.
20979         (call_value_indirect_aix{32,64}): Same.
20980         (call): Same.
20981         (call_value): Same.
20982         (call_local{32,64}): Same.
20983         (call_value_local{32,64}): Same.
20984         (call_indirect_nonlocal_aix{32,64}): Same.
20985         (call_nonlocal_aix{32,64}): Same.
20986         (call_value_indirect_nonlocal_aix{32,64}): Same.
20987         (call_value_nonlocal_aix{32,64}): Same.
20988         (call_indirect_nonlocal_sysv<mode>): Same.
20989         (call_nonlocal_sysv<mode>): Same.
20990         (call_value_indirect_nonlocal_sysv<mode>): Same.
20991         (call_value_nonlocal_sysv<mode>): Same.
20992         (sibcall): Same.
20993         (sibcall_local{32,64}): Same.
20994         (sibcall_value_local{32,64}): Same.
20995         (sibcall_nonlocal_aix{32,64}): Same.
20996         (sibcall_value_nonlocal_aix{32,64}): Same.
20997         (sibcall_nonlocal_sysv<mode>): Same.
20998         (sibcall_value): Same.
20999         (sibcall_value_nonlocal_sysv<mode>): Same.
21000
21001 2007-03-24  Paul Brook  <paul@codesourcery.com>
21002
21003         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
21004         * config/arm/linux-eabi.h: Remove legacy syscall hack.
21005
21006 2007-03-24  Richard Henderson  <rth@redhat.com>
21007
21008         * config/ia64/constraints.md: New file.
21009         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
21010         satisfies_constraint_?.
21011         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
21012         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
21013         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
21014         ia64_output_mi_thunk): Likewise.
21015         (ia64_const_ok_for_letter_p): Remove.
21016         (ia64_const_double_ok_for_letter_p): Remove.
21017         (ia64_extra_constraint): Remove.
21018         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
21019         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
21020         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
21021         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
21022         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
21023         EXTRA_MEMORY_CONSTRAINT): Remove.
21024         * config/ia64/ia64.md: Include constriants.md.  Replace
21025         CONST_OK_FOR_? with satisfies_constraint_?.
21026
21027 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
21028             H.J. Lu  <hongjiu.lu@intel.com>
21029
21030         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
21031         DPD or BID name.
21032         (name macros): Use DPD_BID_NAME to convert names properly.
21033
21034         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
21035         decimal floating point format.
21036         (init_floating_libfuncs): Change decimal functions so that they
21037         have a "bid_" prefix if the decimal system uses the BID format,
21038         and "dpd_" prefix if the decimal system uses the DPD format.
21039         (init_interclass_conv_libfuncs): Ditto.
21040         (init_intraclass_conv_libfuncs): Ditto.
21041
21042         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
21043         using the BID format.
21044
21045         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
21046         whether we are using the BID decimal format.
21047         * configure: Regenerate.
21048
21049         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
21050         the compiler has decimal floating point enabled.  Define
21051         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
21052         instead of DPD.
21053
21054         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
21055         using the BID format.
21056
21057         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
21058         whether we are using the BID decimal format.
21059         * configure: Regenerate.
21060
21061         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
21062         the compiler has decimal floating point enabled.  Define
21063         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
21064         instead of DPD.
21065
21066         * doc/install.texi (--enable-decimal-float): Document BID and DPD
21067         options, and that it is enabled for i386/x86_64 systems.
21068
21069         * Makefile.in (enable_decimal_float): New.
21070         (DECNUMFMT): New.
21071         (DECNUMINC): Add  -I$(DECNUMFMT).
21072         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
21073         to $(DECNUMFMT) from $(DECNUM).
21074
21075         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
21076         Substitute enable_decimal_float.
21077         * configure: Regenerated.
21078
21079         PR other/30529
21080         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
21081         unsigned long.
21082
21083         * configure.ac: Enable decimal float for x86_64-*-linux*.
21084         * configure: Regenerated.
21085
21086         PR other/30530
21087         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
21088         decimal128ClearSign to flip and clear the sign bit in decimal128.
21089         (decimal_real_maxval): Set decimal128SetSign to set the sign
21090         bit in decimal128.
21091
21092 2007-03-23  Ian Lance Taylor  <iant@google.com>
21093
21094         * fold-const.c (fold_binary): Correct warning for X - c >= X.
21095
21096 2007-03-23  Ian Lance Taylor  <iant@google.com>
21097
21098         * tree-dump.c (dump_files): Correct comment.
21099
21100 2007-03-23  Ian Lance Taylor  <iant@google.com>
21101
21102         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
21103
21104 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
21105
21106         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
21107         in cfglayout mode.  Don't go into and out of cfglayout mode.
21108         Link the blocks in the order of the constructed traces.
21109         (rest_of_handle_tracer): Adjust call to tracer.
21110         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
21111         Don't go into cfglayout mode.
21112         (rtl_loop_done): Don't go out of cfglayout mode.
21113         * cfglayout.c (relink_block_chain): New function, split out from...
21114         (fixup_reorder_chain): ...here.  Remove redundant checking.
21115         (cfg_layout_finalize): Don't clear the header, footer, and aux
21116         fields here, move the code to do so to relink_block_chain.  Likewise
21117         for free_original_copy_tables.
21118         * rtl.h (tracer): Update prototype.
21119         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
21120         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
21121         mode.  Use relink_block_chain to serialize the CFG according to the
21122         new basic block order.  Move targetm.cannot_modify_jumps_p check from
21123         here...
21124         (gate_handle_reorder_blocks): ...to here.
21125         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
21126         from here...
21127         (gate_duplicate_computed_gotos): ...to here.
21128         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
21129         something always changes when going into and out of cfglayout mode.
21130         Perform an expensive cfg cleanup while going into cfglayout mode.
21131         Always update liveness information on HAVE_conditional_execution
21132         targets.  Reserialize the basic blocks and go out of cfglayout mode.
21133         * reg-stack.c: Include cfglayout.h.
21134         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
21135         the call to reorder_basic_blocks.
21136         * basic-block.h (reorder_basic_blocks): Update prototype.
21137         (relink_block_chain): New prototype.
21138         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
21139
21140 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
21141
21142         * config/mips/mips.md (type, hazard, *movdi_32bit,
21143         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
21144         *movhi_internal, *movqi_internal, *movsf_hardfloat,
21145         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
21146         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
21147         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
21148         applicable.
21149         (movcc): Change first xfer to multi.
21150         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
21151         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
21152         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
21153         config/mips/generic.md: Change reservations using "xfer" to use
21154         "mfc,mtc".
21155         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
21156         using match_operand.
21157         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
21158         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
21159         examining mode.
21160         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
21161
21162 2007-03-22  Richard Henderson  <rth@redhat.com>
21163
21164         * config/i386/i386.c: Remove unnecessary function declarations.
21165         Move targetm definition, and all related macros, to the end of
21166         the file.  Resort some functions to put definitions before uses.
21167         (ix86_attribute_table): Make static.  Move to end of file.
21168         (ix86_gimplify_va_arg): Make static.
21169
21170 2007-03-22  Richard Henderson  <rth@redhat.com>
21171
21172         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
21173         don't increase local_regparm with force_align_arg_pointer check.
21174         (ix86_function_sseregparm): Assert 32-bit.
21175         (type_has_variadic_args_p): New.
21176         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
21177         type_has_variadic_args_p.
21178         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
21179         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
21180         use memset instead.  Do maybe_vaarg check first; skip attribute
21181         tests if true; skip attribute tests for 64-bit.
21182         (construct_container): Remove TARGET_DEBUG_ARG.
21183         (function_arg_advance_32, function_arg_advance_64): Split out ...
21184         (function_arg_advance): ... from here.
21185         (function_arg_32, function_arg_64): Split out ...
21186         (function_arg): ... from here.
21187         (ix86_pass_by_reference): Tidy.
21188         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
21189         (function_value_32): New, from parts of ix86_function_value
21190         and ix86_value_regno.
21191         (function_value_64): New, from parts of ix86_function_value
21192         and ix86_libcall_value.
21193         (ix86_function_value_1): New.
21194         (ix86_function_value, ix86_libcall_value): Use it.
21195         (return_in_memory_32, return_in_memory_64): Split out ...
21196         (ix86_return_in_memory): ... from here.
21197         (ix86_struct_value_rtx): Skip for 64-bit.
21198         (ix86_libcall_value, ix86_value_regno): Remove.
21199         (setup_incoming_varargs_64): Split out ...
21200         (ix86_setup_incoming_varargs): ... from here.
21201         (ix86_va_start): Remove TARGET_DEBUG_ARG.
21202         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
21203         * config/i386/i386-protos.h (ix86_function_value): Remove.
21204         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
21205
21206 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21207
21208         PR other/23572
21209         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
21210         infinities not supported, otherwise emit warning if -Woverflow. On
21211         underflow, emit warning if -Woverflow.
21212         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
21213         and 0 otherwise.
21214         * real.h (real_from_string): Update declaration
21215
21216 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
21217             Richard Henderson  <rth@redhat.com>
21218
21219         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
21220         * calls.c (compute_argument_block_size, expand_call,
21221         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
21222         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
21223         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
21224         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
21225         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
21226         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
21227         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
21228         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
21229         Set to 1.
21230
21231 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
21232
21233         * c-incpath.c (add_sysroot_to_chain): New.
21234         (merge_include_chains): Add sysroot argument.  Call
21235         add_sysroot_to_chain if sysrooted.
21236         (register_include_chains): Update call to merge_include_chains.
21237         * doc/cppopts.texi: Document use of '=' in include directory
21238         arguments.
21239
21240 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
21241
21242         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
21243         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
21244         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
21245         insn pattern using X87MODEF12 mode macro.
21246
21247 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
21248
21249         * regmove.c (regmove_optimize): Use reg_mentioned_p
21250         instead of reg_overlap_mentioned_p for DST.
21251
21252 2007-03-21  Mike Stump  <mrs@apple.com>
21253
21254         * c.opt: Fixup for Objective-C/C++.
21255
21256 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
21257
21258         * explow.c (convert_memory_address): Fold memory reference when
21259         POINTERS_EXTEND_UNSIGNED < 0
21260
21261 2007-03-21  Richard Henderson  <rth@redhat.com>
21262
21263         PR target/31245
21264         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
21265         * config/i386/mmintrin.h (__m64): Likewise.
21266         * config/i386/xmmintrin.h (__m128): Likewise.
21267
21268 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
21269
21270         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
21271         (VXWORKS_OS_CPP_BUILTINS): Define.
21272         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
21273         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
21274
21275 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
21276
21277         * rtl.h (constant_pool_reference_p): Delete.
21278         (find_constant_src): Declare.
21279         * rtlanal.c (find_constant_src): New function.
21280         * simplify-rtx.c (constant_pool_reference_p): Delete.
21281         * config/i386/i386.md: Use find_constant_src instead of
21282         constant_pool_reference_p/avoid_constant_pool_reference pairs.
21283
21284 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
21285
21286         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
21287         * c-cppbuiltin.c (c_cpp_builtins): Define them.
21288
21289 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
21290
21291         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
21292         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
21293         (arm_elf_asm_constructor): Use it.
21294         (arm_elf_asm_destructor): New function.
21295
21296 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
21297
21298         * jump.c (mark_jump_label): Treat SEQUENCE specially.
21299
21300 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
21301
21302         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
21303
21304 2007-03-19  Andrew Haley  <aph@redhat.com>
21305
21306         PR tree-optimization/31264
21307         * tree-vrp.c (register_edge_assert_for_1): Don't look though
21308         VIEW_CONVERT_EXPRs.
21309
21310 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
21311
21312         PR rtl-optimization/30907
21313         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
21314         (fwprop_init): Always call loop_optimizer_initialize.
21315         (fwprop_done): Always call loop_optimizer_finalize.
21316         (fwprop): We always have loop info now.
21317         (gate_fwprop_addr): Remove.
21318         (pass_fwprop_addr): Use gate_fwprop as gate.
21319
21320         PR rtl-optimization/30841
21321         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
21322         df_chain_alloc): Call df_reorganize_refs unconditionally.
21323         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
21324         refs_organized to refs_organized_size.
21325         (df_ref_create_structure): Use refs_organized_size instead of
21326         bitmap_size if refs had been organized, and keep refs_organized_size
21327         up-to-date.
21328         * df.h (struct df_ref_info): Change refs_organized to
21329         refs_organized_size.
21330         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
21331         bitmap_size.
21332
21333 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
21334
21335         * except.c (output_function_exception_table): Do not reference the
21336         EH personality routine for functions that do not require an
21337         exception table.
21338
21339 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
21340
21341         PR c/30762
21342         * c-typeck.c (convert_for_assignment): Call comptypes for
21343         RECORD_TYPE or UNION_TYPE.
21344
21345         PR inline-asm/30505
21346         * reload1.c (reload): Do invalid ASM checking after
21347         cleanup_subreg_operands.
21348
21349 2007-03-19  Jeff Law  <law@redhat.com>
21350
21351         * tree-cfg.c (find_taken_edge): Tighten conditions for
21352         optimizing computed gotos.
21353
21354 2007-03-19  Michael Matz  <matz@suse.de>
21355
21356         * builtins.c (expand_builtin_sync_operation,
21357         expand_builtin_compare_and_swap,
21358         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
21359         correctly.
21360
21361         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
21362         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
21363         for operand 3.
21364
21365 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
21366
21367         * doc/tm.texi: Add brackets around the return type of
21368         TARGET_SECONDARY_RELOAD.
21369
21370 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21371         Richard Guenther  <rguenther@suse.de>
21372
21373         PR tree-optimization/31254
21374         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
21375         Use handled_component_p () where appropriate.  Continue
21376         propagating into the rhs if we propagated into an INDIRECT_REF
21377         on the lhs.
21378
21379 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
21380
21381         * config/s390/s390.md (op_type attribute): RRR instruction type added.
21382         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
21383         (xde, xdee): Mode attributes adjusted to support DFP modes.
21384         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
21385         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
21386         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
21387         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
21388         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
21389         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
21390         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
21391         numbers.
21392         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
21393         "movsf"): Insn definitions removed.
21394         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
21395         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
21396         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
21397         definitions added.
21398         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
21399         "reload_in<mode>", "reload_out<mode>"): Expander added.
21400         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
21401         Expander removed.
21402
21403 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
21404
21405         * config/s390/s390.md: Only non-functional changes.  Renamed
21406         FPR mode macro to BFP all over the file.
21407
21408 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
21409
21410         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
21411         (op_type attribute): RRF instruction type added.
21412         (fT0): New mode attribute.
21413         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
21414         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
21415         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new
21416         instruction no secondary memory is needed when moving DFmode values
21417         between GPRs and FPRs.
21418
21419 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
21420
21421         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
21422         inverted and documentation adjusted.
21423         ("mhard-dfp", "msoft-dfp"): New options.
21424         * config/s390/s390.c (s390_handle_arch_option): New architecture
21425         switch: z9-ec.
21426         (override_options): Sanity checks for the new options added.
21427         * config.gcc: New architecture switch: z9-ec.
21428         * config/s390/s390.h (processor_flags): PF_DFP added.
21429         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
21430         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
21431         when the bit is NOT set so remove it from the defaults.
21432
21433 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
21434
21435         * genemit.c (main): Print include statement for dfp.h.
21436         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
21437         is not available.
21438
21439 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
21440
21441         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
21442
21443 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
21444
21445         PR target/31022
21446         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
21447         instead of PATTERN.
21448
21449 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21450
21451         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
21452         attr_length_call, output_call, output_indirect_call): Cleanup
21453         formatting of targetm calls.
21454
21455 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
21456
21457         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
21458
21459 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21460
21461         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
21462         reservation, bypass and anti-bypass descriptions for these
21463         instructions.  Update move patterns.
21464         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
21465         TYPE_FPSTORE.
21466
21467 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
21468
21469         * tree-vect-transform.c (get_initial_def_for_induction): Replace
21470         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
21471         (get_initial_def_for_reduction): Likewise.
21472
21473 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
21474
21475         Fix PR tree-optimization/29922
21476         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
21477         (get_representative): Removed.
21478         (value_dies_in_block_x): Update for rvuse removal.
21479         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
21480         (compute_antic_aux): Handle when PHI nodes appear in
21481         non-single-successors.
21482         (dump_bitmap_of_names): Removed.
21483         (compute_antic_safe): Renamed and removed rvuse calculation.
21484         Calculate only antic safe.
21485         (insert_into_preds_of_block): Remove assert.
21486         (execute_pre): Update for renamed functions.
21487         (defer_or_phi_translate_block): New function.
21488
21489 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
21490
21491         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
21492         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
21493         typos.
21494         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
21495         Follow spelling conventions.
21496
21497         * tree-data-ref.h: Remove the prototype for analyze_array.
21498
21499 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
21500
21501         PR tree-optimization/31041
21502         * tree-vect-transform.c (get_initial_def_for_induction): Call
21503         force_gimple_operand.
21504
21505 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
21506
21507         * ipa-type-escape.c (look_for_casts) : Revert code to use
21508         handled_component_p due to ada test a-numaux.adb.
21509
21510 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
21511
21512         * final.c (final_scan_insn): Alter the condition of a
21513         conditional trap if we have nonstandard CC.
21514
21515 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
21516
21517         * configure.ac: Remove excess quoting from asm line 0 test.
21518         * configure: Rebuilt.
21519
21520 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21521
21522         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
21523         * c-common.c (convert_and_check): Move warning logic to...
21524         (warnings_for_convert_and_check): ...here. Define.
21525         * c-common.h (warnings_for_convert_and_check): Declare.
21526
21527 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21528
21529         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
21530         (output_call): Likewise.
21531
21532 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
21533
21534         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
21535
21536 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
21537
21538         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
21539
21540 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
21541
21542         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
21543         opteron, athlon-64 and athlon-fx processor_alias_table entries.
21544
21545 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
21546
21547         PR tree-optimization/31183
21548         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
21549         Use double_int instead of unsigned int for representing access_strides.
21550         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
21551
21552 2007-03-16  Richard Guenther  <rguenther@suse.de>
21553
21554         PR tree-optimization/31146
21555         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
21556         to allow recursion of forward_propagate_addr_expr.
21557         (forward_propagate_addr_into_variable_array_index): Likewise.
21558         (forward_propagate_addr_expr): Likewise.
21559         (tree_ssa_forward_propagate_single_use_vars): Likewise.
21560         (forward_propagate_addr_expr_1): Recurse on simple copies
21561         instead of propagating into them.  Do so for useless conversions
21562         as well.
21563         (forward_propagate_addr_expr): Clean up unused statements after
21564         recursion.
21565
21566 2007-03-16  Richard Guenther  <rguenther@suse.de>
21567
21568         * builtins.c (expand_builtin_cexpi): Use the right argument
21569         for the expansion via cexp.
21570
21571 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
21572
21573         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
21574         * configure: Rebuilt.
21575
21576 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
21577
21578         PR debug/29906
21579         * dwarf2out.c (force_type_die): Adjust comment.
21580         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
21581
21582 2007-03-15  DJ Delorie  <dj@redhat.com>
21583
21584         * config/frv/predicates.md (minmax_operator): Don't check operands
21585         here.
21586
21587 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
21588
21589         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
21590         Update constant estimates of number of iterations.
21591         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
21592         argument renamed to "realistic".
21593         (compute_estimated_nb_iterations): Removed.
21594         (record_niter_bound): New function.
21595         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
21596         call record_nonwrapping_iv with upper = false.
21597         (infer_loop_bounds_from_signedness): Pass upper argument to
21598         record_nonwrapping_iv.
21599         (estimate_numbers_of_iterations_loop): Do not call
21600         compute_estimated_nb_iterations.  Record estimate based on profile
21601         information.  Initialize the constant estimates of number of
21602         iterations.
21603         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
21604         estimates.
21605         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
21606         number of iterations is too small.
21607         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
21608         (EST_NOT_AVAILABLE): Removed.
21609         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
21610         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
21611         fields.
21612
21613 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
21614
21615         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
21616         Handle NE_EXPR guards.
21617
21618 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21619
21620         PR c++/24924
21621         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
21622         Set also -pedantic-errors by default for the  preprocessor unless
21623         -fpermissive is given.
21624
21625 2007-03-15  Richard Guenther  <rguenther@suse.de>
21626
21627         PR middle-end/29719
21628         PR middle-end/31161
21629         * builtins.c (expand_builtin_cexpi): As a fallback if we
21630         don't have builtins for sincos or cexp create a function
21631         declaration for cexp and expand to a call to that.
21632         (expand_builtin_int_roundingfn): Always fall
21633         back to floor/ceil and its variants even if they may be
21634         not available.
21635
21636 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
21637
21638         PR middle-end/31159
21639         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
21640         jump tables, move the call to delete_dead_jumptables from here...
21641         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
21642         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
21643         don't allow merging of blocks that try_redirect_by_replacing_jump
21644         also does not handle when not optimizing.
21645
21646 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
21647             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
21648
21649         * config/i386/i386.md (x86_sahf_1): Correctly handle
21650         HAVE_AS_IX86_SAHF.
21651
21652 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
21653
21654         PR target/31167
21655         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
21656         x86_64_general_operand as operand[2] predicate.  Remove "iF"
21657         from operand constraints and use "e" constraint instead.
21658         (*subti3_1, *subti3_1 splitter): Ditto.
21659         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
21660         operand[1] predicate.
21661
21662 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
21663
21664         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
21665         arrays, multiply the access strides by the size of the sub-array.
21666         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
21667
21668 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
21669
21670         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
21671         the configured assembler supports the sahf mnemonic.
21672         * configure: Regenerate.
21673         * config.in: Regenerate.
21674
21675         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
21676         emit "sahf" or ".byte\t0x9e" as asm template.
21677
21678 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
21679
21680         PR 31018
21681         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
21682         option to replace hard coded TARGET_xxx in md file.
21683         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
21684         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
21685         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
21686         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
21687         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
21688         (X86_TUNE_NOT_VECTORMODE): Ditto.
21689         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
21690         (TUNE_AVOID_VECTOR_DECODE): Ditto.
21691         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
21692         (TUNE_SLOW_IMUL_IMM8): Ditto.
21693         (TUNE_MOVE_M1_VIA_OR): Ditto.
21694         (TUNE_NOT_UNPAIRABLE): Ditto.
21695         (TUNE_NOT_VECTORMODE): Ditto.
21696
21697         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
21698         options.
21699
21700         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
21701         tuning options instead of hard coded TARGET_xxx.
21702         (fix ssemode peephole2's): Ditto.
21703         (imul peephole2's): Ditto.
21704         (movsi_or): Ditto.
21705         (movdi_or_rex64): Ditto.
21706         (move peephole2): Ditto.
21707         (not peephole2's): Ditto.
21708
21709 2007-03-14  Dirk Mueller  <dmueller@suse.de>
21710
21711         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
21712         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
21713         * c-parser.c (c_parser_if_body): Always add an empty statement in case
21714         of empty body.
21715         * c-parser.c (c_parser_do_statement): Warn about empty body in
21716         do/while statement.
21717         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
21718         * doc/invoke.texi (-Wempty-body): Update documentation.
21719
21720 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21721
21722         PR c/21438
21723         * c-common.h (warn_for_div_by_zero): Declare.
21724         * c-common.c (warn_for_div_by_zero): Define.
21725         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
21726         warning.
21727
21728 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
21729
21730         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
21731         to PREFIX and STANDARD_PREFIX.
21732
21733 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
21734             Phil Edwards  <phil@codesourcery.com>
21735
21736         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
21737         (__gthread_once_t): Remove busy field for RTPs.
21738         (__GTHREAD_ONCE_INIT): Update accordingly.
21739
21740 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
21741
21742         * doc/invoke.texi: Document VxWorks options.
21743
21744 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
21745
21746         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
21747
21748 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
21749
21750         PR tree-optimization/30590
21751         * tree-nrv.c (tree_nrv): Check for the partial update of the
21752         return value.
21753
21754 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
21755
21756         * flags.h (flag_random_seed): Remove declaration, in favor of...
21757         * toplev.h (get_random_seed, set_random_seed): ... these.
21758         * tree.c (get_file_function_name): Use the former.
21759         * opts.c (common_handle_option): Use the latter.
21760         * toplev.c
21761
21762 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
21763
21764         PR middle-end/31127
21765         * cse.c (cse_find_path): Do not bail out if a basic block that
21766         we already visited now becomes part of a path that starts at a
21767         different basic block.  Just disallow this, to make sure we
21768         visit each basic block at most once.
21769
21770 2007-03-13  Jan Hubicka  <jh@suse.cz>
21771
21772         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold
21773         attributes, when profile esitmate is present, calls with very low
21774         frequency are cold.
21775
21776 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
21777
21778         PR tree-optimization/30730
21779         PR tree-optimization/26900
21780         * tree-ssa-loop-niter.c: Include gmp.h.
21781         (bounds): New type.
21782         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
21783         split_to_var_and_offset, determine_value_range,
21784         bound_difference_of_offsetted_base, refine_bounds_using_guard,
21785         bound_difference, bounds_add, bounds_negate,
21786         number_of_iterations_ne_max, dump_affine_iv): New functions.
21787         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
21788         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
21789         difference of initial and final value of control iv to validate
21790         results.
21791         (number_of_iterations_cond): Add loop parameter.  Determine bounds
21792         on the difference of the extremes of the control iv.  Add dumps.
21793         (expand_simple_operations): Handle phi nodes.
21794         (simplify_using_initial_conditions): Do not record used conditions.
21795         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
21796         Do not set additional_info.
21797         (implies_nonnegative_p, implies_ge_p): Removed.
21798         (derive_constant_upper_bound): Do not use parameter `additional'.
21799         (record_estimate): Parameter `additional' removed.  Parameter
21800         `i_bound' added.  Do not call derive_constant_upper_bound.
21801         (record_nonwrapping_iv): Use derive_constant_upper_bound to
21802         bound the number of iterations estimate.
21803         (estimate_numbers_of_iterations_loop): Pass the estimate from
21804         the number of iterations analysis to record_estimate.
21805         * tree.h (multiple_of_p): Declare.
21806         * tree-scalar-evolution.c (expression_expensive_p): Removed.
21807         (scev_const_prop): Do not check expression_expensive_p.
21808         * fold-const.c (multiple_of_p): Exported.
21809         * double-int.c (double_int_mask): Exported.
21810         * double-int.h (double_int_mask): Declare.
21811         * tree-flow.h (struct tree_niter_desc): Removed additional_info
21812         field.  Added max field.
21813
21814 2007-03-13  David Taylor  <taylor@candd.org>
21815
21816         PR driver/12448:
21817         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
21818         default -MQ.
21819
21820 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21821
21822         PR target/31123
21823         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
21824         two unamed patterns.
21825
21826 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
21827
21828         * config/i386/i386.opt (mcx16, msahf): New options.
21829         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
21830         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
21831
21832         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
21833         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
21834         Output -mcx16 and -msahf options when corresponding bit is set.
21835
21836         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
21837         and -msahf options.
21838
21839 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
21840
21841         * configure.ac: Test for assembler tolerance to # 0 "".
21842         * configure, config.in: Rebuilt.
21843         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
21844
21845 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
21846
21847         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
21848
21849         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
21850         (handle_syscall): Handle direct system calls.
21851         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
21852
21853 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
21854
21855         * doc/invoke.texi: Fix cpp.info cross-reference.
21856         * doc/passes.texi: Fix gcc.info cross-reference.
21857
21858 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
21859
21860         PR tree-optimization/30835
21861         * lambda-code.c (can_convert_to_perfect_nest): Check whether
21862         bb_for_stmt is not NULL before accessing it.
21863
21864 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
21865
21866         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
21867         some multilibs.
21868
21869 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
21870
21871         PR 30635
21872         * doc/install.texi: Document --enable-stage1-languages
21873
21874 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
21875
21876         * tree-pass.h (pass_into_cfg_layout_mode,
21877         pass_outof_cfg_layout_mode): Declare.
21878         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
21879         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
21880         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
21881         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
21882
21883 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
21884
21885         * c-decl.c (warn_variable_length_array): New function.
21886         Refactored from grokdeclarator to handle warn_vla
21887         and handle unnamed array case.
21888         (grokdeclarator): Refactored VLA warning case.
21889         * c.opt (Wvla): New flag.
21890         * doc/invoke.texi (Wvla): New warning.
21891
21892 2007-03-12  Richard Henderson  <rth@redhat.com>
21893
21894         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
21895         (TARGET_SECTION_TYPE_FLAGS): New.
21896
21897 2007-03-12  Richard Henderson  <rth@redhat.com>
21898
21899         * config/darwin.c (machopic_reloc_rw_mask): New.
21900         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
21901         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
21902
21903 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
21904
21905         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
21906         * cppdefault.h (cpp_PREFIX): Document.
21907         (cpp_PREFIX_len): Likewise.
21908         (cpp_EXEC_PREFIX): New variable.
21909         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
21910         * c-incpath.c (add_standard_paths): Correct logic for relocating
21911         paths within prefix.
21912
21913 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
21914
21915         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
21916         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
21917         mode macro.
21918         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
21919         fix_truncdfdi_sse using SSEMODEF mode macro.
21920         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
21921         fix_truncdfsi_sse using SSEMODEF mode macro.
21922         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
21923         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
21924
21925 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
21926
21927         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
21928         elfos.h to tm_file.
21929
21930 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
21931
21932         * tree.h : Add multiple_of_p declaration.
21933         * fold-const.c (multiple_of_p): Make multiple_of_p public.
21934         * ipa-type-escape.c (results_of_malloc): Redundant.
21935         (visited_stmts): New. Visited stmt for walk_use_def_chains.
21936         (cast_type): Extended with new members.
21937         (check_cast): Returns cast_type.
21938         (cast): New structure for data of walk_use_def_chains.
21939         (is_malloc_result, is_cast_from_non_pointer_1,
21940         is_cast_from_non_pointer,
21941         is_array_access_through_pointer_and_index): New functions.
21942         (look_for_casts): Returns cast types.
21943         (check_call): Returns void.
21944         (okay_pointer_operation): Use support of pointer plus index,
21945         pointer plus constant and allow all multiplications.
21946
21947 2007-03-11  Richard Guenther  <rguenther@suse.de>
21948
21949         PR tree-optimization/31115
21950         * tree-vrp.c (extract_range_from_binary_expr): Make sure
21951         the shift count is positive and non-anti-range for RSHIFT_EXPR.
21952         A shift count of zero is not special as with *_DIV_EXPR.
21953         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
21954         direction.
21955
21956 2007-03-11  Ian Lance Taylor  <iant@google.com>
21957
21958         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
21959         the *_DIV_EXPR codes correctly with overflow infinities.
21960
21961 2007-03-11  Ira Rosen  <irar@il.ibm.com>
21962
21963         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
21964         indicate success/failure of the analysis. Add negation to subtrahend
21965         in case of subtraction. Fail if both operands contain constants.
21966         (create_data_ref): Fail if analyze_offset fails.
21967
21968 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
21969
21970         * config/i386/i386.md (frndintxf2): Rename to ...
21971         (rintxf2): ... this. Remove expander having same name.
21972         (rintsf2, rintdf2): Implement using SSEMODEF macro.
21973         (roundsf2, rounddf2): Ditto.
21974         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
21975         (lround<mode>di2, lround<mode>si2): Ditto.
21976
21977 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
21978
21979         * lower-subreg.c: Include except.h.
21980         (decompose_multiword_subregs): Verify that the only control flow
21981         insns we can split are loads to multi-words pseudos.
21982         Handle breaking such blocks after splitting, instead of calling
21983         find_many_sub_basic_blocks.
21984
21985         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
21986         on the new basic block.  Add a lengthy comment explaining why we
21987         thought this was necessary.
21988         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
21989
21990 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
21991
21992         PR c++/30924
21993         * tree.c (walk_type_fields): Recurse into the element type of
21994         ARRAY_TYPEs if there is a pointer set.
21995
21996 2007-03-10  Dirk Mueller  <dmueller@suse.de>
21997
21998         * c-common.c (warn_logical_operator): Fix condition.
21999
22000 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
22001
22002         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
22003         quotation mark.
22004         * config/darwin.c (machopic_select_section): Remove superfluous
22005         argument in call to categorize_decl_for_section.  Remove unused
22006         variable shlib.
22007
22008 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
22009
22010         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
22011         defined.
22012         * configure: Regenerate.
22013
22014 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
22015
22016         PR target/31101
22017         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
22018         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
22019         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
22020         Add LABEL_NUSES to emitted label.
22021         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
22022         branch probability value to emitted jump insn.
22023         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
22024         Do not check life information and do not re-arrange input operands
22025         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
22026
22027 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
22028
22029         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
22030         the change of decode_asm_operands.
22031
22032 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
22033
22034         * mode-switching.c (create_pre_exit): Skip blockage insn.
22035
22036 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
22037
22038         * tree-pass.h (TODO_update_smt_usage): Remove.
22039         Update all users.
22040         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
22041         argument SOME.
22042         Update all users.
22043
22044 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22045
22046         * pa.c (attr_length_call): Revise condition for long
22047         pc-relative branch.
22048         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long
22049         local calls on the SOM target.  Don't use "LONG_PIC_PCREL" call
22050         sequence on SOM target.
22051
22052 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
22053
22054         * gcc.c: Document %{, in big comment at top.
22055         (input_suffix_matches): Remove special handling for .s and
22056         .S.
22057         (input_spec_matches): New.
22058         (handle_braces): Handle %{,.
22059         (validate_switches): ',' indicates a value which is not a switch.
22060         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
22061         to detect assembler input.
22062         * config/i386/sol2.h (CPP_SPEC): Likewise.
22063         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
22064         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
22065         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
22066         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
22067         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
22068         -m64 causes deployment target to default to 10.5.
22069         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
22070
22071 2007-03-09  Richard Henderson  <rth@redhat.com>
22072
22073         PR target/26090
22074         * target.h (targetm.asm.out.reloc_rw_mask): New.
22075         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
22076         (TARGET_ASM_OUT): Use it.
22077         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
22078         * varasm.c (categorize_decl_for_section): Remove shlib argument;
22079         use the new reloc_rw_mask target hook instead.
22080         (default_section_type_flags_1): Merge into...
22081         (default_section_type_flags): ... here.
22082         (decl_readonly_section_1): Merge into...
22083         (decl_readonly_section): ... here.
22084         (default_elf_select_section_1): Merge into...
22085         (default_elf_select_section): ... here.
22086         (default_unique_section_1): Merge into...
22087         (default_unique_section): ... here.
22088         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
22089         (default_select_rtx_section): Use it.
22090         (default_elf_select_rtx_section): Likewise.
22091         * output.h: Update to match.
22092         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
22093         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
22094         (TARGET_ASM_RELOC_RW_MASK): New.
22095         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
22096         to categorize_decl_for_section.
22097         (x86_64_elf_unique_section): Likewise.
22098         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
22099         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
22100         (TARGET_ASM_RELOC_RW_MASK): New.
22101         * config/ia64/ia64.c (ia64_rwreloc_select_section,
22102         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
22103         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
22104         (TARGET_RWRELOC): Remove.
22105         (ia64_section_type_flags): Adjust call to default_section_type_flags.
22106         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
22107         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
22108         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
22109         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
22110         (rs6000_xcoff_select_section): Use decl_readonly_section.
22111         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
22112         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
22113         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
22114         (TARGET_SECTION_TYPE_FLAGS): Remove.
22115         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
22116
22117 2007-03-09  Roger Sayle  <roger@eyesopen.com>
22118
22119         * fold-const.c (fold_comparison): Remove compile-time evaluation of
22120         complex constant equality/inequality comparisons for here.
22121         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
22122         known at compile-time or can be simplified to a scalar comparison.
22123         (fold_relational_const): Move compile-time evaluation of complex
22124         constant equality/inequality comparisons to here.
22125
22126 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
22127
22128         PR rtl-optimization/30643
22129         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
22130         dest_addr_elt.
22131         (fold_rtx): Recurse, like before 2006-11-03.
22132
22133 2007-03-09  DJ Delorie  <dj@redhat.com>
22134
22135         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
22136         m32c-pragma.o.
22137
22138 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
22139
22140         PR tree-optimization/30375
22141         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
22142         LHS of statements is not the same.
22143         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
22144
22145 2007-03-09  Chao-ying Fu  <fu@mips.com>
22146
22147         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
22148         REV 2.
22149         * doc/invoke.texi (-mdspr2): Document new option.
22150         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
22151         New unspec for DSP REV 2.
22152         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
22153         these instructions are extended in DSP REV 2.
22154         (mips-dspr2.md): Include.
22155         * config/mips/mips.opt (mdspr2): New option.
22156         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
22157         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
22158         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
22159         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
22160         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
22161         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
22162         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
22163         and 2 builtins.
22164         (bdesc_map): Add one field of unsupported_target_flags.
22165         (bdesc_arrays): Update entries to have extra fields.  Add
22166         dsp_32only_bdesc.
22167         (mips_init_builtins): Initialize new function types.
22168         Check unsupported_target_fileds to filter out builtins.
22169         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
22170         TARGET_DSPR2.
22171         (ASM_SPEC): Pass mdspr2 to the assembler.
22172         * config/mips/mips-dspr2.md: New file.
22173
22174 2007-03-09  Sa Liu  <saliu@de.ibm.com>
22175
22176         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
22177
22178 2007-03-09  Ian Lance Taylor  <iant@google.com>
22179
22180         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
22181         argument) like -Wstrict-overflow=2.
22182         * doc/invoke.texi (Warning Options): Update documentation.
22183
22184 2007-03-09  Dirk Mueller  <dmueller@suse.de>
22185
22186         PR c++/17946
22187         * doc/invoke.texi (-Wlogical-op): Document.
22188         * common.opt (-Wlogical-op): New.
22189         * c-common.h (warn_logical_operator): Declare.
22190         * c-common.c (warn_logical_operator): Define.
22191         * c-typeck.c (parser_build_binary_op): Call
22192         warn_logical_operator.
22193
22194 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
22195
22196         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
22197         * final.c (final_scan_insn): Test for non-"" file name.
22198
22199 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
22200
22201         * doc/loop.texi: Document the Omega linear constraints solver.
22202         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
22203         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
22204         omega-hash-table-size, omega-max-keys, and
22205         omega-eliminate-redundant-constraints.
22206         * tree-pass.h (pass_check_data_deps): Declared.
22207         * omega.c: New.
22208         * omega.h: New.
22209         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
22210         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
22211         pass_check_data_deps): New.
22212         * tree-data-ref.c (init_data_ref): Remove declaration.
22213         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
22214         (analyze_array): Renamed init_array_ref, move up initializations.
22215         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
22216         Removed arguments that are set to NULL.
22217         (analyze_indirect_ref): Correct indentation, correct call to
22218         init_pointer_ref.
22219         (object_analysis): Call init_array_ref instead of analyze_array.
22220         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
22221         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
22222         of DR_ACCESS_FNS_ADDR.
22223         (init_omega_eq_with_af, omega_extract_distance_vectors,
22224         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
22225         ddr_consistent_p): New.
22226         (compute_affine_dependence): Check consistency of ddrs when
22227         flag_check_data_deps is passed.
22228         (analyze_all_data_dependences): Uncomment.
22229         (tree_check_data_deps): New.
22230         * tree-data-ref.h: Include omega.h.
22231         (DR_ACCESS_FNS_ADDR): Removed.
22232         (data_dependence_relation): Add inner_loop.
22233         (DDR_INNER_LOOP): New.
22234         * common.opt (fcheck-data-deps): New.
22235         * tree-flow.h (tree_check_data_deps): Declare.
22236         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
22237         (OBJS-common): Depend on omega.o.
22238         (omega.o): Define.
22239         * passes.c (pass_check_data_deps): Scheduled.
22240         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
22241         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
22242         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
22243         PARAM_VECT_MAX_VERSION_CHECKS,
22244         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
22245
22246 2007-03-09  Richard Guenther  <rguenther@suse.de>
22247
22248         PR tree-optimization/30904
22249         PR middle-end/31058
22250         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
22251         the same way as *_DIV_EXPR.
22252
22253 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
22254
22255         * recog.c (decode_asm_operands): No mixed declarations and code.
22256
22257 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
22258
22259         * rtl.def (ASM_INPUT): Add location.
22260         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
22261         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
22262         (decode_asm_operands): Add loc operand.
22263         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
22264         * stmt.c (expand_asm): Rename to...
22265         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
22266         gen_rtx_ASM_INPUT_loc.
22267         (expand_asm_expr): Adjust.
22268         * recog.c (decode_asm_operands): Add loc operand.
22269         (check_asm_operands, extract_insn): Adjust.
22270         * reload1.c (maybe_fix_stack_asms): Likewise.
22271         * final.c (asm_insn_count): Likewise.
22272         (final_scan_insn): Output # line before and after asm.
22273
22274 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
22275
22276         * tree-ssa-structalias.c (variable_info): Remove
22277         finished_solution.
22278         (new_var_info): Ditto.
22279         (shared_bitmap_info_t): New structure.
22280         (shared_bitmap_table): New variable.
22281         (shared_bitmap_hash): New function.
22282         (shared_bitmap_eq): Ditto
22283         (shared_bitmap_lookup): Ditto.
22284         (shared_bitmap_add): Ditto.
22285         (merge_smts_into): Change to take bitmap directly.
22286         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
22287         (init_alias_vars): Init shared bitmap hashtable.
22288         (delete_points_to_sets): Delete shared bitmap hashtable.
22289         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
22290         is_aliased removal as a change that was still necessary was
22291         deleted.
22292
22293 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
22294
22295         * config/i386/i386.h (override_options): Conditionally disable
22296         x86_sahf for 64bit targets only.
22297
22298 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22299
22300         PR C/31072
22301         * c-decl.c (merge_decls): Don't call make_var_volatile.
22302         * varasm.c (make_var_volatile): Remove.
22303         * output.h (make_var_volatile): Remove.
22304
22305 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
22306
22307         PR tree-optimization/31085
22308         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
22309
22310 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22311
22312         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
22313         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
22314         ATTR_CONST_NOTHROW_LIST.
22315
22316         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
22317         FIX_TRUNC_EXPR.
22318
22319 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
22320
22321         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
22322
22323 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
22324
22325         PR 31013
22326         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
22327         is declared.
22328         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
22329         passed, use shared libgcc.
22330
22331 2007-03-08  Roger Sayle  <roger@eyesopen.com>
22332
22333         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
22334         instead of calling build2 with a GIMPLE_MODIFY_STMT.
22335         (honor_protect_cleanup_actions, lower_try_finally_switch):
22336         Likewise.
22337         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
22338         ifc_temp_var): Likewise.
22339         * tree-inline.c (setup_one_parameter): Likewise.
22340         * tree-mudflap.c (mf_decl_cache_locals,
22341         mf_build_check_statement_for): Likewise.
22342         * tree-nested.c (init_tmp_var, save_tmp_var,
22343         finalize_nesting_tree_1): Likewise.
22344         * tree-outof-ssa.c (insert_copy_on_edge,
22345         insert_backedge_copies): Likewise.
22346         * tree-profile.c (tree_gen_edge_profiler,
22347         tree_gen_ic_profiler): Likewise.
22348         * tree-scalar-evolution.c (scev_const_prop): Likewise.
22349         * tree-sra.c (sra_build_assignment): Likewise.
22350         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
22351         * tree-ssa-math-opts.c (insert_reciprocals,
22352         execute_cse_sincos_1): Likewise.
22353         * tree-tailcall.c (adjust_accumulator_values,
22354         adjust_return_value): Likewise.
22355         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
22356         * tree-vect-transform.c (vect_create_data_ref_ptr,
22357         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
22358         vect_create_epilog_for_reduction, vectorizable_reduction,
22359         vectorizable_call, vectorizable_conversion,
22360         vectorizable_assignment, vectorizable_operation,
22361         vectorizable_type_demotion, vect_gen_widened_results_half,
22362         vect_permute_store_chain, vectorizable_store,
22363         vect_setup_realignment, vect_permute_load_chain,
22364         vectorizable_load, vectorizable_condition,
22365         vect_create_cond_for_align_checks): Likewise.
22366         * tree-vrp.c (build_assert_expr_for): Likewise.
22367
22368 2007-03-08  Ian Lance Taylor  <iant@google.com>
22369
22370         * tree-vrp.c: Include "intl.h".
22371         (usable_range_p): New static function.
22372         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
22373         overflowed values, juts set *strict_overflow_p.
22374         (compare_values): Only return -2 if one of the operands is not a
22375         constant.
22376         (compare_ranges): Call usable_range_p.
22377         (compare_range_with_value): Likewise.
22378         (vrp_evaluate_conditional_warnv): Rename from
22379         vrp_evaluate_conditional.  Make static.  Change all callers.
22380         (vrp_evaluate_conditional): New function.
22381         (simplify_div_or_mod_using_ranges): Issue warning about reliance
22382         on signed overflow.
22383         (simplify_abs_using_ranges): Likewise.
22384         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
22385         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
22386         within_stmt parameter.
22387         * tree-ssa-propagate.c (fold_predicate_in): Update call to
22388         vrp_evaluate_conditional.
22389         * tree-ssa-threadedge.c
22390         (record_temporary_equivalences_from_stmts_at_dest): Change
22391         simplify parameter to take a second tree parameter.
22392         (simplify_control_stmt_condition): Likewise.
22393         (thread_across_edge): Likewise.
22394         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
22395         (thread_across_edge): Likewise.
22396         * Makefile.in (tree-vrp.o): Depend upon intl.h.
22397
22398 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
22399
22400         * config/i386/i386.h (TARGET_SAHF): New define.
22401         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
22402         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
22403         (x86_sahf): New global variable.
22404         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
22405         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
22406         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
22407         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
22408         for 64-bit.
22409         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
22410         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
22411         when expanding fcomi/sahf based tests.
22412         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
22413         expanding sahf based alternative. Emit sahf based sequence when
22414         optimizing for code size.
22415         * config/i386/i386.md (x86_sahf_1): Do not disable for
22416         TARGET_64BIT, enable for TARGET_SAHF.
22417
22418 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
22419
22420         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
22421         spurious whitespace from error message.
22422
22423 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
22424
22425         PR c++/30852
22426         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
22427
22428 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
22429
22430         * c-decl.c (grokdeclarator): Disable warnings for anonymous
22431         bitfields.
22432         * tree-sra.c (instantiate_element): Propagate disabled warnings
22433         from the element itself to the created variable.
22434
22435 2007-03-07  Richard Henderson  <rth@redhat.com>
22436
22437         PR target/30848
22438         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
22439         silently fix up the stack in the case of a missing register.
22440
22441 2007-03-07  Paul Brook  <paul@codesourcery.com>
22442
22443         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
22444
22445 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
22446
22447         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
22448         New.
22449         (phase1_vrs): Use them.
22450         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
22451         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
22452         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
22453         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
22454         __gnu_Unwind_Restore_WMMXC if required.
22455         (_Unwind_VRS_Pop): Implement iWMMXt support.
22456         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
22457         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
22458         gnu_Unwind_Save_WMMXC): Define.
22459
22460 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
22461
22462         * config/vxworks.h (vxworks_override_options): Declare.
22463         (VXWORKS_OVERRIDE_OPTIONS): Use it.
22464         * config/vxworks.c: Include target.h and toplev.h.
22465         (vxworks_override_options): New function.
22466         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
22467
22468 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
22469
22470         * config/s390/s390.c (override_options): Don't emit an error when
22471         -mstack-size is used without providing -mstack-guard.
22472         (s390_emit_prologue): Choose stack_guard value automatically if not
22473         provided via command line.
22474         * doc/invoke.texi: Adjust description of -mstack-guard and
22475         -mstack-size.
22476
22477 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
22478
22479         * config/i386/i386.c (output_set_got): Add a GOT initialization
22480         sequence for VxWorks PIC.
22481         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
22482         around labels as well as symbols.  Use gotoff_operand instead
22483         of local_symbolic_operand.
22484         (legitimize_pic_address): Use gotoff_operand instead of
22485         local_symbolic_operand.  Use @GOT accesses for labels as
22486         well as symbols.
22487         (ix86_output_addr_diff_elt): Use PC-relative rather than
22488         GP-relative offsets for VxWorks PIC.
22489         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
22490         no_new_pseudos.  Check whether the returned register is op0.
22491         * config/i386/i386.md (tablejump): Use PC-relative rather than
22492         GP-relative offsets for VxWorks PIC.
22493         * config/i386/predicates.md (gotoff_operand): New predicate.
22494
22495 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
22496
22497         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
22498         before defining.
22499         * config/vxworks-dummy.h: New file.
22500         * config/i386/i386.h: Include it.
22501
22502 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
22503
22504         * dwarf2out.c (is_inlined_entry_point): New
22505         (add_high_low_attributes): Emit DW_AT_entry_pc along with
22506         DW_AT_ranges if the first subblock is the entry point.
22507
22508 2007-03-06  David Daney  <ddaney@avtrex.com>
22509
22510         * doc/install.texi (mips-*-*): Change recommended binutils
22511         version.
22512
22513 2007-03-06  Anatoly Sokolov <aesok@post.ru>
22514
22515         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
22516         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
22517         devices.
22518         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
22519         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
22520
22521 2007-03-06  Jan Hubicka  <jh@suse.cz>
22522
22523         * errors.h (warning, error, fatal, internal_error): Mark as cold.
22524         * predict.c (maybe_hot_bb): Cold functions are never hot; hot
22525         functions are hot.
22526         (probably_cold_bb_p): Cold functions are cold.
22527         (probably_never_executed_bb_p): Cold functions are cold.
22528         (tree_bb_level_predictions): Predict calls to cold functions as not
22529         taken.
22530         (compute_function_frequency): Check hot/cold attributes.
22531         * function.h (function_frequency): Update comments.
22532         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
22533         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
22534         (c_common_att): Add cold and hot.
22535
22536         * doc/extend.texi (hot,cold attributes): Document.
22537
22538 2007-03-06  Andrew Haley  <aph@redhat.com>
22539
22540         * function.c (expand_function_end): Move blockage to just after we
22541         emit the label for the naked return from the function.
22542
22543 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
22544
22545         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
22546         before redefining.
22547
22548 2007-03-06  Jan Hubicka  <jh@suse.cz>
22549
22550         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
22551         loaded for constant large models.  Non-large 64bit PIC can do.
22552         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
22553         * cmodel.h: Add LARGE PIC.
22554         * i386.md (UNSPEC_PLTOFF): New.
22555         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other
22556         unspecs as needed.
22557         (*call_1_rex64): Disable for large models.
22558         (*call_1_rex64_large): New.
22559         (*call_value_1_rex64): Disable for large models.
22560         (*call_value_1_rex64_large): New.
22561         (set_rip_rex4): New.
22562         (set_got_offset_rex64): New.
22563         * predicates.md (constant_call_address_operand): For large model
22564         constant calls are not possible.
22565         * i386-protos.h (construct_plt_address): Declare.
22566         * i386.c (override_options): Accept large models.
22567         (ix86_expand_prologue): Expand large PIC GOT pointer load.
22568         (legitimate_constant_p): Add new UNSPECs.
22569         (legitimate_pic_operand_p): Likewise.
22570         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
22571         (legitimize_pic_address): Do easy RIP relative way for TLS only for
22572         non-large model.
22573         (output_pic_addr_const): Add PLTOFF.
22574         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
22575         (ix86_expand_move): Legitimize pic address when in PIC mode.
22576         (construct_plt_address): New function.
22577         (ix86_expand_call): Offload the address to register and use GOT
22578         pointer for large model.
22579         * invoke.texi (mcmodel=large): Update documentation.
22580
22581 2007-03-06  Richard Henderson  <rth@redhat.com>
22582
22583         * config/i386/i386.c (x86_use_leave, x86_push_memory,
22584         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
22585         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
22586         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
22587         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
22588         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
22589         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
22590         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
22591         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
22592         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
22593         x86_partial_reg_dependency, x86_memory_mismatch_stall,
22594         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
22595         x86_sse_partial_reg_dependency, x86_sse_split_regs,
22596         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
22597         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
22598         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
22599         x86_schedule, x86_use_bt, x86_pad_returns,
22600         x86_use_xchgb): Merge into ...
22601         (ix86_tune_features): ... here.  New array.
22602         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
22603         x86_bswap): Merge into ...
22604         (ix86_arch_features): ... here.  New array.
22605         (x86_3dnow_a): Remove.
22606         (x86_accumulate_outgoing_args): Make static.
22607         (x86_arch_always_fancy_math_387): Make static.
22608         (ix86_tune_mask, ix86_arch_mask): Move ...
22609         (override_options): ... to local variables here.  Apply the
22610         appropriate mask to each element of ix86_arch_features and
22611         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
22612         as were done in the old macros.
22613         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
22614         * config/i386/i386.h (x86_use_leave, x86_push_memory,
22615         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
22616         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
22617         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
22618         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
22619         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
22620         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
22621         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
22622         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
22623         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
22624         x86_partial_reg_dependency, x86_memory_mismatch_stall,
22625         x86_accumulate_outgoing_args, x86_prologue_using_move,
22626         x86_epilogue_using_move, x86_decompose_lea,
22627         x86_arch_always_fancy_math_387, x86_shift1,
22628         x86_sse_partial_reg_dependency, x86_sse_split_regs,
22629         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
22630         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
22631         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
22632         x86_use_incdec, x86_pad_returns, x86_bswap,
22633         x86_partial_flag_reg_stall): Remove.
22634         (enum ix86_tune_indices): New.
22635         (ix86_tune_features): New.
22636         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
22637         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
22638         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
22639         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
22640         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
22641         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
22642         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
22643         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
22644         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
22645         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
22646         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
22647         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
22648         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
22649         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
22650         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
22651         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
22652         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
22653         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
22654         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
22655         TARGET_EXT_80387_CONSTANTS): Use it.
22656         (enum ix86_arch_indices): New.
22657         (ix86_arch_features): New.
22658         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
22659         TARGET_BSWAP): Use it.
22660         (ix86_tune_mask, ix86_arch_mask): Remove.
22661
22662 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
22663
22664         PR bootstrap/31020
22665         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
22666         Define using $${sysroot_headers_suffix}.
22667         * configure: Regenerate.
22668         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
22669         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
22670         defined.
22671         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
22672         * gcc.c (print_sysroot_headers_suffix): New.
22673         (option_map): Include --print-sysroot-headers-suffix.
22674         (display_help): Mention -print-sysroot-headers-suffix.
22675         (process_command): Handle -print-sysroot-headers-suffix.
22676         (do_spec_1): Append multilib directory to include-fixed path if
22677         sysroot suffixes in use.
22678         (main): Handle -print-sysroot-headers-suffix.
22679         * Makefile.in (start.encap): Don't depend on xlimits.h
22680         (xlimits.h): Remove.
22681         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
22682         limits.h for each multilib in fixinc_list.
22683         (fixinc_list, s-fixinc_list): New.
22684         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
22685         generate them for each multilib in fixinc_list.
22686         (stmp-fixproto): Use include-fixed.  Run fixproto for each
22687         multilib in fixinc_list.
22688         (mostlyclean): Don't remove xlimits.h.
22689         (clean): Remove include-fixed.
22690         (real-install-headers-tar, real-install-headers-cpio,
22691         real-install-headers-cp): Don't copy include, only include-fixed.
22692         (install-mkheaders): Depend on fixinc_list.  Don't depend on
22693         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
22694         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
22695         SYSTEM_HEADER_DIR setting in mkheaders.conf.
22696
22697 2007-03-06  Jan Hubicka  <jh@suse.cz>
22698
22699         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
22700         NANs easilly.
22701
22702 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
22703
22704         * configure.ac: Allow tm_file to contain build-directory files.
22705         * configure: Regenerate.
22706         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
22707         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
22708         * config/m68k/print-sysroot-suffix.sh: New file.
22709
22710 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
22711
22712         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
22713         of pic_offset_table_rtx if reload_completed.
22714         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
22715         PIC_OFFSET_TABLE_REGNUM.
22716         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
22717         return true.
22718         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
22719         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
22720
22721 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
22722
22723         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
22724         functions that call eh_return.
22725
22726 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
22727
22728         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
22729         functions that need a constant pool.
22730
22731 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
22732
22733         PR target/28181
22734         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
22735         (m68k_preferred_reload_class): Likewise.
22736         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
22737         (SECONDARY_RELOAD_CLASS): Define.
22738         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
22739         (LIMIT_RELOAD_CLASS): Delete.
22740         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
22741         registers from storing bytes.
22742         (m68k_secondary_reload_class): New function.
22743         (m68k_preferred_reload_class): Likewise.
22744
22745 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
22746
22747         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
22748         leaf functions.
22749         (m68k_expand_prologue): Likewise.
22750
22751 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
22752
22753         * config/m68k/m68k-protos.h (output_sibcall): Declare.
22754         (mips_expand_epilogue): Add a bool parameter.
22755         (m68k_legitimize_sibcall_address): Declare.
22756         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
22757         (m68k_expand_epilogue): Add a parameter to select between sibling
22758         and normal epilogues.  Only generate a return for the latter.
22759         (m68k_ok_for_sibcall_p): New function.
22760         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
22761         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
22762         (sibcall_value, *sibcall_value): Likewise.
22763         (*call, *call_value): Require !SIBLING_CALL_P.
22764         (epilogue): Update call to m68k_expand_epilogue.
22765         (sibcall_epilogue): New pattern.
22766         * config/m68k/predicates.md (const_call_operand): Say that this
22767         predicate applies to sibling calls too.
22768         (sibcall_operand): New predicate.
22769
22770 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
22771
22772         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
22773         alternatives as movsi_cf.
22774         (movsf_cf_hard): Add commentary.
22775
22776 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
22777             Richard Sandiford  <richard@codesourcery.com>
22778
22779         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
22780         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
22781         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
22782         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
22783         as being live on exit from an interrupt function.
22784         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
22785         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
22786         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
22787         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
22788         (m68k_interrupt_function_p): Globalize.
22789         (m68k_compute_frame_layout): Remove reverse mask code.
22790         (m68k_emit_movem, m68k_set_frame_related): New functions.
22791         (m68k_output_function_prologue): Delete in favor of...
22792         (m68k_expand_prologue): ...this new function.
22793         (m68k_output_function_epilogue): Delete in favor of...
22794         (m68k_expand_epilogue): ...this new function.
22795         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
22796         functions.
22797         (print_operand): Handle %?.
22798         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
22799         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
22800         (prologue, epilogue): New patterns.
22801         (return): Turn into a define_expand.
22802         (*return): New pattern, derived from old "return" pattern.  Use rte
22803         rather than rts for interrupt functions.  Only use rtd if the pop
22804         count is nonzero.
22805         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
22806         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
22807         (link, *link, unlink, *unlink, load_got): Likewise.
22808
22809 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
22810
22811         PR target/23482
22812         PR target/17114
22813         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
22814         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
22815         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
22816         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
22817         and m68k_matches_u_p.
22818         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
22819         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
22820         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
22821         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
22822         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
22823         (REG_STRICT_P): New macro.
22824         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
22825         PCREL_GENERAL_OPERAND_OK.
22826         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
22827         m68k_legitimate_base_reg_p.
22828         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
22829         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
22830         (PIC_CASE_VECTOR_ADDRESS): Update comment.
22831         * config/m68k/m68k.c (m68k_address): New structure.
22832         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
22833         (m68k_decompose_index, m68k_legitimate_constant_address_p)
22834         (m68k_jump_table_ref_p, m68k_decompose_address)
22835         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
22836         (m68k_matches_u_p): New functions.
22837         (print_operand_address): Rewrite to use m68k_decompose_index.
22838
22839 2007-03-05  David Taylor  <dtaylor@emc.com>
22840
22841         * gcc.c: Correct copyright date in --version output.
22842
22843 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22844
22845         * pa.md: In unamed move patterns, disparge copies between general
22846         and floating point registers using '?' modifier.  Don't include 'f'
22847         constraint for register preferences in DImode, SImode, HImode and
22848         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
22849         Remove constraints for copies between general and floating registers
22850         in soft-float DFmode pattern.
22851         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
22852         floating register.
22853         (movsf): Likewise.
22854
22855 2007-03-05  Mike Stump  <mrs@apple.com>
22856
22857         * c-common.c (targetcm): Add.
22858         * c-opts.c (c_common_handle_option): Handle language specific
22859         target options.
22860         * opts.c (handle_option): Verify language for target options, if
22861         any are given.
22862         * opth-gen.awk: Add CL_LANG_ALL.
22863         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
22864         (TARGETCM_INITIALIZER): Add.
22865         * target.h (struct gcc_targetcm): Add.
22866         (targetcm): Add.
22867         * targhooks.c (default_handle_c_option): Add.
22868         * targhooks.h (default_handle_c_option): Add.
22869         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
22870
22871         * config/darwin.opt (iframework): Add.
22872         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
22873         * config/darwin-c.c (handle_c_option): Add.
22874         (TARGET_HANDLE_C_OPTION): Add.
22875         (targetcm): Add.
22876         * doc/invoke.texi (Darwin Options): Add -iframework.
22877
22878 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22879
22880         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
22881         conversion.
22882
22883 2007-03-05  Ian Lance Taylor  <iant@google.com>
22884
22885         * c.opt (fgnu89-inline): New option.
22886         * c-opts.c (c_common_post_options): Set default value for
22887         flag_gnu89_inline.
22888         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
22889         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
22890         inline functions.
22891         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
22892         (grokdeclarator, start_function): Likewise.
22893         * c-cppbuiltin.c (c_cpp_builtins): Define either
22894         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
22895         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
22896         (C Dialect Options): Document -fgnu89-inline.
22897         * doc/extend.texi (Function Attributes): Explain what the
22898         gnu_inline attribute does.
22899         * doc/cpp.texi (Common Predefined Macros): Document
22900         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
22901
22902 2007-03-05  Ian Lance Taylor  <iant@google.com>
22903
22904         PR tree-optimization/31034
22905         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
22906         half-range if the other side is an overflow infinity.
22907
22908 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
22909
22910         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
22911         (bfin*-linux-uclibc*): New configuration.
22912         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
22913         defining.
22914         * config/bfin/linux.h: New file.
22915         * config/bfin/libgcc-bfin.ver: New file.
22916         * config/bfin/t-bfin-uclinux: New file.
22917         * config/bfin/t-bfin-linux: New file.
22918         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
22919         (TARGET_OS_CPP_BUILTINS): New macro.
22920
22921 2007-03-05  Richard Guenther  <rguenther@suse.de>
22922
22923         * fold-const.c (fold_binary): Remove duplicate folding
22924         of comparison of non-null ADDR_EXPR against null.
22925
22926 2007-03-05  Richard Guenther  <rguenther@suse.de>
22927             Dorit Nuzman  <dorit@il.ibm.com>
22928
22929         PR tree-optimization/26420
22930         * tree-vectorizer.c (vectorize_loops): Bail out early if there
22931         are no loops in the function.  Only print the number of
22932         vectorized loops if it is greater than zero or we are supposed
22933         to print information about unvectorized loops.
22934
22935 2007-03-05  Revital Eres  <eres@il.ibm.com>
22936
22937         * gcc.dg/var-expand1.c: New test.
22938         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
22939         when an accumulator is expanded.
22940
22941 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22942
22943         PR other/30465
22944         * c-common.c (convert_and_check): Don't give warnings for
22945         conversion if 'expr' already overflowed.
22946
22947 2007-03-04  Roger Sayle  <roger@eyesopen.com>
22948
22949         PR middle-end/30744
22950         * fold-const.c (fold_comparison): Enforce type consistency when
22951         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
22952
22953 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
22954
22955         * tree-ssa-address.c (create_mem_ref): Do not put an expression
22956         containing a cast to the base of TARGET_MEM_REF.
22957
22958 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
22959
22960         * tree.c (tree_contains_struct_check_failed): Remove spurious
22961         whitespace from error message.
22962
22963 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
22964
22965         PR target/30406
22966         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
22967         instead of precision.
22968
22969 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
22970             Nathan Sidwell  <nathan@codesourcery.com>
22971
22972         * emit-rtl.c (find_auto_inc): New.
22973         (try_split): recreate REG_INC notes,
22974         Use regular for loops rather than whiles.
22975
22976 2007-03-03  Andreas Schwab  <schwab@suse.de>
22977
22978         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
22979         * configure: Regenerate.
22980
22981 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22982
22983         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
22984         flag_rounding_math, not flag_unsafe_math_optimizations.
22985
22986         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
22987         fold_build2.
22988         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
22989         alpha_fold_vector_minmax): Likewise.
22990         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
22991         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
22992
22993 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
22994
22995         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
22996         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
22997         if the lhs has side-effects.
22998         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
22999
23000 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
23001
23002         * config/i386/i386.h (TUNEMASK): Remove define.
23003         (ARCHMASK): Remove define.
23004         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
23005          Use ix86_arch_mask variable instead of ARCHMASK.
23006         * config/i386/i386.c (override_options): Ditto.
23007         (standard_80387_constant_p): Ditto.
23008
23009 2007-03-02  Ian Lance Taylor  <iant@google.com>
23010
23011         Used signed infinities in VRP.
23012         * tree-vrp.c (uses_overflow_infinity): New static function.
23013         (supports_overflow_infinity): New static function.
23014         (make_overflow_infinity): New static function.
23015         (negative_overflow_infinity): New static function.
23016         (positive_overflow_infinity): New static function.
23017         (is_negative_overflow_infinity): New static function.
23018         (is_positive_overflow_infinity): New static function.
23019         (is_overflow_infinity): New static function.
23020         (overflow_infinity_range_p): New static function.
23021         (compare_values_warnv): New function split out of compare_values.
23022         (compare_value): Call it.
23023         (set_value_range_to_nonnegative): Add overflow_infinity
23024         parameter.  Change caller.
23025         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
23026         Change callers.
23027         (vrp_expr_computes_nonzero): Likewise.
23028         (compare_ranges, compare_range_with_value): Likewise.
23029         (compare_name_with_value, compare_names): Likewise.
23030         (vrp_evaluate_conditional): Likewise.
23031         (set_value_range): Handle infinity
23032         (vrp_operand_equal_p, operand_less_p): Likewise.
23033         (extract_range_from_assert): Likewise.
23034         (vrp_int_const_binop): Likewise.
23035         (extract_range_from_binary_expr): Likewise.
23036         (extract_range_from_unary_expr): Likewise.
23037         (extract_range_from_comparison): Likewise.
23038         (extract_range_from_expr): Likewise.
23039         (dump_value_range): Likewise.
23040         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
23041         (test_for_singularity): Likewise.
23042         (vrp_int_const_binop): Remove inline qualifier.
23043         (adjust_range_with_scev): Add comment.
23044         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
23045
23046 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
23047
23048         * tree-ssa-structalias.c (could_have_pointers): Tidy.
23049         (get_constraint_for): Likewise.
23050         (do_structure_copy): Likewise.
23051         (find_func_aliases): Fix references to MODIFY_EXPR.
23052         (intra_create_variable_infos): Tidy.
23053         * tree-ssa-operands.c (add_virtual_operand): Add argument
23054         IS_CALL_SITE.
23055         When adding members of alias sets, if IS_CALL_SITE is true and
23056         the symbol is not call-clobbered, skip it.
23057         Adjust all callers.
23058
23059 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
23060
23061         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
23062         entry by means of emit_insn_at_entry.
23063
23064 2007-03-02  Richard Henderson  <rth@redhat.com>
23065
23066         * expr.h (promoted_input_arg): Remove decl.
23067         * function.c (promoted_input_arg): Merge into ...
23068         * combine.c (setup_incoming_promotions): ... only caller.
23069         Rearrange to avoid double loop.
23070
23071 2007-03-02  Ben Elliston  <bje@au.ibm.com>
23072             Peter Bergner  <bergner@vnet.ibm.com>
23073             Janis Johnson  <janis187@us.ibm.com>
23074
23075         * config/rs6000/dfp.md: New file.
23076         * config/rs6000/rs6000.md: Include dfp.md.
23077         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
23078         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
23079         and TDmode decimal float modes in FP registers.
23080         (num_insns_constant): Likewise.
23081         (rs6000_legitimate_offset_address_p): Likewise.
23082         (rs6000_legitimize_address): Likewise.
23083         (rs6000_legitimize_reload_address): Likewise.
23084         (rs6000_legitimate_address): Likewise.
23085         (rs6000_emit_move): Likewise.
23086         (function_arg_boundary): Likewise.
23087         (function_arg_advance): Likewise.
23088         (rs6000_darwin64_record_arg_recurse): Likewise.
23089         (function_arg): Likewise.
23090         (rs6000_gimplify_va_arg): Likewise.
23091         (rs6000_split_multireg_move): Likewise.
23092         (rs6000_output_function_epilogue): Likewise.
23093         (rs6000_output_function_epilogue): Likewise.
23094         (rs6000_register_move_cost): Likewise.
23095         (rs6000_function_value): Likewise.
23096         (rs6000_libcall_value): Likewise.
23097
23098 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
23099
23100         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
23101
23102 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
23103
23104         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
23105         Use $MULTIDIR to choose between the kernel and RTP headers,
23106         and use $WIND_BASE and $WIND_USR to locate them.
23107
23108 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
23109
23110         * config/i386/i386.c (override_options): Put initialization of
23111         ix86_tune_mask and ix86_arch_mask to the correct place.
23112
23113 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
23114             Michael Meissner  <michael.meissner@amd.com>
23115
23116         PR target/31019
23117         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
23118         (ARCHMASK): Define.
23119         (TARGET_CMOVE): Use ARCHMASK.
23120         (TARGET_CMPXCHG): Ditto.
23121         (TARGET_CMPXCHG8B): Ditto.
23122         (TARGET_XADD): Ditto.
23123         (TARGET_BSWAP): Ditto.
23124         * config/i386/i386.c (ix86_tune_mask): New global variable.
23125         (ix86_arch_mask): Ditto.
23126         (override_options): Initialize ix86_tune_mask and
23127         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
23128         target_flags.
23129
23130 2007-03-02  Ben Elliston  <bje@au.ibm.com>
23131
23132         PR 30992
23133         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
23134
23135 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
23136
23137         * target.h (init_dwarf_reg_sizes_extra): New target hook.
23138         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
23139         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
23140         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
23141         hook.
23142         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
23143         rs6000_init_dwarf_reg_sizes_extra): New.
23144         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
23145         SPE register high parts.
23146
23147 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
23148
23149         * Makefile.in: Add install-pdf target as
23150         copied from automake v1.10 rules.
23151         * configure.ac: Add install-pdf to target list.
23152         * configure: Regenerate.
23153
23154 2007-03-01  Paul Brook  <paul@codesourcery.com>
23155
23156         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
23157         modes to LDRD for DImode.
23158         (output_move_double): Fixup out of range ldrd/strd.
23159         (vfp_secondary_reload_class): Rename...
23160         (coproc_secondary_reload_class): ... to this.  Add wb argument.
23161         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
23162         coproc_secondary_reload_class for CLASS_IWMMXT.
23163         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
23164         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
23165
23166 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
23167
23168         * tree-ssa-loop-prefetch.c (determine_unroll_factor): Bound the
23169         unroll factor by the estimated number of iterations.
23170         (loop_prefetch_arrays): Do not prefetch in loops that iterate less
23171         than prefetch latency.
23172
23173         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
23174         decode_caches_intel, detect_caches_intel): New functions.
23175         (host_detect_local_cpu): Use detect_caches_amd and
23176         detect_caches_intel.
23177
23178 2007-03-01  Richard Henderson  <rth@redhat.com>
23179
23180         * expr.c (emit_move_complex_push): Export.
23181         (emit_move_complex_parts): Split out from ...
23182         (emit_move_complex): ... here.
23183         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
23184         * config/i386/i386.md (movcdi): New.
23185
23186 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
23187
23188         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
23189         size of mode1 to check for tieable modes in MMX case.
23190
23191 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
23192
23193         * Makefile.in (rtlanal.o): Depend on tree.h.
23194         * rtl.h (offset_within_section_p, split_const): Declare.
23195         * rtlanal.c: Include tree.h.
23196         (offset_within_block_p): New function, taken from
23197         mips_offset_within_object_p.
23198         (split_const): New function, taken from mips_split_const.
23199         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
23200         Declare.
23201         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
23202         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
23203         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
23204         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
23205         (m68k_illegitimate_symbolic_constant_p): New function.
23206         * config/m68k/m68k.md (movsi): Remove misleading predicates.
23207         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
23208         symbolic constant that might be outside the symbol's section,
23209         move the symbol first and then add the offset.
23210         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
23211         Override.
23212         * config/mips/mips.c (mips_split_const): Delete.
23213         (mips_offset_within_object_p): Delete.
23214         (mips_symbolic_constant_p): Use offset_within_section_p and
23215         split_const instead of mips_offset_within_object_p and
23216         mips_split_const.
23217         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
23218         (mips_legitimize_const_move, print_operand_reloc)
23219         (mips_dangerous_for_la25_p): Use split_const instead of
23220         mips_split_const.
23221
23222 2007-02-28  Eric Christopher  <echristo@apple.com>
23223
23224         * Makefile.in (install-include-dir): Don't rm -rf include.
23225
23226 2007-02-28  Richard Guenther  <rguenther@suse.de>
23227
23228         PR middle-end/30364
23229         * fold-const.c (fold_binary): Do not associate expressions
23230         with more than one variable for integer types that do not wrap.
23231
23232 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
23233
23234         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
23235         Delete, and replace with...
23236         (fold_builtin_call_array): This.  Update callers to use it.
23237         * fold-const.c (fold_build_call_list): Delete, and replace with...
23238         (fold_build_call_array): This.
23239         (fold_build_call_list_initializer): Delete, and replace with...
23240         (fold_build_call_array_initializer): This.
23241         * tree.h: Update declarations to reflect above changes.
23242
23243         * c-typeck.c (build_function_call): Store converted arguments
23244         in a stack-allocated array instead of building a list.
23245         (convert_arguments): Store arguments in the array passed in as an
23246         argument, and return the actual number of arguments.
23247         * c-format.c: (check_function_format): Pass arguments in an
23248         array instead of a list.
23249         * c-common.c (check_function_nonnull): Likewise.
23250         (check_function_sentinel): Likewise.
23251         (check_function_arguments): Likewise.
23252         * c-common.h: Update declarations to reflect above changes.
23253
23254 2007-02-28  Jan Hubicka  <jh@suse.cz>
23255
23256         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
23257         PRED_NEGATIVE_RETURN): Update outcomes.
23258
23259 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
23260
23261         * calls.c (emit_library_call_value_1): Handle partial registers
23262         correctly when building up CALL_INSN_FUNCTION_USAGE.
23263
23264 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23265
23266         * pa/predicates.md (move_src_operand): Allow zero for mode.
23267         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
23268         move pattern.
23269
23270 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
23271
23272         PR target/30970
23273         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
23274         *movv2df_internal): Enable pattern only for valid operand
23275         combinations.
23276         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
23277         tie only 128bit modes. For MMX registers, tie only 64bit modes.
23278
23279 2007-02-27  Mike Stump  <mrs@apple.com>
23280
23281         * config/darwin-crt3.c: Avoid compilation when compiling for a
23282         kext multilib.
23283
23284 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
23285
23286         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
23287         FIXED_INCLUDE_DIR.
23288         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
23289         for fixed headers and limits.h.
23290         (install-include-dir, install-headers-tar, install-headers-cpio,
23291         install-headers-cp, real-install-headers-tar,
23292         real-install-headers-cpio, real-install-headers-cp): Handle
23293         include-fixed as well as include.
23294         (install-mkheaders): Don't install files that go only in include
23295         not include-fixed.
23296         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
23297         from GCC_INCLUDE_DIR.
23298         * gcc.c (process_command): Remove special -BstageN/ handling.
23299         (do_spec_1): Add include-fixed directories.
23300
23301 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
23302
23303         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
23304         _smulsi3_highpart.
23305         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
23306         New functions.
23307         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
23308         patterns.
23309
23310 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
23311
23312         * c-common.c (get_priority): Add check for
23313         SUPPORTS_INIT_PRIORITY.
23314
23315 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
23316
23317         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
23318
23319         * config/bfin/bfin.c: Include "cfglayout.h".
23320         (MAX_LSETUP_DISTANCE): New macro.
23321         (struct loop_info): New members incoming, incoming_src and
23322         incoming_dest.  Delete member predecessor.
23323         (length_for_loop): New function.
23324         (bfin_optimize_loop): Handle more different loop structures.
23325         (bfin_discover_loop): Rework detection of predecessor blocks by
23326         examining incoming edges.
23327         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
23328         bfin_reorg_loops.
23329         (bfin_reorder_loops): New function.
23330         (bfin_reorg_loops): Use these three new functions.
23331
23332         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
23333         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
23334         (CONSTRAINT_LEN): Add entry for 'q'.
23335         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
23336         Add 'q' constraints.
23337         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
23338         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
23339
23340         * config/bfin/bfin.md (add_with_carry): New pattern.
23341         (s_or_u, su_optab, su_modifier): New code macros/attrs.
23342         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
23343         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
23344         support unsigned multiplies too.  Removed incorrect commutativity from
23345         operand 1 constraint where appropriate.
23346         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
23347         patterns.
23348         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
23349         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
23350         New patterns.
23351         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
23352         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
23353         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
23354         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
23355         usmulhisi_hh_huh): New patterns.
23356
23357         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
23358         lshifthi3): Fix output template to use half reg for operand 2.
23359
23360         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
23361         instead of R2.
23362
23363         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
23364
23365 2007-02-27  Andreas Schwab  <schwab@suse.de>
23366
23367         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
23368
23369 2007-02-27  Jan Hubicka  <jh@suse.cz>
23370
23371         * predict.c (last_basic_block_p): Remove.
23372         (tree_estimate_probability): Update return heuristic for commonized
23373         return blocks.
23374
23375 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
23376
23377         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
23378
23379 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
23380
23381         * doc/include/gcc-common.texi (versionsubtitle): New macro.
23382         * doc/cpp.texi: Standardize title page.
23383         * doc/cppinternals.texi: Likewise.
23384         * doc/gcc.texi: Standardize title page, remove version number
23385         from copyright page.
23386         * doc/gccint.texi: Likewise.
23387         * doc/install.texi: Standardize title page, add table of
23388         contents.
23389
23390 2007-02-26  Jan Hubicka  <jh@suse.cz>
23391
23392         * predict.def: Set outcomes according to more recent results.
23393         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
23394         Remove dead predictors.
23395         * predict.c (return_prediction): Fix pasto.
23396
23397 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
23398
23399         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
23400         change; avoid a memory leak when returning early.
23401
23402 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
23403
23404         * c-decl.c (static_ctors): Move to c-common.c.
23405         (static_dtors): Likewise.
23406         (finish_function): Use c_record_cdtor_fn.
23407         (build_cdtor): Move to c-common.c.
23408         (c_write_global_declarations): Use c_build_cdtor_fns.
23409         * c-common.h (static_ctors): Declare.
23410         (static_dtors): Likewise.
23411         (c_record_cdtor_fn): Likewise.
23412         (c_build_cdtor_fns): Likewise.
23413         * c-common.c (static_ctors): New variable.
23414         (static_dtors): Likewise.
23415         (c_record_cdtor_fn): New function.
23416         (build_cdtor): Move from c-decl.c
23417         (c_build_cdtor_fns): New function.
23418
23419         * output.h (assemble_addr_to_section): Declare.
23420         (get_cdtor_priority_section): Likewise.
23421         * varasm.c (assemble_addr_to_section): New function.
23422         (get_cdtor_priority_section): Likewise.
23423         (default_named_section_asm_out_destructor): Use them.
23424         (destor_dtor_section_asm_out_destructor): Likewise.
23425         (default_named_section_asm_out_constructor): Likewise.
23426         (default_ctor_section_asm_out_constructor): Likewise.
23427         * config.gcc (*-*-vxworks*): Include vxworks.o.
23428         * config/t-vxworks (vxworks.o): New target.
23429         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
23430         (TARGET_ASM_CONSTRUCTOR): Define.
23431         (TARGET_ASM_DESTRUCTOR): Likewise.
23432         (vxworks_asm_out_constructor): Declare.
23433         (vxworks_asm_out_destructor): Likewise.
23434
23435         * c-common.c (get_priority): Check that we have not just an
23436         INTEGER_CST, but an integer constant with integeral type.
23437
23438 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
23439
23440         PR tree-optimization/30938
23441         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
23442         use &dt[nargs-1] instead of &dt[nargs] in the call to
23443         vect_is_simple_use().
23444
23445 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
23446
23447         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
23448         from register elimination as PRE_MODIFY / POST_MODIFY increments.
23449         Do not attempt to handle MEM inside auto-inc expressions.
23450         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
23451         of a register modified by an auto-inc expression.  However, do handle
23452         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
23453         (elimination_effects): Prohibit elimination of a register modified
23454         by an auto-inc expression.  Disable register elimination rules whose
23455         target register is modified by an auto-inc expression with variable
23456         increment.
23457
23458 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
23459
23460         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
23461         off-by-one error.
23462         (array_at_struct_end_p): New function.
23463         (idx_infer_loop_bounds): Use it.
23464         (estimate_numbers_of_iterations_loop): Export.
23465         * predict.c (predict_loops): Use estimated_loop_iterations_int.
23466         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
23467         (tree_estimate_probability): Call record_loop_exits.
23468         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
23469         (estimated_loop_iterations, estimated_loop_iterations_int,
23470         estimated_loop_iterations_tree): New functions.
23471         (analyze_siv_subscript_cst_affine,
23472         compute_overlap_steps_for_affine_1_2,
23473         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
23474         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
23475         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
23476         (PRED_LOOP_ITERATIONS_GUESSED): New.
23477         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
23478         * cfgloop.h (estimate_numbers_of_iterations_loop,
23479         estimated_loop_iterations_int): Declare.
23480
23481 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
23482
23483         * doc/extend.texi: Document optional priority argument to
23484         constructors and destructors.
23485         * tree.c (init_priority_for_decl): Adjust GTY markers.
23486         (init_ttree): Use priority-info hash functions for
23487         init_priority_for_decl.
23488         (tree_map_eq): Rename to ...
23489         (tree_map_base_eq): ... this.
23490         (tree_map_marked_p): Rename to ...
23491         (tree_map_base_marked_p): ... this.
23492         (tree_map_base_hash): New function.
23493         (decl_init_priority_lookup): Rework.
23494         (decl_fini_priority_lookup): New function.
23495         (decl_priority_info): New function.
23496         (decl_init_priority_insert): Use it.
23497         (decl_fini_priority_insert): Likewise.
23498         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
23499         hierarchy.
23500         (decl_restrict_base_insert): Likewise.
23501         (decl_debug_expr_insert): Likewise.
23502         (decl_value_expr_lookup): Likewise.
23503         (decl_value_expr_insert): Likewise.
23504         * tree.h (priority_type): New type.
23505         (decl_init_priority_lookup): Use priority_type.
23506         (decl_fini_priority_lookup): New function.
23507         (decl_init_priority_insert): Use priority_type.
23508         (decl_fini_priority_insert): New function.
23509         (DECL_HAS_INIT_PRIORITY): Tweak comments.
23510         (DECL_INIT_PRIORITY): Likewise.
23511         (SET_DECL_INIT_PRIORITY): Add comment.
23512         (DECL_FINI_PRIORITY): New macro.
23513         (SET_DECL_FINI_PRIORITY): Likewise.
23514         (DEFAULT_INIT_PRIORITY): Document.
23515         (MAX_INIT_PRIORITY): Likewise.
23516         (MAX_RESERVED_INIT_PRIORITY): Likewise.
23517         (tree_map_base): New type.
23518         (tree_map_base_eq): New function.
23519         (tree_map_base_hash): Likewise.
23520         (tree_map_base_marked_p): Likewise.
23521         (tree_map): Inherit from tree_map_base.
23522         (tree_map_eq): Make it a macro.
23523         (tree_map_marked_p): Likewise.
23524         (tree_int_map): Inherit from tree_map_base.
23525         (tree_int_map_eq): Make it a macro.
23526         (tree_int_map_hash): Likewise.
23527         (tree_int_map_marked_p): Likewise.
23528         (tree_priority_map): New type.
23529         (tree_priority_map_eq): New macro.
23530         (tree_priority_map_hash): Likewise.
23531         (tree_priority_map_marked_p): Likewise.
23532         * varasm.c (emults_decl): Adjust for refactoring of tree_map
23533         hierarchy.
23534         (emutls_common_1): Likewise.
23535         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
23536         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
23537         of tree_map hierarchy.
23538         * tree-cfg.c (move_stmt_r): Likewise.
23539         (new_label_mapper): Likewise.
23540         * c-tree.h (c_expand_body): Move to ...
23541         * c-common.h (c_expand_body): ... here.
23542         * c-decl.c (c_expand_body): Move to ...
23543         * c-common.c (c_expand_body): ... here.
23544         (c_common_attribute_table): Allow 1 argument for the constructor
23545         and destructor attributes.
23546         (get_priority): New function.
23547         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
23548         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
23549
23550 2007-02-24  Jan Hubicka  <jh@suse.cz>
23551
23552         PR middle-end/30509
23553         * tree-inline.c (copy_bb): Produce exact copy of EH info when
23554         copying for inlining.
23555
23556 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
23557             Jan Hubicka  <jh@suse.cz>
23558
23559         PR target/30778
23560         * i386.c (counter_mode): New function.
23561         (expand_set_or_movmem_via_loop): Use it.
23562         (expand_movmem_epilogue): Likewise; fix pasto.
23563         (ix86_expand_movmem): Do emit guard even for constant counts.
23564         (ix86_expand_setmem): Likewise.
23565
23566 2007-02-25  Nick Clifton  <nickc@redhat.com>
23567
23568         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
23569         (JUMP_TABLES_IN_TEXT_SECTION): Define.
23570
23571 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
23572
23573         PR target/30770
23574         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
23575         count argument with 0x10, not with 0x16.
23576         (expand_setmem_epilogue): Ditto.
23577
23578 2007-02-24  Mike Stump  <mrs@apple.com>
23579
23580         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
23581         symbols.
23582
23583 2007-02-24  Richard Guenther  <rguenther@suse.de>
23584
23585         PR middle-end/30951
23586         * fold-const.c (fold_binary): Fold x +- CST op x for
23587         EQ_EXPR and NE_EXPR.
23588
23589 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23590
23591         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
23592
23593 2007-02-24  Jan Hubicka  <jh@suse.cz>
23594
23595         * cgraphunit.c (decide_is_function_needed): Honor
23596         -fkeep-inline-functions.
23597
23598 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23599
23600         * builtins.c (fold_builtin_modf): New.
23601         (fold_builtin_2): Use it.
23602
23603 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
23604
23605         * loop-iv.c (implies_p): Detect additional cases where A implies B.
23606         (determine_max_iter): Take additional LOOP arg; all callers changed.
23607         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
23608         one using simplifications.
23609         (simplify_using_initial_values): Return if the expression becomes
23610         invalid due to altered regs.
23611
23612 2007-02-23  DJ Delorie  <dj@redhat.com>
23613
23614         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
23615
23616 2007-02-23  Mike Stump  <mrs@apple.com>
23617
23618         * tlink.c (scan_linker_output): Parse linker messages from
23619         darwin9's linker better.
23620
23621 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
23622
23623         PR debug/29614
23624         * varpool.c (varpool_assemble_pending_decls): Set
23625         varpool_last_needed_node to null.
23626
23627 2007-02-23  DJ Delorie  <dj@redhat.com>
23628
23629         * config/i386/i386.c (ix86_data_alignment): Don't specify an
23630         alignment bigger than the object file can handle.
23631
23632 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
23633
23634         PR target/30825
23635         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
23636         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
23637         (*movsf_1): Penalize MMX moves.
23638
23639 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
23640
23641         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
23642         2^32-1 or more times unless flag_unsafe_loop_optimizations.
23643
23644         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
23645
23646 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23647
23648         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
23649         (fold_builtin_1): Use them.
23650         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
23651         BUILT_IN_SIGNIFICAND.
23652
23653 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
23654
23655         * config/i386/i386.c (bdesc_1arg): Initialize
23656         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
23657         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
23658         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
23659         and IX86_BUILTIN_MOVSLDUP.
23660
23661 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
23662
23663         PR rtl-optimization/30841
23664         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
23665
23666 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23667
23668         * builtins.c (fold_builtin_frexp): New.
23669         (fold_builtin_2): Use it.
23670
23671 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
23672
23673         * doc/invoke.texi (Spec Files): Document getenv spec function.
23674
23675         * gcc.c (getenv_spec_function): New function.
23676         (static_spec_functions): Add it.
23677         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
23678         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
23679         header files.
23680
23681 2007-02-22  Michael Matz  <matz@suse.de
23682
23683         PR c++/29433
23684         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
23685         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
23686
23687 2007-02-22  Ian Lance Taylor  <iant@google.com>
23688
23689         PR debug/30898
23690         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
23691         (mem_loc_descriptor): Call it.
23692
23693 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
23694             Ira Rosen  <irar@il.ibm.com>
23695
23696         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
23697
23698 2007-02-22  Ira Rosen  <irar@il.ibm.com>
23699
23700         PR tree-optimization/30843
23701         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
23702         stores only after all the group is vectorized.
23703
23704 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
23705
23706         PR tree-optimization/30858
23707         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
23708         in the reduction cycle have a single use in the loop.
23709         * tree-vectorizer.h (relevant): Add documentation.
23710
23711 2007-02-20  Mike Stump  <mrs@apple.com>
23712
23713         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
23714         * configure: Regenerate.
23715
23716 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
23717
23718         Change the defaults of some parameters and options.
23719         * config/spu/spu-protos.h (spu_optimization_options): Declare.
23720         * config/spu/spu.c (spu_optimization_options): Add.
23721         (spu_override_options): Change params in spu_optimization_options.
23722         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
23723
23724         Register 127 is only 16 byte aligned when used as a frame pointer.
23725         * config/spu/spu-protos.h (spu_init_expanders): Declare.
23726         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
23727         HARD_FRAME_POINTER_REGNUM.
23728         (spu_legitimate_address): Use regno_aligned_for_reload.
23729         (regno_aligned_for_load): HARD_FRAME_POINTER_REGNUM is only 16 byte
23730         aligned when frame_pointer_needed is true.
23731         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
23732         to 8 bits.
23733         * config/spu/spu.h (INIT_EXPANDERS): Define.
23734
23735         Make sure shift and rotate instructions have valid immediate operands.
23736         * config/spu/predicates.md (spu_shift_operand): Remove.
23737         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
23738         * config/spu/constraints.md (W, O): Extend range.
23739         * config/spu/spu.md (umask, nmask): Define.
23740         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
23741         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
23742         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
23743         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
23744         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
23745         (lshr<mode>3_reg): Fix rtl description.
23746
23747         Make sure mulhisi immediate operands are valid.
23748         * config/spu/predicates.md (imm_K_operand): Add.
23749         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
23750
23751         Generate constants using fsmbi and andi.
23752         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
23753         (print_operand, spu_split_immediate, classify_immediate,
23754         fsmbi_const_p): Handle IC_FSMBI2.
23755
23756         Correctly handle a CONST_VECTOR containing symbols.
23757         * config/spu/spu.c (print_operand): Handle HIGH correctly.
23758         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
23759         (immediate_load_p): Allow symbols that use 2 instructions to create.
23760         (classify_immediate, spu_builtin_splats): Don't accept a CONST_VECTOR
23761         with symbols when flag_pic is set.
23762         (const_vector_immediate_p): New.
23763         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
23764         accept a CONST_VECTOR with symbols.
23765         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
23766         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
23767         correctly.
23768         * config/spu/spu.md (high, low): Delete.
23769         (low_<mode>): Define.
23770
23771         Remove INTRmode and INTR_REGNUM, which didn't work.
23772         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
23773         of INTR_REGNUM.
23774         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
23775         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
23776         peephole2 pattern): Don't use INTR or 131.
23777         (movintrcc): Delete.
23778         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
23779         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
23780         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
23781         (UNSPEC_SET_INTR): Add.
23782         * config/spu/spu-modes.def (INTR): Remove.
23783
23784         More accurate warnings about run-time relocations.
23785         * config/spu/spu.c (reloc_diagnostic): Test in_section.
23786
23787         Correctly warn about immediate arguments to specific intrinsics.
23788         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
23789         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
23790         the instruction predicate.
23791
23792         Fix tree check errors with latest update.
23793         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
23794         CALL_EXPR_ARG.
23795         (spu_expand_builtin): Use CALL_EXPR_FN.
23796
23797         Add missing specific intrinsics.
23798         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
23799         si_bislede.
23800         * config/spu/spu_internals.h: Ditto.
23801
23802         Fix incorrect operand modifiers.
23803         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu): Remove use of %H.
23804         * config/spu/spu.md (xor<mode>3): Change %S to %J.
23805
23806         Optimize one case of zero_extend of a vec_select.
23807         * config/spu/spu.md (_vec_extractv8hi_ze): Add.
23808
23809         Accept any immediate for hbr.
23810         * config/spu/spu.md (hbr): Change s constraints to i.
23811
23812 2007-02-21  Paul Brook  <paul@codesourcery.com>
23813
23814         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
23815         condexec_count when skipping USE and CLOBBER.
23816
23817 2007-02-21  Nick Clifton  <nickc@redhat.com>
23818
23819         * common.opt (Warray-bounds): Add Warning attribute.
23820         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
23821         Likewise.
23822         (fsized-zeroes): Add Optimization attribute.
23823         (fsplit-wide-types, ftree-scev-cprop): Likewise.
23824         * c.opt (Wc++0x-compat): Add Warning attribute.
23825
23826 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
23827
23828         PR middle-end/30761
23829         * reload1.c (eliminate_regs_in_insn): In the single_set special
23830         case, attempt to re-recognize the insn before falling back to
23831         having reload fix it up.
23832
23833 2007-02-20  Eric Christopher  <echristo@gmail.com>
23834
23835         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
23836         Rewrite accordingly.
23837         (frv_read_iacc_argument): Ditto.
23838         (frv_expand_set_builtin): Take a call instead of arglist, update for
23839         above changes.
23840         (frv_expand_unop_builtin): Ditto.
23841         (frv_expand_binop_builtin): Ditto.
23842         (frv_expand_cut_builtin): Ditto.
23843         (frv_expand_binopimm_builtin): Ditto.
23844         (frv_expand_voidbinop_builtin): Ditto.
23845         (frv_expand_int_void2arg): Ditto.
23846         (frv_expand_prefetches): Ditto.
23847         (frv_expand_voidtriop_builtin): Ditto.
23848         (frv_expand_voidaccop_builtin): Ditto.
23849         (frv_expand_load_builtin): Ditto.
23850         (frv_expand_store_builtin): Ditto.
23851         (frv_expand_mdpackh_builtin): Ditto.
23852         (frv_expand_mclracc_builtin): Ditto.
23853         (frv_expand_mrdacc_builtin): Ditto.
23854         (frv_expand_mwtacc_builtin): Ditto.
23855         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
23856         calls for above.
23857
23858 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
23859
23860         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
23861         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
23862         cmpb instruction.
23863         (HAVE_GAS_DFP): Check for assembler support of decimal floating
23864         point instructions.
23865         * configure: Regenerate.
23866         * config.in: Regenerate.
23867         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
23868         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
23869         masks to power6 and power6x and to POWERPC_MASKS.
23870         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
23871         _ARCH_PWR6.
23872         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
23873         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
23874         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
23875         Access PROTOTYPE as variable, not mask.
23876
23877 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
23878
23879         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
23880         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
23881         * combine.c (adjust_for_new_dest): Use it.
23882         * postreload.c (reload_combine): Likewise.
23883
23884 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
23885
23886         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
23887         notes on an insn with multiple sets, even if single_set returns
23888         non-NULL for that insn.
23889
23890 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23891
23892         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
23893         scalbn and scalbln.
23894
23895 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
23896
23897         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
23898         if user didn't pass it.
23899         * config/i386/darwin.h (CC1_SPEC): Likewise.
23900         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
23901         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
23902         -mmacosx-version-min.
23903
23904 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23905             Uros Bizjak  <ubizjak@gmail.com>
23906
23907         * optabs.h (enum optab_index): Add new OTI_scalb.
23908         (scalb_optab): Define corresponding macro.
23909         * optabs.c (init_optabs): Initialize scalb_optab.
23910         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
23911         patterns.
23912         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
23913         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
23914         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
23915         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
23916         flag_unsafe_math_optimizations is set.
23917
23918         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
23919         to implement scalbf, scalb and scalbl built-ins as inline x87
23920         intrinsics.
23921
23922 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23923             DJ Delorie <dj@redhat.com>
23924
23925         PR other/30824
23926         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
23927         (diagnostic_report_diagnostic): ... here, and turn them into real
23928         errors. If warnings are inhibited, no need to do anything.
23929
23930 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
23931
23932         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
23933         better code generation.
23934
23935 2007-02-20  Ben Elliston  <bje@au.ibm.com>
23936
23937         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
23938
23939 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
23940
23941         * config/alpha/alpha.c, config/alpha/alpha.md,
23942         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
23943         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
23944         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
23945         config/arm/lib1funcs.asm: Follow spelling conventions.
23946
23947         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
23948         config/fr30/fr30.md, config/i386/i386.h,
23949         config/iq2000/iq2000.h, config/iq2000/predicates.md,
23950         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
23951         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
23952         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
23953         config/rs6000/altivec.md, config/rs6000/rs6000.c,
23954         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
23955         config/sparc/sparc.c, config/sparc/sparc.h,
23956         config/sparc/sparc.md, config/spu/constraints.md,
23957         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
23958         conventions.
23959
23960 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
23961
23962         PR target/29943
23963         * varasm.c (use_blocks_for_decl_p): Return false for decls with
23964         alias attribute.
23965
23966 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
23967
23968         * doc/invoke.texi (-ftree-lrs): Remove.
23969
23970 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
23971
23972         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
23973         NULL.
23974
23975 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
23976
23977         * config/ia64/ia64.c (ia64_expand_builtin): Use the
23978         new CALL_EXPR_FN macro for retrieving the function
23979         declaration of the input expression.
23980
23981 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23982
23983         * c.opt (Waddress): New.
23984         * common.opt (Walways-true): Delete.
23985         (Wstring-literal-comparison): Delete.
23986         * doc/invoke.texi (Warning Options): Delete -Walways-true and
23987         -Wstring-literal-comparison. Add -Waddress.
23988         (Waddress): New.
23989         (Walways-true): Delete.
23990         (Wstring-literal-comparison): Delete.
23991         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
23992         consistently instead of -Walways-true in example.
23993         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
23994         * c-typeck.c (parser_build_binary_op): Replace
23995         -Wstring-literal-comparison and -Walways-true with -Waddress.
23996         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
23997         with -Waddress.
23998
23999 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
24000
24001         * tree-cfg.c (dump_function_to_file): Be prepared for functions
24002         without DECL_STRUCT_FUNCTION initialized.
24003
24004 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
24005
24006         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
24007         due to calls to functions taking pointers as parameters.
24008
24009 2007-02-19  Richard Henderson  <rth@redhat.com>
24010
24011         PR debug/29558
24012         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
24013         in memory.
24014
24015 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
24016
24017         * config/s390/s390.c (s390_call_saved_register_used,
24018         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
24019         accessed to the new scheme.
24020
24021 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
24022
24023         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
24024         (cris_print_index, cris_print_operand, cris_print_operand_address)
24025         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
24026         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
24027         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
24028         GET_CODE () == xxx.
24029         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
24030         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
24031         GO_IF_LEGITIMATE_ADDRESS): Ditto.
24032         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
24033         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
24034         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
24035         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
24036         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
24037         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
24038         (uminsi3, call, call_value): Ditto.
24039         (define_split: indir_to_reg_split, unnamed): Ditto.
24040
24041 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
24042
24043         PR tree-optimization/30975
24044         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
24045         wrong assert.
24046
24047 2007-02-18  Eric Christopher  <echristo@gmail.com>
24048
24049         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
24050         Remove use of arglist.
24051         (mips_expand_builtin): Remove use of arglist, pass in expr.
24052         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
24053         (mips_expand_builtin_movtf): Ditto.
24054         (mips_expand_builtin_compare): Ditto.
24055
24056 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
24057
24058         * tree-sra.c (sra_build_assignment): Replace assertion
24059         checking with a comment explaining why it can't be done.
24060
24061 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
24062
24063         PR middle-end/30833
24064         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
24065         during CALL_EXPR representation conversion.
24066         * tree-ssa-propagate.c (set_rhs): Likewise.
24067
24068 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
24069
24070         * tree-sra.c (sra_build_assignment): Disable assertion checking
24071         for now.
24072
24073 2007-02-18  Roger Sayle  <roger@eyesopen.com>
24074
24075         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
24076         instead of calling build2 with a GIMPLE_MODIFY_STMT.
24077         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
24078         Likewise.
24079         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
24080         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
24081         gimplify_init_ctor_eval_range, gimple_push_cleanup,
24082         gimplify_omp_for, gimplify_omp_atomic_pipeline,
24083         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
24084         force_gimple_operand): Likewise.
24085         * ipa-cp.c (constant_val_insert): Likewise.
24086         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
24087         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
24088         perfect_nestify): Likewise.
24089         * langhooks.c (lhd_omp_assignment): Likewise.
24090         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
24091         lower_copyprivate_clauses, lower_send_clauses,
24092         lower_send_shared_vars, expand_parallel_call,
24093         expand_omp_for_generic, expand_omp_for_static_nochunk,
24094         expand_omp_for_static_chunk, expand_omp_sections,
24095         lower_omp_single_copy, lower_omp_for_lastprivate,
24096         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
24097         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
24098         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
24099         Likewise.
24100
24101 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
24102
24103         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
24104         config/sh/sh.md: Follow spelling conventions.
24105
24106         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
24107         config/frv/predicates.md: Follow spelling conventions.
24108
24109         * config/m68k/linux-unwind.h: Fix a comment typo.
24110         * target.h: Follow spelling conventions.
24111
24112 2007-02-18  Roger Sayle  <roger@eyesopen.com>
24113
24114         PR rtl-optimization/28173
24115         * simplify-rtx.c (simplify_binary_operation_1) <IOR>: Optimize
24116         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
24117         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
24118         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
24119         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
24120
24121 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24122
24123         * builtins.c (fold_builtin_load_exponent): New.
24124         (fold_builtin_2): Use it.
24125
24126 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
24127
24128         PR rtl-optimization/30773
24129         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
24130         if we fail to attach a REG_EQUIV note.
24131
24132 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
24133             Roger Sayle  <roger@eyesopen.com>
24134
24135         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
24136
24137 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
24138
24139         * calls.c (initialize_argument_information): Pass original EXP
24140         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
24141         code to split complex arguments here, as part of initializing the
24142         ARGS array.
24143         (expand_call): Remove code that builds a list of arguments and
24144         inserts implicit arguments into it.  Instead, just count how many
24145         implicit arguments there will be so we can determine the size of
24146         the ARGS array, and let initialize_argument_information do the work.
24147         (split_complex_values): Delete unused function.
24148
24149 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
24150
24151         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
24152
24153 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
24154
24155         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
24156         for arg pointer based indexed addressing.
24157
24158 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
24159
24160         * config/ia64/ia64.h, config/ia64/ia64.md,
24161         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
24162         spelling conventions.
24163
24164 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
24165
24166         * config/m68k/m68k.c (split_di): New.
24167         * config/m68k/m68k-protos.h: Declare split_di.
24168         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
24169           Improve predicate handling and split constant shifts.
24170
24171 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
24172
24173         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
24174         parameter for register bitfield operations, general predicates
24175         cleanup
24176
24177 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
24178
24179         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
24180         * config/m68k/linux-unwind.h: New file.
24181
24182 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
24183
24184         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
24185         config/i386/athlon.md, config/ia64/ia64.md,
24186         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
24187         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
24188         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
24189         tree-ssa-loop-niter.c, tree-vect-analyze.c,
24190         tree-vect-transform.c: Fix comment typos.
24191
24192 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
24193
24194         * sched-deps.c (find_insn_list): Remove.
24195         * sched-int.h: Remove the prototype for find_insn_list.
24196
24197 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
24198
24199         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
24200         to linker.
24201         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
24202         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
24203         darwin_rs6000_override_options.
24204         (C_COMMON_OVERRIDE_OPTIONS): Expect
24205         darwin_macosx_version_min to be non-NULL always.
24206         (TARGET_C99_FUNCTIONS): Likewise.
24207         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
24208         (DARWIN_MINVERSION_SPEC): New.
24209         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
24210         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
24211         to cc1*.
24212         (DARWIN_MINVERSION_SPEC): New.
24213         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
24214         value.
24215         * config/darwin-c.c (darwin_cpp_builtins): Expect
24216         darwin_macosx_version_min to be non-NULL always.
24217
24218         * config/rs6000/rs6000.c: Clean up trailing whitespace.
24219
24220 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
24221
24222         * config/i386/i386.h (x86_use_xchgb): New.
24223         (TARGET_USE_XCHGB): New macro.
24224         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
24225         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
24226         Split after reload into bswaphi for shifts of 8.
24227         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
24228         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
24229         or when optimizing for size.
24230
24231 2007-02-16  Richard Guenther  <rguenther@suse.de>
24232             Christian Bruel  <christian.bruel@st.com>
24233
24234         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
24235         DECLs but prefer SSA_NAMEs over DECLs.
24236
24237 2007-02-16  Richard Guenther  <rguenther@suse.de>
24238
24239         * tree-flow-inline.h (single_imm_use_p): Remove.
24240         (zero_imm_uses_p): Likewise.
24241         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
24242         instead of single_imm_use_p.
24243         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
24244         zero_imm_uses_p.
24245
24246 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24247
24248         PR other/27843
24249         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
24250         nested double- and backquotes.
24251
24252 2007-02-15  Roger Sayle  <roger@eyesopen.com>
24253
24254         PR middle-end/30391
24255         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
24256         should be unreachable.
24257         (build2_stat): Allow construction of MODIFY_EXPR at any time.
24258         For the time being redirect GIMPLE_MODIFY_STMT to the new
24259         (renamed) build_gimple_modify_stmt_stat.
24260         (build2_gimple_stat): Rename to...
24261         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
24262         Always build a GIMPLE_MODIFY_STMT node.
24263         * tree.h (build2_gimple, build2_gimple_stat): Delete.
24264         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
24265         declarations.
24266
24267         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
24268         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
24269         * tree-complex.c (set_component_ssa_name, expand_complex_move,
24270         expand_complex_div_wide): Likewise.
24271         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
24272         * tree-ssa-loop-im.c (schedule_sm): Likewise.
24273         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
24274         * tree-ssa-loop-manip.c (create_iv): Likewise.
24275         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
24276         abs_replacement): Likewise.
24277         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
24278         realify_fake_stores): Likewise.
24279
24280         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
24281         node rather than a GIMPLE_MODIFY_STMT node.
24282         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
24283         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
24284         Likewise.
24285         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
24286         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
24287         GIMPLE_MODIFY_STMT.
24288
24289 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24290
24291         PR middle-end/30433
24292         * fold-const.c (fold_comparison): Add back the
24293         folding of constant complex comparisions.
24294
24295 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24296
24297         PR middle-end/30729
24298         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
24299         effects unknown to this function, return early.
24300
24301 2007-02-15  Ian Lance Taylor  <iant@google.com>
24302
24303         * lower-subreg.c (move_eh_region_note): New static function.
24304         (resolve_simple_move): Call it.
24305         (decompose_multiword_subregs): Track blocks for which we resolve a
24306         simple move which is also a control flow insn.  Pass them to
24307         find_many_sub_basic_blocks.
24308         (pass_lower_subreg): Add TODO_verify_flow.
24309         (pass_lower_subreg2): Likewise.
24310
24311 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
24312             Brooks Moses  <brooks.moses@codesourcery.com>
24313             Lee Millward  <lee.millward@codesourcery.com>
24314
24315         * tree.h (enum tree_code_class): Add tcc_vl_exp.
24316         (VL_EXP_CLASS_P): New.
24317         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
24318         TREE_CODE_LENGTH.
24319         (TREE_OPERAND_CHECK_CODE): Likewise.
24320         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
24321         (TREE_RTL_OPERAND_CHECK): Likewise.
24322         (tree_operand_check_failed): Make second parameter the whole tree
24323         instead of its code.  Fixed callers.
24324         (VL_EXP_CHECK): New.
24325         (TREE_OPERAND_LENGTH): New.
24326         (VL_EXP_OPERAND_LENGTH): New.
24327         (CALL_EXPR_FN): New.
24328         (CALL_EXPR_STATIC_CHAIN): New.
24329         (CALL_EXPR_ARGS): New.
24330         (CALL_EXPR_ARG): New.
24331         (call_expr_nargs): New.
24332         (CALL_EXPR_ARGP): New.
24333         (build_nt_call_list): Declare.
24334         (build_vl_exp_stat): Declare.
24335         (build_vl_exp): New.
24336         (build_call_list): Declare.
24337         (build_call_nary): Declare.
24338         (build_call_valist): Declare.
24339         (build_call_array): Declare.
24340         (call_expr_arg): Declare.
24341         (call_expr_argp): Declare.
24342         (call_expr_arglist): Declare.
24343         (fold_build_call_list): Declare.
24344         (fold_build_call_list_initializer): Declare.
24345         (fold_call_expr): Declare to replace fold_builtin.
24346         (fold_builtin_fputs): Update to agree with modified definition.
24347         (fold_builtin_strcpy): Likewise.
24348         (fold_builtin_strncpy): Likewise.
24349         (fold_builtin_memory_chk): Likewise.
24350         (fold_builtin_stxcpy_chk): Likewise.
24351         (fold_builtin_strncpy_chk): Likewise.
24352         (fold_builtin_next_arg): Likewise.
24353         (fold_build_call_expr): Declare.
24354         (fold_builtin_call_list): Declare.
24355         (fold_builtin_call_valist): Declare.
24356         (build_call_expr): Declare.
24357         (validate_arglist): Update to agree with modified definition.
24358         (tree_operand_length): New.
24359         (call_expr_arg_iterator): New.
24360         (init_call_expr_arg_iterator): New.
24361         (next_call_expr_arg): New.
24362         (first_call_expr_arg): New.
24363         (more_call_expr_args_p): New.
24364         (FOR_EACH_CALL_EXPR_ARG): New.
24365
24366         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
24367         and tcc_gimple_stmt.
24368         (tree_code_size): Update documentation.  Use sizeof (tree) rather
24369         than sizeof (char *).
24370         (tree_size): Likewise.  Add case for tcc_vl_exp.
24371         (tree_node_structure): Add case for tcc_vl_exp.
24372         (contains_placeholder_p): Likewise.
24373         (substitute_in_expr): Likewise.
24374         (substitute_placeholder_in_expr): Likewise.
24375         (stabilize_reference_1): Likewise.
24376         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
24377         to diagnose breakage of this interface for constructing CALL_EXPRs.
24378         (build_nt): Add similar assertion here.
24379         (build_nt_call_list): New.
24380         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
24381         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
24382         TREE_CODE_LENGTH.
24383         (get_callee_fndecl): Use new CALL_EXPR accessors.
24384         (tree_operand_check_failed): Change parameters to pass entire node
24385         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
24386         (process_call_operands): New.
24387         (build_vl_exp_stat): New.
24388         (build_call_list): New.
24389         (build_call_nary): New.
24390         (build_call_valist): New.
24391         (build_call_array): New.
24392         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
24393         (call_expr_arglist): New.
24394
24395         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
24396         tcc_vl_exp instead of a fixed-size tcc_expression.
24397
24398         * doc/c-tree.texi (CALL_EXPR): Document new representation and
24399         accessors for CALL_EXPRs.
24400         (AGGR_INIT_EXPR): Likewise.
24401
24402 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
24403             Brooks Moses  <brooks.moses@codesourcery.com>
24404             Lee Millward  <lee.millward@codesourcery.com>
24405
24406         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
24407         (expand_builtin_nonlocal_goto): Change parameter to be entire
24408         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
24409         (expand_builtin_prefetch): Likewise.
24410         (expand_builtin_classify_type): Likewise.
24411         (mathfn_built_in): Return NULL_TREE instead of 0.
24412         (expand_errno_check): Use new CALL_EXPR accessors.
24413         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
24414         Return NULL_RTX instead of 0.
24415         (expand_builtin_mathfn_2): Likewise.
24416         (expand_builtin_mathfn_3): Likewise.
24417         (expand_builtin_interclass_mathfn): Likewise.
24418         (expand_builtin_sincos): Likewise.
24419         (expand_builtin_cexpi): Likewise.
24420         (expand_builtin_int_roundingfn): Likewise.
24421         (expand_builtin_int_roundingfn_2): Likewise.
24422         (expand_builtin_pow): Likewise.
24423         (expand_builtin_powi): Likewise.
24424         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
24425         of arglist, fixing callers appropriately.  Use new CALL_EXPR
24426         accessors and constructors.  Return NULL_RTX instead of 0.
24427         (expand_builtin_strstr): Likewise.
24428         (expand_builtin_strchr): Likewise.
24429         (expand_builtin_strrchr): Likewise.
24430         (expand_builtin_strpbrk): Likewise.
24431         (expand_builtin_memcpy): Likewise.
24432         (expand_builtin_mempcpy): Likewise.
24433         (expand_builtin_mempcpy_args): New.
24434         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
24435         (expand_builtin_memmove_args): New.
24436         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
24437         (expand_movstr): Likewise.
24438         (expand_builtin_strcpy): Likewise.
24439         (expand_builtin_strcpy_args): New.
24440         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
24441         (expand_builtin_strncpy): Likewise.
24442         (expand_builtin_memset): Likewise.
24443         (expand_builtin_memset_args): New.
24444         (expand_builtin_bzero): Similarly to expand_builtin_memset.
24445         (expand_builtin_memcmp): Likewise.
24446         (expand_builtin_strcmp): Likewise.
24447         (expand_builtin_strncmp): Likewise.
24448         (expand_builtin_strcat): Likewise.
24449         (expand_builtin_strncat): Likewise.
24450         (expand_builtin_strspn): Likewise.
24451         (expand_builtin_strcspn): Likewise.
24452         (expand_builtin_args_info): Likewise.
24453         (expand_builtin_va_start): Likewise.
24454         (gimplify_va_arg_expr): Likewise.
24455         (expand_builtin_va_end): Likewise.
24456         (expand_builtin_va_copy): Likewise.
24457         (expand_builtin_frame_address): Likewise.
24458         (expand_builtin_alloca): Likewise.
24459         (expand_builtin_bswap): Likewise.
24460         (expand_builtin_unop): Likewise.
24461         (expand_builtin_fputs): Likewise.
24462         (expand_builtin_expect): Likewise.
24463         (expand_builtin_fabs): Likewise.
24464         (expand_builtin_copysign): Likewise.
24465         (expand_builtin_printf): Likewise.
24466         (expand_builtin_fprintf): Likewise.
24467         (expand_builtin_sprintf): Likewise.
24468         (expand_builtin_init_trampoline): Likewise.
24469         (expand_builtin_signbit): Likewise.
24470         (expand_builtin_fork_or_exec): Likewise.
24471         (expand_builtin_sync_operation): Likewise.
24472         (expand_builtin_compare_and_swap): Likewise.
24473         (expand_builtin_lock_test_and_set): Likewise.
24474         (expand_builtin_lock_release): Likewise.
24475         (expand_builtin): Likewise.
24476         (builtin_mathfn_code): Likewise.
24477
24478         (fold_builtin_constant_p): Pass call arguments individually instead
24479         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
24480         accessors and constructors.  Return NULL_TREE instead of 0.
24481         (fold_builtin_expect): Likewise.
24482         (fold_builtin_classify_type): Likewise.
24483         (fold_builtin_strlen): Likewise.
24484         (fold_builtin_nan): Likewise.
24485         (integer_valued_real_p): Likewise.
24486         (fold_trunc_transparent_mathfn): Likewise.
24487         (fold_fixed_mathfn): Likewise.
24488         (fold_builtin_cabs): Likewise.
24489         (fold_builtin_sqrt): Likewise.
24490         (fold_builtin_cbrt): Likewise.
24491         (fold_builtin_cos): Likewise.
24492         (fold_builtin_cosh): Likewise.
24493         (fold_builtin_tan): Likewise.
24494         (fold_builtin_sincos): Likewise.
24495         (fold_builtin_cexp): Likewise.
24496         (fold_builtin_trunc): Likewise.
24497         (fold_builtin_floor): Likewise.
24498         (fold_builtin_ceil): Likewise.
24499         (fold_builtin_round): Likewise.
24500         (fold_builtin_int_roundingfn): Likewise.
24501         (fold_builtin_bitop): Likewise.
24502         (fold_builtin_bswap): Likewise.
24503         (fold_builtin_logarithm): Likewise.
24504         (fold_builtin_hypot): Likewise.
24505         (fold_builtin_pow): Likewise.
24506         (fold_builtin_powi): Likewise.
24507         (fold_builtin_exponent): Likewise.
24508         (fold_builtin_memset): Likewise.
24509         (fold_builtin_bzero): Likewise.
24510         (fold_builtin_memory_op): Likewise.
24511         (fold_builtin_bcopy): Deleted; call site changed to invoke
24512         fold_builtin_memory_op directly.
24513         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
24514         (fold_builtin_strncpy): Likewise.
24515         (fold_builtin_memcmp): Likewise.
24516         (fold_builtin_strcmp): Likewise.
24517         (fold_builtin_strncmp): Likewise.
24518         (fold_builtin_signbit): Likewise.
24519         (fold_builtin_copysign): Likewise.
24520         (fold_builtin_isascii): Likewise.
24521         (fold_builtin_toascii): Likewise.
24522         (fold_builtin_isdigit): Likewise.
24523         (fold_builtin_fabs): Likewise.
24524         (fold_builtin_abs): Likewise.
24525         (fold_builtin_fmin_fmax): Likewise.
24526         (fold_builtin_carg): Likewise.
24527         (fold_builtin_classify): Likewise.
24528         (fold_builtin_unordered_cmp): Likewise.
24529
24530         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
24531         New functions split out from fold_builtin_1.
24532         (fold_builtin_n): New.
24533         (fold_builtin_varargs): New.
24534         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
24535         instead.
24536         (fold_call_expr): New.
24537         (build_function_call_expr): Rewrite to use new helper function.
24538         (fold_builtin_call_list): New.
24539         (build_call_expr): New.
24540         (fold_builtin_call_valist): New.
24541         (rewrite_call_expr): New.
24542         (validate_arg): New.
24543         (validate_arglist): Change parameter to be entire CALL_EXPR instead
24544         of an arglist.  Change return type to bool.  Use new CALL_EXPR
24545         accessors.
24546
24547         (fold_builtin_strstr): Pass call arguments individually instead
24548         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
24549         accessors and constructors.  Return NULL_TREE instead of 0.
24550         (fold_builtin_strchr): Likewise.
24551         (fold_builtin_strrchr): Likewise.
24552         (fold_builtin_strpbrk): Likewise.
24553         (fold_builtin_strcat): Likewise.
24554         (fold_builtin_strncat): Likewise.
24555         (fold_builtin_strspn): Likewise.
24556         (fold_builtin_strcspn): Likewise.
24557         (fold_builtin_fputs): Likewise.
24558         (fold_builtin_next_arg): Likewise.
24559         (fold_builtin_sprintf): Likewise.
24560
24561         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
24562         NULL_RTX instead of 0.
24563         (expand_builtin_memory_chk): Likewise.
24564         (maybe_emit_chk_warning): Likewise.
24565         (maybe_emit_sprintf_chk_warning): Likewise.
24566
24567         (fold_builtin_object_size): Pass call arguments individually instead
24568         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
24569         accessors and constructors.  Return NULL_TREE instead of 0.
24570         (fold_builtin_memory_chk): Likewise.
24571         (fold_builtin_stxcpy_chk): Likewise.
24572         (fold_builtin_strncpy_chk): Likewise.
24573         (fold_builtin_strcat_chk): Likewise.
24574         (fold_builtin_strcat_chk): Likewise.
24575         (fold_builtin_strncat_chk): Likewise.
24576         (fold_builtin_sprintf_chk): Likewise.
24577         (fold_builtin_snprintf_chk): Likewise.
24578         (fold_builtin_printf): Likewise.
24579         (fold_builtin_vprintf): Likewise.
24580
24581         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
24582         constructors.
24583         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
24584         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
24585         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
24586         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
24587         (fold_unary): Likewise.
24588         (fold_binary): Likewise.
24589         (fold_ternary): Remove CALL_EXPR case, since they are no longer
24590         ternary expressions.
24591         (fold): Add logic for tcc_vl_exp.
24592         (fold_checksum_tree): Make it know about tcc_vl_exp.  Use
24593         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
24594         (fold_build3_stat): Add assertion to flag broken interface for
24595         constructing CALL_EXPRs.
24596         (fold_build_call_list): New.
24597         (fold_build_call_list_initializer): New.
24598         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
24599         constructors.
24600         (fold_strip_sign_ops): Likewise.
24601
24602 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
24603             Brooks Moses  <brooks.moses@codesourcery.com>
24604             Lee Millward  <lee.millward@codesourcery.com>
24605
24606         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
24607         accessors and dump arguments explicitly.
24608
24609         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
24610         TREE_CODE_LENGTH.
24611         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
24612         explicitly.
24613         (print_call_name): Use new CALL_EXPR accessors.
24614
24615         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
24616         CALL_EXPR arguments explicitly instead of as a list.  Use
24617         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
24618
24619         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
24620         (vrp_visit_stmt): Likewise.
24621
24622         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Make it
24623         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
24624         TREE_CODE_LENGTH.
24625         (force_move_till_expr): Likewise.
24626
24627         * targhooks.c (default_external_stack_protect_fail): Use
24628         build_call_expr instead of build_function_call_expr.
24629         (default_hidden_stack_protect_fail): Likewise.
24630
24631         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
24632         build the call.
24633
24634         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
24635         and walk arguments explicitly.
24636
24637         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
24638         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
24639         (expand_simple_operations): Likewise.
24640         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
24641
24642         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
24643         of TREE_CODE_LENGTH.
24644         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
24645
24646         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
24647         instead of TREE_CODE_LENGTH.
24648
24649         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
24650         (tree_ic_transform): Likewise.
24651         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
24652         parameter instead of arglist.  Fix callers.
24653         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
24654         (tree_stringops_transform): Likewise.
24655         (tree_indirect_call_to_profile): Likewise.
24656         (tree_stringops_values_to_profile): Likewise.
24657
24658         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
24659         (eliminate_tail_call): Likewise.
24660
24661         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
24662
24663         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
24664         Use TREE_OPERAND_LENGTH and generalize to handle any number of
24665         operands.
24666         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
24667
24668         * omp-low.c (build_omp_barrier): Use build_call_expr.
24669         (lower_rec_input_clauses): Likewise.
24670         (lower_reduction_clauses): Likewise.
24671         (expand_parallel_call): Likewise.
24672         (maybe_catch_exception): Likewise.
24673         (expand_omp_for_generic): Likewise.
24674         (expand_omp_for_static_nochunk): Likewise.
24675         (expand_omp_sections): Likewise.
24676         (lower_omp_single_simple): Likewise.
24677         (lower_omp_single_copy): Likewise.
24678         (lower_omp_master): Likewise.
24679         (lower_omp_ordered): Likewise.
24680         (lower_omp_critical): Likewise.
24681
24682         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
24683         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
24684
24685         * tree-gimple.c (is_gimple_call_addr): Fix doc.
24686         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
24687         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
24688
24689         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
24690         and generalize to handle any number of operands.
24691         (chrec_contains_undetermined): Likewise.
24692         (tree_contains_chrecs): Likewise.
24693         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
24694
24695         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
24696
24697         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
24698         fold_call_expr instead of fold_builtin.
24699         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
24700         match declarations there.
24701         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
24702         updates.
24703
24704         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
24705         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
24706
24707         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
24708         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
24709
24710         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
24711         accessors.
24712
24713         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
24714         (execute_cse_sincos): Use new CALL_EXPR accessors.
24715
24716         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
24717
24718         * gimple-low.c (lower_function_body): Use build_call_expr.
24719         (lower_builtin_setjmp): Likewise.
24720
24721         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
24722         (set_storage_via_libcall): Likewise.
24723         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
24724         instead of TREE_CODE_LENGTH.
24725         (expand_expr_real_1): Use new CALL_EXPR accessors.
24726
24727         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
24728         generalize to handle any number of operands.
24729         (TB_parent_eq): Likewise.
24730
24731         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
24732         (strip_builtin_expect): Likewise.
24733
24734         * function.c (gimplify_parameters): Use build_call_expr.
24735
24736         * tree-vectorizer.c (vect_is_simple_reduction): Use
24737         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
24738
24739         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
24740         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
24741
24742         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
24743         iterators.
24744
24745         * gimplify.c (build_stack_save_restore): Use build_call_expr.
24746         (gimplify_decl_expr): Likewise.
24747         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
24748         Use new CALL_EXPR iterators.
24749         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
24750         (gimplify_modify_expr_to_memset): Likewise.
24751         (gimplify_variable_sized_compare): Likewise.
24752         (gimplify_omp_atomic_fetch_op): Likewise.
24753         (gimplify_omp_atomic_pipeline): Likewise.
24754         (gimplify_omp_atomic_mutex): Likewise.
24755         (gimplify_function_tree): Likewise.
24756
24757         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
24758         (call_expr_flags): Likewise.
24759         (expand_call): Likewise.
24760
24761         * except.c (expand_builtin_eh_return_data_regno): Pass entire
24762         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
24763         accessors.
24764
24765         * coverage.c (create_coverage): Use build_call_expr.
24766
24767         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
24768         (temp_call_expr_obstack): New.
24769         (pool_copy_list): Delete.
24770         (temp_copy_call_expr): New.
24771         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
24772         CALL_EXPR accessors.  Get rid of special goo for copying argument
24773         lists and use temp_copy_call_expr instead.
24774         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
24775         CALL_EXPR accessors.
24776         (create_expression_by_pieces): Likewise.  Use build_call_array
24777         to construct the result instead of fold_build3.
24778         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
24779         dealing with argument lists.
24780         (init_pre): Remove references to expression_node_pool and
24781         list_node_pool.  Init temp_call_expr_obstack instead.
24782         (fini_pre): Remove references to expression_node_pool and
24783         list_node_pool.
24784
24785         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
24786         and walk arguments explicitly instead of as a list.
24787
24788         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
24789         (mx_register_decls): Likewise.
24790         (mudflap_register_call): Likewise.
24791         (mudflap_finish_file): Likewise.
24792
24793         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
24794         (ipa_callsite_compute_param): Likewise.
24795
24796         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
24797         accessors and constructor.
24798
24799         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
24800         accessors and constructor.
24801         (convert_tramp_reference): Likewise.
24802         (convert_call_expr): Likewise.
24803         (finalize_nesting_tree_1): Likewise.
24804
24805         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
24806         accessors.
24807
24808         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
24809
24810         * tree-inline.c (initialize_inlined_parameters): Pass entire
24811         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
24812         accessors.
24813         (estimate_num_insns_1): Use new CALL_EXPR accessors.
24814         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
24815
24816         * tree-vect-transform.c (vect_create_epilog_for_reduction): Use
24817         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
24818         (vectorizable_reduction): Likewise.
24819         (vectorizable_call): Use new CALL_EXPR iterators.
24820         (vectorizable_conversion): Use build_call_expr.
24821         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
24822         (vect_gen_widened_results_half): Use build_call_expr.
24823         (vect_setup_realignment): Likewise.
24824         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
24825
24826         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
24827         (pass_through_call): Likewise.
24828         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
24829         fold_builtin.
24830
24831         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
24832         (tree_gen_pow2_profiler): Likewise.
24833         (tree_gen_one_value_profiler): Likewise.
24834         (tree_gen_ic_func_profiler): Likewise.
24835         (tree_gen_average_profiler): Likewise.
24836         (tree_gen_ior_profiler): Likewise.
24837
24838         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
24839         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
24840         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
24841
24842         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
24843         of TREE_CODE_LENGTH.
24844
24845         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
24846         of TREE_CODE_LENGTH.
24847
24848         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
24849         constructor.
24850         (convert_to_integer): Likewise.
24851
24852         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
24853         accessors.
24854
24855 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
24856             Brooks Moses  <brooks.moses@codesourcery.com>
24857             Lee Millward  <lee.millward@codesourcery.com>
24858
24859         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
24860         accessors.
24861         * config/frv/frv.c (frv_expand_builtin): Likewise.
24862         * config/s390/s390.c (s390_expand_builtin): Likewise.
24863
24864         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
24865         (sparc_expand_builtin): Use new CALL_EXPR accessors.
24866
24867         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
24868         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
24869         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
24870         (ix86_expand_store_builtin): Likewise.
24871         (ix86_expand_unop_builtin): Likewise.
24872         (ix86_expand_unop1_builtin): Likewise.
24873         (ix86_expand_sse_compare): Likewise.
24874         (ix86_expand_sse_comi): Likewise.
24875         (ix86_expand_vec_init_builtin): Likewise.
24876         (ix86_expand_vec_ext_builtin): Likewise.
24877         (ix86_expand_vec_set_builtin): Likewise.
24878         (ix86_expand_builtin): Use new CALL_EXPR accessors.
24879
24880         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
24881         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
24882
24883         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
24884         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
24885         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
24886
24887         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
24888         build_call_expr.
24889         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
24890         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
24891         arglist.  Use new CALL_EXPR accessors.  Fix callers.
24892         (altivec_expand_abs_builtin): Likewise.
24893         (rs6000_expand_binop_builtin): Likewise.
24894         (altivec_expand_predicate_builtin): Likewise.
24895         (altivec_expand_lv_builtin): Likewise.
24896         (spe_expand_stv_builtin): Likewise.
24897         (altivec_expand_stv_builtin): Likewise.
24898         (rs6000_expand_ternop_builtin): Likewise.
24899         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
24900         (altivec_expand_st_builtin): Likewise.
24901         (altivec_expand_dst_builtin): Likewise.
24902         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
24903         arglist.  Use new CALL_EXPR accessors.  Fix callers.
24904         (altivec_expand_vec_set_builtin): Likewise.
24905         (altivec_expand_vec_ext_builtin): Likewise.
24906         (altivec_expand_builtin): Use new CALL_EXPR accessors.
24907         (spe_expand_builtin): Likewise.
24908         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
24909         arglist.  Use new CALL_EXPR accessors.  Fix callers.
24910         (spe_expand_evsel_builtin): Likewise.
24911         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
24912         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
24913
24914         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
24915         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
24916         (arm_expand_unop_builtin): Likewise.
24917         (arm_expand_builtin): Use new CALL_EXPR accessors.
24918
24919         * config/mips/mips.c (mips_expand_builtin): Use new CALL_EXPR
24920         accessors.
24921
24922         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire
24923         CALL_EXPR instead of arglist.  Use new CALL_EXPR accessors.
24924         Fix callers.
24925         (bfin_expand_unop_builtin): Likewise.
24926         (bfin_expand_builtin): Use new CALL_EXPR accessors.
24927
24928 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
24929             Brooks Moses  <brooks.moses@codesourcery.com>
24930             Lee Millward  <lee.millward@codesourcery.com>
24931
24932         * c-semantics.c (build_stmt): Add internal diagnostic check.
24933
24934         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
24935         accessors.  Print arguments explicitly instead of as a list.
24936
24937         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
24938
24939         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
24940         (c_finish_omp_flish): Likewise.
24941
24942         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
24943         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
24944         instead of TREE_CODE_LENGTH.
24945         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
24946         (c_warn_unused_result): Likewise.
24947
24948 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24949
24950         PR c/26494
24951         * doc/invoke.texi (Warning Options): Remove
24952         -Werror-implicit-function-declaration.
24953         (Wimplicit-function-declaration): Update description.
24954         * opts.c (common_handle_option): Move handling of -Werror=* to...
24955         (enable_warning_as_error): ...here.
24956         * opts.h (enable_warning_as_error): Declare.
24957         * c-decl.c (implicit_decl_warning): Unless
24958         -Wno-implicit-function-declaration is given, emit a pedwarn if
24959         -std=c99 or emit a warning if -Wimplicit-function-declaration.
24960         * c.opt (Wimplicit-function-declaration): Replace
24961         mesg_implicit_function_declaration with
24962         warn_implicit_function_declaration.
24963         * c-opts.c (c_common_handle_option):
24964         -Werror-implicit-function-declaration is exactly equal as
24965         -Werror=implicit-function-declaration.
24966         (set_Wimplicit): Replace mesg_implicit_function_declaration with
24967         warn_implicit_function_declaration.
24968         (c_common_post_options): -Wimplict-function-declaration is enabled
24969         by default by -std=c99, otherwise is disabled by default.
24970         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
24971
24972 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
24973
24974         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
24975         DECL on the rhs to a DECL on the lhs for debug info purposes if the
24976         former is ignored but not the latter.
24977
24978 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
24979
24980         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
24981         is made and the reference doesn't use the alias set of its type,
24982         do not create the temporary using that type.
24983
24984 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
24985
24986         * jump.c: Remove prototypes for delete_computation and
24987         delete_prior_computation.
24988
24989 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
24990
24991         * jump.c (get_label_after): Delete.
24992         (get_label_before, delete_computation, delete_jump,
24993         delete_prior_computation, follow_jumps): Move...
24994         * reorg.c (delete_computation, delete_prior_computation): ... here...
24995         (get_label_before, delete_jump): ... making these static ...
24996         (follow_jumps): ... and simplifying this since it only runs after
24997         reload.
24998         * rtl.h (get_label_after, get_label_before, delete_jump,
24999         follow_jumps): Delete prototypes.
25000
25001 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
25002
25003         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
25004
25005 2007-02-15  Nick Clifton  <nickc@redhat.com>
25006
25007         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
25008         order to prevent it from being munged by the target.
25009
25010 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
25011
25012         * config/i386/i386.md: Remove misleading comment.
25013
25014 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
25015
25016         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
25017         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
25018         invalid patterns.
25019
25020 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
25021
25022         * tree-sra.c (instantiate_missing_elements): Canonicalize
25023         bit-field types.
25024         (sra_build_assignment): New.
25025         (generate_copy_inout, generate_element_copy,
25026         generate_element_zero, generate_one_element_init): Use it.
25027
25028 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
25029
25030         * tree-sra.c (instantiate_missing_elements): Canonicalize
25031         bit-field types.
25032         (sra_build_assignment): New.
25033         (generate_copy_inout, generate_element_copy,
25034         generate_element_zero, generate_one_element_init): Use it.
25035
25036 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
25037
25038         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
25039         limbo die nodes.
25040
25041 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
25042
25043         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
25044         types as aggregates not scalars.
25045         * function.c (assign_stack_temp_for_type): Likewise.
25046
25047 2007-02-14  Roger Sayle  <roger@eyesopen.com>
25048             Zdenek Dvorak  <dvorakz@suse.cz>
25049
25050         * tree-dump.c (dump_switch_p_1): Require exact match of the option
25051         name.
25052
25053 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
25054
25055         * passes.c (next_pass_1): Clear the next field of the copied
25056         pass structure.
25057
25058 2007-02-14  Richard Henderson  <rth@redhat.com>
25059
25060         * tree-sra.c (early_sra): New.
25061         (decl_can_be_decomposed_p): Deny va_list if early_sra.
25062         (tree_sra_early, pass_sra_early): New.
25063         * tree-pass.h (pass_sra_early): Declare.
25064         * passes.c (init_optimization_passes): Use it.
25065
25066 2007-02-14  Richard Guenther  <rguenther@suse.de>
25067
25068         * flags.h (issue_strict_overflow_warning): Convert to a macro.
25069
25070 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
25071
25072          PR tree-optimization/30771
25073         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
25074         also phi nodes.
25075         (vect_analyze_operations): Induction phis can now be marked as
25076         used_in_loop.
25077         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
25078         Update documentation accordingly.
25079
25080 2007-02-14  Nick Clifton  <nickc@redhat.com>
25081
25082         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
25083         most 3 arguments are supported.
25084         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
25085
25086 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
25087
25088         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
25089         Ensure dst->current is valid.
25090
25091 2007-02-13  Paul Brook  <paul@codesourcery.com>
25092
25093         * config.gcc: Add arm*-*-uclinux-*eabi.
25094         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
25095         (SUBTARGET_EXTRA_LINK_SPEC): Define.
25096         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
25097         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
25098         (LINK_SPEC): Define.
25099         (LIB_SPEC): Define.
25100         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
25101         register.
25102         * config/arm/uclinux-eabi.h: New file.
25103         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
25104         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
25105         based targets.
25106
25107 2007-02-13  Ian Lance Taylor  <iant@google.com>
25108
25109         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
25110         * flags.h (warn_strict_overflow): Declare.
25111         (enum warn_strict_overflow_code): Define.
25112         (issue_strict_overflow_warning): New static inline function.
25113         * opts.c (warn_strict_overflow): New variable.
25114         (common_handle_option): Handle OPT_Wstrict_overflow and
25115         OPT_Wstrict_overflow_.
25116         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
25117         OPT_Wall.
25118         * fold-const.c: Include intl.h.
25119         (fold_deferring_overflow_warnings): New static variable.
25120         (fold_deferred_overflow_warning): New static variable.
25121         (fold_deferred_overflow_code): New static variable.
25122         (fold_defer_overflow_warnings): New function.
25123         (fold_undefer_overflow_warnings): New function.
25124         (fold_undefer_and_ignore_overflow_warnings): New function.
25125         (fold_deferring_overflow_warnings_p): New function.
25126         (fold_overflow_warning): New static function.
25127         (make_range): Add strict_overflow_p parameter.  Change all
25128         callers.
25129         (extract_muldiv, extract_muldiv_1): Likewise.
25130         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
25131         tree_expr_nonnegative_p.
25132         (fold_negate_expr): Call fold_overflow_warning.
25133         (fold_range_test): Likewise.
25134         (fold_comparison): Likewise.
25135         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
25136         instead of tree_expr_nonnegative_p.
25137         (tree_expr_nonnegative_warnv_p): Rename from
25138         tree_expr_nonnegative_p, add strict_overflow_p parameter.
25139         (tree_expr_nonnegative_p): New function.
25140         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
25141         strict_overflow_p parameter.
25142         (tree_expr_nonzero_p): New function.
25143         * passes.c (verify_interpass_invariants): New static function.
25144         (execute_one_pass): Call it.
25145         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
25146         warnings.
25147         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
25148         (estimate_numbers_of_iterations): Likewise.
25149         (scev_probably_wraps_p): Likewise.
25150         * tree-ssa-ccp.c: Include "toplev.h".
25151         (evaluate_stmt): Defer fold overflow warnings until we know we are
25152         going to optimize.
25153         (struct fold_stmt_r_data): Add stmt field.
25154         (fold_stmt_r): Defer fold overflow warnings until we know we
25155         optimized.
25156         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
25157         (fold_stmt_inplace): Likewise.
25158         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
25159         (cleanup_control_expr_graph): Defer fold overflow warnings until
25160         we know we are going to optimize.
25161         * tree-cfg.c (fold_cond_expr_cond): Likewise.
25162         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
25163         Likewise.
25164         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
25165         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
25166         * tree-ssa-loop-manip.c (create_iv): Likewise.
25167         * c-typeck.c (build_conditional_expr): Likewise.
25168         (build_binary_op): Likewise.
25169         * tree-vrp.c (vrp_expr_computes_nonzero): Call
25170         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
25171         (extract_range_from_unary_expr): Likewise.
25172         * simplify-rtx.c (simplify_const_relational_operation): Warn when
25173         assuming that signed overflow does not occur.
25174         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
25175         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
25176         (fold_defer_overflow_warnings): Declare.
25177         (fold_undefer_overflow_warnings): Declare.
25178         (fold_undefer_and_ignore_overflow_warnings): Declare.
25179         (fold_deferring_overflow_warnings_p): Declare.
25180         (tree_expr_nonzero_warnv_p): Declare.
25181         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
25182         of warning options.
25183         (Warning Options): Document -Wstrict-overflow.
25184         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
25185         (tree-ssa-ccp.o): Likewise.
25186         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
25187         (fold-const.o): Depend on intl.h.
25188
25189 2007-02-13  Ian Lance Taylor  <iant@google.com>
25190
25191         PR middle-end/30751
25192         * lower-subreg.c (resolve_simple_move): Decompose subregs in
25193         addresses.
25194
25195 2007-02-13  Stuart Hastings  <stuart@apple.com>
25196
25197         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
25198
25199 2007-02-13  Richard Henderson  <rth@redhat.com>
25200
25201         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
25202         handled_component_p before looking for the indirect_ref.
25203
25204 2007-02-13  Richard Henderson  <rth@redhat.com>
25205
25206         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
25207         remove flags clobber.
25208         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
25209         (bswaphi_lowpart): New.
25210         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
25211         remove TARGET_BSWAP test.  Delete expander of the same name.
25212
25213         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
25214         (expand_unop): Use them.
25215
25216 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
25217
25218         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
25219         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
25220         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
25221         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
25222         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
25223         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
25224         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
25225         assembler dialect choice from asm templates.
25226
25227 2007-02-12  Richard Henderson  <rth@redhat.com>
25228
25229         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
25230         (fixuns_trunc<SSEMODEF>si2): Use it.
25231         * config/i386/sse.md (vec_setv4sf_0): Export.
25232         * config/i386/i386.c (ix86_build_const_vector): Export.
25233         (ix86_split_convert_uns_si_sse): Rename from
25234         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
25235         * config/i386/i386-protos.h: Update.
25236
25237 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25238
25239         PR c/29521
25240         * c-typeck.c (c_finish_return): Improve warning message.
25241
25242 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25243
25244         * alias.c (find_symbolic_term): Delete unused function.
25245
25246 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
25247
25248         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
25249         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
25250         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
25251
25252 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
25253
25254         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
25255         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
25256         the function, temporarily point the debug interface to the null one.
25257
25258 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
25259
25260         * dwarf2out.c (round_up_to_align): New static function.
25261         (field_byte_offset): Use it to round the offset.
25262
25263 2007-02-12  Richard Henderson  <rth@redhat.com>
25264
25265         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
25266         (inswl_const): Export.
25267
25268 2007-02-12  Richard Henderson  <rth@redhat.com>
25269
25270         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
25271         result mode of the libcall, convert back to outmode.
25272
25273 2007-02-12  Roger Sayle  <roger@eyesopen.com>
25274
25275         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
25276         (bswapdi2): New define_expand to implement 32-bit implementation.
25277
25278 2007-02-12  Nick Clifton  <nickc@redhat.com>
25279
25280         * doc/invoke.texi (Overall Options): Document --help=.
25281         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
25282         (cc1_options): Pass --help= on to cc1.
25283         (display_help): Add description of --help=.
25284         (process_command): Add code to handle --help=.  Allow translated
25285         --help and --target-help switches to be passed on to compiler
25286         sub-process.
25287         (main): Remove unused if statement.
25288         * opts.c (columns): Remove.
25289         (LEFT_COLUMN): Define.
25290         (wrap_help): Add columns argument.
25291         (print_filtered_help): Change parameters to be an include bitmask,
25292         an exclude bitmask, an any bitmask and the column width.  Move the
25293         code to display the params list here.  Add code to display the
25294         status of options rather than their descriptions if the quiet flag
25295         is not active.
25296         (print_specific_help): Change parameters to be an include bitmask,
25297         an exclude bitmask and an any bitmask.  Move code to look up the
25298         column width here.  Decide upon the title for an options listing.
25299         (common_handle_options): Add code to handle --help=.  Adapt code
25300         for --help and --target-help to use the revised form of the
25301         print_specific_help function.
25302         (print_help): Delete.
25303         (print_param_help): Delete.
25304         (print_switch): Delete.
25305         * opts.h (cl_lang_count): Add prototype.
25306         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
25307         CL_MAX_OPTION_CLASS): New defines.
25308         * optc-gen.awk: Add construction of cl_lang_count.
25309         * c.opt: Add Warning attribute to warning options and Optimization
25310         attribute to optimization options.
25311         * common.opt: Likewise.
25312         Add --help=.
25313         Add -fhelp and -ftarget-help as aliases for the transformed --help
25314         and --target-help options.
25315         * opt-functions.awk: Add code to handle Warning and Optimization
25316         attributes.
25317
25318 2007-02-12  Richard Henderson  <rth@redhat.com>
25319
25320         * config/alpha/constraints.md: New file.
25321         * config/alpha/alpha.c: Include tm-constrs.h.
25322         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
25323         alpha_extra_constraint): Remove.
25324         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
25325         * config/alpha/alpha-protos.h: Update.
25326         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
25327         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
25328         (EXTRA_CONSTRAINT): Remove.
25329         * config/alpha/alpha.md: Include constraints.md.
25330         (adddi splitter): Use satisfies_constraint_*.
25331         * config/alpha/predicates.md (add_operand): Likewise.
25332         (sext_add_operand, addition_operation): Likewise.
25333
25334 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
25335
25336         PR tree-optimization/29145
25337         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
25338         in our handling of restrict qualified pointers.
25339
25340 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25341
25342         PR middle-end/7651
25343         * doc/invoke.texi (Wunused-value): Update description.
25344         (Wextra): Delete item.
25345         * opts.c (set_Wextra): Don't use the value of Wextra to set the
25346         value of Wunused-value.
25347         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
25348         (c_finish_stmt_expr): Don't check extra_warnings.
25349         (emit_side_effect_warnings): The caller is responsible to check
25350         warn_unused_value.
25351
25352 2007-02-11  Roger Sayle  <roger@eyesopen.com>
25353             Matt Thomas  <matt@3am-software.com>
25354
25355         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
25356
25357 2007-02-11  Roger Sayle  <roger@eyesopen.com>
25358
25359         * simplify-rtx.c (simplify_relational_operation_1): Optimize
25360         comparisons of POPCOUNT against zero.
25361         (simplify_const_relational_operation): Likewise.
25362
25363 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25364
25365         * doc/invoke.texi (Wextra): Delete outdated paragraph.
25366
25367 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25368
25369         * dwarf2out.c (root_type): Delete unused function.
25370
25371 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25372
25373         * genattrtab.c (contained_in_p): Delete unused function.
25374         (write_expr_attr_cache): Likewise.
25375
25376 2007-02-11  Jan Hubicka  <jh@suse.cz>
25377
25378         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
25379         previous patch.
25380
25381 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
25382
25383         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
25384         to add the REG_EQ* note.
25385         * see.c (see_merge_one_use_extension): Likewise.
25386         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
25387         turn REG_EQUAL notes into REG_EQUIV notes if the target
25388         register may have more than one set.
25389         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
25390         * gcse.c (try_replace_reg): Likewise.
25391         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
25392         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
25393         more than one REG_EQUIV note.
25394         * reload1.c (gen_reload): Use set_unique_reg_note.
25395
25396 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
25397
25398         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
25399         (ix86_builtin_conversion): New function.
25400
25401 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
25402
25403         PR target/29487
25404         * tree.h (DECL_REPLACEABLE_P): New macro.
25405         * except.c (set_nothrow_function_flags): Likewise.
25406
25407 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
25408             Ira Rosen  <irar@il.ibm.com>
25409             Dorit Nuzman  <dorit@il.ibm.com>
25410
25411         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
25412         * targhooks.c (default_builtin_vectorized_conversion): New.
25413         * targhooks.h (default_builtin_vectorized_function): New declaration.
25414         * target.h (struct vectorize): Add builtin_conversion field.
25415         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
25416         stmt_vec_info_type value.
25417         (vectorizable_conversion): New declaration.
25418         * tree-vect-analyze.c (vect_analyze_operations): Add
25419         vectorizable_conversion call.
25420         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
25421         * tree-vect-transform.c (vectorizable_conversion): New function.
25422         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
25423         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
25424         mode.
25425         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
25426         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
25427         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
25428         or ALTIVEC_BUILTIN_VCFSX.
25429
25430 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25431
25432         PR target/30634
25433         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
25434         CONST_DOUBLE and operand 0 is a hard register.
25435         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
25436         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
25437         is a hard floating-point register.
25438
25439 2007-02-10  Richard Henderson  <rth@redhat.com>
25440             Jakub Jelinek  <jakub@redhat.com>
25441             Alexandre Oliva  <aoliva@redhat.com>
25442
25443         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
25444         * builtin-types.def (BT_WORD): Make unsigned.
25445         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
25446         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
25447         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
25448         * c-decl.c (grokdeclarator): Don't error if !have_tls.
25449         * c-parser.c (c_parser_omp_threadprivate): Likewise.
25450         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
25451         emulated tls.
25452         * expr.c (emutls_var_address): New.
25453         (expand_expr_real_1): Expand emulated tls.
25454         (expand_expr_addr_expr_1): Likewise.
25455         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
25456         * output.h (emutls_finish): Declare.
25457         * toplev.c (compile_file): Call it.
25458         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
25459         address before wrapping in CONST.
25460         * varasm.c (emutls_htab, emutls_object_type): New.
25461         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
25462         (get_emutls_object_name, get_emutls_object_type): New.
25463         (get_emutls_init_templ_addr, emutls_decl): New.
25464         (emutls_common_1, emutls_finish): New.
25465         (assemble_variable): When emulating tls, swap decls; generate
25466         constructor for the emutls objects.
25467         (do_assemble_alias): When emulating tls, swap decl and target name.
25468         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
25469         for emulated tls.
25470         * varpool.c (decide_is_variable_needed): Look at force_output.
25471         Recurse for emulated tls.
25472         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
25473         with decide_is_variable_needed.
25474         * emutls.c: New file.
25475         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
25476         tls_object for real tls.
25477
25478 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
25479
25480         PR rtl-optimization/29599
25481         * reload1.c (eliminate_regs_in_insn): Take the destination
25482         mode into account when computing the offset.
25483
25484 2007-02-09  Stuart Hastings  <stuart@apple.com>
25485             Richard Henderson  <rth@redhat.com>
25486
25487         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
25488         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
25489         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
25490         fixuns_truncdfhi2): New.
25491         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
25492         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
25493         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
25494         (floatunssidf2): Allow nonimmediate source.
25495         * config/i386/sse.md (movdi_to_sse): New.
25496         (vec_concatv2di): Drop '*'.
25497         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
25498         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
25499         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
25500         New.
25501         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
25502         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
25503         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
25504         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
25505         (ix86_build_signbit_mask): Fix decl of v, refactor to call
25506         ix86_build_const_vector.
25507         (x86_emit_floatuns): Rewrite.
25508
25509 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25510
25511         * genautomata.c (longest_path_length): Delete unused function.
25512         (struct state): Delete unused longest_path_length.
25513         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
25514         (get_free_state): Delete unused.
25515
25516 2007-02-09  Jan Hubicka  <jh@suse.cz>
25517
25518         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
25519         * doc/invoke.texi (inline-unit-growth): Update default value.
25520
25521         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
25522         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
25523         (rebuild_cgraph_edges): Likewise.
25524         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
25525         (dump_cgraph_node): Dump frequencies.
25526         (cgraph_clone_edge): Add frequency scales.
25527         (cgraph_clone_node): Add freuqnecy.
25528         * cgraph.h (cgraph_edge): Add freuqnecy argument.
25529         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
25530         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
25531         * tree-pass.h (TODO_rebuild_frequencies): New constant.
25532         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
25533         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
25534         (save_inline_function_body): Likewise.
25535         * ipa-inline.c: inluce rtl.h
25536         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
25537         (cgraph_edge_badness): Use frequencies.
25538         (cgraph_decide_recursive_inlining): Update clonning.
25539         (cgraph_decide_inlining_of_small_function): Dump frequency.
25540         * predict.c (estimate_bb_frequencies): Export.
25541         * predict.h (estimate_bb_frequencies): Declare.
25542         * tree-inline.c (copy_bb): Watch overflows.
25543         (expand_call_inline): Update call of cgraph_create_edge.
25544         (optimize_inline_calls): Use TODO flags to update frequnecies.
25545         * passes.h: Include predict.h
25546         (init_optimization_passes): Move profile ahead.
25547         (execute_function_todo): Handle TODO_rebuild_frequencies.
25548
25549 2007-02-09  Roger Sayle  <roger@eyesopen.com>
25550
25551         * config/alpha/alpha.c (emit_insxl): Force the first operand of
25552         the insbl or inswl pattern into a register.
25553
25554 2007-02-09  Roger Sayle  <roger@eyesopen.com>
25555
25556         * config/ia64/ia64.md (bswapdi2): New define_insn.
25557
25558 2007-02-09  Richard Henderson  <rth@redhat.com>
25559
25560         * config/i386/constraints.md (Ym): New constraint.
25561         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
25562         (movdi_1_rex64): Split sse and xmm general register moves from
25563         memory move alternatives.  Use conditional register constraints.
25564         (movsf_1, movdf_integer): Likewise.
25565         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
25566         (movdf_integer_rex64): New.
25567         (pushsf_rex64): Fix output constraints.
25568         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
25569         (sse2_stored): Likewise.
25570         (sse2_storeq_rex64): New.
25571         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
25572         amd and not generic.
25573         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
25574         for optimize_size.  Remove SF/DFmode hack.
25575
25576 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
25577
25578         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
25579         (bit_SSE4a): New.
25580
25581 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
25582             Richard Sandiford  <richard@codesourcery.com>
25583
25584         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
25585         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
25586         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
25587         m68k/t-mlib to tmake_file.
25588         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
25589         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
25590         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
25591         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
25592         variable is not empty, add t-$m68k_arch_family to tmake_file.
25593         Add t-mlibs to tmake_file.
25594         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
25595         * config/m68k/t-cf: New file.
25596         * config/m68k/t-m68k: Likewise.
25597         * config/m68k/t-mlibs: Likewise.
25598         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
25599         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
25600         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
25601         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
25602         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
25603         Delete.
25604         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
25605         (INSTALL_LIBGCC): Delete.
25606         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
25607         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
25608         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
25609         (M68K_MLIB_CPU): Define.
25610         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
25611         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
25612         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
25613
25614 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
25615             Richard Guenther  <rguenther@suse.de>
25616
25617         PR middle-end/23361
25618         * fold-const.c (fold_comparison): Handle obfuscated comparisons
25619         against INT_MIN/INT_MAX.
25620         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
25621         file if a loop is removed.
25622
25623 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
25624
25625         * calls.c (store_one_arg): Pass correct alignment to
25626         emit_push_insn for non-BLKmode values.
25627         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
25628         unaligned stack slot via a suitably aligned slot.
25629
25630 2007-02-08  DJ Delorie  <dj@redhat.com>
25631
25632         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
25633         warnings.
25634         (legal_subregs): Use unsigned char, make const.
25635         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
25636
25637 2007-02-08  Paul Brook  <paul@codesourcery.com>
25638
25639         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
25640         special interworking needed.
25641
25642 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
25643
25644         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
25645         conditional to __SSE2__.
25646         (Entries below should have been added to first ChangeLog
25647         entry for amdfam10 dated 2007-02-05)
25648         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
25649         defined.
25650         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
25651         defined.
25652         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
25653         defined.
25654
25655 2007-02-08  DJ Delorie  <dj@redhat.com>
25656
25657         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
25658         * config/m32c/m32c.c (legal_subregs): New.
25659         (m32c_illegal_subreg_p): New.
25660         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
25661         unsupported subregs of hard regs.
25662
25663 2007-02-08  Jan Hubicka  <jh@suse.cz>
25664
25665         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
25666         the same one; always update histograms.
25667
25668 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
25669
25670         * passes.c (init_optimization_passes): Tidy comment.
25671
25672 2007-02-08  Roger Sayle  <roger@eyesopen.com>
25673
25674         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
25675         strip zero_extend, bswap and rotates from POCOUNT's argument.
25676         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
25677         zero_extend and rotates from PARITY's argument.
25678         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
25679         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
25680         of an integer constant at compile-time.
25681
25682 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
25683
25684         PR 30562
25685         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
25686         Update all users.
25687         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
25688         users.
25689         (init_alias_info):
25690         * tree-ssa-live.c (remove_unused_locals): Do not remove
25691         TREE_ADDRESSABLE variables.
25692         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
25693         * tree-ssa-operands.c (add_virtual_operand): Remove argument
25694         FOR_CLOBBER.  Update all users.
25695         If VAR has an associated alias set, add a virtual operand for
25696         it if no alias is found to conflict with the memory reference.
25697
25698 2007-02-07  Jan Hubicka  <jh@suse.cz>
25699             Robert Kidd <rkidd@crhc.uiuc.edu>
25700
25701         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
25702
25703 2007-02-07  Ian Lance Taylor  <iant@google.com>
25704
25705         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
25706
25707 2007-02-07  Roger Sayle  <roger@eyesopen.com>
25708
25709         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
25710         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
25711         tablejumpdi, movsi_to_cr_one): Remove constraints from
25712         define_expand's match_operands.
25713
25714 2007-02-07  Roger Sayle  <roger@eyesopen.com>
25715
25716         * global.c (compute_regsets): Move declatation of "i" inside of
25717         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
25718
25719 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
25720
25721         PR c++/30703
25722         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
25723         of INDIRECT_REF <RESULT_DECL>.
25724
25725         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
25726
25727 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
25728             Kaz Kojima  <kkojima@gcc.gnu.org>
25729
25730         PR target/29746
25731         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
25732         properly.
25733         (sh_initialize_trampoline): Add parentheses to avoid a warning.
25734
25735 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
25736
25737         * doc/loop.texi: Document possibility not to perform disambiguation
25738         of loops with multiple latches.
25739         * cfgloopmanip.c (alp_enum_p): Removed.
25740         (add_loop): Handle subloops.  Use get_loop_body_with_size.
25741         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
25742         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
25743         the new forwarder block.
25744         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
25745         Handle the case latch is NULL.
25746         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg
25747         modifications when marking loop exits.
25748         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
25749         be modified.
25750         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
25751         disambiguate_loops_with_multiple_latches.
25752         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
25753         before fix_loop_structure.
25754         * cfgloop.c: Include pointer-set.h and output.h.
25755         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
25756         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
25757         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
25758         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
25759         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
25760         disambiguate_multiple_latches, get_loop_body_with_size,
25761         disambiguate_loops_with_multiple_latches): New functions.
25762         (flow_loop_dump): Dump multiple latch edges.
25763         (flow_loop_nodes_find): Handle loops with multiple latches.
25764         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
25765         (glb_enum_p): Modified.
25766         (get_loop_body): Use get_loop_body_with_size.
25767         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
25768         (AVOID_CFG_MODIFICATIONS): New constant.
25769         (disambiguate_loops_with_multiple_latches, add_loop,
25770         get_loop_body_with_size): Declare.
25771         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
25772
25773 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
25774
25775         PR inline-asm/28686
25776         * global.c (compute_regsets): New function.
25777         (global_alloc): Refactored ELIMINABLE_REGSET
25778         and NO_GLOBAL_ALLOC_REGS computation out.
25779         (rest_of_handle_global_alloc): Call compute_regsets()
25780         for non-optimizing case.
25781
25782 2007-02-06  Richard Henderson  <rth@redhat.com>
25783
25784         * config/i386/constraints.md (Y2): Rename from Y.
25785         (Yi): New constraint.
25786         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
25787         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
25788         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
25789         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
25790         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
25791         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
25792         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
25793         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
25794         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
25795         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
25796         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
25797         vec_extractv2si_1): Change Y constraints to Y2.
25798         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
25799         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
25800         Change Y constraints to Y2.
25801         (sse2_loadld): Change Y constraints to x.
25802
25803 2007-02-06  Roger Sayle  <roger@eyesopen.com>
25804
25805         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
25806         (parity<mode>2): New define_expand using rs6000_emit_parity.
25807         * config/rs6000/rs6000.c (rs6000_emit_popcount,
25808         rs6000_emit_parity): New functions.
25809         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
25810         rs6000_emit_parity): Prototype here.
25811
25812 2007-02-06  Ian Lance Taylor  <iant@google.com>
25813
25814         * lower-subreg.c (simple_move_operand): Reject CONST.
25815         (resolve_clobber): Call validate_change rather than directly
25816         assigning to XEXP (pat, 0).
25817
25818 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
25819
25820         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
25821         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
25822         (tree-cfg.o): Remove hashtab.h dependency.
25823
25824         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
25825         (struct ivopts_data): Change niters to pointer_map_t.
25826         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
25827         (niter_for_exit): Create pointer_map on demand.  Change for
25828         pointer_map API.
25829         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
25830         (free_loop_data): Destroy data->niters if created and reset field.
25831         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
25832         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
25833
25834         * tree-ssa-reassoc.c: Include pointer-set.h.
25835         (bb_rank): Change to long *.
25836         (operand_rank): Change to pointer_map_t.
25837         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
25838         (insert_operand_rank): Accept long.
25839         (operand_entry_hash, operand_entry_eq): Remove.
25840         (get_rank): Return long.  Adjust for changes above.
25841         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
25842         and operand_rank.
25843         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
25844
25845         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
25846         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
25847         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
25848         is not NULL.
25849         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
25850         directly since it cannot be NULL.
25851         (get_vi_for_tree): Rewrite for pointer_map API.
25852         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
25853         (init_alias_vars): Create vi_for_tree as pointer_map.
25854         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
25855
25856         * tree-cfg.c: Don't include hashtab.h.
25857         (edge_to_cases): Declare as pointer_map.
25858         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
25859         Delete.
25860         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
25861         (start_recording_case_labels): Create edge_to_cases as pointer_map.
25862         (end_recoding_case_labels): Cleanup edge_to_cases manually before
25863         destroying it.
25864         (record_switch_edge): Delete.
25865         (get_cases_for_edge): Adjust for pointer_map API, inline
25866         record_switch_edge (rewritten for new API), remove goto.
25867
25868 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
25869
25870         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
25871         * tree-nested.c: Include pointer-set.h.
25872         (var_map_elt, var_map_eq, var_map_hash): Delete.
25873         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
25874         to pointer_map_t's.
25875         (nesting_info_bitmap_obstack): New.
25876         (lookup_field_for_decl): Adjust for pointer_map API.
25877         (lookup_tramp_for_decl): Adjust for pointer_map API.
25878         (get_nonlocal_debug_decl): Adjust for pointer_map API.
25879         (get_local_debug_decl): Adjust for pointer_map API.
25880         (convert_nl_goto_reference): Adjust for pointer_map API.
25881         (convert_nl_goto_receiver): Adjust for pointer_map API.
25882         (create_nesting_tree): Create outside GGC space.  Create bitmap on
25883         the new obstack.  Create field_map and var_map as pointer_maps.
25884         (free_nesting_tree): Adjust for changes to create_nesting_tree.
25885         (root): Delete.
25886         (lower_nested_functions): Move root here, no need to NULL it.
25887         Initialize and release the obstack.
25888
25889 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
25890
25891         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
25892         Remove prototypes and make them non-static.
25893         (struct tree_int_map): Remove.
25894         * tree.h (struct tree_int_map): Move here, turning TO into an
25895         unsigned int.
25896         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
25897
25898         * tree.h (TREE_COMPLEXITY): Remove.
25899         (struct tree_exp): Remove complexity field.
25900         * tree.c (build1_stat): Don't set it.
25901
25902 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
25903             Victor Kaplansky  <victork@il.ibm.com>
25904
25905         * tree-vectorizer.c (vect_is_simple_use): Support induction.
25906         (vect_is_simple_reduction): Support reduction with induction as
25907         one of the operands.
25908         (vect_is_simple_iv_evolution): Fix formatting.
25909         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
25910         formatting.  Don't mark induction phis for vectorization.
25911         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
25912         * tree-vect-transform.c (get_initial_def_for_induction): New function.
25913         (vect_get_vec_def_for_operand): Support induction.
25914         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
25915         induction case.
25916         (vectorizable_reduction): Support reduction with induction as one of
25917         the operands.
25918         (vectorizable_type_demotion): Use def-type of stmt argument rather
25919         than dummy def-type.
25920
25921         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
25922         flag_tree_scev_cprop.
25923         * common.opt (tree-scev-cprop): New flag.
25924
25925         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
25926         call to vect_get_new_vect_var.
25927
25928 2007-02-06  Ira Rosen  <irar@il.ibm.com>
25929
25930         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
25931         vectype is not NULL.
25932         (vect_pattern_recog_1): Likewise.
25933
25934 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25935
25936         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
25937         (fold_negate_expr): Likewise.
25938
25939 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
25940
25941         PR debug/30189
25942         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
25943         even if cv-qualification is the same.
25944
25945 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
25946
25947         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
25948         __enable_execute_stack on completion.
25949
25950 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25951
25952         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
25953         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
25954         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
25955         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
25956         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
25957         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
25958         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
25959         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
25960
25961 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25962
25963         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
25964         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
25965         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
25966         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
25967         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
25968         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
25969         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
25970         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
25971         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
25972         umuldi3_highpart_rex64, umulsi3_highpart_insn,
25973         umulsi3_highpart_zext, smuldi3_highpart_rex64,
25974         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
25975         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
25976         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
25977         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
25978         sqrtextenddfxf2_i387): Added amdfam10_decode.
25979
25980         * config/i386/athlon.md (athlon_idirect_amdfam10,
25981         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
25982         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
25983         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
25984         athlon_ivector_store_amdfam10): New define_insn_reservation.
25985         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
25986         amdfam10.
25987
25988 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25989
25990         * config/i386/athlon.md (athlon_call_amdfam10,
25991         athlon_pop_amdfam10, athlon_lea_amdfam10): New
25992         define_insn_reservation.
25993         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
25994         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
25995         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
25996
25997 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
25998
25999         * config/i386/athlon.md (athlon_sseld_amdfam10,
26000         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
26001         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
26002
26003 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
26004
26005         * config/i386/athlon.md (athlon_sseins_amdfam10): New
26006         define_insn_reservation.
26007         * config/i386/i386.md (sseins): Added sseins to define_attr type
26008         and define_attr unit.
26009         * config/i386/sse.md: Set type attribute to sseins for insertq
26010         and insertqi.
26011
26012 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
26013
26014         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
26015         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
26016         ssecomi_load_amdfam10, ssecomi_amdfam10,
26017         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
26018         define_insn_reservation.
26019         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
26020
26021 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
26022
26023         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
26024         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
26025         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
26026         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
26027         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
26028         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
26029         define_insn_reservation.
26030
26031         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
26032         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
26033         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
26034         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
26035         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
26036
26037 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
26038
26039         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
26040         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
26041         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
26042         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
26043         athlon_ssemul_load_k8): Added amdfam10.
26044
26045 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
26046
26047         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
26048         (x86_sse_unaligned_move_optimal): New variable.
26049
26050         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
26051         m_AMDFAM10.
26052         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
26053         for unaligned vector SSE double/single precision loads for AMDFAM10.
26054
26055 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
26056
26057         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
26058         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
26059         Define TARGET_CPU_DEFAULT_amdfam10.
26060         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
26061         (processor_type): Add PROCESSOR_AMDFAM10.
26062
26063         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
26064         processor_type in config/i386/i386.h.
26065         Enable imul peepholes for TARGET_AMDFAM10.
26066
26067         * config.gcc: Add support for --with-cpu option for amdfam10.
26068
26069         * config/i386/i386.c (amdfam10_cost): New variable.
26070         (m_AMDFAM10): New macro.
26071         (m_ATHLON_K8_AMDFAM10): New macro.
26072         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
26073         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
26074         x86_promote_QImode, x86_integer_DFmode_moves,
26075         x86_partial_reg_dependency, x86_memory_mismatch_stall,
26076         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
26077         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
26078         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
26079         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
26080         Enable/disable for amdfam10.
26081         (override_options): Add amdfam10_cost to processor_target_table.
26082         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
26083         processor_alias_table.
26084         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
26085         (ix86_adjust_cost): Add code for amdfam10.
26086
26087 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
26088
26089         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
26090         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
26091         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
26092         * config/i386/i386.h: Add builtin definition for SSE4A.
26093         * config/i386/i386.md: Add support for ABM instructions
26094         (popcnt and lzcnt).
26095         * config/i386/sse.md: Add support for SSE4A instructions
26096         (movntss, movntsd, extrq, insertq).
26097         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
26098         Add -march=amdfam10 flag.
26099         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
26100         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
26101         and amdfam10.
26102         * doc/extend.texi: Add documentation for SSE4A builtins.
26103
26104 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
26105
26106         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
26107
26108 2007-02-05  Richard Guenther  <rguenther@suse.de>
26109
26110         * tree-vectorizer.h (vectorizable_function): Add argument type
26111         argument, change return type.
26112         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
26113         * tree-vect-transform.c (vectorizable_function): Handle extra
26114         argument, return vectorized function decl.
26115         (build_vectorized_function_call): Remove.
26116         (vectorizable_call): Handle calls with result and argument types
26117         differing.  Handle loop vectorization factor correctly.
26118         * targhooks.c (default_builtin_vectorized_function): Adjust for
26119         extra argument.
26120         * targhooks.h (default_builtin_vectorized_function): Likewise.
26121         * target.h (builtin_vectorized_function): Add argument type
26122         argument.
26123         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
26124         extra argument, allow vectorizing of lrintf.
26125         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
26126         documentation of target hook.
26127
26128 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
26129
26130         PR target/30665
26131         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
26132         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
26133         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
26134
26135 2007-02-05  Roger Sayle  <roger@eyesopen.com>
26136
26137         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
26138         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
26139         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
26140         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
26141         before canonicalizing sincos to cexpi.
26142         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
26143
26144 2007-02-05  Roger Sayle  <roger@eyesopen.com>
26145
26146         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
26147         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
26148         (alpha_init_builtins): Use alpha_add_builtins to process tables.
26149
26150 2007-02-05  Roger Sayle  <roger@eyesopen.com>
26151
26152         * mips-tfile.c (initialize_init_file): Correct endianness test.
26153
26154 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
26155
26156         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
26157         the 'y' constraint.
26158
26159 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
26160
26161         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
26162         saves in a PARALLEL before the register assignments.
26163
26164 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
26165
26166         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
26167         DWARF_FRAME_RETURN_COLUMN to be a general register.
26168         * dwarf2out.c (init_return_column_size): New function, split from...
26169         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
26170         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
26171         to be nongeneral registers.
26172         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
26173         integer registers.
26174         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
26175         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
26176
26177 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
26178
26179         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
26180
26181 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
26182
26183         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
26184         (remove_path): Use can_remove_branch_p and remove_branch instead
26185         of loop_delete_branch_edge.
26186         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
26187         (tree_transform_and_unroll_loop): Remove dead branches immediately.
26188         Update profile using scale_dominated_blocks_in_loop.
26189         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
26190         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
26191         (can_remove_branch_p, remove_branch): Declare.
26192         * tree-cfg.c (tree_can_remove_branch_p): New function.
26193         (tree_cfg_hooks): Add tree_can_remove_branch_p.
26194         * cfgrtl.c (rtl_can_remove_branch_p): New function.
26195         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
26196
26197 2007-02-05  Jan Hubicka  <jh@suse.cz>
26198
26199         PR middle-end/30696
26200         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
26201         nodes in cgraph, don't remove offline copy of the function.
26202
26203 2007-02-04  Jan Hubicka  <jh@suse.cz>
26204
26205         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
26206         vectors might cause maybe_lookup_element_for_expr to be called
26207         on non-sra-candidate.
26208
26209 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
26210
26211         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
26212         config/bfin/bfin.md, config/bfin/predicates.md: Follow
26213         spelling conventions.
26214
26215 2007-02-04  Richard Guenther  <rguenther@suse.de>
26216
26217         PR middle-end/30636
26218         * fold-const.c (try_move_mult_to_index): Make sure to not
26219         overflow one dimension of a multi-dimensional array access.
26220
26221 2007-02-04  Jan Hubicka  <jh@suse.cz>
26222
26223         * passes.c (init_optimization_passes): Reindent.
26224
26225 2007-02-04  Jan Hubicka  <jh@suse.cz>
26226             Eric Botcazou  <ebotcazou@adacore.com>
26227
26228         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
26229         (execute_fixup_cfg): Break out the abnormal goto code.
26230         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
26231         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
26232         (optimize_inline_calls): Call make_nonlocal_label_edges.
26233
26234 2007-02-04  Jan Hubicka  <jh@suse.cz>
26235
26236         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
26237         true when something was changed.
26238         (rename_ssa_copies): When something was changed, do
26239         TODO_remove_unused_locals.
26240         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
26241         add TODO_remove_unused_locals when instruction was removed.
26242
26243 2007-02-04  Jan Hubicka  <jh@suse.cz>
26244
26245         * ipa-inline.c (try_inline): Improve debug output; work on already
26246         inline edges too.
26247         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
26248         call try_inline for already inlined edges too when flattening;
26249         inline also functions that make callee growth but overall unit size
26250         reduce.
26251
26252 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
26253
26254         * config/m32c/bitops.md, config/m32c/jump.md,
26255         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
26256         config/m32r/m32r.h, config/m32r/m32r.md,
26257         config/m32r/predicates.md, config/m68hc11/larith.asm,
26258         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
26259         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
26260         config/mips/mips-protos.h, config/mips/mips.c,
26261         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
26262         config/mn10300/mn10300.h, config/mn10300/predicates.md,
26263         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
26264         spelling conventions.
26265
26266         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
26267         Follow spelling conventions.
26268
26269 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
26270
26271         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
26272         warn about C++0x compatibility.
26273
26274 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
26275
26276         * config/h8300/h8300.c, config/h8300/h8300.h,
26277         config/h8300/h8300.md: Follow spelling conventions.
26278
26279 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
26280
26281         PR middle-end/30667
26282         * combine.c (try_combine): Do not substitute source operand
26283         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
26284
26285 2007-02-03  Jan Hubicka  <jh@suse.cz>
26286
26287         PR gcov-profile/30650
26288         * value-prof.c (stringop_block_profile): Fix handling of size counter;
26289         do not divide by zero for never executed counters.
26290         (tree_find_values_to_profile): Fix counters.
26291         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
26292
26293 2007-02-03  Ian Lance Taylor  <iant@google.com>
26294
26295         * lower-subreg.c (simple_move_operand): New static function,
26296         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
26297         operands.
26298         (simple_move): Call simple_move_operand.
26299         (find_decomposable_subregs): Add special handling of MEMs.
26300         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
26301         meaning of return value.  If we see a hard register, test whether
26302         it can store a word_mode value.  Change all callers.
26303
26304 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26305
26306         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
26307         ftrapv insns and expanders.
26308         (subdi3): Change define_expand operand 1 to arith11_operand, and
26309         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
26310         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
26311         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
26312         respectively.
26313
26314         PR middle-end/30174
26315         * varasm.c (notice_global_symbol): Treat global objects as weak when
26316         flag_shlib is true.
26317
26318 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26319
26320         * emit-rtl.c (dconstpi): Delete.
26321         (dconstsqrt2): New.
26322         (init_emit_once): Delete dconstpi and init dconstsqrt2.
26323         * real.h (dconstpi): Delete.
26324         (dconstsqrt2): New.
26325         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
26326         (fold_builtin_hypot): Likewise.
26327
26328 2007-02-03  Tom Tromey  <tromey@redhat.com>
26329
26330         PR driver/30246
26331         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
26332         -gcoff3, -gxcoff3, -gvms3 implies -dD.
26333
26334 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
26335
26336         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
26337         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
26338         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
26339         config/rs6000/cell.md, config/rs6000/darwin.h,
26340         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
26341         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
26342         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
26343         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
26344         typos.  Follow spelling conventions.
26345         * doc/invoke.texi: Follow spelling conventions.
26346
26347 2007-02-03  Roger Sayle  <roger@eyesopen.com>
26348
26349         * simplify-rtx.c (simplify_relational_operation_1): Implement some
26350         canonicalization transformations that attempt to simplify integer
26351         constant comparisons to become comparisons against zero.
26352
26353 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26354
26355         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
26356         fabs(x)*sqrt(2).
26357         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
26358         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
26359
26360 2007-02-02  Mike Stump  <mrs@apple.com>
26361
26362         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
26363         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
26364         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
26365         generate a branch island.
26366
26367 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
26368
26369         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
26370         (xtensa_legitimate_address_p): New.
26371         (xtensa_legitimize_address): New.
26372         (xtensa_output_addr_const_extra): New.
26373         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
26374         (BASE_REG_P): New.
26375         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
26376         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
26377         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
26378         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
26379         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
26380         (xtensa_legitimize_address): New.
26381         (xtensa_output_addr_const_extra): New.
26382
26383 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
26384
26385         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
26386
26387 2007-02-02  Ian Lance Taylor  <iant@google.com>
26388
26389         * expmed.c (expand_divmod): Add comment.
26390
26391 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
26392
26393         * emit-rtl.c (renumber_insns): Remove.
26394         * flags.h: Remove the extern for flag_renumber_insns.
26395         * rtl.h: Remove the prototype for renumber_insns.
26396         * toplev.c (flag_renumber_insns): Remove.
26397
26398 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
26399
26400         Revert for x86 darwin:
26401         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
26402
26403         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
26404         code before the following patch under TARGET_MACHO.
26405         (ix86_function_value_regno_p): Likewise.
26406
26407 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26408
26409         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
26410         COMPLEX_EXPR.
26411
26412 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
26413
26414         PR target/29682
26415         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory
26416         loads to general or fp registers.  Add comments.
26417         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
26418
26419 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
26420
26421         * pointer-set.c (insert_aux): Only return insertion slot.
26422         (pointer_set_insert): Adjust.
26423         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
26424         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
26425         pointer_map_traverse): New.
26426         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
26427         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
26428         pointer_map_contains, pointer_map_traverse): Declare.
26429
26430 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
26431
26432         PR middle-end/30473
26433         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
26434         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
26435
26436 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
26437
26438         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
26439
26440         (struct _dep): New type.
26441         (dep_t): New typedef.
26442         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
26443         (DEP_STATUS): New access macro.  The macro with the same name was
26444         renamed to DEP_LINK_STATUS.
26445         (dep_init): Declare function
26446
26447         (struct _dep_link): New type.
26448         (dep_link_t): New typedef.
26449         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
26450         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
26451         (DEP_LINK_STATUS): New macro.
26452         (debug_dep_links): New debug function.
26453
26454         (struct _deps_list): New type.
26455         (deps_list_t): New typedef.
26456         (DEPS_LIST_FIRST): New access macro.
26457         (FOR_EACH_DEP_LINK): New cycle macro.
26458         (create_deps_list, free_deps_list, delete_deps_list): Declare
26459         functions.
26460         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
26461         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
26462         (copy_deps_list_change_con): Ditto.
26463
26464         (move_dep_link): Declare function.
26465
26466         (struct _dep_node): New type.
26467         (dep_node_t): New typedef.
26468         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
26469
26470         (struct haifa_insn_data.back_deps): New field to hold backward
26471         dependencies of the insn.
26472         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
26473         to deps_list_t.
26474         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
26475         Change its type to deps_list_t.
26476         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
26477         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
26478         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
26479
26480         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
26481
26482         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
26483
26484         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration
26485         and all callers.
26486         (dep_cost): Declare.
26487
26488         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
26489         (ds_to_dk, dk_to_ds): New functions.
26490
26491         (init_dep_1): New static function.
26492         (init_dep): New function.
26493         (copy_dep): New static function.
26494
26495         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
26496         functions.
26497         (detach_dep_link): New static function.
26498         (move_dep_link): New function.
26499
26500         (dep_links_consistent_p, dump_dep_links): New static functions.
26501         (debug_dep_links): New debugging function.
26502
26503         (deps_obstack, dl_obstack, dn_obstack): New static variables.
26504
26505         (alloc_deps_list, init_deps_list): New static functions.
26506         (create_deps_list): New function.
26507         (clear_deps_list): New static function.
26508         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
26509         (deps_list_consistent_p, dump_deps_list): New static functions.
26510         (debug_deps_list): New function.
26511         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
26512         functions.
26513         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
26514
26515         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
26516         use new scheduler dependencies lists.
26517         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
26518         (sched_analyze): Ditto.  Initialize dependencies lists.
26519         (add_forw_dep, compute_forward_dependences): Update to use new
26520         scheduler dependencies lists.
26521
26522         (init_dependency_caches): Init deps_obstack.
26523         (free_dependency_caches): Free deps_obstack.
26524
26525         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
26526         new scheduler dependencies lists.
26527         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
26528         (add_back_forw_dep, delete_back_forw_dep): Ditto.
26529
26530         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
26531         Update to use new scheduler dependencies lists.
26532         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
26533         (debug_dependencies): Ditto.
26534         (schedule_region): Update comments.
26535
26536         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
26537         scheduler dependencies lists.
26538         (schedule_ebb): Update comments.
26539
26540         * rtl.def (DEPS_LIST): Remove.
26541
26542         * lists.c (unused_deps_list): Remove.
26543         (free_list): Update assertions.
26544
26545         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
26546         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
26547
26548         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
26549         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
26550
26551         * haifa-sched.c (comments): Update.
26552         (insn_cost1): Remove.  Inline the code into insn_cost ().
26553         (insn_cost): Update to use new scheduler dependencies lists.  Move
26554         processing of the dependency cost to dep_cost ().
26555         (dep_cost): New function.  Use it instead of insn_cost () when
26556         evaluating cost of the dependency.  Use compatible interface to
26557         interact with the target.
26558         (priority): Update to use new scheduler dependencies lists.
26559         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
26560         with greater number of insns that depend on the insn.
26561         (schedule_insn): Update to use new scheduler dependencies lists.  Add
26562         code to free backward dependencies lists.  Inline and optimize code
26563         from resolve_dep () - see PR28071.
26564         (ok_for_early_queue_removal): Update to use new scheduler dependencies
26565         lists.  Update call to targetm.sched.is_costly_dependence hook.
26566
26567         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
26568         scheduler dependencies lists.
26569
26570         (resolve_dep): Remove.  Move the logic to schedule_insn ().
26571         (init_h_i_d): Initialize dependencies lists.
26572
26573         (process_insn_depend_be_in_spec): Rename to
26574         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
26575         dependencies lists.
26576         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
26577         Update to use new scheduler dependencies lists.
26578         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
26579
26580         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
26581         new scheduler dependencies lists.
26582         (build_intra_loop_deps): Ditto.
26583
26584         * target.h (struct _dep): Declare to use in
26585         gcc_target.sched.is_costly_dependence.
26586         (struct gcc_target.sched.adjust_cost): Fix typo.
26587         (struct gcc_target.sched.is_costly_dependence): Change signature to
26588         use single dep_t parameter instead of an equivalent triad.
26589         (struct gcc_target.sched.adjust_cost_2): Remove.
26590
26591         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
26592
26593         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
26594
26595         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
26596         documentation.
26597         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
26598
26599         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
26600         (REG_DEP_TRUE): Document.
26601
26602         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
26603         Change signature to correspond to the targetm.sched.adjust_cost hook.
26604         Update use in TARGET_SCHED_ADJUST_COST_2.
26605         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
26606         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
26607         new scheduler dependencies lists.
26608         (ia64_gen_check): Ditto.
26609
26610         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new
26611         scheduler dependencies lists.
26612
26613         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
26614         signature to correspond to the targetm.sched.is_costly_dependence hook.
26615         (is_costly_group): Update to use new scheduler dependencies lists.
26616
26617         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
26618         instead of INSN_COST () macro.
26619
26620 2007-02-01  Ian Lance Taylor  <iant@google.com>
26621
26622         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
26623
26624 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
26625
26626         * pa.md (tp_load): Correct mfctl instruction syntax.
26627
26628 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
26629
26630         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
26631         altivec_padding_size calculation on AIX.  Improve comment, add
26632         assert to verify that it's right.
26633
26634         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
26635         64-bit.
26636
26637 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
26638
26639         PR inline-asm/28686
26640         * global.c (global_alloc): Add mising initialization of
26641         ELIMINABLE_REGSET.
26642
26643 2007-02-01  Roger Sayle  <roger@eyesopen.com>
26644
26645         * alias.c (init_alias_analysis): Correct whitespace.
26646         * bb-reorder.c (fix_edges_for_rarely_executed_code,
26647         partition_hot_cold_basic_blocks): Likewise.
26648         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
26649         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
26650         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
26651         fold_builtin_snprintf_chk, fold_builtin_printf,
26652         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
26653         do_mpfr_arg3, do_mpfr_sincos): Likewise.
26654         * cfgcleanup.c (cleanup_cfg): Likewise.
26655         * cfgexpand.c (tree_expand_cfg): Likewise.
26656         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
26657         * function.c (get_next_funcdef_no): Likewise.
26658         * gengtype.c (main): Likewise.
26659         * genmodes.c (main): Likewise.
26660         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
26661         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
26662         * ifcvt.c (noce_emit_move_insn): Likewise.
26663         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
26664         Likewise.
26665         * stor-layout.c (get_best_mode): Likewise.
26666         * tree-ssa-loop-niter.c (get_val_for): Likewise.
26667         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
26668         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
26669         perform_var_substitution, solve_graph): Likewise.
26670         * tree-vrp.c (vrp_finalize): Likewise.
26671
26672 2007-02-01  Ian Lance Taylor  <iant@google.com>
26673
26674         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
26675         high part of a paradoxical subreg, return a constant zero.
26676
26677 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
26678
26679         * toplev.c (lang_dependent_init): Call init_set_costs.
26680         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
26681
26682 2007-02-01  Richard Guenther  <rguenther@suse.de>
26683
26684         PR middle-end/30656
26685         * fold-const.c (fold_negate_expr): Allow negating a
26686         constant if overflow does not change.
26687
26688 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26689
26690         * doc/c-tree.texi (Expression trees): Improve markup.
26691         * doc/tm.texi (Register Classes, Addressing Modes)
26692         (Floating Point): Fix spacing after abbreviations.  Fix some
26693         typos.
26694
26695 2007-02-01  Ben Elliston  <bje@au.ibm.com>
26696
26697         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
26698         * doc/contrib.texi: Likewise.
26699         * doc/install.texi: Likewise.
26700
26701 2007-01-31  Richard Henderson  <rth@redhat.com>
26702             Ian Lance Taylor  <iant@google.com>
26703
26704         * lower-subreg.c: New file.
26705         * rtl.def (CONCATN): Define.
26706         * passes.c (init_optimization_passes): Add pass_lower_subreg and
26707         pass_lower_subreg2.
26708         * emit-rtl.c (update_reg_offset): New static function, broken out
26709         of gen_rtx_REG_offset.
26710         (gen_rtx_REG_offset): Call update_reg_offset.
26711         (gen_reg_rtx_offset): New function.
26712         * regclass.c: Revert patch of 2006-03-05, restoring
26713         reg_scan_update.
26714         (clear_reg_info_regno): New function.
26715         * dwarf2out.c (concatn_loc_descriptor): New static function.
26716         (loc_descriptor): Handle CONCATN.
26717         * common.opt (fsplit_wide_types): New option.
26718         * opts.c (decode_options): Set flag_split_wide_types when
26719         optimizing.
26720         * timevar.def (TV_LOWER_SUBREG): Define.
26721         * rtl.h (gen_reg_rtx_offset): Declare.
26722         (reg_scan_update): Declare.
26723         * regs.h (clear_reg_info_regno): Declare.
26724         * tree-pass.h (pass_lower_subreg): Declare.
26725         (pass_lower_subreg2): Declare.
26726         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
26727         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
26728         -fsplit-wide-types.
26729         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
26730         * Makefile.in (OBJS-common): Add lower-subreg.o.
26731         (lower-subreg.o): New target.
26732
26733 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
26734
26735         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
26736
26737 2007-01-31  Anatoly Sokolov <aesok@post.ru>
26738
26739         PR target/19087
26740         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
26741
26742 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26743
26744         PR middle-end/29335
26745         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
26746
26747 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
26748
26749         * cfgloop.h: Include vec-prim.h.
26750         (enum li_flags): Remove LI_ONLY_OLD.
26751         (loop_iterator): Changed.
26752         (fel_next, fel_init): Iterate over loop tree.
26753         (FOR_EACH_LOOP_BREAK): New macro.
26754         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
26755         FOR_EACH_LOOP.
26756         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
26757         * modulo-sched.c (sms_schedule): Ditto.
26758         * tree-vectorizer.c (vectorize_loops): Ditto.
26759         * doc/loop.texi: Update information on loop numbering and behavior of
26760         FOR_EACH_LOOP wrto new loops.
26761         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
26762         add_to_evolution_1): Test nestedness of loops instead of comparing
26763         their numbers.
26764         * tree-chrec.c (chrec_fold_plus_poly_poly,
26765         chrec_fold_multiply_poly_poly, chrec_evaluate,
26766         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
26767         reset_evolution_in_loop): Ditto.
26768         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
26769
26770 2007-01-31  Dirk Mueller  <dmueller@suse.de>
26771
26772         * c-common.c (warn_about_parentheses): Separate warning about
26773         un-parenthized sequence of comparison operators from the one
26774         which is supposed to warn about x <= y <= z.
26775
26776 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
26777
26778         * optabs.h (enum optab_index): Add new OTI_isinf.
26779         (isinf_optab): Define corresponding macro.
26780         * optabs.c (init_optabs): Initialize isinf_optab.
26781         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
26782         patterns.
26783         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
26784         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
26785         using isinf_optab.
26786         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
26787         expand_builtin_interclass_mathfn.
26788         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
26789         * config/i386/i386.md (UNSPEC_FXAM): New constant.
26790         (fxam<mode>2_i387): New insn pattern.
26791         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
26792         built-in functions as x87 inline asm.
26793
26794 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
26795
26796         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
26797
26798 2007-01-30  Eric Christopher  <echristo@apple.com>
26799
26800         * config.gcc: Add geode.
26801
26802 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
26803
26804         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
26805         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
26806         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
26807         value-prof.c: Fix comment typos.
26808
26809 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26810
26811         PR c++/24745
26812         * doc/invoke.texi (Wpointer-arith): Document warning.
26813
26814 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
26815
26816         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
26817         the list of discrepancies from the draft TR.
26818
26819 2007-01-30  Dirk Mueller  <dmueller@suse.de>
26820
26821         PR c++/30601
26822         * doc/invoke.texi (-Wreturn-type): Update description to
26823         match new behavior.
26824
26825 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
26826
26827         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
26828
26829 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
26830
26831         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
26832         to handle optabs that operate on floating point input argument and
26833         output to integer output.
26834         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
26835         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
26836         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
26837         expand_builtin_interclass_mathfn ().
26838         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
26839         (ilogbsi2): Remove.
26840         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
26841         ilogbl built-in functions as x87 intrinsics.
26842
26843 2007-01-30  Richard Guenther  <rguenther@suse.de>
26844
26845         PR middle-end/27657
26846         * dwarf2out.c (reference_to_unused): Query varpool if the
26847         variable was output.
26848
26849 2007-01-30  Richard Guenther  <rguenther@suse.de>
26850
26851         PR middle-end/30313
26852         * passes.c (execute_one_pass): Reset in_gimple_form to not
26853         confuse non-unit-at-a-time mode.
26854
26855 2007-01-29  Roger Sayle  <roger@eyesopen.com>
26856             Richard Guenther  <rguenther@suse.de>
26857
26858         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
26859         avoid undefined behaviour on overflow.  Use force_fit_type_double
26860         to construct the constant with the specified TREE_OVERFLOW.
26861
26862 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
26863
26864         * config/dfp-bit.c: Add parameterized support for fp exceptions.
26865         * config/dfp-bit.h: Ditto.
26866
26867 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26868
26869         * c-decl.c (pop_scope): Replace warnings with call to
26870         warn_for_unused_label.
26871         * c-common.h (warn_for_unused_label): Declare.
26872         * c-common.c (warn_for_unused_label): Define.
26873
26874 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26875
26876         * tree-optimize.c (update_inlined_to_pointers): Delete unused
26877         function.
26878
26879 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
26880
26881         * Makefile.in (USER_H): Remove decfloat.h.
26882         * ginclude/decfloat.h: Delete, moving contents to ...
26883         * ginclude/float.h: Add support for decimal floating point,
26884         guarded by __STDC_WANT_DEC_FP__.
26885
26886 2007-01-29  Mike Stump  <mrs@apple.com>
26887
26888         * doc/gccint.texi (Top): Rename Loop Representation to Loop
26889         Analysis and Representation to resolve case insensitive conflict.
26890         * doc/loop.texi (Loop Analysis and Representation): Likewise.
26891
26892 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
26893
26894         * tree.h (struct tree_memory_tag): Add aliases member.
26895         (MTAG_ALIASES): New macro.
26896         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
26897         (add_may_alias): Remove pointer-set. Update for may_aliases being
26898         a bitmap.
26899         (mark_aliases_call_clobbered): Update for may_aliases being a
26900         bitmap.
26901         (compute_tag_properties): Ditto.
26902         (create_partition_for): Ditto.
26903         (compute_memory_partitions): Ditto.
26904         (dump_may_aliases_for): Ditto.
26905         (is_aliased_with): Ditto.
26906         (add_may_alias_for_new_tag): Ditto.
26907         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
26908         (compute_is_aliased): New function.
26909         (compute_may_aliases): Call compute_is_aliased).
26910         (init_alias_info): Initialize alias_bitmap_obstack.
26911         (union_alias_set_into): New function.
26912         (compute_flow_sensitive_aliasing): Use union_aliases_into.
26913         (have_common_aliases_p): Rewrite to take two bitmaps and use
26914         intersection.
26915         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
26916         Update for bitmaps.
26917         (finalize_ref_all_pointers): Update for add_may_alias changes.
26918         (new_type_alias): Ditto.
26919         * tree-flow-inline.h (may_aliases): Return a bitmap.
26920         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
26921         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
26922         may_aliases being a bitmap.
26923         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
26924         may_aliases now returns a bitmap.
26925         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
26926         being a bitmap.
26927         * tree-ssa-operands.c (add_virtual_operand): Update for
26928         may_aliases being a bitmap.
26929
26930 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
26931
26932         PR tree-optimization/30630
26933         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
26934         variable as changed.
26935
26936 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
26937
26938         PR c++/28266
26939         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
26940         expanded only once even if an error occurs.
26941
26942 2007-01-29  Ben Elliston  <bje@au.ibm.com>
26943
26944         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
26945         (__gcov_average_profiler): Likewise.
26946         (__gcov_ior_profiler): Likewise.
26947         (__gcov_merge_ior): Likewise.
26948
26949 2007-01-28  Jan Hubicka  <jh@suse.cz>
26950
26951         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
26952         * value-prof.c (stringop_block_profile): Likewise.
26953
26954 2007-01-28  Jan Hubicka  <jh@suse.cz>
26955
26956         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall):
26957         Add variant handling histograms; add wrapper.
26958         (clear_storage_via_libcall): Export.
26959         (emit_block_move_hints): Break out from ...; add histograms.
26960         (emit_block_move): ... this one.
26961         (clear_storage_hints): Break out from ...; add histograms.
26962         (clear_storage): ... this one.
26963         (set_storage_via_memset): Handle histogram.
26964         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
26965         (clear_storage_hints, clear_storage_via_libcall): Declare.
26966         (set_storage_via_setmem): Update prototype.
26967         * doc/md.texi (movmem, setmem): Document new arguments.
26968
26969         * value-prof.c (dump_histogram_value, tree_find_values_to_profile):
26970         Add new histograms.
26971         (stringop_block_profile): New global function.
26972         (tree_stringops_values_to_profile): Profile block size and alignment.
26973         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
26974         HIST_TYPE_IOR.
26975         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
26976         (stringop_block_profile): Declare.
26977         * builtins.c: Include value-prof.h.
26978         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
26979         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
26980         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
26981         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
26982         * profile.c (instrument_values): Add new counters.
26983         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
26984         calls.
26985         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
26986         (tree_init_edge_profiler): Build new profilers.
26987         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
26988         (pass_tree_profile): Add dump.
26989         (tree_profile_hooks): Update.
26990         * Makefile.in (LIBGCOV): Add new constants.
26991         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
26992         __gcov_ior_profiler): New.
26993         * i386.md (movmem/setmem expanders): Add new optional arguments.
26994
26995 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
26996
26997         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
26998
26999 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
27000
27001         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
27002         (tree_unswitch_single_loop): Pass eni_size_weights to
27003         tree_num_loop_insns.
27004         * tree-ssa-loop-manip.c: Include tree-inline.h.
27005         (can_unroll_loop_p): Pass eni_size_weights to
27006         tree_num_loop_insns.
27007         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
27008         Pass eni_size_weights to estimate_num_insns.
27009         * tree.h (init_inline_once): Export.
27010         * toplev.c (backend_init): Call init_inline_once.
27011         * cgraphunit.c (cgraph_process_new_functions,
27012         cgraph_analyze_function): Pass eni_inlining_weights to
27013         estimate_num_insns.
27014         * ipa-inline.c (compute_inline_parameters): Ditto.
27015         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
27016         to estimate_num_insns.
27017         (try_unroll_loop_completely): Pass eni_size_weights to
27018         tree_num_loop_insns.
27019         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
27020         ot estimate_num_insns.
27021         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
27022         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
27023         * tree-inline.c (eni_inlining_weights, eni_size_weights,
27024         eni_time_weights): New variables.
27025         (init_inline_once): Initialize them.
27026         (struct eni_data): Mew.
27027         (estimate_num_insns_1, estimate_num_insns): Use weights.
27028         * tree-inline.h (struct eni_weights_d): New.
27029         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
27030         (estimate_num_insns): Declaration changed.
27031         * cfgloop.h (tree_num_loop_insns): Declaration changed.
27032         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
27033         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
27034
27035 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
27036
27037         * tree-data-ref.c (conflict_fn): Assert that the number of affine
27038         relations in the conflict function is valid.
27039
27040 2007-01-27  Ian Lance Taylor  <iant@google.com>
27041
27042         * common.opt: Add fstrict-overflow.
27043         * opts.c (decode_options): Set flag_strict_overflow if -O2.
27044         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
27045         (TYPE_OVERFLOW_UNDEFINED): Define.
27046         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
27047         Replace all uses.
27048         * tree.h (TYPE_TRAP_SIGNED): Don't define.
27049         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
27050         (fold_negate_expr): Likewise.
27051         (make_range): Likewise.
27052         (extract_muldiv_1): Likewise.
27053         (maybe_canonicalize_comparison): Likewise.
27054         (fold_comparison): Likewise.
27055         (fold_binary): Likewise.
27056         (tree_expr_nonnegative_p): Likewise.
27057         (tree_expr_nonzero_p): Likewise.
27058         * tree-vrp.c (compare_values): Likewise.
27059         (extract_range_from_binary_expr): Likewise.
27060         (extract_range_from_unary_expr): Likewise.
27061         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
27062         Likewise.
27063         (nowrap_type_p): Likewise.
27064         * tree-scalar-evolution.c (simple_iv): Likewise.
27065         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
27066         (build_range_check): Likewise.
27067         (extract_muldiv_1): Likewise.
27068         (fold_comparison): Likewise.
27069         * tree-vrp.c (vrp_int_const_binop): Likewise.
27070         (extract_range_from_unary_expr): Likewise.
27071         * convert.c (convert_to_integer): Likewise.
27072         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
27073         (fold_comparison): Likewise.
27074         (fold_binary): Likewise.
27075         * optabs.c (optab_for_tree_code): Likewise.
27076         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
27077         * simplify-rtx.c (simplify_const_relational_operation): Check
27078         flag_strict_overflow and flag_trapv.
27079         (simplify_const_relational_operation): Likewise.
27080         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
27081         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
27082         -fstrict-overflow.
27083
27084 2007-01-27  Roger Sayle  <roger@eyesopen.com>
27085
27086         * tree.c (tree_fold_gcd): Delete.
27087         * tree.h (tree_fold_gcd): Remove prototype.
27088         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
27089         test whether one constant integer is a multiple of another.  Instead
27090         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
27091         * fold-const.c (multiple_of_p): We've determined both TOP and
27092         BOTTOM are integer constants so we can call int_const_binop directly
27093         instead of the more generic const_binop.
27094
27095 2007-01-27  Roger Sayle  <roger@eyesopen.com>
27096
27097         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
27098         1*X check that the constant hasn't overflowed, to preserve the
27099         TREE_OVERFLOW bit.
27100         (round_up): Provide an efficient implementation when rouding-up an
27101         INTEGER_CST to a power-of-two.
27102
27103 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
27104
27105         * doc/sourcebuild.texi: Add comma for clarity.
27106         * doc/extend.texi: Fix some typos.
27107         * doc/passes.texi: Likewise.
27108         * doc/cppinternals.texi: Likewise.
27109         * doc/c-tree.texi: Likewise.
27110         * doc/tree-ssa.texi: Likewise.
27111         * doc/install.texi: Likewise.
27112
27113 2007-01-27  Jan Hubicka  <jh@suse.cz>
27114
27115         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
27116         (pass_sra): Do not require alias information.
27117         * passes.c (init_optimization_passes): Add SRA
27118
27119 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
27120
27121         * tracer.c (rest_of_handle_tracer): We already cleaned
27122         up the CFG in tracer() so don't do it here again.
27123         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
27124         cleanup_cfg here, either.  And don't call renumber_insns.
27125
27126         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
27127         and BB_HEAD are in the insn stream here.  Instead make sure
27128         that BB_INSN is valid on all insns.  Also, do check here that
27129         there are no pending branch predictions...
27130         (rtl_verify_flow_info): ...instead of doing it here.  Checks
27131         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
27132         here.
27133
27134 2007-01-26  Roger Sayle  <roger@eyesopen.com>
27135
27136         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
27137         function to simplify/factorize operand order canonicalization.
27138         (ix86_fixup_binary_operands): Reorganize using the above function.
27139         (ix86_binary_operator_ok): Likewise.
27140
27141 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
27142
27143         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
27144         file scope from optimize_attrs.
27145         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
27146         up search.
27147         (optimize_attrs): Clear insn_code_values after freeing it.
27148
27149 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
27150
27151         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
27152         a parts.base assignment.
27153
27154 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
27155
27156         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
27157         (compute_subscript_distance, initialize_data_dependence_relation,
27158         finalize_ddr_dependent, analyze_ziv_subscript,
27159         analyze_siv_subscript_cst_affine,
27160         compute_overlap_steps_for_affine_univar,
27161         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
27162         analyze_siv_subscript, analyze_miv_subscript,
27163         analyze_overlapping_iterations, subscript_dependence_tester_1,
27164         compute_self_dependence, free_dependence_relation): Work
27165         with affine_fn instead of chrecs.
27166         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
27167         common_affine_function, affine_function_base,
27168         affine_function_constant_p, affine_fn_op, affine_fn_plus,
27169         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
27170         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
27171         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
27172         (all_chrecs_equal_p): Removed.
27173         * tree-data-ref.h (affine_fn, conflict_function): New types.
27174         (struct subscript): Change type of conflicting_iterations_in_a
27175         and conflicting_iterations_in_b.
27176
27177 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
27178
27179         PR other/30182
27180         * config/pa/pa.h (TARGET_HPUX_11): New.
27181         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
27182         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
27183
27184 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
27185         Richard Guenther  <rguenther@suse.de>
27186
27187         * tree-ssa-structalias.c (solve_graph): Handle case
27188         we merged the variable to another.
27189
27190 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27191
27192         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
27193         functions.
27194
27195         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
27196         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
27197
27198 2007-01-25  DJ Delorie  <dj@redhat.com>
27199
27200         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
27201         allow changes to modes which don't fit in those registers.
27202
27203         * reload1.c (choose_reload_regs): Check for invalid subregs before
27204         computing their locations, not after.
27205
27206 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
27207
27208         PR 25127
27209         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
27210         save Altivec registers in an eh_return function.
27211         (compute_vrsave_mask): Likewise.
27212         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
27213         for saving Altivec registers.
27214         (rs6000_emit_prologue): Don't allocate stack twice in
27215         eh_return function.  Correct expected value of altivec_save_offset
27216         when using save_world.  Describe save of R0 to stack when using
27217         save_world.  Describe stack pointer adjustment when using
27218         save_world.  Remove duplicated eh_return parameter register saving.
27219         Update sp_offset variable after save_world.
27220         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
27221         darwin-world.asm.
27222         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
27223         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
27224         implies Altivec.
27225
27226 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
27227
27228         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
27229
27230 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
27231
27232         PR other/30182
27233         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
27234         * config/ia64/ia64.c (ia64_init_builtins): Ditto.
27235
27236 2007-01-25  Richard Guenther  <rguenther@suse.de>
27237
27238         * doc/invoke.texi (-Wcoverage-mismatch): Document.
27239         * common.opt (-Wcoverage-mismatch): New warning option.
27240         * coverage.c (get_coverage_counts): Ignore coverage mismatch
27241         if -Wcoverage-mismatch is given.
27242
27243 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
27244
27245         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
27246         (ipcp_driver): Change to static definition.
27247         Add dumping of the ifunctions.
27248         (constant_val_insert): Remove unused parameter. Support for SSA.
27249         (ipcp_propagate_const): Support for SSA.
27250         (ipcp_profile_bb_print): Print only analyzed nodes.
27251         (ipcp_replace_map_create): Remove support for Fortran constant
27252         for now.
27253         * ipa-prop.c (ipa_method_modify_stmt,
27254         ipa_callsite_compute_param): Support for SSA.
27255         * ipa-prop.h (ipcp_driver): Remove declaration.
27256         (IS_VALID_TREE_MAP_INDEX): Add define.
27257
27258 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
27259
27260         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
27261
27262 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27263
27264         PR middle-end/30447
27265         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
27266         constant argument to cabs and do it without checking for
27267         -funsafe-math-optimizations.
27268
27269 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
27270
27271         * c-common.h (RID_FIRST_CXX0X): New.
27272         (RID_LAST_CXX0X): New.
27273         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
27274         by -Wall.
27275         * c.opt (Wc++0x-compat): New.
27276         * doc/invoke.texi (-Wc++0x-compat): Document.
27277
27278 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27279
27280         * builtins.c (fold_builtin_carg): New.
27281         (fold_builtin_1): Use it.
27282
27283 2007-01-24  Jan Hubicka  <jh@suse.cz>
27284
27285         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
27286
27287         * ipa-inline.c (initial_insns, max_insns): Delete.
27288         (compute_max_insns): New function.
27289         (cgraph_decide_inlining_of_small_function): Use it; take minimal
27290         amount of insns as base for code growth.
27291         (cgraph_decide_inlining): Make initial_insns local; do not compute
27292         max_insns.
27293         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
27294         * doc/invoke.texi (inline-unit-growth): Update docs.
27295
27296 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
27297
27298         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
27299         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
27300         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
27301         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
27302         for CPUs that have PTA_CX16 set.
27303
27304         PR middle-end/27416
27305         * gimplify.c (omp_check_private): New function.
27306         (gimplify_scan_omp_clauses): Use it for
27307         firstprivate/lastprivate/reduction.
27308
27309         PR middle-end/30494
27310         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
27311         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
27312
27313         PR middle-end/30421
27314         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
27315         If lower_lastprivate_clauses emits some statements, append them
27316         to dlist rather than body_p and to body_p append an initializer.
27317         (lower_omp_for): Adjust caller.
27318
27319 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
27320
27321         * target.h (globalize_decl_name): New.
27322         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
27323         * output.h (default_globalize_decl_name): New.
27324         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
27325         globalize_label.
27326         (globalize_decl): Ditto.
27327         (default_globalize_decl_name): New.
27328         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
27329         (ia64_handle_version_id_attribute): New.
27330         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
27331         (ia64_asm_output_external): Use globalize_decl_name instead
27332         of globalize_label.
27333         * doc/extend.texi (version_id): New pragma.
27334         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
27335
27336 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
27337
27338         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
27339         _uleb128_t and _Unwind_SWord with _sleb128_t.
27340         * unwind-dw2.c (extract_cie_info, execute_stack_op,
27341         execute_cfa_program, uw_frame_state_for, uw_update_context_1):
27342         Likewise.
27343         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
27344         * unwind-pe.h (read_uleb128, read_sleb128,
27345         read_encoded_value_with_base): Likewise.
27346         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
27347
27348 2007-01-24  Richard Guenther  <rguenther@suse.de>
27349
27350         * builtins.c (expand_builtin_cexpi): Get the fndecl
27351         for cexp in the correct way.
27352
27353 2007-01-24  Jan Hubicka  <jh@suse.cz>
27354
27355         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS
27356         of calls.
27357
27358 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
27359
27360         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
27361         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
27362         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
27363         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
27364         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
27365         __SIZEOF_PTRDIFF_T__.
27366         * doc/cpp.texi: Documentation for the new builtin macros added.
27367
27368 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
27369
27370         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
27371         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
27372         instead of operands[2] to avoid access past the end of array.
27373
27374 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
27375
27376         * reload1.c (emit_reload_insns): Pass the reload register
27377         for a non-spill output reload through forget_old_reloads_1.
27378
27379 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
27380
27381         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
27382         _SOFT_DOUBLE if doubles use software floating-point.
27383         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
27384         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
27385         * config/rs6000/darwin-ldouble.c: Also compile functions for
27386         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
27387         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
27388         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
27389         commented-out long double override.
27390         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
27391         * config/rs6000/eabispe.h: Likewise.
27392         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
27393         long double for non-SPE.
27394         (rs6000_handle_option): Likewise.
27395         (invalid_e500_subreg): Disallow more subregs involding DImode,
27396         DFmode, TImode or TFmode.
27397         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
27398         E500 double.
27399         (legitimate_lo_sum_address_p): Also check for TFmode for E500
27400         double.
27401         (rs6000_legitimize_address): Also handle TFmode for E500 double.
27402         (rs6000_legitimize_reload_address): Also handle TFmode for E500
27403         double.
27404         (rs6000_legitimate_address): Also check for TFmode for E500
27405         double.
27406         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
27407         (spe_build_register_parallel): Handle TFmode and TCmode.
27408         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
27409         double.
27410         (function_arg): Handle TFmode and TCmode for E500 double.
27411         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
27412         in general.
27413         (print_operand): Handle TFmode and TImode for %y.
27414         (rs6000_generate_compare): Handle TFmode comparisons for E500
27415         double.
27416         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
27417         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
27418         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
27419         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
27420         TFmode for E500 double.
27421         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
27422         (floatsidf2): Enable for E500 double.
27423         (movtf_softfloat): Use rs6000_nonimmediate_operand.
27424         (extenddftf2): Change to extenddftf2_fprs.
27425         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
27426         depending on TARGET_E500_DOUBLE.
27427         (extendsftf2): Enable for E500 double.
27428         (trunctfdf2): Enable for E500 double.
27429         (trunctfsf2): Change to trunctfsf2_fprs.
27430         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
27431         depending on TARGET_E500_DOUBLE.
27432         (floatsitf2): Enable for E500 double.
27433         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
27434         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
27435         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
27436         (negtf2): Change to negtf2_internal.
27437         (negtf2): New expander.
27438         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
27439         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
27440         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
27441         (movdi_internal32): Use rs6000_nonimmediate_operand.
27442         (unnamed splitter): Likewise.
27443         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
27444         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
27445         (SPE64TF, DITI): New mode macros.
27446         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
27447         modes.
27448         (frob_tf_ti): New.
27449         (frob_<mode>_di_2): New.
27450         (frob_tf_di_8_2): New.
27451         (frob_di_df): Change to frob_di_<mode>; allow more modes.
27452         (frob_ti_tf): New.
27453         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
27454         more modes.
27455         (frob_ti_<mode>_8_2): New.
27456         (frob_ti_tf_2): New.
27457         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
27458         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
27459         TFmode.
27460         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
27461         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
27462         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
27463         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
27464         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
27465         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
27466         tsttflt_gp): New.
27467
27468 2007-01-23  Ian Lance Taylor  <iant@google.com>
27469
27470         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
27471         insn-*.o first.
27472         (OBJS-archive): Reformat, alphabetize.
27473         (OBJS): Change out_object_file to OBJS-md.
27474
27475 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
27476
27477         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
27478         JUMP_P and CALL_P predicates where applicable.
27479         * config/i386/i386.c: Ditto.
27480         * config/i386/i386.md: Ditto.
27481         * config/i386/mmx.md: Ditto.
27482         * config/i386/predicates.md: Ditto.
27483
27484 2007-01-22  Andreas Schwab  <schwab@suse.de>
27485
27486         * config/m68k/m68k.h: Fix comment.
27487
27488 2007-01-22  Jan Hubicka  <jh@suse.cz>
27489
27490         * passes.c (init_optimization_passes): Do not rerun
27491         pass_early_warn_uninitialized.
27492
27493 2007-01-22  Richard Guenther  <rguenther@suse.de>
27494
27495         PR tree-optimization/30038
27496         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
27497         function.
27498         (execute_cse_sincos_1): Likewise.
27499         (execute_cse_sincos): Likewise.
27500         (gate_cse_sincos): Likewise.
27501         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
27502         the cexpi() canonicalization of sincos().
27503         * tree-pass.h (pass_cse_sincos): Declare.
27504         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
27505
27506 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
27507
27508         PR rtl-optimization/29329
27509         * combine.c (replaced_rhs_insn): Rename to i2mod.
27510         (replaced_rhs_value): Rename to i2mod_new_rhs.
27511         (i2mod_old_rhs): New global variable.
27512         (combine_instructions): Adjust for above change.  Save a copy of
27513         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
27514         note are substituted in the second instruction.
27515         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
27516         ditch the note if it pertains to the second eliminated register
27517         and this register is mentioned in i2mod_old_rhs.
27518
27519         Revert:
27520         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
27521
27522         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
27523         the insn to which the note was originally attached.
27524
27525 2007-01-21  Jan Hubicka  <jh@suse.cz>
27526
27527         * ipa-inline.c (inlining_mode): Comment, move up.
27528         (cgraph_decide_inlining_incrementally): Do not perform inlining
27529         itself; fix handling of flattening of self recursive functions.
27530         (cgraph_find_cycles): Remove.
27531         (cgraph_flatten_node): Remove.
27532         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
27533         (try_inline): New function.
27534         (cgraph_early_inlining): Update call of
27535         cgraph_decide_inlining_incrementally.  Apply inlining here.
27536         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
27537
27538 2007-01-21  Dirk Mueller  <dmueller@suse.de>
27539
27540         PR bootstrap/30511
27541         * tree-vrp.c (check_array_bounds): do not warn
27542         about ADDR_EXPR's of ARRAY_REF's which are immediately
27543         used in binary expressions.
27544
27545 2007-01-21  Ira Rosen  <irar@il.ibm.com>
27546
27547         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
27548         read_write_dep and macros for its access.
27549         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
27550         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
27551         argument, call vect_check_interleaving for every independent pair of
27552         data-refs. Mark loads that access the same memory location as a store
27553         in the loop.
27554         (vect_check_dependences): Remove.
27555         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
27556         call, fix the call to vect_analyze_data_ref_dependence.
27557         (vect_analyze_data_ref_access): For statements that access the same
27558         data-ref, check that they are not stores; for loads, check that there
27559         is no store that access the same location.
27560
27561 2007-01-20  Roger Sayle  <roger@eyesopen.com>
27562             Joseph Myers  <joseph@codesourcery.com>
27563
27564         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
27565         (-fdump-rtl-stack): Likewise.
27566         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
27567         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
27568         (-mpt-fixed): Use @minus{} for minus sign.
27569         (Using Precompiled Headers): Fix under/overfull hbox.
27570
27571 2007-01-20  Jan Hubicka  <jh@suse.cz>
27572
27573         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
27574         place within annotation.
27575
27576 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
27577
27578         * pa.c (output_move_double): Change array size of xoperands to 4.
27579
27580 2007-01-20  Jan Hubicka  <jh@suse.cz>
27581
27582         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
27583         as temporary.
27584
27585 2007-01-19  Ian Lance Taylor  <iant@google.com>
27586
27587         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
27588         constant to unsigned HOST_WIDE_INT before negating.
27589
27590 2007-01-19  Ian Lance Taylor  <iant@google.com>
27591
27592         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
27593         to unsigned.
27594         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
27595         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
27596         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
27597         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
27598         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
27599         (realloc_vdef, realloc_vuse): Change second parameter to
27600         unsigned.
27601         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
27602         fields to unsigned.
27603         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
27604         unsigned. Change x and lim locals to unsigned.
27605         (realloc_vdef, realloc_vuse): Change num_elem parameter to
27606         unsigned.
27607         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
27608         (copy_virtual_operands): Change i and n locals to unsigned.
27609
27610 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27611
27612         PR middle-end/29335
27613         * builtins.c (fold_builtin_1): Handle builtin fdim.
27614
27615 2007-01-20  Jan Hubicka  <jh@suse.cz>
27616
27617         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
27618         * tree-ssa-structalias.c (compute_points_to_sets): Do call
27619         init_alias_heapvars.
27620         (init_alias_heapvars): Initialize only when not already initialized.
27621         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
27622
27623 2007-01-19  Roger Sayle  <roger@eyesopen.com>
27624
27625         * common.opt (fsigned-zeros): New command line option.
27626         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
27627         of flag_unsafe_math_optimizations.
27628         * opts.c (set_fast_math_flags): The -ffast-math command line option
27629         implies -fno-signed-zeros.
27630         (fast_math_flags_set_p): Likewise.
27631
27632         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
27633         the documentation of -ffast-math appropriately.  Wrap long lines.
27634
27635 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
27636
27637         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
27638         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
27639
27640 2007-01-19  Tomas Bily  <tbily@suse.cz>
27641
27642         * cgraphunit.c (cgraph_finalize_function): Updating of pid
27643         * tree-profile.c:
27644         (tree_init_ic_make_global_vars): New function
27645         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
27646         (tree_gen_ic_profiler): New function
27647         (tree_gen_ic_func_profiler): New function
27648         (tree_profiling): Added calling of tree_gen_ic_func_profiler
27649         (tree_profile_hooks): Added hook for indirec/virtual calls
27650         * value-prof.c (tree_find_values_to_profile): New case for
27651         indirect calls
27652         (tree_values_to_profile): Call for determining indirect/virtual
27653         counters
27654         (tree_indirect_call_to_profile): New function
27655         (tree_ic_transform): New function
27656         (tree_ic): New function
27657         (find_func_by_pid): New function
27658         (init_pid_map): New function
27659         (tree_value_profile_transformations): Added check for
27660         indirect/virtual call transformation
27661         * value-prof.h (enum hist_type): New counter type for
27662         indirect/virtual calls
27663         (profile_hooks): Added new hook for profiling indirect/virtual
27664         calls
27665         * profile.c (instrument_values): New case for indirect/virtual
27666         call added
27667         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
27668         (GCOV_COUNTER_V_INDIR): New counter type
27669         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
27670         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
27671         call added
27672         * cgraph.c: Definition of cgraph_max_pid
27673         (cgraph_create_node): Default init of pid attribute
27674         * cgraph.h: Declaration of cgraph_max_pid
27675         (struct cgraph_node): Added pid attribute
27676         * libgcov.c (__gcov_indirect_call_profiler): New function
27677         (__gcov_one_value_profiler_body): New function
27678         (__gcov_one_value_profiler): Body was moved to
27679         __gcov_one_value_profiler_body and calls it
27680
27681 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
27682
27683         * doc/gty.texi (Options): Document the mark_hook option to GTY.
27684         * gengtype.c (write_types_data, write_func_for_structure,
27685         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
27686         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
27687         (walk_type, write_func_for_structure): Generate the mark_hook if
27688         needed.
27689
27690 2007-01-19  Jan Hubicka  <jh@suse.cz>
27691
27692         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
27693         'early' argument take inlining mode argument specifying whether to
27694         inline for size/speeed or all functions; add support for flattening;
27695         improve dumpting.
27696         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
27697
27698 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27699
27700         PR c++/17947
27701         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
27702         the name of the declared identifier.
27703
27704 2007-01-19  Dirk Mueller  <dmueller@suse.de>
27705
27706         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
27707         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
27708         duplicate evaluation.
27709
27710 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
27711
27712         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
27713         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
27714         to XFMode, use acosxf2 and truncate result to requested mode.
27715         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
27716         (asin<mode>2): Similarly, with asin expanders.
27717         (*fscalexf4_i387): Rename from *fscalexf4.
27718         (expNcorexf3): New expander.
27719         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
27720         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
27721         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
27722         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
27723         patterns for SSE math.
27724         (exp10<mode>2): Similarly, with exp10 expanders.
27725         (exp2<mode>2): Similarly, with exp2 expanders.
27726         (expm1<mode>2): Similarly, with expm1 expanders.
27727         (ldexp<mode>3): Similarly, with ldexp expanders.
27728         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
27729         Use gen_truncxf<mode>2_i387_noop to truncate result.
27730
27731 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
27732
27733         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
27734         for ColdFire targets.
27735
27736 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
27737             Richard Sandiford  <richard@codesourcery.com>
27738
27739         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
27740         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
27741         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
27742         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
27743         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
27744         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
27745
27746 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
27747
27748         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
27749         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
27750         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
27751         (*adddi_dilshr32_cf): New pattern.
27752         (adddi3, subdi3): Remove first alternatives.
27753
27754 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
27755
27756         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
27757         implemented using move.l, do not use its cc result for floating-point
27758         comparisons.
27759
27760 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
27761
27762         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
27763         from accepting 's' constraints if flag_pic.
27764
27765 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
27766
27767         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
27768         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
27769         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
27770         condition from TARGET_68881 to TARGET_HARD_FLOAT.
27771
27772 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
27773
27774         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
27775         ColdFire alternatives.
27776         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
27777         * config/m68k/m68k.md (clzsi2): Define for ColdFire
27778         architectures that support ff1 instruction.
27779
27780 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
27781             Julian Brown  <julian@codesourcery.com>
27782
27783         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
27784         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
27785         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
27786         Add commentary.
27787
27788 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
27789
27790         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
27791         and return a bool.
27792         (output_move_const_into_data_reg, output_move_simode_const): Delete.
27793         * config/m68k/m68k.c (const_method, const_int_cost): Take a
27794         HOST_WIDE_INT instead of an rtx.
27795         (m68k_rtx_costs): Update call accordingly.
27796         (output_move_const_into_data_reg): Likewise.  Fix formatting.
27797         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
27798         Return a bool.
27799         (output_move_simode_const): Update calls after above changes.
27800         Rework to use automatic variables and predicates like MEM_P.
27801         * config/m68k/m68k.md (pushexthisi_const): Update call to
27802         valid_mov3q_const.
27803
27804 2007-01-19  Dirk Mueller  <dmueller@suse.de>
27805
27806         * tree-ssa-alias.c (perform_var_substitution): Fix typo
27807         in dump_flags test.
27808
27809 2007-01-19  Richard Guenther  <rguenther@suse.de>
27810
27811         * builtins.c (expand_builtin_cexpi): Fall back to expanding
27812         via cexp in case sincos is not available.
27813
27814 2007-01-19  Richard Guenther  <rguenther@suse.de>
27815
27816         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
27817         * defaults.h (TARGET_HAS_SINCOS): Default to off.
27818         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
27819         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
27820         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
27821         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
27822         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
27823         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
27824
27825 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
27826
27827         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
27828         New insn patterns.
27829         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
27830         (atan2xf3): Directly generate RTL pattern.
27831         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
27832         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
27833         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
27834         disable patterns for SSE math.
27835         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
27836         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
27837         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
27838         disable patterns for SSE math.
27839
27840 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
27841
27842         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
27843
27844 2007-01-18  Roger Sayle  <roger@eyesopen.com>
27845
27846         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
27847         VIEW_CONVERT_EXPR to the same type as it's operand.
27848
27849 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
27850
27851         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
27852         configured for long double 128.
27853
27854 2007-01-18  Mike Stump  <mrs@apple.com>
27855
27856         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
27857         error.
27858
27859 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
27860
27861         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
27862         type correct.
27863
27864 2007-01-18  Jan Hubicka  <jh@suse.cz>
27865
27866         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
27867         greater than NUM_VOP_FREE_BUCKETS.
27868
27869 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
27870
27871         * tree-ssa-structalias.c: Update comments.
27872         (ptabitmap_obstack): Removed.
27873         (pta_obstack): New.
27874         (oldpta_obstack): Ditto.
27875         (stats): Add a few members.
27876         (struct variable_info): Remove node, complex, address_taken, and
27877         indirect_target members. Add oldsolution member.
27878         (new_var_info): Do not initialize removed members.
27879         (constraint_expr_type): Remove INCLUDES.
27880         (constraint_graph): Add size, implicit_preds, rep,
27881         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
27882         (FIRST_REF_NODE): New macro.
27883         (LAST_REF_NODE): Ditto.
27884         (FIRST_ADDR_NODE): Ditto.
27885         (find): New function.
27886         (unite): Ditto.
27887         (dump_constraint): Do not handle INCLUDES.
27888         (insert_into_complex): Do not insert duplicate constraints.
27889         (condense_varmap_nodes): Renamed and rewritten into ...
27890         (merge_node_constraints): This. Also fix bug in handling of
27891         offseted copy constraints.
27892         (clear_edges_for_node): No longer need to deal with preds at all,
27893         or removing associated preds/succs.
27894         (merge_graph_nodes): Deal with indirect_cycles.
27895         Don't deal with predecessors.
27896         (add_implicit_graph_edge): New function.
27897         (add_pred_graph_edge): Ditto.
27898         (add_graph_edge): Don't deal with predecessors.
27899         (build_constraint_graph): Removed.
27900         (build_pred_graph): New function.
27901         (build_succ_graph): Ditto.
27902         (struct scc_info): Removed in_component. Added roots, dfs, and
27903         node_mapping. Remove visited_index, unification_queue.
27904         (scc_visit): Deal with union-find we do now.
27905         Deal with cycles with REF nodes.
27906         (collapse_nodes): Renamed and rewritten to ...
27907         (unify_nodes): This.
27908         (process_unification_queue): Removed.
27909         (topo_visit): Cleanup
27910         (do_da_constraint): Use find.
27911         (do_sd_constraint): Ditto.
27912         (do_ds_constraint): Ditto.
27913         (do_complex_constraint): Ditto.
27914         (init_scc_info): Update for removed and added members.
27915         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
27916         (find_indirect_cycles): This.
27917         (equivalence_class): New variable.
27918         (label_visit): New function.
27919         (perform_variable_substitution): Rewritten.
27920         (free_var_substitution_info): New function.
27921         (find_equivalent_node): Ditto.
27922         (move_complex_constraints): Ditto.
27923         (eliminate_indirect_cycles): Ditto.
27924         (solve_graph): Only propagate changed bits.
27925         Use indirect cycle elimination.
27926         Use find.
27927         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
27928         (tree_id_eq): Renamed to ...
27929         (tree_vi_eq): This. Update for member change
27930         (insert_id_for_tree): Renamed and rewritten to ...
27931         (insert_vi_for_tree): This.
27932         (lookup_id_for_tree): Renamed and rewritten to ...
27933         (lookup_vi_for_tree): This.
27934         (get_id_for_tree): Renamed and rewritten to ...
27935         (get_vi_for_tree): Ditto.
27936         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
27937         (process_constraint): Don't handle INCLUDES.
27938         Remove special ADDRESSOF case.
27939         (find_func_aliases): Rewrite to use vi functions instead of id
27940         ones.
27941         (create_function_info_for): Ditto.
27942         (create_variable_info_for): Ditto.
27943         (intra_create_variable_infos): Ditto.
27944         (merge_smts_into): Ditto.
27945         (find_what_p_points_to): Ditto.
27946         (init_base_vars): Ditto.
27947         (init_alias_vars): Ditto.
27948         (remove_preds_and_fake_succs): New function.
27949         (dump_sa_points_to_info): Dump new stats.
27950         (dump_solution_for_var): Use find.
27951         (set_used_smts): Fix formatting.
27952         (compute_points_to_sets): Updated for new functions.
27953         (ipa_pta_execute): Ditto.
27954
27955 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
27956             Richard Sandiford  <richard@codesourcery.com>
27957
27958         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
27959         parallels.
27960         * calls.c (expand_call): If the return value is a PARALLEL,
27961         extract its first member.
27962         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
27963         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
27964         use FUNCTION_EXTRA_EPILOGUE.
27965         (m68k_function_value): Return a PARALLEL if the return value
27966         is of a pointer type.
27967         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
27968         (FUNCTION_EXTRA_EPILOGUE): Remove.
27969         * config/m68k/m68k.md (D0_REG): New constant.
27970
27971 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
27972
27973         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
27974         output a NOP for empty epilogues.
27975
27976 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
27977
27978         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
27979         before function.  Extend register save check to include all
27980         registers, not just integer ones.
27981
27982 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
27983
27984         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
27985         (m68k_use_return_insn): ...this.
27986         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
27987         * config/m68k/m68k.c (use_return_insn): Rename to...
27988         (m68k_use_return_insn): ...this.
27989         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
27990         of USE_RETURN_INSN.
27991
27992 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
27993
27994         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
27995         nearest even, fix denormal rounding overflow.
27996
27997 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
27998
27999         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
28000         f%$smove and f%$move.
28001         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
28002         (extendsfdf2_cf): Use fdmove instead of f%&move.
28003         (truncdfsf2_cf): Use fsmove instead of f%$smove.
28004         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
28005
28006 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
28007
28008         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
28009         GPR<-GPR moves.
28010
28011 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
28012
28013         * real.h (real_format): Add a canonical_nan_lsbs_set field.
28014         (coldfire_single_format): Declare.
28015         (coldfire_double_format): Likewise.
28016         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
28017         of qnan_msb_set to determine the lower bits of a canonical
28018         NaN significand.
28019         (encode_ieee_double): Likewise.
28020         (encode_ieee_quad): Likewise.
28021         (ieee_single_format): Initialize canonical_nan_lsbs_set.
28022         (mips_single_format): Likewise.
28023         (ieee_double_format): Likewise.
28024         (mips_double_format): Likewise.
28025         (ieee_extended_motorola_format): Likewise.
28026         (ieee_extended_intel_96_format): Likewise.
28027         (ieee_extended_intel_128_format): Likewise.
28028         (ieee_extended_intel_96_round_53_format): Likewise.
28029         (ibm_extended_format): Likewise.
28030         (mips_extended_format): Likewise.
28031         (ieee_quad_format): Likewise.
28032         (mips_quad_format): Likewise.
28033         (vax_f_format): Likewise.
28034         (vax_d_format): Likewise.
28035         (vax_g_format): Likewise.
28036         (i370_single_format): Likewise.
28037         (i370_double_format): Likewise.
28038         (decimal_single_format): Likewise.
28039         (decimal_double_format): Likewise.
28040         (decimal_quad_format): Likewise.
28041         (c4x_single_format): Likewise.
28042         (c4x_extended_format): Likewise.
28043         (real_internal_format): Likewise.
28044         (coldfire_single_format): New real_format.
28045         (coldfire_double_format): Likewise.
28046         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
28047         canonical_nan_lsbs_set.
28048         (pdp11_d_format): Likewise.
28049         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
28050         if TARGET_COLDFIRE_CPU.
28051
28052 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
28053
28054         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
28055         (output_call, m68k_legitimize_call_address): Declare.
28056         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
28057         parenthesees.  Add support for a 'W' constraint.
28058         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
28059         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
28060         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
28061         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
28062         variables.
28063         (override_options): Initialize them.  Do not set flag_no_function_cse
28064         for TARGET_ID_SHARED_LIBRARY.
28065         (m68k_output_pic_call): Delete.
28066         (m68k_legitimize_call_address): New function.
28067         (print_operand): Remove the %o prefix.  Handle the %p prefix.
28068         (output_call): New function.
28069         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
28070         target address from the GOT if symbolic jumps are not allowed.
28071         * config/m68k/m68k.md (call, general_operand): Do not set
28072         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
28073         Merge separate flag_pic and !flag_pic define_insns into...
28074         (*call, *call_value): ...these new patterns.  Match the address
28075         rather than the containing MEM and require it to be a call_operand.
28076         Use output_call to generate the asm template.
28077         * config/m68k/predicates.md (const_call_operand): New predicate.
28078         (call_operand): Likewise.
28079
28080 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
28081
28082         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
28083         (STACK_GROWS_DOWNWARD): Define to 1.
28084         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
28085         comments, emphasizing that these values are only defaults.
28086         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
28087         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
28088
28089 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
28090
28091         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
28092
28093 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
28094             Richard Sandiford  <richard@codesourcery.com>
28095
28096         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
28097         (FP_REGNO_P): New macros.
28098         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
28099         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
28100         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
28101         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
28102
28103 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
28104
28105         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
28106         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
28107         to $tmake_file.
28108         * config/m68k/t-floatlib: New file, extracting common code from...
28109         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
28110         * config/m68k/t-uclinux: Here.
28111         * config/m68k/fpgnulib.c: Do not compile extendeed precision
28112         routines on ColdFire targets.
28113
28114 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
28115
28116         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
28117         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
28118         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
28119         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
28120         explicitly set MOTOROLA to 1.
28121         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
28122
28123 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
28124             Nathan Sidwell  <nathan@codesourcery.com>
28125
28126         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
28127         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
28128         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
28129         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
28130         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
28131         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
28132         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
28133         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
28134         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
28135         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
28136         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
28137         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
28138         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
28139         (DBX_REGISTER_NUMBER): Delete.
28140         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
28141         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
28142         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
28143
28144 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
28145
28146         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
28147         * config/flat.h: New file.
28148         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
28149         OBJECT_FORMAT_FLAT.
28150         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
28151         indirect references for -msep-data or -mid-shared-library.
28152         Do not use PC-relative code addresses either.
28153         * config/m68k/m68k.c (override_options): Restrict -fPIC error
28154         to -mpcrel.
28155         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
28156         for shared libraries and crt1.o for executables.  Use crti.o and
28157         crtbegin.o.
28158         (ENDFILE_SPEC): Use crtend.o and crtn.o.
28159         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
28160         Do not add -elf2flt or -shared-lib-id options here.
28161         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
28162         Pass -shared-lib-id if -mid-shared-library, taking the library
28163         identifier from -mshared-library-id if given, otherwise
28164         defaulting to 0.
28165         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
28166         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
28167         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
28168         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
28169         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
28170         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
28171         and crtend.o.
28172         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
28173         jump sequence for ISA A and ISA A+.
28174         (PICJUMP): Likewise.
28175
28176 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
28177
28178         * config.gcc (m68k-*-uclinux*): Base the port on the common
28179         and m68k GNU/Linux files rather than on the generic ELF ones.
28180         * config/m68k/uclinux.h (TARGET_VERSION): Override.
28181         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
28182
28183 2007-01-18  Julian Brown  <julian@codesourcery.com>
28184             Richard Sandiford  <richard@codesourcery.com>
28185
28186         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
28187         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
28188         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
28189         before redefining.
28190         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
28191         80 unconditionally.
28192         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
28193
28194 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
28195
28196         * doc/install.texi: Document m68k-uclinuxoldabi.
28197         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
28198         * config/m68k/uclinux-oldabi.h: New file, copied from
28199         config/m68k/uclinux.h.
28200
28201 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
28202
28203         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
28204         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
28205         (m32r_compute_frame_size): Use unsigned for regno.
28206         (m32r_reload_lr): Use gen_frame_mem.
28207         (pop): New.
28208         (m32r_output_function_epilogue): Don't output the function epilogue
28209         textually here.
28210         (m32r_expand_epilogue): New.
28211         (direct_return): Return false if the function has the interrupt
28212         attribute.
28213         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
28214         * config/m32r/m32r.md (epilogue): New expander.
28215         (return_lr, return_rte): New insns.
28216         (return): Make it expander.
28217         (return_normal): New expander.
28218
28219 2007-01-18  Josh Conner  <jconner@apple.com>
28220
28221         PR target/30485
28222         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
28223         support for UNLE, UNLT, UNGE, and UNGT.
28224
28225 2007-01-18  Jan Hubicka  <jh@suse.cz>
28226
28227         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
28228         * tree-tailcall (add_virtual_phis): Likewise.
28229         (optimize_tail_call): Return TODOs.
28230         (execute_tail_calls): Return TODOs.
28231         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
28232         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
28233         changed.
28234         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
28235         Cleanup cfg using TODO.
28236         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
28237         * passes.c (execute_function_todo): When cleanup did something, remove
28238         unused locals.
28239         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
28240         (make_edges): Don't cleanup_cfg.
28241
28242 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
28243
28244         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
28245         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
28246         operate on the top of stack.
28247         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
28248         register handling of instructions that output to the second
28249         stack slot.
28250         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
28251         (move_for_stack_reg): Special-case check for dead destination
28252         stack slot for constant load of 1.0 inside UNSPEC_TAN.
28253
28254         * config/i386/i386.md (UNSPEC_TAN): New constant.
28255         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
28256         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
28257         to correctly model move of constant 1.0 to top stack slot.
28258         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
28259         (unnamed peephole2 pattern): Remove corresponding peephole2
28260         pattern that optimizes tan insn and loading of constant 1.0.
28261         (tanxf2): Use fptanxf4_i387.
28262         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
28263         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
28264         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
28265         disable patterns for SSE math.
28266         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
28267         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
28268
28269 2007-01-18  Dirk Mueller  <dmueller@suse.de>
28270             Richard Guenther <rguenther@suse.de>
28271
28272         PR diagnostic/8268
28273         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
28274         * common.opt (Warray-bounds): Add new warning option.
28275         * c-opts.c (c_common_handle_option): Define -Warray-bounds
28276         if -Wall is given.
28277         * Makefile.in: make tree-vrp.o depend on toplev.h
28278         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
28279         is enabled.
28280         (check_array_refs, check_array_bounds, check_array_ref): New.
28281
28282 2007-01-18  Jan Hubicka  <jh@suse.cz>
28283
28284         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
28285         (execute_ssa_ccp): Return flags conditionally.
28286         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
28287         changed.
28288         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
28289
28290 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
28291
28292         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
28293         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
28294
28295         * Makefile.c (GTFILES): Add cfglayout.h.
28296         * gengtype.c (open_base_files): Likewise.
28297         * cfglayout.c (cfg_layout_function_footer,
28298         cfg_layout_function_header) Reindent to make gengtype happy.
28299         * cfglayout.h (cfg_layout_function_footer,
28300         cfg_layout_function_header): Add GTY(()) marker.
28301
28302         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
28303
28304 2007-01-18  Ben Elliston  <bje@au.ibm.com>
28305
28306         * genautomata.c (write_automata): Include xstrerror output in the
28307         error message if writing the DFA description file fails.
28308
28309 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
28310
28311         * config/mips/mips-protos.h (mips_output_external): Make it
28312         return void.
28313         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
28314         * config/mips/mips.c (irix_output_external_libcall): Likewise.
28315         (extern_list): Likewise.
28316         (extern_head): Likewise.
28317         (TARGET_ASM_FILE_END): Likewise.
28318         (mips_file_end): Likewise.
28319         (mips_output_external): Rewritten.
28320
28321 2007-01-18  Ben Elliston  <bje@au.ibm.com>
28322
28323         * genpreds.c (write_insn_preds_c): Only write out the function
28324         body for regclass_for_constraint if we have register constraints.
28325
28326 2007-01-17  Tom Tromey  <tromey@redhat.com>
28327
28328         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
28329         * doc/install.texi (Testing): Use sourceware.org.
28330         (Binaries): Likewise.
28331         (Specific): Likewise.
28332         * doc/contrib.texi (Contributors): Use sourceware.org.
28333
28334 2007-01-17  Anatoly Sokolov <aesok@post.ru>
28335
28336         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
28337         (AVR_ENHANCED): Rename to ...
28338         (AVR_HAVE_MUL): ... new.
28339         (avr_enhanced_p): Rename to ...
28340         (avr_have_mul_p): ... new.
28341         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
28342         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
28343         * config/avr/avr.c (avr_enhanced_p): Rename to ...
28344         (avr_have_mul_p): ... new.
28345         (base_arch_s): Rename 'enhanced' to 'have_mul'.
28346         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
28347         'avr_enhanced_p' and 'enhanced'.
28348         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
28349         AVR_HAVE_MUL instead of AVR_ENHANCED.
28350         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
28351         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
28352         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
28353         instead of AVR_ENHANCED.
28354         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
28355         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
28356         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
28357
28358 2007-01-17  Ian Lance Taylor  <iant@google.com>
28359
28360         * vec.h (VEC_reserve_exact): Define.
28361         (vec_gc_p_reserve_exact): Declare.
28362         (vec_gc_o_reserve_exact): Declare.
28363         (vec_heap_p_reserve_exact): Declare.
28364         (vec_heap_o_reserve_exact): Declare.
28365         (VEC_OP (T,A,reserve_exact)): New static inline function, three
28366         versions.
28367         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
28368         negative parameter.
28369         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
28370         (VEC_OP (T,A,copy)) [all versions]: Likewise.
28371         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
28372         * vec.c (calculate_allocation): Add exact parameter.  Change all
28373         callers.
28374         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
28375         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
28376         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
28377         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
28378         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
28379         (vec_heap_p_reserve_exact): New function.
28380         (vec_heap_o_reserve_exact): New function.
28381
28382 2007-01-17  Jan Hubicka  <jh@suse.cz>
28383
28384         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
28385
28386 2007-01-17  Eric Christopher  <echristo@apple.com>
28387
28388         * config.gcc: Support core2 processor.
28389
28390 2007-01-16  Jan Hubicka  <jh@suse.cz>
28391
28392         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
28393         the names, just unlink the chain so we don't crash on dangling
28394         pointers
28395         to dead SSA names.
28396
28397 2007-01-16  Jan Hubicka  <jh@suse.cz>
28398
28399         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
28400         * tree-pass.h: Reorder to make IPA passes appear toegher.
28401         (pass_early_inline, pass_inline_parameters, pass_apply_inline):
28402         Declare.
28403         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
28404         parameters, do not call early inliner.
28405         * ipa-inline.c: Update comments.  Include tree-flow.h
28406         (cgraph_decide_inlining): Do not compute inlining parameters.
28407         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
28408         be called with function context set up.
28409         (pass_ipa_inline): Remove unreachable functions before pass.
28410         (cgraph_early_inlining): Simplify assuming to be called from the
28411         PM as local pass.
28412         (pass_early_inline): New pass.
28413         (cgraph_gate_ipa_early_inlining): New gate.
28414         (pass_ipa_early_inline): Turn into simple wrapper.
28415         (compute_inline_parameters): New function.
28416         (gate_inline_passes): New gate.
28417         (pass_inline_parameters): New pass.
28418         (apply_inline): Move here from tree-optimize.c
28419         (pass_apply_inline): New pass.
28420         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
28421         transforming.
28422         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
28423         doing them by hand.
28424         (tree_function_versioning): Do not allocate dummy struct function.
28425         * tree-inline.h (optimize_inline_calls): Update prototype.
28426         * tree-optimize.c (execute_fixup_cfg): Export.
28427         (pass_fixup_cfg): Remove
28428         (tree_rest_of_compilation): Do not apply inlines.
28429         * tree-flow.h (execute_fixup_cfg): Declare.
28430         * Makefile.in (gt-passes.c): New.
28431         * passes.c: Include gt-passes.h
28432         (init_optimization_passes): New passes.
28433         (nnodes, order): New static vars.
28434         (do_per_function_toporder): New function.
28435         (execute_one_pass): Dump current pass here.
28436         (execute_ipa_pass_list): Don't dump current pass here.
28437
28438 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
28439
28440         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
28441         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
28442
28443 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
28444
28445         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
28446         (strong_alias): Define.
28447         (__gcc_qmul): Provide non-FMA for soft-float.
28448         (__gcc_qdiv): Same.
28449         (__gcc_qneg): New.
28450         (__gcc_qeq): New.
28451         (__gcc_qle): New.
28452         (__gcc_qge): New.
28453         (__gcc_qunord): New.
28454         (__gcc_stoq): New.
28455         (__gcc_dtoq): New.
28456         (__gcc_qtos): New.
28457         (__gcc_qtod): New.
28458         (__gcc_qtoi): New.
28459         (__gcc_qtou): New.
28460         (__gcc_itoq): New.
28461         (__gcc_utoq): New.
28462         (fmsub): New.
28463         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
28464         soft-float functions.
28465         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
28466         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
28467         about long double soft float.
28468
28469 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
28470             Tehila Meyzels  <tehila@il.ibm.com>
28471
28472         * tree-vectorizer.h (is_pattern_stmt_p): New.
28473         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
28474         formatting (tabs instead of spaces). Cleanup and clarify setting
28475         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
28476         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
28477         (vectorizable_type_demotion): Check that types are integral.
28478         (vectorizable_type_promotion): Likewise.
28479         (vectorizable_store): Fix typo.  Eliminate new-line at end of
28480         comments.
28481
28482 2007-01-16  Jan Hubicka  <jh@suse.cz>
28483
28484         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
28485         cgraph edges too.
28486
28487 2007-01-15  Eric Christopher  <echristo@apple.com>
28488
28489         * ifcvt.c: Include vec.h, vecprim.h.
28490         (check_cond_move_block): New argument regs.
28491         Reorganize. Add registers used to regs.
28492         (cond_move_process_if_block): Use regs set above as
28493         loop bounds.
28494
28495 2007-01-15  Eric Christopher  <echristo@apple.com>
28496
28497         * config/darwin.h: Update copyright.
28498         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
28499         (LINK_COMMAND_SPEC): Add -u.
28500         (LINK_SPEC): Fix umbrella for above.
28501
28502 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
28503
28504         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
28505         glibc CVS.
28506
28507 2007-01-15  Tom Tromey  <tromey@redhat.com>
28508
28509         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
28510         * doc/install.texi (Testing): Don't mention jacks.
28511         (Configuration): Document --enable-java-maintainer-mode.  Move
28512         --with-java-home to libgcj-specific section.  Document
28513         --with-ecj-jar.
28514         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
28515
28516 2007-01-15  Jan Hubicka  <jh@suse.cz>
28517
28518         * tree-ssa-dce.c (DCE_TODOs): New.
28519         (propagate_necessity): Return if something changed.
28520         (eliminate_unnecessary_stmts): Likewise.
28521         (perform_tree_ssa_dce): Return TODO flags when needed.
28522         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
28523
28524 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
28525
28526         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
28527         (fyl2x_extend<mode>xf3_i387): New insn pattern.
28528         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
28529         patterns using X87MODEF12 mode macro.  Extend operand 1
28530         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
28531         (log10<mode>2): Ditto.
28532         (log2<mode>2): Ditto.
28533         (log1p<mode>2): Ditto.
28534         (logb<mode>2): Ditto.
28535         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
28536         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
28537         (*fxtractxf3_i387): Rename from *fxtractxf3.
28538         (fxtract_extend<mode>xf3_i387): New insn pattern.
28539         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
28540         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
28541         and gen_fyl2xxf3_i387().
28542
28543 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
28544
28545         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
28546         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
28547         get_loop_exit_edges.  Changed return type to bool.
28548         * cfgloop.h (fix_loop_placement): Declaration removed.
28549
28550 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
28551
28552         * param.h (MIN_VECT_LOOP_BOUND): New.
28553         * params.def (MIN_VECT_LOOP_BOUND): New.
28554         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
28555         argument - minimum threshold for number of iterations.
28556         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
28557         argument to declaration.
28558         * tree-vect-analyze.c (vect_analyze_operations): Check value of
28559         MIN_VECT_LOOP_BOUND.
28560         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
28561         slpeel_tree_peel_loop_to_edge with additional argument.
28562         (vect_do_peeling_for_alignment): Likewise.
28563         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
28564
28565 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
28566
28567         PR target/30413
28568         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
28569         operands of size 1.
28570
28571 2007-01-14  Jan Hubicka  <jh@suse.cz>
28572
28573         * tree-dfa.c (remove_referenced_var): New function.
28574         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
28575         prune referenced vars list too.
28576         * tree-flow.h (remove_referenced_var): Declare.
28577
28578 2007-01-14  Jan Hubicka  <jh@suse.cz>
28579
28580         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
28581         separately.
28582         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
28583         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
28584         * except.h (verify_eh_throw_table_statements): Kill prototype.
28585         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
28586         into call exrepssions.
28587         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
28588         eh trhow verifier.
28589         * tree-cfg.c: Include pointer-set.h.
28590         (verify_node_sharing): Work on pointer set.
28591         (verify_eh_throw_stmt_node): New.
28592         (verify_stmts): Use pointers sets, verify throw_stmt.
28593
28594 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
28595
28596         * ipa-reference.c (analyze_function): Consider also addresses taken
28597         in phi nodes.
28598
28599 2007-01-12  Roger Sayle  <roger@eyesopen.com>
28600
28601         * c-typeck.c (null_pointer_constant_p): Replace use of
28602         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
28603         (build_c_cast): Likewise.
28604
28605 2007-01-12  Roger Sayle  <roger@eyesopen.com>
28606
28607         * tree.h (force_fit_type_double): Remove unused final argument.
28608         * c-common.c (constant_expression_warning): Replace use of
28609         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
28610         (convert_and_check): Likewise.
28611         (shorten_compare): Update call to force_fit_type_double.
28612         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
28613         * convert.c (convert_to_pointer): Update call to
28614         force_fit_type_double.
28615         * fold-const.c (force_fit_type_double): Remove overflowed_const
28616         argument.
28617         (int_const_binop, fold_convert_const_int_from_int,
28618         fold_convert_const_int_from_real, fold_div_compare,
28619         fold_sign_changed_comparison, fold_unary, fold_negate_const,
28620         fold_abs_const, fold_not_const): Remove the final argument from
28621         calls to force_fit_type_double.
28622
28623 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
28624
28625         * configure.ac: Set insn to "nop" for spu-*-* also.
28626         * configure: Regenerate.
28627
28628 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
28629
28630         * builtins.def : Add BUILT_IN_FREE.
28631
28632 2007-01-12  Jan Hubicka  <jh@suse.cz>
28633
28634         PR tree-optimization/30443
28635         * tree-inline.c (tree_function_versioning): Do not optimize when
28636         cloning for inlining.
28637
28638 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
28639
28640         * doc/loop.texi: Document recording of loop exits.
28641         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
28642         (update_single_exits_after_duplication,
28643         update_single_exit_for_duplicated_loop,
28644         update_single_exit_for_duplicated_loops): Removed.
28645         (duplicate_loop_to_header_edge): Do not call
28646         update_single_exits_after_duplication and
28647         update_single_exit_for_duplicated_loops.
28648         (loop_version): Do not update single_exit information.
28649         (fix_loop_structure): Use record_loop_exits instead of
28650         mark_single_exit_loops.
28651         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
28652         the lists of loop exits.
28653         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
28654         split_edge, merge_blocks): Update the lists of loop exits.
28655         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
28656         loop_optimizer_init.
28657         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
28658         of mark_single_exit_loops.
28659         (loop_optimizer_finalize): Call release_recorded_exits.
28660         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
28661         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
28662         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
28663         update single exit information.
28664         * lambda-code.c (perfect_nestify): Ditto.
28665         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
28666         (mark_single_exit_loops): Removed.
28667         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
28668         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
28669         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
28670         functions.
28671         (get_loop_exit_edges, single_exit): Use recorded exit lists.
28672         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
28673         (verify_loop_structure): Verify consistency of the exit lists.
28674         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
28675         (set_single_exit): Removed.
28676         * cfgloop.h (struct loop_exit): New function.
28677         (struct loop): single_exit_ field replaced by exits field.
28678         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by
28679         LOOPS_HAVE_RECORDED_EXITS.
28680         (struct loops): Added exits hash.
28681         (mark_single_exit_loops, set_single_exit): Declaration removed.
28682         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
28683
28684 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
28685
28686         * doc/invoke.texi: Avoid use of @headitem.
28687
28688 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
28689
28690         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
28691
28692 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
28693
28694         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
28695         list of targets.
28696
28697 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
28698             Richard Sandiford  <richard@codesourcery.com>
28699
28700         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
28701         * config/m68k/m68k.opt: Resort options.
28702         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
28703
28704 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
28705             Richard Sandiford  <richard@codesourcery.com>
28706
28707         * doc/invoke.texi: Document the macros that are defined by
28708         m68k's -mtune and -mhard-float options.
28709         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
28710         (m68k_cpp_cpu_family): Likewise.
28711         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
28712         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
28713         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
28714         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
28715         (m68k_cpp_cpu_family): Likewise.
28716
28717 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
28718
28719         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
28720         macros besides mc68000 as tuning macros.  Use a switch statement
28721         to set them and mcpu32.
28722
28723 2007-01-12  Julian Brown  <julian@codesourcery.com>
28724
28725         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
28726         (TARGET_68040_ONLY): Rename to...
28727         (TARGET_68040): ...this.
28728         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
28729         * config/m68k/m68k.md: Likewise.
28730
28731 2007-01-12  Julian Brown  <julian@codesourcery.com>
28732             Nathan Sidwell  <nathan@codesourcery.com>
28733             Richard Sandiford  <richard@codesourcery.com>
28734
28735         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
28736         the -mcpu= argument associated with the --with-cpu setting.
28737         Define M68K_DEFAULT_TUNE to the default -mtune= option,
28738         if different from the one implied by the -mcpu setting.
28739         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
28740         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
28741         * doc/invoke.texi: Mention ColdFire in the introduction to the
28742         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
28743         -mno-div and -mhard-float options.  Make -m68881 a synonym for
28744         -mhard-float.  Document the previously-undocumented -m5206e,
28745         -m528x, -m5307 and -m5407 options.  Tweak the existing option
28746         documentation for consistency.
28747         * doc/install.texi: Mention new --with-cpu arguments.
28748         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
28749         default CPU if neither -mcpu nor -march are specified.
28750         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
28751         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
28752         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
28753         using m68k_tune to decide between families that implement the
28754         same ISA.  Use m68k_tune to set __mcfv4e__.
28755         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
28756         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
28757         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
28758         (FL_ISA_C, FL_ISA_MMU): New macros.
28759         (MASK_COLDFIRE): Delete.
28760         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
28761         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
28762         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
28763         (TARGET_HARD_FLOAT): Do not define here.
28764         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
28765         (TUNE_68000): New macro.
28766         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
28767         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
28768         (TUNE_CFV2): Redefine in terms of m68k_tune.
28769         (uarch_type, target_device, fpu_type): New enums.
28770         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
28771         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
28772         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
28773         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
28774         (FL_FOR_isa_c): New macros.
28775         (m68k_isa): New enum.
28776         (m68k_target_selection): New structure.
28777         (all_devices, all_isas, all_microarchs): New tables.
28778         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
28779         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
28780         (MASK_ALL_CPU_BITS): Delete.
28781         (m68k_find_selection): New function.
28782         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
28783         Map the legacy target options to a combination of the new ones.
28784         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
28785         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
28786         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
28787         settings.
28788         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
28789         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
28790         properties.
28791         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
28792         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
28793         * config/m68k/m68k-devices.def: New file.
28794
28795 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
28796             Nathan Sidwell  <nathan@codesourcery.com>
28797
28798         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
28799         (SUBTARGET_EXTRA_SPECS): New macros.
28800         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
28801         use %(asm_cpu_spec) instead.
28802         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
28803         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
28804         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
28805         (EXTRA_SPECS): Rename to...
28806         (SUBTARGET_EXTRA_SPECS): ...this.
28807
28808 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
28809             Richard Sandiford  <richard@codesourcery.com>
28810             Julian Brown  <julian@codesourcery.com>
28811
28812         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
28813         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
28814         to the configuration's default CPU.
28815         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
28816         Remove default masks.
28817         (m680[012]0-*-*): Set the default with_cpu to the first part of
28818         the target name.
28819         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
28820         (m68k*-*-linux): Extend the --with-cpu handling to...
28821         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
28822         and m68010.  Don't set target_cpu_default2.
28823         * doc/install.texi: Document --with-cpu for m68k.
28824         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
28825         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
28826         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
28827         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
28828         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
28829         (ASM_SPEC): Remove use of %(asm_cpu_default).
28830         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
28831         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
28832         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
28833         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
28834         __HAVE_FPU__ if TARGET_HARD_FLOAT.
28835         (TARGET_DEFAULT): Delete.
28836         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
28837         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
28838         (CPP_CPU_SPEC): Delete.
28839         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
28840         the appropriate string.
28841         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
28842         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
28843         (ASM_SPEC): Don't use %(asm_default_spec).
28844         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
28845         TARGET_DEFAULT and add MASK_68881.
28846         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
28847
28848 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
28849
28850         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
28851         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
28852         MASK_68010 alongside MASK_68020.
28853         * doc/invoke.texi: Document -m68010.
28854         * config/m68k/m68k.opt (m68010): New.
28855         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
28856         if TUNE_68010.
28857         (TUNE_68010): New macro.
28858         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
28859         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
28860         (M68K_CPU_m68332): Add MASK_68010.
28861         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
28862         fallback definition.
28863         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
28864         defines.
28865         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
28866         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
28867         to all entries that use MASK_68020.
28868         (output_move_simode_const, output_move_himode, output_move_qimode)
28869         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
28870         instead of TARGET_68020 to select clr behavior.  Remove comment
28871         about there being no TARGET_68010.
28872         * config/m68k/m68k.md: Likewise throughout.
28873
28874 2007-01-12  Julian Brown  <julian@codesourcery.com>
28875
28876         * config/m68k/m68k.h (TARGET_ISAB): New macro.
28877         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
28878         * config/m68k/m68k.md: Likewise.
28879
28880 2007-01-12  Julian Brown  <julian@codesourcery.com>
28881
28882         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
28883         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
28884
28885 2007-01-12  Julian Brown  <julian@codesourcery.com>
28886
28887         * config/m68k/m68k.h (TUNE_68040_60): New macro.
28888         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
28889         * config/m68k/m68k.md: Likewise.
28890
28891 2007-01-12  Julian Brown  <julian@codesourcery.com>
28892             Richard Sandiford  <richard@codesourcery.com>
28893
28894         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
28895         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
28896         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
28897         TARGET_CPU32.
28898         (TARGET_CPU32): Rename to...
28899         (TUNE_CPU32): ...this.
28900         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
28901         (TUNE_CFV2): New macros.
28902         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
28903         remove conditions that are implied by TARGET_68020.
28904         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
28905         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
28906         (m68k_output_function_epilogue): Likewise.
28907         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
28908         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
28909         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
28910         non-68000 timings.  Refactor multiplication and division costs.
28911         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
28912         TUNE_CPU32 instead of TARGET_CPU32.
28913         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
28914         and TUNE_68060 instead of TARGET_68060.
28915         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
28916         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
28917         TARGET_CPU32.
28918         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
28919         && !TARGET_COLDFIRE" to choose between moveq and clr.
28920         Likewise in the unnamed movsf pattern.
28921         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
28922         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
28923         ashiftrt pattern.
28924
28925 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
28926
28927         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
28928         of tabbing before backslashes.
28929
28930 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
28931
28932         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
28933         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
28934         (ASM_OUTPUT_INTERNAL_LABEL): Define.
28935
28936 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
28937
28938         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
28939         find_interesting_uses_cond.
28940         (find_interesting_uses_cond): Use extract_cond_operands.
28941         (rewrite_use_compare): Use extract_cond_operands and
28942         force_gimple_operand_bsi.  Do not call update_stmt.
28943         (determine_use_iv_cost_condition): Use extract_cond_operands.
28944         Return cheaper of using original bound and changing the exit bound.
28945
28946 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
28947
28948         PR tree-optimization/29516
28949         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
28950         most_expensive_mult_to_index, addr_to_parts,
28951         create_mem_ref, maybe_fold_tmr): Make the type of
28952         fields of TARGET_MEM_REF sizetype.
28953         (move_fixed_address_to_symbol, move_pointer_to_base):
28954         New functions.
28955         * tree.def (TARGET_MEM_REF): Add comment on types of
28956         the operands.
28957
28958 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
28959
28960         * c-common.c (vector_types_convertible_p): Treat opaque types as
28961         always convertible if they have the same size, but not otherwise.
28962
28963 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
28964
28965         * ifcvt.c (struct noce_if_info): Add comments to the fields.
28966         Remove the b_unconditional field.
28967         (noce_try_sign_mask): Do not look at b_unconditional.
28968         (noce_process_if_block): Do not use merge_if_blocks.  Update
28969         the CFG here.  Do not set b_unconditional.
28970         (cond_move_process_if_block): Likewise.
28971         (find_cond_trap): Likewise.
28972         (check_cond_move_block): Require simple jump insns at the end
28973         of the basic block.
28974
28975 2007-01-11  Jan Hubicka  <jh@suse.cz>
28976
28977         PR tree-optimization/1046
28978         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
28979         when alias info is not ready.
28980         (pass_tail_recursion): Do not require aliasing.
28981         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
28982         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
28983         * tree-ssa-copy.c (pass_copy_prop): Likewise.
28984         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
28985         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
28986         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
28987         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
28988         before inlining.
28989         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
28990         When aliasing is not build, mark statement as volatile.
28991
28992 2007-01-11  Tom Tromey  <tromey@redhat.com>
28993
28994         PR preprocessor/15185, PR preprocessor/20989:
28995         * doc/cppopts.texi <-MT>: Update description of algorithm for
28996         computing default target.
28997         <-M, -MD>: Reword "basename" text.
28998
28999 2007-01-11  Roger Sayle  <roger@eyesopen.com>
29000
29001         * builtins.c (expand_builtin_pow, expand_builtin_powi,
29002         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
29003         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
29004         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
29005         fold_builtin_bswap, real_constp, fold_builtin_pow,
29006         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
29007         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
29008         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
29009         * convert.c (convert_to_pointer): Likewise.
29010         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
29011         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
29012         const_binop, fold_convert_const_int_from_int,
29013         fold_convert_const_int_from_real,
29014         fold_convert_const_real_from_real, sign_bit_p,
29015         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
29016         fold_sign_changed_comparison, fold_unary, fold_comparison,
29017         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
29018         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
29019         * print-tree.c (print_node_brief, print_node): Likewise.
29020         * stor-layout.c (place_field, layout_type): Likewise.
29021         * tree-chrec.c (keep_cast): Likewise.
29022         * tree.c (build_vector, build_real, build_real_from_int_cst,
29023         build_complex): Likewise.
29024
29025 2007-01-11  Roger Sayle  <roger@eyesopen.com>
29026
29027         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
29028         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
29029
29030 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
29031
29032         * configure.ac (strict1_warn): Rename to strict_warn.
29033         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
29034         cc_set_by_configure, quoted_cc_set_by_configure,
29035         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
29036         all_boot_languages, all_stagestuff): Remove.
29037         (target_list): Remove bootstrap targets.
29038         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
29039         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
29040         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
29041         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
29042         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
29043         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
29044         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
29045         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
29046         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
29047         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
29048         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
29049         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
29050         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
29051         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
29052         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
29053         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
29054         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
29055         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
29056         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
29057         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
29058         (mostlyclean): Adjust.
29059         (clean, distclean): Don't mention bootstrap stuff.
29060         * configure: Regenerate.
29061         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
29062         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
29063         treelang/config-lang.in (stagestuff): Remove.
29064         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
29065         stageprofile, stagefeedback, stagestuff): Remove mention.
29066
29067 2007-01-11  Nick Clifton  <nickc@redhat.com>
29068
29069         * config/mcore/predicates.md (mcore_general_movesrc_operand):
29070         Accept CONSTs.
29071         (mcore_general_movdst_operand): Do not accept CONST_INTs.
29072         (mcore_arith_K_S_operand): Run the test for the S constraint not
29073         the test for the M constraint.
29074         (mcore_addsub_operand): Do not accept integer values that are
29075         larger than 32 bits.
29076         * config/mcore/mcore.md: Remove unused constraints from split.
29077         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
29078         (addsi3): Likewise.
29079         (allocate_stack): Likewise.
29080         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
29081         operands to 32 bits.
29082         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
29083         INTVAL.
29084         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
29085         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
29086         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
29087         mcore_output_bclri, mcore_output_andn, output_inline_const,
29088         mcore_output_move, mcore_output_movedouble): Likewise.
29089         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
29090         (output_inline_const): Likewise.
29091         (output_inline_const): Fix format strings used in sprintf
29092         statements.
29093         * config/mcore/mcore-protos.h: Update prototypes for changed
29094         functions in mcore.c.
29095         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
29096         HOST_WIDE_INT and not int.
29097         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
29098         CONST_OK_FOR_N): Likewise.
29099         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
29100         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
29101         an INTVAL.
29102
29103 2007-01-10  Jan Hubicka  <jh@suse.cz>
29104
29105         * tree-vrp.c (remove_range_assertions): Release defs.
29106         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
29107         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
29108
29109 2007-01-10  Paul Brook  <paul@codesourcery.com>
29110
29111         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
29112         * config/arm/arm.md (mulsi3subsi): New insn.
29113
29114 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
29115
29116         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
29117         (tree_transform_and_unroll_loop): New.
29118         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
29119         Declare.
29120
29121 2007-01-10  Robert Kennedy <jimbob@google.com>
29122
29123         * fold-const.c (fold_comparison): Fold comparisons like (x *
29124         1000 < 0) to (x < 0).
29125
29126 2007-01-10  Ian Lance Taylor  <iant@google.com>
29127
29128         * tree-pretty-print.c (dump_generic_node): Print parentheses when
29129         operands have the same priority.
29130
29131 2007-01-10  Tom Tromey  <tromey@redhat.com>
29132
29133         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
29134         (fold_binary): Likewise.
29135         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
29136         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
29137         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
29138         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
29139         * langhooks.h (struct lang_hooks): Removed field
29140         'can_use_bit_fields_p'.
29141
29142 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
29143
29144         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
29145
29146 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
29147
29148         * function.c (get_last_funcdef_no): New function.
29149         * function.h (get_last_funcdef_no): Declare.
29150         * tree-inline.c (initialize_cfun): Add initialization.
29151         (tree_function_versioning): Cleanup.
29152
29153 2007-01-10  Jan Hubicka  <jh@suse.cz>
29154
29155         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
29156         PHIs.
29157
29158 2007-01-10  Sa Liu  <saliu@de.ibm.com>
29159             Ben Elliston  <bje@au.ibm.com>
29160
29161         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
29162         for SAVE_NONLOCAL and Pmode for any other save level.
29163         * spu-protos.h (spu_restore_stack_block): Declare.
29164         * spu.md (save_stack_block): Remove.
29165         (restore_stack_block): Call spu_restore_stack_block.
29166         * spu.c (spu_restore_stack_block): New function.
29167         (spu_expand_epilogue): Remove old comment.
29168
29169 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
29170
29171         PR tree-optimization/30322
29172         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
29173         (cand_value_at): Return the value as aff_tree.
29174         (may_eliminate_iv): Convert the bound from aff_tree to tree.
29175         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
29176         aff_combination_mult): New functions.
29177         (aff_combination_add): Use aff_combination_add_cst.
29178         (aff_combination_convert): Allow conversions to a wider type.
29179         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
29180         * tree-affine.h (aff_combination_mult): Declare.
29181
29182 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
29183
29184         * doc/tm.texi: Update documentation to reflect reality of exec
29185         and start file search behaviours. Update copyright year.
29186         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
29187         header file directories.
29188
29189 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
29190
29191         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
29192         (*cosxf2): Rename to cosxf2_i387.
29193         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
29194         using X87MODEF12 mode macro. Rename patterns to
29195         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
29196         for SSE math.
29197         (*cosdf2, *cossf2): Ditto.
29198         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
29199         to match extended input operands.
29200         (sincos<mode>3): New expander.
29201         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
29202         insn patterns and corresponding splitters.
29203
29204 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
29205
29206         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
29207         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
29208
29209 2007-01-09  Nicolas Pitre  <nico@cam.org>
29210
29211         PR target/30173
29212         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
29213
29214 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
29215
29216         * target.h (struct gcc_target): New field library_rtti_comdat.
29217         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
29218         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
29219         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
29220         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
29221
29222 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
29223
29224         * doc/invoke.texi (Optimize Options): Correct description of -O0.
29225
29226 2007-01-08  Richard Guenther  <rguenther@suse.de>
29227
29228         * tree.h (force_fit_type_double): Export.
29229         (force_fit_type): Remove.
29230         * fold-const.c (force_fit_type_double): New function.
29231         (force_fit_type): Remove.
29232         (int_const_binop): Use it.
29233         (fold_convert_const_int_from_int): Likewise.
29234         (fold_convert_const_int_from_real): Likewise.
29235         (fold_div_compare): Likewise.
29236         (fold_sign_changed_comparison): Likewise.
29237         (fold_unary): Likewise.
29238         (fold_negate_const): Likewise.
29239         (fold_abs_const): Likewise.
29240         (fold_not_const): Likewise.
29241         * c-common.c (shorten_compare): Use force_fit_type_double.
29242         * convert.c (convert_to_pointer): Likewise.
29243
29244 2007-01-08  Richard Guenther  <rguenther@suse.de>
29245
29246         * tree.h (build_int_cst_wide_type): Export.
29247         * tree.c (build_int_cst_wide_type): New function.
29248         (build_int_cst_wide): Fix comment.
29249         * builtins.c (fold_builtin_object_size): Use build_int_cst
29250         to build -1 or 0 of the correct type.  Use fit_double_type
29251         to check for overflow.
29252         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
29253         to build the mask.
29254         (decode_field_reference): Likewise.
29255         (all_ones_mask_p): Likewise.
29256         (native_interpret_int): Use build_int_cst_wide_type.
29257         (fold_binary): Use build_int_cst_type to build an all-ones
29258         value.
29259         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
29260
29261 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
29262
29263         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
29264
29265 2007-01-09  Ben Elliston  <bje@au.ibm.com>
29266
29267         * genautomata.c (STATS_OPTION): New option.
29268         (stats_flag): New flag.
29269         (gen_automata_option): Handle it.
29270         (initiate_automaton_gen): Ditto.
29271         (write_automata): Output statistics only if stats_flag is
29272         set. Likewise, output time statistics only if time_flag is set.
29273         * doc/md.texi (Processor pipeline description): Document new flag.
29274
29275 2007-01-08  Richard Guenther  <rguenther@suse.de>
29276
29277         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
29278         * tree.c (build_int_cst_type): Likewise.
29279         (size_in_bytes): Don't call force_fit_type on the result.
29280         (int_fits_type_p): Use fit_double_type.
29281         * fold-const.c (fit_double_type): New function.
29282         (force_fit_type): Use it.
29283         * tree.h (fit_double_type): Export.
29284
29285 2007-01-08  Jan Hubicka  <jh@suse.cz>
29286
29287         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
29288         * ipa.c (function_and_variable_visibility): Fix return type.
29289
29290 2007-01-08  Richard Guenther  <rguenther@suse.de>
29291
29292         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
29293         of offset to build the index.
29294         * tree-pretty-print.c (dump_generic_node): Don't build negated
29295         const just for printing.
29296         * c-pretty-print.c (pp_c_integer_constant): Likewise.
29297         * builtins.c (fold_builtin_int_roundingfn): Check if result
29298         fits the type by using force_fit_type and comparing the result.
29299         * predict.c (predict_loops): Use compare_tree_int for comparison.
29300         * tree.c (build_int_cst): Fall back to integer_type_node for
29301         NULL_TREE type.
29302         (build_int_cst_wide): Assert type is non-null.
29303
29304 2007-01-08  Roberto Costa  <roberto.costa@st.com>
29305
29306         * tree-vrp.c (extract_range_from_cond_expr): New.
29307         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
29308         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
29309         as expressions.
29310         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
29311         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
29312         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
29313         used as expressions.
29314         * tree-object-size.c (cond_expr_object_size): New.
29315         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
29316
29317 2007-01-08  Jan Hubicka  <jh@suse.cz>
29318
29319         * tree-ssa-forwprop.c (forward_propagate_into_cond,
29320         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
29321         statement.
29322
29323 2007-01-08  Richard Guenther  <rguenther@suse.de>
29324
29325         PR tree-optimization/23603
29326         * tree-vrp.c (set_value_range_to_truthvalue): New function.
29327         (extract_range_from_binary): Fall back to truthvalue instead of
29328         varying for TRUTH_*_EXPR.
29329         (extract_range_from_comparison): Fall back to truthvalue instead of
29330         varying.
29331         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
29332         if all visited PHI values were constant.
29333
29334 2007-01-08  Jan Hubicka  <jh@suse.cz>
29335
29336         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
29337         (cgraph_analyze_function): break out from ...
29338         (cgraph_finalize_compilation_unit): ... here.
29339         (cgraph_expand_function): Remove forgoten commented out line.
29340         (cgraph_optimize): Analyze functions.
29341
29342 2007-01-08  Jan Hubicka  <jh@suse.cz>
29343
29344         * tree-pas.h (TODO_remove_function): New flag.
29345         (TODO_update*): Renumber.
29346         (pass_ipa_increase_alignment,
29347         pass_ipa_function_and_variable_visibility): New passes.
29348         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
29349         (cgraph_function_and_variable_visibility): Move to ipa.c
29350         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
29351         cgraph_increase_alignment.
29352         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
29353         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
29354         calling tree-inline.
29355         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
29356         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
29357         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
29358         (gate_increase_alignment): New function.
29359         (pass_ipa_increase_alignment): New pass.
29360         * ipa.c: Inline tree-pass.h and timevar.h
29361         (function_and_variable_visibility): Move here from cgraphunit.c
29362         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
29363         * passes.c (init_optimization_passes): Add the two new passes.
29364         (execute_todo): Handle cgraph_remove_functions.
29365
29366 2007-01-08  Nick Clifton  <nickc@redhat.com>
29367
29368         * config/frv/predicates.md (reg_or_0_operand): Accept
29369         CONST_DOUBLEs.
29370
29371 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
29372
29373         * config/bfin/rtems.h, config/bfin/t-rtems: New.
29374         * config.gcc: Add bfin*-rtems*.
29375
29376 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
29377
29378         * c.opt: Add -flax-vector-conversions.
29379         * c-typeck.c (convert_for_assignment): Pass flag to
29380         vector_types_convertible_p to allow emission of note.
29381         (digest_init): Likewise.
29382         * c-opts.c: Handle -flax-vector-conversions.
29383         * c-common.c (flag_lax_vector_conversions): New.
29384         (vector_types_convertible_p): Unless -flax-vector conversions
29385         has been passed, disallow conversions between vectors with
29386         differing numbers of subparts and/or element types.  If such
29387         a conversion is disallowed, possibly emit a note on the first
29388         occasion only to inform the user of -flax-vector-conversions.
29389         The new last argument specifies this.
29390         * c-common.h (flag_lax_vector_conversions): New.
29391         (vector_types_convertible_p): Add extra argument.
29392         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
29393         char_type_node for V*QI type vectors.
29394         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
29395         Update to satisfy new typechecking rules.
29396         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
29397         C and C++ variants.
29398         * doc/invoke.texi (C Dialect Options): Document
29399         -flax-vector-conversions.
29400
29401 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
29402
29403         PR tree-optimization/29877
29404         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
29405         a register variable on the RHS to not be replaceable.
29406
29407 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
29408         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
29409         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
29410         const_simm15, const_pow2, const_npow2): Added.
29411         * config/score/misc.md (insv, extv, extzv, movmemsi,
29412         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
29413         * config/score/score.c (score_address_cost, score_select_cc_mode):
29414         Added.
29415         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
29416         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
29417         Update score_print_operand.
29418         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
29419         Adjust register allocate order and update some macro define.
29420         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
29421         mdx_block_move_straight, mdx_block_move_loop_head,
29422         mdx_block_move_loop_body, mdx_block_move_loop_foot,
29423         mdx_block_move_loop, mdx_block_move): Added.
29424         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
29425         mdp_limm): Updated and fix some bug and typo.
29426         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
29427         (movsf, movdf, doloop_end): Added.
29428
29429 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
29430
29431         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
29432         config/arm/thumb2.md: Fix comment typos.
29433         * doc/extend.texi: Fix a typo.
29434
29435 2007-01-07  Eric Christopher  <echristo@apple.com>
29436
29437         * configure.ac: Check for __stack_chk_fail for darwin.
29438         * configure: Regenerate.
29439
29440 2007-01-07  Richard Guenther  <rguenther@suse.de>
29441
29442         * tree-vrp.c (extract_range_from_assert): CSE calls to
29443         compare_values where possible.
29444         (extract_range_from_unary_expr): Likewise.
29445
29446 2007-01-07  Anatoly Sokolov <aesok@post.ru>
29447
29448         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
29449         * config/avr/avr.c (call_insn_operand): Delete function.
29450         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
29451         instead of register number. Use predicates.
29452         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
29453         call_insn_operand): Add.
29454
29455 2007-01-06  Jan Hubicka  <jh@suse.cz>
29456
29457         * tree-pass.h (pass_build_cgraph_edges): Declare.
29458         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
29459         (visited_nodes): Remove.
29460         (cgraph_create_edges): Move to cgraphbuild.c; rename to
29461         build_cgrpah_edges; make visited_nodes local.
29462         (cgraph_process_new_functions): DO not call initialize_inline_failed.
29463         (record_references_in_initializer): Move to cgraphbuild.c
29464         (initialize_inline_failed, rebuild_cgraph_edges,
29465         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
29466         (verify_cgraph_node): Make visited_nodes local.
29467         (cgraph_analyze_function): Do not call cgraph_create_edges and
29468         initialize_inline_failed.
29469         (cgraph_expand_function): Do not call cgraph_lower_function;
29470         assert that function is already lowered.
29471         * Makefile.in (cgraphbuild.o): New.
29472         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
29473         at the end of lowering passes.
29474
29475 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
29476
29477         * ifcvt.c (cond_move_convert_if_block): New function, code
29478         factored out from...
29479         (cond_move_process_if_block): ...here.  Call the new function
29480         on the THEN and ELSE blocks.
29481         (merge_if_block): Do not copy global_live_at_end, merge_blocks
29482         already takes care of this.
29483
29484 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
29485
29486         PR c/19978
29487         * tree.h (TREE_OVERFLOW_P): New.
29488         * c-typeck.c (parser_build_unary_op): Warn only if result
29489         overflowed and operands did not.
29490         (parser_build_binary_op): Likewise.
29491         (convert_for_assignment): Remove redundant overflow_warning.
29492         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
29493
29494 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
29495
29496         * c-typeck.c (store_init_value): Split over two lines to follow
29497         the GNU coding style.
29498
29499 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
29500
29501         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
29502         __GXX_EXPERIMENTAL_CXX0X__.
29503         * doc/cpp.texi: Same.
29504
29505 2007-01-05  Richard Guenther  <rguenther@suse.de>
29506
29507         PR middle-end/27826
29508         * tree.c (get_narrower): Do not construct COMPONENT_REFs
29509         with mismatched types.  Instead explicitly build a
29510         conversion NOP_EXPR.
29511
29512 2007-01-05  Ian Lance Taylor  <iant@google.com>
29513
29514         * c-common.c (decl_with_nonnull_addr_p): New function.
29515         (c_common_truthvalue_conversion): Call it.
29516         * c-typeck.c (build_binary_op): Likewise.
29517         * c-common.h (decl_with_nonnull_addr_p): Declare.
29518
29519 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
29520
29521         PR c/30360
29522         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
29523         denom against 0.0.
29524
29525 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
29526
29527         * doc/install.texi (Final install): Document the fact that
29528         the GNAT runtime should not be stripped.
29529
29530 2007-01-04  Jan Hubicka  <jh@suse.cz>
29531
29532         * tree-inline.c (fold_marked_statements): Update operand caches
29533         and EH after folding
29534
29535 2007-01-04  Ian Lance Taylor  <iant@google.com>
29536
29537         * c-common.c (check_function_nonnull): Whitespace fix.
29538
29539 2007-01-04  Jan Hubicka  <jh@suse.cz>
29540
29541         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
29542         comitted older version of patch.
29543         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
29544         function, celanup cfg and collect garbage.
29545
29546 2007-01-04  Mike Stump  <mrs@apple.com>
29547
29548         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
29549         (clean): Likewise.
29550
29551 2007-01-04  Eric Christopher  <echristo@apple.com>
29552
29553         * libgcc2.c (__bswapsi2): Use SItype.
29554         (__bswapdi2): Use DItype.
29555         * libgcc2.h: Update for above.
29556
29557 2007-01-04  Paul Brook  <paul@codesourcery.com>
29558
29559         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
29560         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
29561         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
29562         umulsidi3, umulsidi3adddi, smulsi3_highpart,
29563         umulsi3_highpart): Make conditional on !arm_arch6.
29564         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
29565         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
29566         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
29567         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
29568         umulsi3_highpart_v6): New insns.
29569
29570 2007-01-04  Roger Sayle  <roger@eyesopen.com>
29571
29572         * fold-const.c (fold_convert): When casting an expression to void,
29573         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
29574         have a type.  Instead of attempting to build a NOP_EXPR, return
29575         these "special" trees directly.
29576
29577 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
29578
29579         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
29580         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
29581         rs6000_cost->fp not 0 as adjustment for outer NEG.
29582
29583 2007-01-04  Jan Hubicka  <jh@suse.cz>
29584
29585         * cgraph.c (cgraph_release_function_body): New function.
29586         (cgraph_remove_node): Use it.
29587         * cgraph.h (cgraph_release_function_body): Declare.
29588         * cgraphunit.c (cgraph_expand_function): Use it.
29589         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
29590         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
29591         is initialized and while compilation of other function is running.
29592         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
29593         statement CFG annotations from here to ...
29594         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
29595
29596 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
29597
29598         * cfgloop.h (enum li_flags): Make the constants powers of two.
29599
29600 2007-01-04  Jan Hubicka  <jh@suse.cz>
29601
29602         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
29603         set.
29604         (fold_marked_statements): New function.
29605         (optimize_inline_calls, tree_function_versioning): Fold new statements.
29606         * tree-inline.h (copy_body_data): Add statements_to_fold.
29607
29608 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
29609
29610         * config.gcc: Mention libgcc/config.host.
29611         * Makefile.in: Update comments mentioning libgcc.
29612         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
29613         (all.cross, start.encap, rest.encap, rest.cross): Update
29614         dependencies for libgcc move.
29615         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
29616         (clean-target, clean-target-libgcc): Delete.
29617         (srcdirify, GCC_EXTRA_PARTS): New macros.
29618         (libgcc-support, libgcc.mvars): New rules.
29619         (distclean): Remove mention of mklibgcc.
29620         (install): Don't reference INSTALL_LIBGCC.
29621         (install-common): Don't reference EXTRA_PARTS.
29622         (install-libgcc, install-multilib): Delete rules.
29623         * mklibgcc.in: Delete file.
29624         * doc/configfiles.texi: Don't mention mklibgcc.
29625
29626         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
29627         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
29628         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
29629         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
29630         (mklibgcc, ldblspecs): Likewise.
29631
29632         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
29633         (posixpre.def): Use $(T).
29634         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
29635         (SHLIB_SRC, SHLIB_INSTALL): Delete.
29636         (SHLIB_LINK): Make dummy.
29637         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
29638
29639         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
29640
29641         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
29642         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
29643         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
29644         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
29645
29646         * configure.ac (all_outputs): Remove mklibgcc.
29647         * configure: Regenerated.
29648
29649 2007-01-03  Josh Conner  <jconner@apple.com>
29650
29651         PR middle-end/29683
29652         * calls.c (compute_argument_addresses): Set stack and stack_slot
29653         for partial args, too.
29654         (store_one_arg): Use locate.size.constant for the size when
29655         generating a save_area.
29656
29657 2007-01-03  Robert Kennedy <jimbob@google.com>
29658
29659         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
29660         whose definitions are deleted due to basic block merging.
29661
29662 2007-01-03  Paul Brook  <paul@codesourcery.com>
29663
29664         PR target/16634
29665         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
29666         functions.
29667         (use_return_insn): Return 0 for Thumb interrupt functions.
29668         (print_multi_reg): Add rfe argument for IRQ returns.
29669         (arm_output_epilogue): Pop interrupt return address directly into PC.
29670         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
29671
29672 2007-01-03  Paul Brook  <paul@codesourcery.com>
29673
29674         Merge from sourcerygxx-4_1.
29675         * config/arm/thumb2.md: New file.
29676         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
29677         Thumb-2.
29678         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
29679         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
29680         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
29681         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
29682         tables.
29683         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
29684         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
29685         comptibility.
29686         * config/arm/ieee754-sf.S: Ditto.
29687         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
29688         (thumb1_base_register_rtx_p): ... to this.
29689         (thumb_index_register_rtx_p): Rename...
29690         (thumb1_index_register_rtx_p): ... to this.
29691         (thumb_output_function_prologue): Rename...
29692         (thumb1_output_function_prologue): ... to this.
29693         (thumb_legitimate_address_p): Rename...
29694         (thumb1_legitimate_address_p): ... to this.
29695         (thumb_rtx_costs): Rename...
29696         (thumb1_rtx_costs): ... to this.
29697         (thumb_compute_save_reg_mask): Rename...
29698         (thumb1_compute_save_reg_mask): ... to this.
29699         (thumb_final_prescan_insn): Rename...
29700         (thumb1_final_prescan_insn): ... to this.
29701         (thumb_expand_epilogue): Rename...
29702         (thumb1_expand_epilogue): ... to this.
29703         (arm_unwind_emit_stm): Rename...
29704         (arm_unwind_emit_sequence): ... to this.
29705         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
29706         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
29707         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
29708         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
29709         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
29710         thumb2_output_casesi): New functions.
29711         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
29712         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
29713         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
29714         THUMB2_WORK_REGS): Define.
29715         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
29716         arm_condexec_mask, arm_condexec_masklen)): New variables.
29717         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
29718         (arm_override_options): Check new CPU capabilities.
29719         Set new architecture flag variables.
29720         (arm_isr_value): Handle v7m interrupt functions.
29721         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
29722         Thumb-2.
29723         (const_ok_for_arm): Handle Thumb-2 constants.
29724         (arm_gen_constant): Ditto.  Use movw when available.
29725         (arm_function_ok_for_sibcall): Return false for v7m interrupt
29726         functions.
29727         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
29728         (thumb_find_work_register, arm_load_pic_register,
29729         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
29730         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
29731         print_multi_reg, output_mov_long_double_fpa_from_arm,
29732         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
29733         output_mov_double_fpa_from_arm, output_move_double,
29734         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
29735         output_return_instruction, arm_output_function_prologue,
29736         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
29737         arm_output_mi_thunk, thumb_set_return_address): Ditto.
29738         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
29739         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
29740         (arithmetic_instr, shift_op): Use arm_shift_nmem.
29741         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
29742         '!' and 'L'.
29743         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
29744         (thumb_expand_prologue): Use thumb_set_frame_pointer.
29745         (arm_file_start): Output directive for unified syntax.
29746         (arm_unwind_emit_set): Handle stack alignment instruction.
29747         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
29748         Add v6t2, v7, v7a, v7r and v7m.
29749         (RETLDM): Add Thumb-2 code.
29750         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
29751         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
29752         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
29753         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
29754         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
29755         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
29756         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
29757         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
29758         ADJUST_INSN_LENGTH): Define.
29759         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
29760         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
29761         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
29762         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
29763         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
29764         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
29765         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
29766         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
29767         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
29768         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
29769         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
29770         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
29771         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
29772         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
29773         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
29774         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
29775         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
29776         cortex-m3.
29777         * config/arm/arm-tune.md: Regenerate.
29778         * config/arm/arm-protos.h: Update prototypes.
29779         * config/arm/vfp.md: Enable patterns for Thumb-2.
29780         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
29781         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
29782         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
29783         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
29784         * config/arm/libunwind.S: Add Thumb-2 code.
29785         * config/arm/constraints.md: Update include Thumb-2.
29786         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
29787         * config/arm/ieee754-df.S: Ditto.
29788         * config/arm/bpabi.S: Ditto.
29789         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
29790         * config/arm/predicates.md (low_register_operand,
29791         low_reg_or_int_operand, thumb_16bit_operator): New.
29792         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
29793         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
29794         * config/arm/t-arm-elf: Add armv7 multilib.
29795         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
29796         Include thumb2.md.
29797         (UNSPEC_STACK_ALIGN, ce_count): New.
29798         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
29799         arm_zero_extendsidi2, arm_zero_extendqidi2): New
29800         insns/expanders.
29801         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
29802         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
29803         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
29804         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
29805         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
29806         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
29807         insns.
29808         * doc/extend.texi: Document ARMv7-M interrupt functions.
29809         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
29810
29811 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
29812
29813         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
29814         (struct _Unwind_Context): Rename args_size to flags, remove
29815         signal_frame field, add a new args_size field and version field.
29816         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
29817         _Unwind_IsExtendedContext): New inline functions.
29818         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
29819         Assume by_value array is only present if _Unwind_IsExtendedContext.
29820         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
29821         _Unwind_IsSignalFrame.
29822         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
29823         (uw_update_context_1): Use _Unwind_SetSignalFrame.
29824         (uw_init_context_1): Initialize context->flags to
29825         EXTENDED_CONTEXT_BIT.
29826         * config/rs6000/linux-unwind.h (frob_update_context): Use
29827         _Unwind_SetSignalFrame.
29828
29829 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
29830
29831         PR middle-end/30353
29832         * gimplify.c (gimplify_modify_expr_complex_part): Move below
29833         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
29834         the value.
29835
29836 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
29837
29838         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
29839         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
29840         RET, AT_SP): Remove.
29841         * config/i386/i386.md (*sse_prologue_save_insn): Use return
29842         instead of RET.
29843
29844         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
29845         * cfgbuild.c (find_basic_blocks): Likewise.
29846         * cfgrtl.c (rtl_create_basic_block): Likewise.
29847         * function.c (temp_slots_at_level): Likewise.
29848         * reg-stack.c (stack_regs_mentioned): Likewise.
29849         * regclass.c (allocate_reg_info): Likewise.
29850         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
29851         set_bb_for_stmt, move_block_to_fn): Likewise.
29852         * tree-complex.c (tree_lower_complex): Likewise.
29853         * vec.h (VEC_safe_grow_cleared): New.
29854
29855         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
29856
29857 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
29858
29859         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
29860         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
29861         to loop_version.
29862         * cfgloopmanip.c (scale_loop_frequencies): Export.
29863         (loopify): Scale the frequencies by prescribed coefficients.
29864         (set_zero_probability): New function.
29865         (duplicate_loop_to_header_edge): Improve updating of frequencies.
29866         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
29867         and frequencies according to arguments.
29868         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
29869         correctly.
29870         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
29871         * modulo-sched.c (sms_schedule): Set probabilities for entering
29872         versioned loop correctly.
29873         * tree-vect-transform.c (vect_transform_loop): Ditto.
29874         * cfgloop.h (loopify, loop_version): Declaration changed.
29875         (scale_loop_frequencies): Declared.
29876
29877 2007-01-02  Jan Hubicka  <jh@suse.cz>
29878
29879         * cgraph.c: Include tree-flow.h
29880         (cgraph_add_new-function): Handle IPA_SSA mode; execute
29881         early_local_passes.
29882         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
29883         * tree-pass.h (pass_all_early_optimizations): Declare.
29884         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
29885         early_local_passes.
29886         (cgraph_analyze_function): Do early_local_passes.
29887         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
29888         Do not add referenced vars.
29889         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
29890         SSA form.
29891         (gate_all_early_local_passes): New gate.
29892         (pass_early_local_passes): Use new gate.
29893         (execute_early_local_optimizations): New functions.
29894         (gate_all_early_optimizations): New gate.
29895         (pass_all_early_optimizations): New pass.
29896         (execute_free_datastructures): Free SSA only when initialized.
29897         (gate_init_datastructures): Init only when optimizing.
29898         (tree_lowering_passes): Do early local passes when called late.
29899         * tree-profile.c (do_tree_profiling): Don't profile functions added
29900         late.
29901         (do_early_tree_profiling, pass_early_tree_profile): Kill.
29902         * tree-cfg.c (update_modified_stmts): Do not update when operands are
29903         not active.
29904         * passes.c (init_optimizations_passes): Reorder so we go into SSA
29905         during early_local_passes.
29906         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
29907
29908
29909 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
29910
29911         * Makefile.in: Update copyright year.
29912
29913 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
29914
29915         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
29916         in $(lang_checks) and check-consistency targets.
29917
29918 2007-01-02  Jan Hubicka  <jh@suse.cz>
29919
29920         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
29921         Do not add referenced vars.
29922         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
29923         are not active.
29924         * passes.c (init_optimization_passes): Put mudflap_2 after
29925         free_datastructures.
29926
29927 2007-01-02  Jan Hubicka  <jh@suse.cz>
29928
29929         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
29930         Set NOTHROW flag on call statements proved to be nothrow.
29931         Update statement of local calls so new pure/const functions are
29932         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
29933         goto receivers.
29934         (tree_rest_of_compilation): Register hooks and initialize bitmap
29935         early. Do not set after_inlining flag.
29936
29937 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
29938
29939         * sbitmap.c (HOST_BITS_PER_LONG_LONG): Change to
29940         HOST_BITS_PER_LONGLONG
29941
29942 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
29943
29944         PR c/19977
29945         * c-typeck.c (store_init_value): Don't emit pedantic overflow
29946         warning for non-static initializers.
29947
29948 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
29949
29950         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
29951         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
29952         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
29953         Always use set_unique_reg_note to add REG_EQUAL notes.
29954
29955 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
29956
29957         Revert:
29958         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
29959
29960         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
29961         * cfgbuild.c (find_basic_blocks): Likewise.
29962         * cfgrtl.c (rtl_create_basic_block): Likewise.
29963         * function.c (temp_slots_at_level): Likewise.
29964         * reg-stack.c (stack_regs_mentioned): Likewise.
29965         * regclass.c (allocate_reg_info): Likewise.
29966         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
29967         set_bb_for_stmt, move_block_to_fn): Likewise.
29968         * tree-complex.c (tree_lower_complex): Likewise.
29969         * vec.h (VEC_safe_grow_cleared): New.
29970
29971 2007-01-02  Ian Lance Taylor  <iant@google.com>
29972
29973         * c-common.c (c_common_truthvalue_conversion): When warning about
29974         using an assignment as a truth value, set TREE_NO_WARNING.
29975
29976 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
29977
29978         PR middle-end/7651
29979         * c.opt (Wold-style-declaration): New.
29980         * doc/invoke.texi (C-only Warning Options): New.
29981         (Wold-style-declaration): Document it.
29982         (Wextra): Enabled by -Wextra.
29983         * c-opts.c (c_common_post_options): Enabled by -Wextra.
29984         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
29985         -Wold-style-declaration.
29986
29987 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
29988
29989         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
29990         * cfgbuild.c (find_basic_blocks): Likewise.
29991         * cfgrtl.c (rtl_create_basic_block): Likewise.
29992         * function.c (temp_slots_at_level): Likewise.
29993         * reg-stack.c (stack_regs_mentioned): Likewise.
29994         * regclass.c (allocate_reg_info): Likewise.
29995         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
29996         set_bb_for_stmt, move_block_to_fn): Likewise.
29997         * tree-complex.c (tree_lower_complex): Likewise.
29998         * vec.h (VEC_safe_grow_cleared): New.
29999
30000 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
30001
30002         * c-common.c (c_common_nodes_and_builtins): Since variants of
30003         void_type_node get built before it is given a name, we need to
30004         give those variants the name, too.
30005         (complete_array_type): We need to work with the canonical main
30006         type of the array, from which we will build the qualified version.
30007         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
30008         * print-tree.c (print_node): Display canonical type information
30009         for each type.
30010         * stor-layout.c (layout_type): When we don't know the
30011         alignment of a type for which we're building an array, we end up
30012         guessing wrong, so make the type require structural equality.
30013         * tree.c (make_node_stat): When we build a new type, it is its
30014         own canonical type.
30015         (build_type_attribute_qual_variant): When building an attribute
30016         variant, its canonical type is the non-attribute variant. However,
30017         if the attributes are target-dependent and they differ, we need to
30018         use structural equality checks for this type.
30019         (build_qualified_type): A qualified type is not equivalent to its
30020         unqualified variant; set the canonical type appropriately.
30021         (build_distinct_type_copy): When building a distinct type from
30022         another type, the new type is its own canonical type.
30023         (build_variant_type_copy): When building a new type variant, we
30024         assume that it is equivalent to the original type.
30025         (build_pointer_type_for_mode): When building a pointer type, also
30026         build a canonical type pointer.
30027         (build_reference_type_for_mode): When building a reference type,
30028         also build a canonical type reference.
30029         (build_index_type): When we can't hash an index type (e.g.,
30030         because its maximum value is negative), the index type requires
30031         structural equality tests.
30032         (build_array_type): Build the canonical form of an array type.
30033         (build_function_type): Function types require structural equality,
30034         because they contain default arguments, attributes, etc.
30035         (build_method_type_directly): Ditto for method types.
30036         (build_offset_type): Build the canonical offset type.
30037         (build_complex_type): Build the canonical vector type.
30038         (make_vector_type): Build the canonical vector type.
30039         * tree.h (TYPE_CANONICAL): New.
30040         (TYPE_STRUCTURAL_EQUALITY_P): New.
30041         (SET_TYPE_STRUCTURAL_EQUALITY): New.
30042         (struct tree_type): Added "canonical" field.
30043         * params.h (VERIFY_CANONICAL_TYPES): New.
30044         * doc/c-tree.texi (TYPE_CANONICAL): Document.
30045         (TYPE_STRUCTURAL_EQUALITY_P): Document.
30046         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
30047         * doc/invoke.texi (verify-canonical-types): Document --param
30048         parameter for verifying canonical types.
30049
30050 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
30051
30052         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
30053         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
30054         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
30055         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
30056         tm_file.
30057         * config/rs6000/e500.h: New.
30058         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
30059         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
30060         Remove.
30061         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
30062         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
30063         TARGET_E500_DOUBLE): Remove.
30064         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
30065         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
30066         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
30067         * config/rs6000/rs6000.c (rs6000_override_options): Use
30068         CHECK_E500_OPTIONS.
30069
30070 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
30071
30072         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
30073         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
30074         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
30075         rs6000_emit_cmove): Don't check TARGET_E500.
30076         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
30077         sordered): Don't check TARGET_E500.
30078
30079 2007-01-01  Eric Christopher  <echristo@apple.com>
30080
30081         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
30082         HARD_REGISTER_NUM_P.
30083
30084 2007-01-01  Roger Sayle  <roger@eyesopen.com>
30085
30086         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
30087         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
30088         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
30089         eq/ne Y".
30090
30091 2007-01-01  Mike Stump  <mrs@apple.com>
30092
30093         * configure.ac: Remove support for building with Apple's gcc-3.1.
30094
30095 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
30096
30097         PR middle-end/30311
30098         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
30099         REG is a hard register.  Do not modify REG before calling
30100         subreg_nregs.
30101         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
30102         multiple of the size of YMODE for certain lowpart cases.
30103
30104 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
30105
30106         PR middle-end/30253
30107         * gimplify (voidify_wrapper_expr): Update for
30108         GIMPLE_MODIFY_STMT.
30109
30110 2007-01-01  Andreas Schwab  <schwab@suse.de>
30111
30112         PR target/29166
30113         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
30114         save of BR0 in extra_spill_size instead of spill_size.
30115         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
30116         area.
30117         (ia64_expand_epilogue): Restore BR0 from its new location.
30118
30119 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
30120
30121         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
30122         Use a temporary variable if the left hand side is not a gimple
30123         register.
30124
30125 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
30126
30127         * gimplify.c (gimplify_return_expr): Make the temporary variable
30128         for the return expression, a gimple register variable.
30129
30130 2007-01-01  Jan Hubicka  <jh@suse.cz>
30131
30132         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
30133         INSN_LIST.
30134
30135 2007-01-01  Mike Stump  <mrs@apple.com>
30136
30137         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
30138         .literal16.
30139         * config/darwin.c (machopic_select_rtx_section): Use
30140         HAVE_GAS_LITERAL16.
30141         (darwin_mergeable_constant_section): Likewise.
30142         * configure: Regenerate.
30143         * config.in: Regenerate.
30144
30145 2007-01-01  Jan Hubicka  <jh@suse.cz>
30146             Andrew Pinski  <pinskia@gmail.com>
30147
30148         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
30149         before starting IPA passes.