OSDN Git Service

f2849b944cccc2fd8d44063d62ddee59cf07ab01
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-10-15  Razya Ladelsky  <razya@il.ibm.com>
2
3         * matrix-reorg.c (gate_matrix_reorg): Don't comment out whole
4         program flag.
5
6 2007-10-15  Jakub Jelinek  <jakub@redhat.com>
7
8         PR tree-optimization/33619
9         * tree-ssa-ter.c (is_replaceable_p): Return false for all
10         calls.
11
12 2007-10-15  David Edelsohn  <edelsohn@gnu.org>
13
14         * config.gcc (powerpc-ibm-aix5*): Install altivec.h.
15
16 2007-10-15  Richard Guenther  <rguenther@suse.de>
17
18         * fold-const.c (extract_array_ref): Remove.
19         (fold_comparison): Handle POINTER_PLUS_EXPR with the
20         generic address expression comparison folding.  Remove
21         the folding that used extract_array_ref.
22
23 2007-10-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
24
25         PR target/33133
26         * haifa-sched.c (process_insn_forw_deps_be_in_spec): Check if
27         speculation type of insn can be changed before trying to do that.
28
29 2007-10-15  Eric Botcazou  <ebotcazou@libertysurf.fr>
30
31         * dse.c (struct insn_info): Add 'frame_read' field.
32         (scan_insn): For the call to a const function, set frame_read if
33         reload has been run.
34         If the insn reads the frame, kill the frame related stores.
35         (scan_reads_nospill): Likewise.
36
37 2007-10-14  Jason Merrill  <jason@redhat.com>
38
39         * tree-eh.c (optimize_double_finally): Don't assume that the
40         cleanup we're duplicating is only one statement.
41
42 2007-10-14  Kazu Hirata  <kazu@codesourcery.com>
43
44         * config/fixed-bit.c, config/i386/cpuid.h, config/i386/i386.c,
45         config/i386/i386.md, config/i386/sse.md, function.c, jump.c,
46         modulo-sched.c, ra-conflict.c, toplev.c, tree-eh.c, tree-sra.c,
47         tree-ssa-dse.c, tree-vect-analyze.c, tree-vect-patterns.c,
48         tree-vect-transform.c: Fix comment typos.
49         * doc/extend.texi: Fix a typo.
50
51         * c-common.h: Remove the prototype for c_expand_body.
52         * c-tree.h: Remove the prototype for c_disregard_inline_limits.
53         * tree.h: Remove the prototype for fold_build_call_expr.
54
55         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN):
56         Remove.
57         * c-tree.h: Remove the prototype for c_cannot_inline_tree_fn.
58
59 2007-10-13  David Edelsohn  <edelsohn@gnu.org>
60
61         * config/rs6000/aix53.h: New file.
62         * config/rs6000/aix{41,43,51,52}.h (TARGET_ALTIVEC): Define to 0.
63         (TARGET_ALTIVEC_ABI): Same.
64         * config/rs6000/aix.h (TARGET_ALTIVEC): Delete.
65         (TARGET_ALTIVEC_ABI): Delete.
66         * config.gcc (powerpc-ibm-aix5*): Rename to aix5.2.  Add new
67         stanza defaulting to aix5.3.
68
69 2007-10-12  Nathan Froyd  <froydnj@codesourcery.com>
70
71         * config/i386/i386.md (SI_REG, DI_REG): New constants.
72         (strmov): Use defined constants.
73         (cmpstrnsi): Likewise.
74         * config/i386/i386.c (decide_alg): Use defined constants.
75         (ix86_expand_strlen): Likewise.
76
77 2007-10-12  Richard Sandiford  <rsandifo@nildram.co.uk>
78
79         * dse.c (find_shift_sequence): Reinstate "<= UNITS_PER_WORD" condition.
80         * var-tracking.c (micro_operation_def): Update comment on u.loc.
81         (mode_for_reg_attrs, var_lowpart): New functions.
82         (add_uses): Consider recording a lowpart of LOC for MO_USE.
83         (add_stores): Likewise MO_SET and MO_COPY.  If the source of a set
84         or copy is known, set LOC to the SET that performs the set, instead
85         of the destination.
86         (find_src_status, find_src_set_src): Remove LOC parameter.
87         Replace INSN with the source value.
88         (compute_bb_dataflow, emit_notes_in_bb): Check for a SET u.loc when
89         handling MO_SET and MO_COPY.  Update the calls to find_src_status
90         and find_src_set_src.
91
92 2007-10-12  Nathan Froyd  <froydnj@codesourcery.com>
93
94         PR 11001
95         * config/i386/i386.md (strmov): Check for esi and edi usage.
96         * config/i386/i386.c (decide_alg): Check whether we can use a
97         rep prefix and adjust algorithm choice accordingly.
98         (ix86_expand_strlen): Check for eax, ecx, and edi usage.
99
100 2007-10-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
101
102         * config/c4x/c4x.md (mulqi3, mulhi3): Use optab_libfunc.
103
104 2007-10-12  Kenneth Zadeck <zadeck@naturalbridge.com>
105
106         * global.c (build_insn_chain): Formatting fixes.
107
108 2007-10-12  Richard Guenther <rguenther@suse.de>
109
110         * tree-ssa-forwprop.c (forward_propagate_into_cond): For
111         combining both operands require either both have single uses
112         or combining to a constant.
113
114 2007-10-12  Richard Guenther  <rguenther@suse.de>
115
116         PR middle-end/26198
117         * tree-ssa-forwprop.c (can_propagate_from): Do not propagate from
118         a rhs with side-effects or which is a load.
119         (forward_propagate_into_cond): Also try combining both operands.
120
121 2007-10-12  Uros Bizjak  <ubizjak@gmail.com>
122
123         PR tree-optimization/33742
124         * tree-vect-transform.c (vectorizable_operation): Return false
125         if get_vectype_for_scalar_type for scalar_dest can't be determined.
126         (vectorizable_call): Same for rhs_type and lhs_type.
127
128 2007-10-12  Jakub Jelinek  <jakub@redhat.com>
129
130         PR tree-optimization/33645
131         * tree-ssa-live.c (mark_all_vars_used): Add data argument,
132         pass it to walk_tree.
133         (mark_all_vars_used_1): Pass data through to mark_all_vars_used.
134         When calling set_is_used on a VAR_DECL, if data is not NULL and
135         its DECL_UID is in the bitmap, call mark_all_vars_used on its
136         DECL_INITIAL after clearing the bit in bitmap.
137         (remove_unused_locals): Adjust mark_all_vars_used callers.
138         Instead of removing unused global vars from unexpanded_var_list
139         immediately record them in bitmap, call mark_all_vars_used on
140         all used global vars from unexpanded_var_list and only purge
141         global vars that weren't found used even during that step.
142  
143 2007-10-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
144
145         * gthr-posix.h (__gthread_active_init): Create detached instead of
146         joinable thread when testing whether threads are active on hppa-hpux.
147         * gthr-posix95.h (__gthread_active_init): Likewise.
148
149 2007-10-11  Kenneth Zadeck <zadeck@naturalbridge.com>
150
151         PR middle-end/33676
152         * global.c (build_insn_chain): Include insn that occur between
153         basic blocks.
154         
155 2007-10-11  Tom Tromey  <tromey@redhat.com>
156
157         * gengtype-yacc.y: Delete.
158
159 2007-10-11  Uros Bizjak  <ubizjak@gmail.com>
160
161         * config/i386/i386.md (AX_REG, DX_REG, CX_REG): New constants.
162         * config/i386/i386.c (ix86_function_arg_regno_p, function_arg_32,
163         function_value_32, function_value_64, function_value_ms_64,
164         setup_incoming_varargs_64, ix86_expand_prologue, ix86_expand_call,
165         legitimize_tls_address, x86_this_parameter, x86_output_mi_thunk):
166         Use new constants.
167
168 2007-10-11  Richard Guenther  <rguenther@suse.de>
169
170         * gcse.c (hash_scan_set): If the next nonnote insn is in
171         a different basic block insert the set.
172
173 2007-10-11  Richard Guenther  <rguenther@suse.de>
174
175         PR middle-end/33724
176         * tree-cfg.c (one_pointer_to_useless_type_conversion_p): New function.
177         (verify_gimple_expr): Use it to verify pointer-to types for
178         ADDR_EXPRs.
179
180 2007-10-11  Richard Guenther  <rguenther@suse.de>
181
182         PR c/33726
183         * c-typeck.c (build_array_ref): Do not strip qualifiers from
184         the array element type.
185
186 2007-10-11  Eric Botcazou  <ebotcazou@libertysurf.fr>
187
188         PR rtl-optimization/33638
189         * dse.c (struct insn_info): Remove 'stack_read' field,
190         add 'stack_pointer_based' field.
191         (record_store): For a store with non-constant base, record
192         whether it is stack pointer based.
193         (scan_insn): For the call to a const function, remove stack
194         pointer based stores from the list of local active stores.
195         (scan_reads_nospill): Delete code dealing with const functions.
196
197 2007-10-10  Peter Bergner  <bergner@vnet.ibm.com>
198
199         * ra-conflict.c (partial_bitnum, max_bitnum): Change type of variables
200         to HOST_WIDE_INT.
201         (conflict_p, set_conflict, set_conflicts): Likewise.
202         * global.c (global_alloc): Likewise.
203         * ra.h: Update prototypes.
204
205 2007-10-10  Wolfgang Gellerich  <gellerich@de.ibm.com>
206
207         * opth-gen.awk: Fixed generation of comment stating the origin
208           of options.h
209
210 2007-10-10  Kazu Hirata  <kazu@codesourcery.com>
211
212         Revert:
213         2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
214         * longlong.h (count_leading_zeros): Replace '{' and '}' with '%{'
215         and '%}', respectively.
216
217         Revert:
218         2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
219         * config/m68k/m68k.c (print_operand): Handle '{' and '}'.
220         * config/m68k/m68k.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '{'
221         and '}'.
222         * config/m68k/m68k.md: Replace '{' with '%{' where '{' is
223         meant to be output.
224
225         Revert:
226         2007-10-07  Kazu Hirata  <kazu@codesourcery.com>
227         * config/m68k/m68k.c, config/m68k/m68k.md: Use the assembly
228         syntax for ASSEMBLER_DIALECT.
229         * config/m68k/m68k.h (ASSEMBLER_DIALECT): New.
230
231 2007-10-10  Revital Eres  <eres@il.ibm.com>
232
233         * modulo-sched.c (check_nodes_order): Dump the final order of
234         the nodes.
235         (get_sched_window): Add dump info.
236         (calculate_order_params): Dump order params of the nodes.
237
238 2007-10-09  Kenneth Zadeck <zadeck@naturalbridge.com>
239
240         PR middle-end/33669
241         * ra-conflict.c (record_one_conflict_between_regnos, 
242         set_conflicts_for_earlyclobber, global_conflicts): Improved logging.
243         (global_conflicts): Enhanced incorrect check.
244         
245 2007-10-09  Geoffrey Keating  <geoffk@apple.com>
246
247         * dwarf2out.c (output_call_frame_info): FDEs are always emitted
248         if flag_exceptions is not set.
249         * config/darwin.c (darwin_emit_unwind_label): Rewrite to use
250         assemble_name rather than incorrectly emulating it.
251
252         * doc/extend.texi (Deprecated Features): Mention that <? and >? and
253         friends are removed from G++.
254
255 2007-10-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
256
257         * c-opts.c (c_common_handle_option): -Wnontemplate-friend,
258         -Wwrite-strings and -Wmultichar are enabled by default, so Wall
259         enabling them is redundant. Don't check two times for
260         c_dialect_cxx.
261         
262 2007-10-09  H.J. Lu  <hongjiu.lu@intel.com>
263
264         * ra-conflict.c (record_one_conflict_between_regnos): Revert
265         the last change.
266         (set_conflicts_for_earlyclobber): Likewise.
267         (global_conflicts): Likewise.
268
269 2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
270
271         * longlong.h (count_leading_zeros): Replace '{' and '}' with '%{'
272         and '%}', respectively.
273
274 2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
275
276         * config/m68k/m68k.c (print_operand): Handle '{' and '}'.
277         * config/m68k/m68k.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '{'
278         and '}'.
279         * config/m68k/m68k.md: Replace '{' with '%{' where '{' is
280         meant to be output.
281
282 2007-10-09  Richard Guenther  <rguenther@suse.de>
283
284         PR middle-end/33692
285         * gimplify.c (canonicalize_component_ref): Honor qualifiers
286         of referenced structure and component.
287
288 2007-10-09  Kenneth Zadeck <zadeck@naturalbridge.com>
289
290         PR middle-end/33669
291         * ra-conflict.c (record_one_conflict_between_regnos,
292         set_conflicts_for_earlyclobber, global_conflicts): Improved
293         logging.
294         (global_conflicts): Removed incorrect check.
295
296 2007-10-09  Richard Sandiford  <rsandifo@nildram.co.uk>
297
298         PR tree-optimization/33615
299         * tree-ssa-pre.c (compute_avail): Don't call make_values_for_stmt
300         if the statement might throw.  Fix formatting.
301
302 2007-10-09  Richard Sandiford  <rsandifo@nildram.co.uk>
303
304         PR tree-optimization/33615
305         * tree-ssa-loop-im.c (movement_possibility): Return MOVE_IMPOSSIBLE
306         if the rhs might throw.
307
308 2007-10-09  Jan Hubicka  <jh@suse.cz>
309
310         * invoke.texi (align-threshold, align-loop-iterations): Document.
311         * final.c: Include cfgloop.h, params.h
312         (compute_alignments): Dump decisions and compare them with loop
313         structure; honor given parameters.
314         (pass_compute_alignments): New dump file.
315         * params.def (PARAM_ALIGN_THRESHOLD, PARAM_ALIGN_LOOP_ITERATIONS): New.
316         * Makefile.in (final.o): Add dependency on cfgloop.h and params.h
317
318 2007-10-09  James E. Wilson  <wilson@specifix.com>
319
320         PR tree-optimization/33655
321         PR middle-end/22156
322         * tree-sra.c (bitfield_overlaps_p): When fld->element is INTEGER_CST,
323         convert it to bitsizetype before size_binop call.
324
325 2007-10-09  Alexandre Oliva  <aoliva@redhat.com>
326
327         PR tree-optimization/33572
328         * tree-inline.c (update_ssa_across_abnormal_edges): Tolerate
329         the absence of a corresponding edge from the exit block.
330
331 2007-10-09  Alexandre Oliva  <aoliva@redhat.com>
332
333         PR middle-end/22156
334         * tree-sra.c (instantiate_element): Use BYTES_BIG_ENDIAN for
335         bit-field layout.
336         (sra_build_assignment): Likewise.  Set up mask depending on
337         precision, not type.
338         (sra_build_bf_assignment): Use BYTES_BIG_ENDIAN.  Don't overflow
339         computing bit masks.
340         (sra_build_elt_assignment): Don't view-convert from signed to
341         unsigned.
342         (sra_explode_bitfield_assignment): Use bit-field type if
343         possible.  Use BYTES_BIG_ENDIAN.
344
345 2007-10-08  Alexandre Oliva  <aoliva@redhat.com>
346
347         PR middle-end/22156
348         * tree-sra.c (scalarize_lsdt): Fix thinko in testing whether
349         the original stmt can throw.
350         (sra_build_bf_assignment): Fix type mismatch when applying negated
351         mask.
352
353 2007-10-08  Geoffrey Keating  <geoffk@apple.com>
354
355         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Register
356         '#pragma mark' to be executed at preprocessing time.
357
358 2007-10-08  Ollie Wild  <aaw@google.com>
359
360         * varasm.c (compare_constant): Removed call to
361         lang_hooks.expand_constant.
362         (copy_constants): Removed call to lang_hooks.expand_constant.
363         (compute_reloc_for_constant): Removed call to
364         lang_hooks.expand_constant.
365         (output_addressed_constants): Removed call to
366         lang_hooks.expand_constant.
367         (constructor_static_from_elts_p): Removed call to
368         lang_hooks.expand_constant.
369         (output_constant): Removed calls to lang_hooks.expand_constant.
370         * langhooks.h (struct lang_hooks): Removed field expand_constant.
371         * langhooks-def.h (lhd_return_tree): Removed.
372         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
373         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
374         * langhooks.c (lhd_return_tree): Removed.
375
376 2007-10-08  Mark Shinwell  <shinwell@codesourcery.com>
377
378         * combine.c (setup_incoming_promotions): Ensure that
379         arguments that have not undergone mode promotions do not
380         incorrectly get marked as being sign- or zero-extended.
381
382 2007-10-08  Richard Guenther  <rguenther@suse.de>
383
384         PR middle-end/33693
385         PR middle-end/33695
386         PR middle-end/33697
387         * fold-const.c (fold_binary): Use correct types in folding
388         of a * (1 << b) to (a << b).  Likewise for ~A & ~B to ~(A | B)
389         and building of RROTATE_EXPR.
390
391 2007-10-08  Richard Guenther  <rguenther@suse.de>
392
393         PR middle-end/33691
394         PR middle-end/33694
395         PR middle-end/33696
396         * fold-const.c (fold_binary): Use the correct types when
397         folding (A | CST1) & CST2 to (A & CST2) | (CST1 & CST2).
398         (fold_binary): Use the correct types when folding
399         (-A) - B to (-B) - A.
400         (fold_unary): Use the correct types when folding ~(X).
401
402 2007-10-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
403
404         * doc/invoke.texi (Wall): fix formatting issues.
405         
406 2007-10-07  Richard Sandiford  <rsandifo@nildram.co.uk>
407
408         * simplify-rtx.c (simplify_binary_operation_1): Canonicalize
409         truncated shift counts.
410
411 2007-10-07  Kazu Hirata  <kazu@codesourcery.com>
412
413         * config/m68k/m68k.c, config/m68k/m68k.md: Use the assembly
414         syntax for ASSEMBLER_DIALECT.
415         * config/m68k/m68k.h (ASSEMBLER_DIALECT): New.
416
417 2007-10-06  Eric Botcazou  <ebotcazou@adacore.com>
418             Nathan Froyd  <froydnj@codesourcery.com>
419
420         * dwarf2out.c (dwarf2out_frame_init): Check for DWARF2_FRAME_INFO
421         when determining whether to record INCOMING_RETURN_ADDR_RTX.
422
423 2007-10-06  Eric Botcazou  <ebotcazou@adacore.com>
424
425         Revert:
426         2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
427
428         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
429         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
430         the function, temporarily point the debug interface to the null one.
431
432 2007-10-06  Alexandre Oliva  <aoliva@redhat.com>
433
434         PR tree-optimization/33655
435         PR middle-end/22156
436         * tree-sra.c (bitfield_overlaps_p): Handle array and complex
437         elements.
438
439 2007-10-06  Alexandre Oliva  <aoliva@redhat.com>
440
441         PR tree-optimization/33572
442         * tree-cfg.c (verify_stmts): Check for missing PHI defs.
443         * tree-inline.c (update_ssa_across_eh_edges): Renamed to...
444         (update_ssa_across_abnormal_edges): ... this.  Set slots in the
445         return PHI node.
446         (copy_edges_for_bb): Handle nonlocal label edges.
447         (make_nonlocal_label_edges): Deleted.
448         (optimize_inline_calls): Don't call it.
449
450 2007-10-05  Hans-Peter Nilsson  <hp@axis.com>
451
452         * gthr-single.h: Revert last change.
453
454 2007-10-05  Michael Matz  <matz@suse.de>
455
456         PR middle-end/33667
457         * lower-subreg.c (decompose_multiword_subregs): Use
458         validate_unshare_change().
459
460 2007-10-05  Peter Bergner  <bergner@vnet.ibm.com>
461
462         * ra-conflict.c: Include "sparseset.h".
463         (conflicts): Change to HOST_WIDEST_FAST_INT.
464         (allocnos_live): Redefine variable as a sparseset.
465         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE, GET_ALLOCNO_LIVE): Delete macros.
466         (allocno_row_words): Removed global variable.
467         (partial_bitnum, max_bitnum, adjacency_pool, adjacency): New variables.
468         (CONFLICT_BITNUM, CONFLICT_BITNUM_FAST): New defines.
469         (conflict_p, set_conflict_p, set_conflicts_p): New functions.
470         (record_one_conflict_between_regnos): Cache allocno values and reuse.
471         Use set_conflict_p.
472         (record_one_conflict): Update uses of allocnos_live to use
473         the sparseset routines.  Use set_conflicts_p.
474         (mark_reg_store): Likewise.
475         (set_reg_in_live): Likewise.
476         (global_conflicts): Update uses of allocnos_live.
477         Use the new adjacency list to visit an allocno's neighbors
478         rather than iterating over all possible allocnos.
479         Call set_conflicts_p to setup conflicts rather than adding
480         them manually.
481         * global.c: Comments updated.  
482         (CONFLICTP): Delete define.
483         (regno_compare): New function.  Add prototype.
484         (global_alloc): Sort the allocno to regno mapping according to
485         which basic blocks the regnos are referenced in.  Modify the
486         conflict bit matrix to a compressed triangular bitmatrix.
487         Only allocate the conflict bit matrix and adjacency lists if
488         we are actually going to allocate something.
489         (expand_preferences): Use conflict_p.  Update uses of allocnos_live.
490         (prune_preferences): Use the FOR_EACH_CONFLICT macro to visit an
491         allocno's neighbors rather than iterating over all possible allocnos.
492         (mirror_conflicts): Removed function.
493         (dump_conflicts): Iterate over regnos rather than allocnos so
494         that all dump output will be sorted by regno number.
495         Use the FOR_EACH_CONFLICT macro.
496         * ra.h: Comments updated.
497         (conflicts): Update prototype to HOST_WIDEST_FAST_INT.
498         (partial_bitnum, max_bitnum, adjacency, adjacency_pool): Add prototypes.
499         (ADJACENCY_VEC_LENGTH, FOR_EACH_CONFLICT): New defines.
500         (adjacency_list_d, adjacency_iterator_d): New types.
501         (add_neighbor, adjacency_iter_init, adjacency_iter_done,
502         adjacency_iter_next, regno_basic_block): New static inline functions.
503         (EXECUTE_IF_SET_IN_ALLOCNO_SET): Removed define.
504         (conflict_p): Add function prototype.
505         * sparseset.h, sparseset.c: New files.
506         * Makefile.in (OBJS-common): Add sparseset.o.
507         (sparseset.o): New rule.
508
509 2007-10-05  Richard Guenther  <rguenther@suse.de>
510
511         PR middle-end/33666
512         * fold-const.c (fold_unary): Do not fold (long long)(int)ptr
513         to (long long)ptr.
514
515 2007-10-05  Michael Matz  <matz@suse.de>
516
517         PR inline-asm/33600
518         * function.c (match_asm_constraints_1): Check for input
519         being used in the outputs.
520
521 2007-10-05  Richard Guenther  <rguenther@suse.de>
522
523         * tree-cfg.c (verify_gimple_expr): Accept OBJ_TYPE_REF.
524
525 2007-10-05  Richard Sandiford  <rsandifo@nildram.co.uk>
526
527         PR target/33635
528         * config/mips/mips.c (mips_register_move_cost): Rewrite to use
529         subset checks.  Make the cost of FPR -> FPR moves depend on
530         mips_mode_ok_for_mov_fmt_p.
531
532 2007-10-04  Doug Kwan  <dougkwan@google.com>
533
534         * gthr-posix.h (__gthread_cond_broadcast, __gthread_cond_wait,
535         __gthread_cond_wait_recursive): Add to extend interface for POSIX
536         conditional variables. (__GTHREAD_HAS_COND): Macro defined to signify
537         support of conditional variables.
538         * gthr-posix95.h (__gthread_cond_broadcast, __gthread_cond_wait,
539         __gthread_cond_wait_recursive): Add to extend interface for POSIX
540         conditional variables. (__GTHREAD_HAS_COND): Macro defined to signify
541         support of conditional variables.
542         * gthr-single.h (__gthread_cond_broadcast, __gthread_cond_wait,
543         __gthread_cond_wait_recursive): Add to extend interface for POSIX
544         conditional variables.
545         * gthr.h: Update comments to document new interface.
546
547 2007-10-04  Geoffrey Keating  <geoffk@apple.com>
548
549         * cgraphunit.c (cgraph_build_static_cdtor): Don't set
550         DECL_IGNORED_P.
551
552 2007-10-04  Anatoly Sokolov <aesok@post.ru>
553
554         * config/avr/avr.c (expand_epilogue): Don't set RTX_FRAME_RELATED_P.
555
556 2007-10-04  Richard Guenther  <rguenther@suse.de>
557
558         PR middle-end/33641
559         * tree-cfg.c (verify_gimple_expr): Operand one of POINTER_PLUS_EXPR
560         does not need to be of INTEGER_TYPE.
561         (verify_gimple_2): New function split out from ...
562         (verify_gimple_1): ... here.  ICE if there was an error during
563         verification.
564
565 2007-10-04  Michael Matz  <matz@suse.de>
566
567         PR rtl-optimization/33653
568         * dce.c (deletable_insn_p_1): Use volatile_refs_p().
569         * dse.c (scan_insn): Same.
570
571 2007-10-04  Kazu Hirata  <kazu@codesourcery.com>
572
573         * config.gcc: Remove USE_GAS for m68k targets.
574
575 2007-10-04  Richard Guenther  <rguenther@suse.de>
576
577         PR tree-optimization/33627
578         * tree-gimple.h (canonicalize_cond_expr_cond): Declare.
579         * tree-gimple.c (canonicalize_cond_expr_cond): New function,
580         split out from ...
581         * tree-ssa-forwprop.c (combine_cond_expr_cond): ... here.
582         * tree-ssa-ifcombine.c (ifcombine_iforif): Use it.
583
584 2007-10-04  Anatoly Sokolov <aesok@post.ru>
585
586         * config/avr/avr.c (commands_in_file, commands_in_prologues, 
587         commands_in_epilogues): Remove variables.
588         (avr_file_start): Remove unneded initializations of commands_in_file,
589         commands_in_prologues and commands_in_epilogues variables.
590         (avr_file_end): Remove dead code.
591
592 2007-10-04  Kazu Hirata  <kazu@codesourcery.com>
593
594         * config/m68k/m68k.c (m68k_output_movem): Use the MOTOROLA if
595         MOTOROLA is to true.
596
597 2007-10-03  Richard Sandiford  <rsandifo@nildram.co.uk>
598
599         PR target/33635
600         * config/mips/mips-protos.h (mips_split_64bit_move): Rename to...
601         (mips_split_doubleword_move): ...this.
602         * config/mips/mips.c (mips_subword): Extend to handle 64-bit words;
603         use natural endianness for multi-format FPR values.
604         (mips_split_64bit_move): Rename to...
605         (mips_split_doubleword_move): ...this and extend to 64-bit words.
606         Use move_doubleword_fpr* patterns for moves involving FPRs.
607         (mips_save_reg): Update the call to mips_split_64bit_move.
608         (mips_secondary_reload_class): Return NO_REGS for any reload of a
609         nonzero constant into an FPR if the constant can be forced to memory.
610         * config/mips/mips.md: Update the splitter calls to
611         mips_split_64bit_move.
612         (UNSPEC_LOAD_DF_LOW): Rename to...
613         (UNSPEC_LOAD_LOW): ...this.
614         (UNSPEC_LOAD_DF_HIGH): Rename to...
615         (UNSPEC_LOAD_HIGH): ...this.
616         (UNSPEC_STORE_DF_HIGH): Rename to...
617         (UNSPEC_STORE_WORD): ...this.
618         (SPLITF): New mode iterator.
619         (HALFMODE): New mode attribute.
620         (movtf): New expander.
621         (*movtf_internal): New define_insn_and_split.
622         (move_doubleword_fpr<mode>): New expander.
623         (load_df_low, load_df_high, store_df_high, mthc1, mfhc1): Replace
624         with...
625         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
626         (mfhc1<mode>): ...these more general patterns.
627
628 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
629
630         * cfgrtl.c (rtl_block_ends_with_call_p): Skip notes at the end.
631
632 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
633
634         * gcse.c (hash_scan_set): Insert set in insn before note at
635         the end of basic block.
636
637 2007-10-03  Sebastian Pop  <sebastian.pop@amd.com>
638
639         PR tree-optimization/33576
640         * testsuite/gcc.dg/tree-ssa/pr33576.c: New.
641         * tree-loop-linear.c (linear_transform_loops): Call remove_iv.
642         * lambda.h (lambda_loopnest_to_gcc_loopnest): New parameter.
643         (remove_iv): Declared.
644         * lambda-code.c (remove_iv): Not static.
645         (lambda_loopnest_to_gcc_loopnest): New parameter remove_ivs.
646         Don't remove ivs there, save ivs in the buffer.
647
648 2007-10-03  Jason Merrill  <jason@redhat.com>
649
650         PR c++/15764
651         * tree-eh.c (same_handler_p): New fn.
652         (optimize_double_finally): New fn.
653         (refactor_eh_r): New fn.
654         (refactor_eh): New fn.
655         (pass_refactor_eh): New pass.
656         * tree-pass.h: Declare it.
657         * passes.c (init_optimization_passes): Add it.
658
659 2007-10-03  Doug Kwan  <dougkwan@google.com>
660         Richard Guenther  <rguenther@suse.de>
661
662         PR debug/31899
663         * dwarf2out.c (reference_to_unused): Disable sanity checking,
664         be conservative instead.
665
666 2007-10-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
667
668         PR fortran/26682
669         * doc/invoke.texi (-fwhole-program): Document that Fortran
670         doesn't support this option.
671
672 2007-10-02  Richard Sandiford  <rsandifo@nildram.co.uk>
673
674         PR middle-end/33617
675         * expr.c (expand_expr_addr_expr_1): Pass CONSTRUCTORs to
676         expand_expr.
677
678 2007-10-02  David Daney  <ddaney@avtrex.com>
679
680         * config/mips/mips.md (sync_compare_and_swap<mode>): Handle compare
681         against constant zero.
682         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP):  Handle constant zero
683         operand.
684
685 2007-09-02  Kenneth Zadeck <zadeck@naturalbridge.com>
686
687         * ra-conflict.c: New file.
688         * ra.h: New file.
689         * reload.c (push_reload, find_dummy_reload): Change DF_RA_LIVE
690         usage to DF_LIVE usage.
691         (reload): Remove reference to df_get_live_top.
692         * rtlanal.c (subreg_nregs_with_regno): New function.  
693         * df-scan.c (df_def_record_1, df_uses_record): Add code to set
694         DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, and DF_REF_SUBREG flags.
695         (df_has_eh_preds): Removed.
696         (df_bb_refs_collect, df_bb_refs_collect, df_bb_refs_collect,
697         df_exit_block_uses_collect): Changed call from df_has_eh_preds to
698         bb_has_eh_pred.
699         * global.c (allocno, max_allocno, conflicts, allocno_row_words,
700         reg_allocno, EXECUTE_IF_SET_IN_ALLOCNO_SET): Moved to ra.h
701         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE): Moved to ra-conflicts.c.
702         (regs_set, record_one_conflict, record_conflicts, mark_reg_store,
703         mark_reg_clobber, mark_reg_conflicts, mark_reg_death): Deleted.
704         (global_alloc): Turn off rescanning insns after call to
705         global_conflicts and added call to set_preferences.
706         (global_conflicts): Moved to ra-alloc.c.
707         (set_preferences_1, set_preferences): New function.
708         (mirror_conflicts): Changed types for various variables.
709         (mark_elimination): Change DF_RA_LIVE
710         usage to DF_LIVE usage.
711         (build_insn_chain): Rewritten from scratch and made local.
712         (print_insn_chain, print_insn_chains): New functions.
713         (dump_conflicts): Do not print conflicts for fixed_regs.
714         (rest_of_handle_global_alloc): Turn off insn rescanning.
715         * hard-reg-set.h: Fixed comment.
716         * local-alloc.c (update_equiv_regs): Change DF_RA_LIVE
717         usage to DF_LIVE usage and delete refs to TOP sets.
718         (block_alloc): Mark regs as live if they are in the artificial
719         defs at top of block.
720         (find_stack_regs): New function.
721         (rest_of_handle_local_alloc): Changed urec problem to live
722         problem and do not turn off df rescanning.
723         * df.h (DF_UREC, DF_UREC_BB_INFO, DF_LIVE_TOP, DF_RA_LIVE_IN,
724         DF_RA_LIVE_TOP, DF_RA_LIVE_OUT, df_urec_bb_info, df_urec,
725         df_urec_add_problem, df_urec_get_bb_info, df_has_eh_preds): Removed.
726         (DF_CHAIN, DF_NOTE, DF_CHAIN): Renumbered.
727         (DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, DF_REF_SUBREG): New
728         fields in df_ref_flags.  The rest have been renumbered.  
729         * init-regs.c (initialize_uninitialized_regs): Enhanced debugging
730         at -O1.
731         * rtl.h (subreg_nregs_with_regno): New function.
732         * df-problems.c: (df_get_live_out, df_get_live_in,
733         df_get_live_top): Removed reference to DF_RA_LIVE.
734         (df_lr_reset, df_lr_transfer_function, df_live_free_bb_info,
735         df_live_alloc, df_live_reset, df_live_local_finalize,
736         df_live_free): Make top set only if different from in set.
737         (df_lr_top_dump, df_live_top_dump): Only print top set if
738         different from in set.
739         (df_lr_bb_local_compute): Removed unnecessary check.
740         (df_urec_problem_data, df_urec_set_bb_info, df_urec_free_bb_info, 
741         df_urec_alloc, df_urec_mark_reg_change, earlyclobber_regclass, 
742         df_urec_check_earlyclobber, df_urec_mark_reg_use_for_earlyclobber,
743         df_urec_mark_reg_use_for_earlyclobber_1, df_urec_bb_local_compute,
744         df_urec_local_compute, df_urec_init, df_urec_local_finalize, 
745         df_urec_confluence_n, df_urec_transfer_function, df_urec_free, 
746         df_urec_top_dump, df_urec_bottom_dump, problem_UREC,
747         df_urec_add_problem): Removed.
748         (df_simulate_fixup_sets): Changed call from df_has_eh_preds to
749         bb_has_eh_pred. 
750         * Makefile.in (ra-conflict.o, ra.h): New dependencies.
751         * basic_block.h (bb_has_abnormal_pred): New function.
752         * reload1.c (compute_use_by_pseudos): Change DF_RA_LIVE
753         usage to DF_LIVE usage.
754         
755 2007-10-02  Revital Eres  <eres@il.ibm.com>
756
757         * config/rs6000/predicates.md (easy_vector_constant): Return false
758         for 750CL paired vectors.
759         * config/rs6000/paired.md (movv2sf_paired): Fix move of easy
760         vector constant.
761         (vec_initv2sf): Add new description.
762         (vconcatsf): Likewise.
763         * config/rs6000/rs6000-protos.h: Declare paired_expand_vector_init.
764         * config/rs6000/rs6000.c (paired_expand_vector_init): New function.
765
766 2007-10-01  Alexandre Oliva  <aoliva@redhat.com>
767
768         * tree-ssa-sink.c (sink_code_in_bb): Don't stop sinking after
769         sinking the last stmt in a BB.
770
771 2007-10-01  Alexandre Oliva  <aoliva@redhat.com>
772
773         PR middle-end/22156
774         * tree-sra.c (struct sra_elt): Add in_bitfld_block.
775         (sra_hash_tree): Handle BIT_FIELD_REFs.
776         (sra_elt_hash): Don't hash bitfld blocks.
777         (sra_elt_eq): Skip them in parent compares as well.  Handle
778         BIT_FIELD_REFs.
779         (build_element_name_1): Handle BIT_FIELD_REFs.
780         (instantiate_element): Propagate nowarn from parents.  Create
781         BIT_FIELD_REF for variables that are widened by scalarization.
782         Gimple-zero-initialize all bit-field variables that are not
783         part of parameters that are going to be scalarized on entry.
784         (instantiate_missing_elements_1): Return the sra_elt.
785         (canon_type_for_field): New.
786         (try_instantiate_multiple_fields): New.  Infer widest possible
787         access mode from decl or member type, but clip it at word
788         size, and only widen it if a field crosses an alignment
789         boundary.
790         (instantiate_missing_elements): Use them.
791         (generate_one_element_ref): Handle BIT_FIELD_REFs.
792         (scalar_bitfield_p): New.
793         (sra_build_assignment): Optimize assignments from scalarizable
794         BIT_FIELD_REFs.  Use BITS_BIG_ENDIAN to determine shift
795         counts.
796         (REPLDUP): New.
797         (sra_build_bf_assignment): New.  Optimize assignments to
798         scalarizable BIT_FIELD_REFs.
799         (sra_build_elt_assignment): New.  Optimize BIT_FIELD_REF
800         assignments to full variables.
801         (generate_copy_inout): Use the new macros and functions.
802         (generate_element_copy): Likewise.  Handle bitfld differences.
803         (generate_element_zero): Don't recurse for blocks.  Use
804         sra_build_elt_assignment.
805         (generate_one_element_init): Take elt instead of var.  Use
806         sra_build_elt_assignment.
807         (generate_element_init_1): Adjust.
808         (bitfield_overlap_info): New struct.
809         (bitfield_overlaps_p): New.
810         (sra_explode_bitfield_assignment): New.  Adjust widened
811         variables to account for endianness.
812         (sra_sync_for_bitfield_assignment): New.
813         (scalarize_use): Re-expand assignment to/from scalarized
814         BIT_FIELD_REFs.  Explode or sync needed members for
815         BIT_FIELD_REFs accesses or assignments.  Use REPLDUP.
816         (scalarize_copy): Use REPLDUP.
817         (scalarize_ldst): Move assert before dereference.  Adjust EH
818         handling.
819         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
820
821 2007-10-01  Paolo Bonzini  <bonzini@gnu.org>
822
823         * simplify-rtx.c (comparison_result, simplify_relational_operation_1):
824         Rename CR_* constants to CMP_*.  Fix spacing.
825
826 2007-10-01  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
827
828         PR other/33585
829         * Makefile.in (build_html_dir/gccinstall): gccinstall.texi needs
830         to be processed with the special script doc/install.texi2html.
831         
832 2007-09-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
833
834         * doc/invoke.texi (Wall): List the options enabled by Wall.
835         (Wstrict-aliasing): Add missing @option.
836         
837 2007-09-30  Richard Sandiford  <rsandifo@nildram.co.uk>
838
839         * config/mips/mips.c (mips_split_64bit_move): Use gen_rtx_REG_offset
840         rather than gen_lowpart to change a register from DImode to DFmode.
841         (mips_cannot_change_mode_class): Only allow FPRs to change mode if
842         both FROM and TO are integer modes that are no bigger than 4 bytes.
843         (mips_mode_ok_for_mov_fmt_p): New function.
844         (mips_preferred_reload_class): Use it instead of FLOAT_MODE_P.
845         (mips_secondary_reload_class): Tweak formatting and comments.
846         Use reg_class_subset_p instead of direct comparisons with
847         classes.  Only allow direct FPR<->FPR moves for modes that
848         satisfy mips_mode_ok_for_mov_fmt_p.  Only allow loads and stores
849         for 4- and 8-byte types.  Handle reloads in which X is an FPR.
850         * config/mips/mips.md (*movdi_gp32_fp64): Remove f<-f alternative.
851         (*movdi_64bit): Likewise.
852         (*movsi_internal): Likewise.
853         (*movhi_internal): Likewise.
854         (*movqi_internal): Likewise.
855
856 2007-09-30  Diego Novillo  <dnovillo@google.com>
857
858         PR 33593
859         * tree-ssa-ter.c (is_replaceable_p): Return false if STMT may
860         throw an exception.
861
862 2007-09-30  Uros Bizjak  <ubizjak@gmail.com>
863
864         PR tree-optimization/33597
865         * tree-vect-analyze.c (vect_build_slp_tree): Check if optab handler
866         for LSHIFT_EXPR and RSHIFT_EXPR is available for vec_mode.
867
868 2007-09-28  Uros Bizjak  <ubizjak@gmail.com>
869
870         * config/i386/i386.c (ix86_expand_move): Use can_create_pseudo_p ()
871         instead of variants of (!reload_in_progress && !reload_completed).
872         (x86_expand_vector_move): Ditto.
873
874 2007-09-28  Ollie Wild  <aaw@google.com>
875
876         Revert
877         2007-09-27  Ollie Wild  <aaw@google.com>
878
879         * varasm.c (compare_constant): Removed call to
880         lang_hooks.expand_constant.
881         (copy_constants): Removed call to lang_hooks.expand_constant.
882         (compute_reloc_for_constant): Removed call to
883         lang_hooks.expand_constant.
884         (output_addressed_constants): Removed call to
885         lang_hooks.expand_constant.
886         (constructor_static_from_elts_p): Removed call to
887         lang_hooks.expand_constant.
888         (output_constant): Removed calls to lang_hooks.expand_constant.
889         * langhooks.h (struct lang_hooks): Removed field expand_constant.
890         * langhooks-def.h (lhd_return_tree): Removed.
891         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
892         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
893         * langhooks.c (lhd_return_tree): Removed.
894
895 2007-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
896
897         PR target/33347
898         * config/spu/spu.c (spu_expand_insv): Call copy_rtx on the second
899         argument to gen_selb.
900
901 2007-09-28  Chao-ying Fu  <fu@mips.com>
902
903         * libgcc-std.ver: Add fixed-point routines to GCC_4.3.0 section.
904         * doc/libgcc.texi (Fixed-point fractional library routines):
905         Fix typos for neg and cmp functions.
906
907 2007-09-28  Michael Matz  <matz@suse.de>
908
909         PR rtl-optimization/33552
910         * function.c (match_asm_constraints_1): Check for overlap in
911         inputs and replace all occurences.
912
913 2007-09-28  Richard Sandiford  <rsandifo@nildram.co.uk>
914
915         * config/mips/mips.c (override_options): Fix comment typo.
916
917 2007-09-28  Jie Zhang  <jie.zhang@analog.com>
918
919         * config.gcc (bfin*-linux-uclibc*): Set extra_parts
920         to "crtbegin.o crtbeginS.o crtend.o crtendS.o".
921         * config/bfin/t-bfin-linux (crti.o): Don't build.
922         (crtn.o): Likewise.
923         (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
924         * config/bfin/t-bfin-uclinux (crti.o): Don't build.
925         (crtn.o): Likewise.
926         (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
927
928 2007-09-27  Ollie Wild  <aaw@google.com>
929
930         * varasm.c (compare_constant): Removed call to
931         lang_hooks.expand_constant.
932         (copy_constants): Removed call to lang_hooks.expand_constant.
933         (compute_reloc_for_constant): Removed call to
934         lang_hooks.expand_constant.
935         (output_addressed_constants): Removed call to
936         lang_hooks.expand_constant.
937         (constructor_static_from_elts_p): Removed call to
938         lang_hooks.expand_constant.
939         (output_constant): Removed calls to lang_hooks.expand_constant.
940         * langhooks.h (struct lang_hooks): Removed field expand_constant.
941         * langhooks-def.h (lhd_return_tree): Removed.
942         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
943         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
944         * langhooks.c (lhd_return_tree): Removed.
945
946 2007-09-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
947
948         PR middle-end/33436
949         * expr.c (emit_group_load_1): Split constant double when destination
950         length is half source length.
951
952 2007-09-27  Richard Sandiford  <rsandifo@nildram.co.uk>
953
954         * config/mips/mips.h (PTF_AVOID_BRANCHLIKELY): New macro.
955         (mips_cpu_info): Add tune_flags.
956         (GENERATE_BRANCHLIKELY): Remove TARGET_SR71K check.
957         * config/mips/mips.c (mips_cpu_info_table): Add tune_flags fields.
958         Remove end marker.
959         (override_options): Remove deprecation code.  Use branch-likely
960         instructions for optimize_size or if the tuning flags do not
961         suggest otherwise.  Tweak warning.
962         (mips_matching_cpu_name_p, mips_parse_cpu): Use ARRAY_SIZE.
963
964 2007-09-27  Matthias Klose  <doko@ubuntu.com>
965
966         * config/i386/t-linux64 (MULTILIB_OSDIRNAMES): Use ../lib32 as the
967         multilib osdirname if it exists.
968         * config/rs6000/t-linux64 (MULTILIB_OSDIRNAMES): Likewise.
969
970 2007-09-27  Ian Lance Taylor  <iant@google.com>
971
972         PR tree-optimization/33565
973         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING on
974         assignments of comparisons.
975         * tree-ssa-sccvn.c (simplify_binary_expression): Add stmt
976         parameter.  Change caller.  Defer overflow warnings around call to
977         fold_binary.
978         * fold-const.c (fold_undefer_overflow_warnings): Don't warn if
979         TREE_NO_WARNING is set on the statement.
980         * tree-ssa-forwprop.c
981         (tree_ssa_forward_propagate_single_use_vars): Don't test
982         TREE_NO_WARNING when calling fold_undefer_overflow_warnings.
983         * tree-cfg.c (fold_cond_expr_cond): Likewise.
984
985 2007-09-27  Joseph Myers  <joseph@codesourcery.com>
986
987         * config/rs6000/rs6000.c (rs6000_legitimize_address): Do not
988         reduce offset by units of 0x10000 for SPE vector modes or modes
989         used with E500 double instructions.
990
991 2007-09-04  Paolo Bonzini  <bonzini@gnu.org>
992
993         * simplify-rtx.c (comparison_result): New.
994         (simplify_const_relational_operation): Use it instead of the five
995         "equal|op[01]ltu?" variables; consequently remove redundant "else"s.
996         Improve bounds-checking optimizations; remove subsumed POPCOUNT
997         optimizations.  Extract nonzero_address_p optimizations into a
998         separate "if" together with optimizations where op1 is const0_rtx.
999         Optimize comparing an IOR with zero.  Simplify op0 RELOP op0 for
1000         floating-point arguments too when appropriate.  Hoist test for ABS
1001         outside the final switch statement.
1002         * cse.c (fold_rtx): Don't look for an IOR equivalent of
1003         folded_arg0 if we found a constant equivalent.  Remove
1004         transformations done in simplify-rtx.c for "op0 RELOP op0".
1005
1006 2007-09-27  Jakub Jelinek  <jakub@redhat.com>
1007
1008         * builtins.c (expand_builtin, expand_builtin_object_size,
1009         expand_builtin_memory_chk, maybe_emit_chk_warning,
1010         maybe_emit_sprintf_chk_warning): Use new %K format string specifier
1011         for diagnostics.
1012         * expr.c (expand_expr_real_1): Likewise.
1013         * langhooks-def.h (struct diagnostic_info): Add forward decl.
1014         (lhd_print_error_function): Add third argument.
1015         * langhooks.h (struct diagnostic_info): Add forward decl.
1016         (struct lang_hooks): Add third argument to print_error_function.
1017         * diagnostic.h (diagnostic_info): Add abstract_origin field.
1018         (diagnostic_last_function_changed, diagnostic_set_last_function): Add
1019         second argument.
1020         (diagnostic_report_current_function): Likewise.
1021         * toplev.c (announce_function): Pass NULL as second argument to
1022         diagnostic_set_last_function.
1023         * diagnostic.c (diagnostic_report_current_function): Add second
1024         argument, pass it as third argument to lang_hooks.print_error_function.
1025         (default_diagnostic_starter): Pass DIAGNOSTIC as second argument
1026         to diagnostic_report_current_function.
1027         (diagnostic_report_diagnostic): Initialize diagnostic->abstract_origin
1028         and message.abstract_origin.
1029         (verbatim): Initialize abstract_origin.
1030         * pretty-print.h (text_info): Add abstract_origin field.
1031         * pretty-print.c (pp_base_format): Handle %K.
1032         * langhooks.c (lhd_print_error_function): Add third argument.  If
1033         diagnostic->abstract_origin, print virtual backtrace.
1034         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
1035         gcc_cdiag_char_table, gcc_cxxdiag_char_table): Support %K.
1036         (init_dynamic_diag_info): Likewise.
1037
1038 2007-09-26  David Daney  <ddaney@avtrex.com>
1039
1040         PR target/33479
1041         * config/mips/mips.md (sync_compare_and_swap<mode>, sync_old_add<mode>,
1042         sync_new_add<mode>, sync_old_<optab><mode>, sync_new_<optab><mode>,
1043         sync_old_nand<mode>, sync_new_nand<mode>,
1044         sync_lock_test_and_set<mode>): Fix '&' constraint modifiers.
1045         Update length attributes.
1046         (sync_add<mode>, sync_sub<mode>, sync_old_sub<mode>,
1047         sync_new_sub<mode>, sync_<optab><mode>, sync_nand<mode>): Update
1048         length attributes.
1049         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP,
1050         MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND,
1051         MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Add
1052         post-loop sync.
1053
1054 2007-09-26  Richard Guenther  <rguenther@suse.de>
1055
1056         PR tree-optimization/33563
1057         * tree-ssa-dse.c (get_use_of_stmt_lhs): Rename to ...
1058         (get_kill_of_stmt_lhs): ... this.  Re-structure.  Handle
1059         aggregate stores.
1060         (dse_optimize_stmt): Call get_kill_of_stmt_lhs instead of
1061         get_use_of_stmt_lhs.
1062
1063 2007-09-26  Joseph Myers  <joseph@codesourcery.com>
1064
1065         PR c/25309
1066         * c-common.c (complete_array_type): Diagnose too-large arrays and
1067         set type to error_mark_node.
1068
1069 2007-09-26  Richard Guenther  <rguenther@suse.de>
1070
1071         PR tree-optimization/30375
1072         PR tree-optimization/33560
1073         * tree-ssa-dse.c (get_use_of_stmt_lhs): Give up on uses
1074         with calls.
1075
1076         Revert
1077         2006-05-22  Aldy Hernandez  <aldyh@redhat.com>
1078
1079         * tree-ssa-dse.c (aggregate_vardecl_d): New.
1080         (dse_global_data): Add aggregate_vardecl field.
1081         (dse_possible_dead_store_p): New.
1082         Add prev_defvar variable.
1083         Allow immediate uses and previous immediate uses to differ
1084         if they are setting different parts of the whole.
1085         (get_aggregate_vardecl): New.
1086         (dse_record_partial_aggregate_store): New.
1087         (dse_whole_aggregate_clobbered_p): New.
1088         (dse_partial_kill_p): New.
1089         Call dse_maybe_record_aggregate_store().
1090         When checking whether a STMT and its USE_STMT refer to the
1091         same memory address, check also for partial kills that clobber
1092         the whole.
1093         Move some variable definitions to the block where they are used.
1094         (aggregate_vardecl_hash): New.
1095         (aggregate_vardecl_eq): New.
1096         (aggregate_vardecl_free): New.
1097         (aggregate_whole_store_p): New.
1098         (tree_ssa_dse): Initialize and free aggregate_vardecl.
1099         Mark which aggregate stores we care about.
1100
1101 2007-09-25  DJ Delorie  <dj@redhat.com>
1102
1103         PR target/33551
1104         * config/m32c/m32c.c (m32c_immd_dbl_mov): Use INTVAL instead of
1105         XINT.
1106
1107 2007-09-25  Michael Meissner  <michael.meissner@amd.com>
1108
1109         PR target/33524
1110         * config/i386/i386.c (ix86_expand_sse5_unpack): Change to call
1111         gen_sse5_pperm_sign_v4si_v2di and gen_sse5_pperm_zero_v4si_v2di
1112         for vector int32 -> int64 conversions.  Don't write beyond the end
1113         of the allocated vector for int32 -> int64 conversions.
1114
1115 2007-09-25  Revital Eres  <eres@il.ibm.com>
1116
1117         * config/rs6000/paired.h (paired_sel): New.
1118         * config/rs6000/rs6000.c (bdesc_3arg): Add selv2sf4.
1119         (rs6000_expand_ternop_builtin): Pass zero const_double operand
1120         when expanding selv2sf.
1121         * config/rs6000/rs6000.h (rs6000_builtins): Add
1122         PAIRED_BUILTIN_SELV2SF4.
1123
1124 2007-09-25  Joseph Myers  <joseph@codesourcery.com>
1125
1126         PR c/32295
1127         * c-typeck.c (default_conversion): Call require_complete_type
1128         before perform_integral_promotions.
1129         (build_unary_op): Call require_complete_type except for ADDR_EXPR.
1130         (build_c_cast): Call require_complete_type except for casts to
1131         void types.
1132         (convert_for_assignment): Call require_complete_type.
1133
1134 2007-09-25  Revital Eres  <eres@il.ibm.com>
1135
1136         * config/spu/spu.md: Fix doloop pattern.
1137
1138 2007-09-25  Bernd Schmidt  <bernd.schmidt@analog.com>
1139
1140         * config/bfin/bfin.c (expand_prologue_reg_save,
1141         expand_epilogue_reg_restore): Code to save and restore I/M/B/L regs and
1142         ASTAT moved here...
1143         (expand_interrupt_handler_prologue, expand_interrupt_handler_epilogue):
1144         ... from here.  New argument ALL; callers changed.
1145         (n_regs_saved_by_prologue): Count ASTAT for plain saveall functions.
1146         (bfin_expand_prologue, bfin_expand_epilogue): Deal with functions that
1147         have the "saveall" attribute.
1148
1149 2007-09-25  Hans-Peter Nilsson  <hp@bitrange.com>
1150
1151         * config/mmix/mmix.h (FUNCTION_INCOMING_ARG_REGNO_P): Don't define
1152         bogus target macro.
1153         (INCOMING_REGNO, OUTGOING_REGNO): Define.
1154         * config/mmix/mmix.c (mmix_opposite_regno): New function.
1155         * config/mmix/mmix-protos.h (mmix_opposite_regno): Prototype.
1156
1157         * config/mmix/mmix.md ("*cmpcc_folded"): In condition, gate
1158         with REG_P tests before REGNO access.
1159
1160 2007-09-24  DJ Delorie  <dj@redhat.com>
1161
1162         PR target/31482
1163         * config/m32c/cond.md (stzx_reversed_<mode>): Add an output
1164         constraint.
1165         (movqicc_<code>_<mode>): Likewise.
1166         (movhicc_<code>_<mode>): Likewise.
1167
1168 2007-09-24  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1169
1170         PR target/33184
1171         * config/m32c/m32c.c (m32c_eh_return_data_regno): Leave an address
1172         register for reload.
1173
1174 2007-09-24  Danny Smith  <dannysmith@user.sourceforge.net>
1175
1176         PR c++/14688
1177         * config/i386/i386.c (ix86_comp_type_attributes): Check
1178         METHOD_TYPE too.
1179
1180 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
1181
1182         * config/m68k/m68k.h (ASM_OUTPUT_ALIGN_WITH_NOP): New, use
1183         "move.l %a4,%a4" to produce nops.
1184         * config/m68k/m68k.c (override_options): Reset align options,
1185         if neccessary align macro isn't avaible.
1186
1187 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
1188
1189         config/m68k/linux.h (PREFERRED_STACK_BOUNDARY): New.
1190
1191 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
1192
1193         * config/m68k/m68k.c (strict_low_part_peephole_ok): Don't leave
1194         the basic block.
1195         * config/m68k/m68k.md (movsi_m68k): Allow certain constant when
1196         reload is completed.
1197         (peephole pattern): Convert most of them to RTL peephole pattern.
1198
1199 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
1200
1201         * config/m68k/m68k.c (notice_update_cc): Recognize fp compare
1202         (moved from fp compare patterns).
1203         * config/m68k/m68k.md (cmp<mode>, cmp<mode>_68881, cmp<mode>_cf):
1204         Cleanup predicates to relieve reload.
1205         (conditional_trap): Reject conditional trap with fp condition.
1206         * gcc/config/m68k/predicates.md (fp_src_operand): New, reject
1207         certain constants early.
1208
1209 2007-09-24  Roman Zippel <zippel@linux-m68k.org>
1210
1211         * gcc/final.c (final_scan_insn): Remove accidentally duplicated code.
1212
1213 2007-09-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1214
1215         * config.gcc (powerpc*-*-*): --with-cpu=cell is a 64bit CPU.
1216         Allow --with-tune=cell and --with-cpu=cell.
1217
1218 2007-09-24  David Edelsohn  <edelsohn@gnu.org>
1219
1220         * config/rs6000/rs6000-protos.h (rs6000_emit_swrsqrtsf): Declare.
1221         * config/rs6000/rs6000.opt (swdiv): Change option to ...
1222         (recip): this.
1223         * config/rs6000/rs6000.c (rs6000_builtin_reciprocal): New
1224         function.
1225         (TARGET_BUILTIN_RECIPROCAL): Use it.
1226         (rs6000_builtin_expand): Expand recip, recipf, and rsqrtf.
1227         (rs6000_init_builtins): Initialize recip, recipf, and rsqrtf.
1228         (rs6000_emit_swrsqrtsf): New.
1229         * config/rs6000/rs6000.h (rs6000_builtins): Add recip, recipf, and
1230         rsqrtf. 
1231         * config/rs6000/rs6000.md (UNSPEC_RSQRT): Define.
1232         (divsf3): Remove swdiv support.
1233         (recipsf3): New.
1234         (rsqrtsf2): New.
1235         (rsqrt_internal1): New.
1236         (divdf3): Remove swdiv support.
1237         (reciptdf3): New.
1238
1239 2007-09-24  Jakub Jelinek  <jakub@redhat.com>
1240
1241         PR c++/33506
1242         * langhooks.h (struct lang_hooks_for_types): Add type_hash_eq
1243         field.
1244         * langhooks-def.h (LANG_HOOKS_TYPE_HASH_EQ): Define.
1245         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_TYPE_HASH_EQ.
1246         * tree.c (type_hash_eq): For FUNCTION_TYPE use
1247         lang_hooks.type.type_hash_eq in addition to generic tests.
1248
1249 2007-09-24  Pranav Bhandarkar  <pranav.bhandarkar@celunite.com>
1250         Ramana Radhakrishnan  <ramana@hercules.pun.celunite.com>
1251
1252         * tree-inline.h (eni_weights): Add field target_builtin_cost to
1253         reflect the cost per call to a target specific builtin.
1254         * tree-inline.c (estimate_num_insns_1): If it is a CALL_EXPR for a
1255         call to a target specific builtin, then use target_builtin_call_cost.
1256         (init_inline_once): Initialize target_builtin_call_cost field.
1257
1258 2007-09-24  Kai Tietz  <kai.tietz@onevision.com>
1259
1260         PR middle-end/33472
1261         * config/i386/i386.c (return_in_memory_ms_64): Handle return types for
1262         complex types.
1263
1264 2007-09-23  H.J. Lu  <hongjiu.lu@intel.com>
1265
1266         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
1267         * configure: Regenerated.
1268
1269 2007-09-23  Ollie Wild  <aaw@google.com>
1270
1271         * fold-const.c (fold_binary): Fold BIT_AND_EXPR's with a pointer
1272         operand.
1273         (get_pointer_modulus_and_residue): New function.
1274
1275 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
1276
1277         * config/mips/mips.c (build_mips16_call_stub): On 64-bit targets,
1278         combine an SC return value into a single register.
1279
1280 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
1281
1282         * opth-gen.awk (target_flags_explicit): Declare.
1283         * toplev.h (target_flags_explicit): Delete declaration.
1284         * toplev.c (target_flags): Likewise.
1285         * config/mips/mips.h (mips_llsc_setting, mips_llsc): Delete.
1286         (GENERATE_SYNC, GENERATE_LL_SC): Redefine using target_explicit_flags.
1287         Never return true for TARGET_MIPS16.
1288         * config/mips/mips.c (mips_llsc): Delete.
1289         (mips_handle_option): Remove -mllsc handling.
1290         (mips_strip_unspec_address): Tweak comment.
1291         * config/mips/mips.opt (mllsc): Use a target mask.
1292
1293 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
1294
1295         * doc/tm.texi (POINTERS_EXTEND_UNSIGNED): Document extensions to
1296         word_mode as well as Pmode.
1297
1298 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
1299
1300         * function.c (assign_parm_setup_block): Explicitly convert BLKmode
1301         parameters from word_mode to the subword type if such a truncation
1302         is not a no-op.
1303
1304 2007-09-23  Jakub Jelinek  <jakub@redhat.com>
1305
1306         * configure.ac (MAKEINFO): Handle makeinfo version 4.10 and above.
1307         * configure: Regenerated.
1308
1309 2007-09-23  Jan Hubicka  <jh@suse.cz>
1310
1311         * params.def (INLINE_CALL_COST): Set to 12.
1312         * invoke.texi (inline-call-cost): Update default value.
1313
1314 2007-09-23  Eric Botcazou  <ebotcazou@adacore.com>
1315
1316         * config/alpha/alpha.md (movti): Use operand_subword for the split.
1317
1318 2007-09-23  Ayal Zaks  <zaks@il.ibm.com>
1319             Revital Eres  <eres@il.ibm.com>
1320
1321         * modulo-sched.c (doloop_register_get): Rewrite the loop which
1322         checks whether the count_reg is found outside the control part.
1323
1324 2007-09-23  Jakub Jelinek  <jakub@redhat.com>
1325
1326         * expr.c (expand_expr_real_1) <case CALL_EXPR>: Use get_callee_fndecl
1327         instead of checking CALL_EXPR_FN directly to test for builtins.
1328         If error or warning attributes are present, print
1329         error resp. warning.
1330         * c-common.c (handle_error_attribute): New function.
1331         (c_common_attribute_table): Add error and warning
1332         attributes.
1333         * doc/extend.texi: Document error and warning attributes.
1334
1335         * tree.h (block_nonartificial_location): New prototype.
1336         * tree.c (block_nonartificial_location): New function.
1337         * dwarf2out.c (gen_subprogram_die): Add DW_AT_artificial
1338         if artificial attribute is present on abstract inline decl.
1339         * c-common.c (handle_artificial_attribute): New function.
1340         (c_common_attribute_table): Add artificial attribute.
1341         * final.c (override_filename, override_linenum): New variables.
1342         (final_scan_insn): For DBX_DEBUG or SDB_DEBUG, set override_filename
1343         and override_linenum if inside of a block inlined from
1344         __attribute__((__artificial__)) function.
1345         (notice_source_line): Honor override_filename and override_linenum.
1346         * doc/extend.texi: Document __attribute__((__artificial__)).
1347         * config/i386/emmintrin.h: Add __artificial__ attribute to
1348         all __always_inline__ functions.
1349         * config/i386/mmintrin.h: Likewise.
1350         * config/i386/tmmintrin.h: Likewise.
1351         * config/i386/mm3dnow.h: Likewise.
1352         * config/i386/pmmintrin.h: Likewise.
1353         * config/i386/ammintrin.h: Likewise.
1354         * config/i386/xmmintrin.h: Likewise.
1355         * config/i386/smmintrin.h: Likewise.
1356         * config/i386/bmmintrin.h: Likewise.
1357         * config/i386/mmintrin-common.h: Likewise.
1358
1359         PR middle-end/28755
1360         * expr.c (expand_constructor): New function.
1361         (expand_expr_real_1) <case CONSTRUCTOR>: Call it.
1362         (expand_expr_real_1) <case ARRAY_REF>: Call it if VALUE is
1363         CONSTRUCTOR.
1364
1365 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
1366
1367         * config/mips/mips.c (dump_constants_1): Generalize to include
1368         fractional and accumulator modes.
1369
1370 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
1371
1372         * config/mips/mips.h (ISA_HAS_DSP, ISA_HAS_DSPR2): New macros.
1373         * config/mips/mips.c (mips_set_mips16_mode): Don't clear the DSP
1374         flags for MIPS16.
1375         (override_options): Check TARGET_HARD_FLOAT_ABI instead of
1376         TARGET_HARD_FLOAT when testing whether -mpaired-single is
1377         supported.
1378         (mips_conditional_register_usage): Check ISA_HAS_DSP instead of
1379         TARGET_DSP.
1380         * config/mips/constraints.md (ka): Check ISA_HAS_DSPR2 instead of
1381         TARGET_DSPR2.
1382         * config/mips/mips.md (ANYF): Require TARGET_HARD_FLOAT for V2SF.
1383         (mulv2sf3, movv2sf, movv2sf_hardfloat_64bit): Require
1384         TARGET_HARD_FLOAT.
1385         (<u>mulsidi3_32bit_internal, <u>msubsidi4, <u>maddsidi4): Check
1386         ISA_HAS_DSPR2 instead of TARGET_HAS_DSPR2.
1387         * config/mips/mips-dsp.md: Use ISA_HAS_DSP instead of TARGET_HAS_DSP
1388         throughout.
1389         * config/mips/mips-dspr2.md: Likewise ISA_HAS_DSPR2 and
1390         TARGET_HAS_DSPR2.
1391         * config/mips/mips-fixed.md: Use ISA_HAS_DSP and ISA_HAS_DSPR2
1392         instead of TARGET_HAS_DSP and TARGET_HAS_DSPR2.
1393         * config/mips/mips-ps-3d.md: Add TARGET_HARD_FLOAT to V2SF patterns.
1394
1395 2007-09-22  Jason Merrill  <jason@redhat.com>
1396
1397         PR c++/19407
1398         * attribs.c (lookup_attribute_spec): Split out...
1399         (decl_attributes): From here.
1400         * tree.h: Declare it.
1401
1402 2007-09-22  Richard Sandiford  <rsandifo@nildram.co.uk>
1403
1404         * doc/sourcebuild.texi: Document dg-add-options mips16_attribute.
1405
1406 2007-09-22  Eric Botcazou  <ebotcazou@adacore.com>
1407
1408         * tree-inline.c (remap_type_1): Correctly chain variants.
1409
1410 2007-09-22  Richard Guenther  <rguenther@suse.de>
1411
1412         PR tree-optimization/33146
1413         * fold-const.c (fold_binary): Use the original tree
1414         for negating.
1415         * tree.h (STRIP_SIGN_NOPS): Converting from or to pointer
1416         also changes "sign".
1417
1418 2007-09-22  Eric Botcazou  <ebotcazou@adacore.com>
1419
1420         PR target/32325
1421         * except.c (finish_eh_generation): Call commit_edge_insertions if
1422         there are insns queued on the entry edge.
1423         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns on
1424         the entry edge.
1425
1426 2007-09-22  Richard Sandiford  <rsandifo@nildram.co.uk>
1427
1428         * doc/sourcebuild.texi (dg-add-c99-runtime-options): Document.
1429
1430 2007-09-19  Michael Meissner  <michael.meissner@amd.com>
1431
1432         * gcc/config/i386/i386.c: Delete trailing whitespace.
1433         * gcc/config/i386/i386.h: Ditto.
1434         * gcc/config/i386/bmmintrin.h: Ditto.
1435         * gcc/config/i386/sync.md: Ditto.
1436         * gcc/config/i386/ppro.md: Ditto.
1437         * gcc/config/i386/mmx.md: Ditto.
1438         * gcc/config/i386/constraints.md: Ditto.
1439         * gcc/config/i386/sse.md: Ditto.
1440         * gcc/config/i386/athlon.md: Ditto.
1441         * gcc/config/i386/i386.md: Ditto.
1442
1443 2007-09-21  Richard Guenther  <rguenther@suse.de>
1444
1445         PR tree-optimization/33508
1446         * tree-ssa-alias.c (mark_aliases_call_clobbered): Avoid
1447         quadratic loop by keeping a bitmap of variables we have
1448         to clobber all subvariables for.
1449         (set_initial_properties): Likewise.
1450
1451 2007-09-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1452
1453         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Delete.
1454
1455 2007-09-20  Nigel Stephens  <nigel@mips.com>
1456             Chao-ying Fu  <fu@mips.com>
1457
1458         * c-decl.c (finish_declspecs): When _Sat is used without
1459         _Fract or _Accum, set the default type to cts_fract.
1460         This avoids a warning of "type defaults to int".
1461
1462 2007-09-20  Joseph Myers  <joseph@codesourcery.com>
1463
1464         * c-decl.c (check_bitfield_type_and_width): Don't allow _Bool
1465         bit-fields wider than one bit.
1466
1467 2007-09-20  Jakub Jelinek  <jakub@redhat.com>
1468
1469         PR debug/33316
1470         * dwarf2out.c (modified_type_die): Handle TYPE_DECL with NULL
1471         DECL_NAME.
1472         * dbxout.c (dbxout_type): Likewise.
1473
1474         PR c/33238
1475         PR c/27301
1476         * gimplify.c (gimplify_vla_decl): New function.
1477         (gimplify_decl_expr): Move VLA decl handling to gimplify_vla_decl.
1478         Call it.
1479         (gimplify_target_expr): Handle variable length TARGET_EXPRs.
1480
1481 2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
1482
1483         * doc/invoke.texi (-minterlink-mips16): Document.
1484         * config/mips/mips.opt (minterlink-mips16): New option.
1485         * config/mips/mips.c (mips_function_ok_for_sibcall): Handle
1486         -minterlink-mips16
1487
1488 2007-09-20  Joseph Myers  <joseph@codesourcery.com>
1489
1490         * doc/extend.texi (Attribute Syntax): Remove old speculative
1491         future direction.
1492
1493 2007-09-20  Mark Shinwell  <shinwell@codesourcery.com>
1494
1495         * combine.c: Include cgraph.h.
1496         (setup_incoming_promotions): Rework to allow more aggressive
1497         elimination of sign extensions when all call sites of the
1498         current function are known to lie within the current unit.
1499
1500 2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
1501
1502         * dse.c (find_shift_sequence): No-op rework of control flow.
1503
1504 2007-09-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1505
1506         * config/mips/mips.c (build_mips16_call_stub): Tidy.  Fix second
1507         GPR for DCmode on 64-bit targets.  Remove redundant fallback.
1508
1509 2007-09-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1510
1511         * cfgexpand.c (dump_stack_var_partition): Use the correct
1512         index for the offset.
1513
1514 2007-09-19  Joseph Myers  <joseph@codesourcery.com>
1515
1516         * config/mips/sde.h: Switch to GPLv3.
1517
1518 2007-09-19  Eric Botcazou  <ebotcazou@adacore.com>
1519
1520         * tree-sra.c (decide_block_copy): Decide if there are groups.
1521
1522 2007-09-19  Roman Zippel <zippel@linux-m68k.org>
1523
1524         * config/m68k/m68k.c (output_move_himode): Remove jump table
1525         recognition.
1526         config/m68k/m68k.md (lea): Likewise.
1527         * config/m68k/m68k.c (print_operand_address): Use simple pc
1528         relative addressing.
1529
1530 2007-09-19  Bernd Schmidt  <bernd.schmidt@analog.com>
1531
1532         * doc/tm.texi (IS_ASM_LOGICAL_LINE_SEPARATOR): Document new argument.
1533         * final.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Provide two-argument
1534         default definition.
1535         (asm_insn_count): Pass template as second argument to it.
1536         * config/avr/avr.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
1537         * config/pa/pa.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
1538         * config/stormy16/stormy16.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
1539         * config/cris/cris.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
1540         * config/sh/sh.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
1541         (sh_insn_length_adjustment): Pass template as second argument to it.
1542         * config/bfin/bfin.h (IS_ASM_LOGICAL_LINE_SEPARATOR): New macro.
1543
1544         * config/bfin/bfin.md (define_asm_attributes): New.
1545
1546 2007-09-19  Jie Zhang  <jie.zhang@analog.com>
1547
1548         * config.gcc (bfin*-linux-uclibc*): Add ./linux-sysroot-suffix.h
1549         to tm_file.
1550         * config/bfin/print-sysroot-suffix.sh: New.
1551         * config/bfin/t-bfin-elf (EXTRA_PARTS): Remove.
1552         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
1553         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
1554         * config/bfin/t-bfin-uclinux (EXTRA_PARTS): Remove.
1555         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
1556         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
1557         * config/bfin/t-bfin-linux (EXTRA_PARTS): Remove.
1558         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
1559         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
1560         (linux-sysroot-suffix.h): New target.
1561         * config/bfin/bfin.opt (mcsync-anomaly): Use Var instead of Mask.
1562         (mspecld-anomaly): Likewise.
1563         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Renamed from
1564         (enum bfin_cpu): ... this. Add BFIN_CPU_BF522, BFIN_CPU_BF525,
1565         BFIN_CPU_BF527, BFIN_CPU_BF538, BFIN_CPU_BF539, BFIN_CPU_BF542,
1566         BFIN_CPU_BF544, BFIN_CPU_BF548, and BFIN_CPU_BF549.
1567         (bfin_si_revision): Declare.
1568         (bfin_workarounds): Declare.
1569         (WA_SPECULATIVE_LOADS): Define.
1570         (ENABLE_WA_SPECULATIVE_LOADS): Define.
1571         (WA_SPECULATIVE_SYNCS): Define.
1572         (ENABLE_WA_SPECULATIVE_SYNCS): Define.
1573         * config/bfin/elf.h (STARTFILE_SPEC): Rename crt532.o to basiccrt.o.
1574         (LIB_SPEC): Add %s to the linker scripts.
1575         Use proper linker script for bf522, bf525, bf527,
1576         bf538, bf539, bf542, bf544, bf548, and bf549.
1577         * config/bfin/bfin.c (bfin_si_revision): Define.
1578         (bfin_workarounds): Define.
1579         (struct bfin_cpu): New.
1580         (bfin_cpus): New.
1581         (bfin_handle_option): Handle silicon revision part of -mcpu option.
1582         (override_options): Set bfin_workarounds.
1583         (length_for_loop): Replace TARGET_CSYNC_ANOMALY with
1584         ENABLE_WA_SPECULATIVE_SYNCS, TARGET_SPECLD_ANOMALY with
1585         ENABLE_WA_SPECULATIVE_LOADS.
1586         (bfin_reorg): Likewise.
1587         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
1588         macros for bf522, bf525, bf527, bf538, bf539,
1589         bf542, bf544, bf548, and bf549.
1590         Define __SILICON_REVISION__ and __WORKAROUND_* macros if needed.
1591         Don't define __ID_SHARED_LIB__ when -msep-data.
1592         (TARGET_DEFAULT): Define as 0.
1593         (DRIVER_SELF_SPECS): Add -mcpu=bf532 if no -mcpu option.
1594         * doc/invoke.texi (Blackfin Options): Document silicon
1595         revision part of -mcpu option and it now accepts bf522, bf525,
1596         bf527, bf538, bf539, bf542, bf544, bf548, and bf549.
1597
1598 2007-09-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1599
1600         * alias.c (memory_modified_1): Deconstify.
1601         (memory_modified_in_insn_p): Don't use const_note_stores.
1602         * rtl.h (const_note_stores): Delete.
1603         * rtlanal.c (const_note_stores): Likewise.
1604
1605 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1606
1607         * dse.c (find_shift_sequence): Temporarily revert to forbidding
1608         word shifts.
1609
1610 2007-09-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1611
1612         PR target/33388
1613         PR target/33397
1614         * config/fr30/fr30.md (addsi3): Check REG_P() before calling REGNO().
1615         (addsi_small_int): Likewise.
1616         (addsi_big_int): Use rtx_equal_p() instead of REGNO() comparison.
1617         (one_cmplsi2): Likewise.
1618         (negsi2): Delete.
1619         (enter_func): Expand insn using hard_frame_pointer_rtx and
1620         stack_pointer_rtx.
1621         (*enter_func): New.
1622         * config/fr30/fr30.c (fr30_expand_prologue): Check for
1623         hard_frame_pointer_rtx instead of using REGNO() check.
1624         Properly sign extend GEN_INT() argument.
1625
1626 2007-09-18  Roman Zippel <zippel@linux-m68k.org>
1627
1628         * config/m68k/m68k.c (override_options): Remove USE_GAS,
1629         use %. syntax.
1630         (output_dbcc_and_branch, output_scc_di): Replace all jbcc
1631         alternatives with just jcc.
1632         * config/m68k/m68k.md (addsi_lshrsi_31, beq0_di, bne0_di,
1633         bge0_di, blt0_di, bgtu, bltu, bgeu, bleu, bgtu_rev,
1634         bltu_rev, bgeu_rev, bleu_rev, jump, dbne_hi, dbne_si,
1635         dbge_hi, dbge_si): Likewise.
1636
1637 2007-09-18  Roman Zippel <zippel@linux-m68k.org>
1638
1639         * config/m68k/m68k.md (beq, bne, bgt, blt, bge, ble, bordered,
1640         bunordered, buneq, bunge, bungt, bunle, bunlt, bltgt, beq_rev,
1641         bne_rev, bgt_rev, blt_rev, bge_rev, ble_rev, bordered_rev,
1642         bunordered_rev, buneq_rev, bunge_rev, bungt_rev, bunle_rev,
1643         bunlt_rev, bltgt_rev): Replace all fbcc with fjcc.
1644
1645 2007-09-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
1646
1647         * config/m68k/m68k-devices.def (51qe): New device.
1648         * config/m68k/m68k.c (FL_FOR_isa_c): Remove division unit.  Add it
1649         to all uses of FL_FOR_isa_c for compatibility.
1650         (all_microarchs): Add cfv1 microarchitecture.
1651         (m68k_handle_option): Handle m51qe option.
1652         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Handle 51QE.
1653         (TUNE_CFV1): New macro.
1654         (enum uarch_type): Add ucfv1.
1655         * doc/invoke.texi: Document 51qe device and cfv1 microarchitecture.
1656         
1657 2007-09-18  Richard Guenther  <rguenther@suse.de>
1658
1659         PR tree-optimization/31863
1660         * tree-ssa-structalias.c (create_variable_info_for): Always
1661         free the fieldstack.
1662
1663 2007-09-18  Dorit Nuzman  <dorit@il.ibm.com>
1664
1665         * opts.c (decode_options): Enable vectorization under -O3.
1666
1667 2007-09-18  Richard Guenther  <rguenther@suse.de>
1668
1669         PR tree-optimization/33340
1670         * tree-ssa-sccvn.c (set_ssa_val_to): Do not set values to
1671         SSA_NAMEs that occur in abnormal PHI nodes.
1672
1673 2007-09-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1674
1675         * tree-cfg.c (is_ctrl_altering_stmt, tree_block_ends_with_call_p):
1676         Don't use const_get_call_expr_in.
1677         * tree-gimple.c (const_get_call_expr_in): Delete.
1678         * tree-gimple.h (const_get_call_expr_in): Likewise.
1679
1680 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1681
1682         * df-scan.c (df_notes_rescan): Do nothing if the instruction does
1683         not yet have a basic block.
1684         * dse.c (find_shift_sequence): Don't set DF_NO_INSN_RESCAN.
1685
1686 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1687
1688         * config/mips/mips.c (mips_file_start): Add ".previous" directives
1689         to both ".section"s.
1690
1691 2007-09-17  Richard Sandiford  <rsandifo@nildram.co.uk>
1692
1693         * config/mips/mips.c (mips_output_mi_thunk): Use
1694         mips_function_ok_for_sibcall and const_call_insn_operand
1695         to determine if a direct sibcall is allowed.  Use
1696         mips_classify_symbol to determine a global pointer is needed.
1697
1698 2007-09-17  Richard Sandiford  <rsandifo@nildram.co.uk>
1699
1700         * config/mips/mips.md (*clear_upper32): Use "W" as the memory operand.
1701
1702 2007-09-17  Chao-ying Fu  <fu@mips.com>
1703             Nigel Stephens  <nigel@mips.com>
1704
1705         * config/fixed-bit.h: New file.
1706         * config/fixed-bit.c: New file.
1707         * doc/libgcc.texi (Fixed-point fractional library routines): New node.
1708
1709 2007-09-18  Jakub Jelinek  <jakub@redhat.com>
1710
1711         * c-format.h (format_kind_info): Add alloc_char field.
1712         * c-format.c (scanf_flag_specs): Add 'm'.
1713         (scanf_flag_pairs): Add 'a', 'm' pair.
1714         (scan_char_table): Allow 'm' modifier for c, s, [, C and S.
1715         (format_types_orig): Add alloc_char fields.
1716         (check_format_info_main): Rename aflag to alloc_flag.
1717         Handle fki->alloc_char. modifier after width and before length
1718         modifiers.  Move FMT_FLAG_SCANF_A_KLUDGE handling before
1719         length modifiers as well.
1720         * config/sol2-c.c (solaris_format_types): Add alloc_char field.
1721
1722         PR middle-end/33423
1723         * builtins.c (expand_builtin_memory_chk): Handle COMPOUND_EXPRs
1724         returned by build_call_expr.
1725
1726 2007-09-17  Eric Botcazou  <ebotcazou@adacore.com>
1727
1728         * tree-sra.c (maybe_lookup_element_for_expr) <COMPONENT_REF>: Return
1729         NULL for variable-sized records too.
1730         (sra_walk_expr) <COMPONENT_REF>: Stop at variable-sized records too.
1731
1732 2007-09-17  Tom Tromey  <tromey@redhat.com>
1733
1734         * c-decl.c (pushdecl): Don't set DECL_LANG_SPECIFIC.
1735         (c_builtin_function): Likewise.
1736         (grokdeclarator): Likewise.
1737
1738 2007-09-17  Zdenek Dvorak  <ook@ucw.cz>
1739
1740         PR rtl-optimization/26449
1741         * loop-invariant.c (move_invariant_reg): Do not use force_operand.
1742         (seq_insns_valid_p): Removed.
1743
1744 2007-09-17  Eric Botcazou  <ebotcazou@adacore.com>
1745
1746         * tree-nomudflap.c (gate_mudflap): New static function.
1747         (pass_mudflap_1): Use it as gate function.
1748         (pass_mudflap_2): Likewise.
1749
1750 2007-09-17  Jan Hubicka  <jh@suse.cz>
1751
1752         PR middle-end/33348
1753         PR target/33406
1754         * loop-invariant.c (move_invariant_reg): Unshare sequence.
1755
1756 2007-09-17  Victor Kaplansky  <victork@il.ibm.com>
1757
1758         PR tree-optimization/33319
1759         * tree-vect-analyze.c (vect_same_range_drs): New.
1760         (vect_vfa_range_equal): New.
1761         (vect_is_duplicate_ddr): Removed.
1762         (vect_mark_for_runtime_alias_test): Do not perform marking when
1763         optimizing for size or max_param for alias checking is zero.
1764         Move the function before vect_analyze_data_ref_dependence.
1765         (vect_analyze_data_ref_dependence): Add call to
1766         vect_mark_for_runtime_alias_test in two cases when dependence
1767         is not clear.
1768         (vect_analyze_data_ref_dependences): Do not call to
1769         vect_mark_for_runtime_alias_test.
1770         (vect_prune_runtime_alias_test_list): New.
1771         (vect_analyze_loop): Add call to vect_prune_runtime_alias_test_list.
1772         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
1773         Update vec_outside_cost.
1774         (vect_vfa_segment_size): More compact code, use TYPE_SIZE_UNIT.
1775         (vect_create_cond_for_alias_checks): Build the base address of data
1776         reference from DR_GROUP_FIRST_DR.
1777         (vect_loop_versioning): New.
1778         (vect_transform_loop): Add a call to vect_loop_versioning.
1779         Remove factored out code.
1780
1781 2007-09-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1782
1783         PR middle-end/33273
1784         * expr.c (store_expr): Call adjust_address to change mode of dest_mem
1785         to BLKmode.
1786
1787 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
1788
1789         * dse.c (find_shift_sequence): Allow word as well as subword shifts.
1790         Do the tentative shift expansion with the DF_NO_INSN_RESCAN flag set.
1791         Fix the call to insn_rtx_cost.  Skip access sizes that require a
1792         real truncation of the store register.  Use convert_move instead
1793         of gen_lowpart when narrowing the result.
1794         (replace_read): Use convert_move instead of gen_lowpart when
1795         narrowing the store rhs.
1796
1797 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
1798
1799         * config/mips/mips.md (SHORT): Fix long line.
1800         (SUBDI): New mode iterator.  Extend the shift-and-truncate insns
1801         to QImode and HImode.
1802
1803 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
1804
1805         * config/mips/mips.h (POINTERS_EXTEND_UNSIGNED): Define.
1806
1807 2007-09-15  Zdenek Dvorak  <ook@ucw.cz>
1808
1809         * tree-parloops.c: New file.
1810         * tree-ssa-operands.h (free_stmt_operands): Declare.
1811         * tree-ssa-loop-manip.c (split_loop_exit_edge): Return the new basic
1812         block.
1813         * tree-pass.h (pass_parallelize_loops): Declare.
1814         * omp-low.c (expand_omp_parallel, expand_omp_for): Update SSA form for
1815         virtual operands.
1816         (build_omp_regions_1): Allow analysing just a single OMP region and
1817         its subregions.
1818         ( build_omp_regions_root, omp_expand_local): New functions.
1819         (build_omp_regions): Add argument to build_omp_regions_1 call.
1820         * builtins.def (DEF_GOMP_BUILTIN): Initialize OMP builtins when
1821         autoparallelization is run.
1822         * timevar.def (TV_TREE_PARALLELIZE_LOOPS): New.
1823         * tree-ssa-loop.c (gate_tree_parallelize_loops, tree_parallelize_loops,
1824         pass_parallelize_loops): New.
1825         * common.opt (ftree-parallelize-loops): New.
1826         * tree-flow.h (omp_expand_local, tree_duplicate_sese_tail,
1827         parallelize_loops): Declare.
1828         (add_phi_args_after_copy, split_loop_exit_edge): Declaration changed.
1829         * Makefile.in (tree-parloops.o): Added.
1830         * tree-cfg.c (add_phi_args_after_copy_edge, tree_duplicate_sese_tail):
1831         New functions.
1832         (add_phi_args_after_copy_bb): Use add_phi_args_after_copy_edge.
1833         (add_phi_args_after_copy): Call add_phi_args_after_copy_edge for
1834         one extra edge as well.
1835         (tree_duplicate_sese_region): Add argument to add_phi_args_after_copy.
1836         Use VEC_free to free doms vector.
1837         (move_block_to_fn): Update loop info. Remove phi nodes for virtual
1838         operands.  Recompute operand caches in the new function.
1839         (move_sese_region_to_fn): Update loop info.
1840         * passes.c (init_optimization_passes): Add pass_parallelize_loops.
1841         * tree-ssa-operands.c (free_stmt_operands): New function.
1842
1843         * doc/passes.texi: Document autoparallelization.
1844         * doc/invoke.texi (-ftree-parallelize-loops): New option.
1845
1846 2007-09-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1847
1848         PR target/33062
1849         * pa.c (function_value): Use GET_MODE_BITSIZE instead of
1850         TYPE_PRECISION.
1851
1852 2007-09-15  Dorit Nuzman  <dorit@il.ibm.com>
1853
1854         * tree-vect-transform.c (vect_get_vec_defs_for_stmt_copy): check if 
1855         the VEC is not NULL.
1856         (vectorizable_type_demotion, vectorizable_type_promotion): Check that 
1857         get_vectype_for_scalar_type succeeded.
1858         (vectorizable_conversion): Likewise.
1859
1860 2007-09-14  Jan Hubicka  <jh@suse.cz>
1861
1862         * config/i386/i386.md (*floatdi<mode>2_i387): Guard against
1863         TARGET_64BIT.
1864
1865 2007-09-14  Uros Bizjak  <ubizjak@gmail.com>
1866
1867         PR target/33438
1868         * config/i386/i386.md (fmodxf3): Copy operands[2] to temporary
1869         register when operands[2] equals operands[1].
1870         (remainderxf3): Ditto.
1871
1872 2007-09-14  Sandra Loosemore  <sandra@codesourcery.com>
1873             Nigel Stephens  <nigel@mips.com>
1874
1875         * doc/tm.texi (LIBGCC2_UNWIND_ATTRIBUTE): Document.
1876         * unwind-generic.h (LIBGCC2_UNWIND_ATTRIBUTE): Define.
1877         (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE to
1878         declaration.
1879         (_Unwind_ForcedUnwind): Likewise.
1880         (_Unwind_Resume): Likewise.
1881         (_Unwind_Resume_or_Rethrow): Likewise.
1882         (_Unwind_Backtrace): Likewise.
1883         (_Unwind_SjLj_RaiseException): Likewise.
1884         (_Unwind_SjLj_ForcedUnwind): Likewise.
1885         (_Unwind_SjLj_Resume): Likewise.
1886         (_Unwind_SjLj_Resume_or_Rethrow): Likewise.
1887         * unwind.inc (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE
1888         to definition.
1889         (_Unwind_ForcedUnwind): Likewise.
1890         (_Unwind_Resume): Likewise.
1891         (_Unwind_Resume_or_Rethrow): Likewise.
1892         (_Unwind_Backtrace): Likewise.
1893         * unwind-compat.c (_Unwind_Backtrace): Likewise.
1894         (_Unwind_ForcedUnwind): Likewise.
1895         (_Unwind_RaiseException): Likewise.
1896         (_Unwind_Resume): Likewise.
1897         (_Unwind_Resume_or_Rethrow): Likewise.
1898
1899         * config/mips/mips.h (LIBGCC2_UNWIND_ATTRIBUTE): Define to force
1900         nomips16 mode when IN_LIBGCC2 with hard float.
1901
1902 2007-09-14  Richard Sandiford  <rsandifo@nildram.co.uk>
1903
1904         * config/mips/sdemtk.opt: Update to GPLv3.
1905         * config/mips/sdemtk.h: Likewise.
1906
1907 2007-09-14  Nigel Stephens  <nigel@mips.com>
1908
1909         * config.gcc (mips*-*-linux*): Recognise mipsisa32r2 and set
1910         MIPS_ISA_DEFAULT appropriately.  Don't make soft-float the default
1911         for mipsisa32-*-linux*.
1912
1913 2007-09-14  Nigel Stephens  <nigel@mips.com>
1914             David Ung  <davidu@mips.com>
1915             Thiemo Seufer  <ths@mips.com>
1916             Richard Sandiford  <richard@codesourcery.com>
1917
1918         * config.gcc (mips*-sde-elf*): Add support for the SDE C libraries.
1919         * configure.ac: Add a mipssde threading type.
1920         * configure: Regenerate.
1921         * config/mips/sdemtk.h: New file.
1922         * config/mips/t-sdemtk: Likewise.
1923         * config/mips/sdemtk.opt: Likewise.
1924         * gthr-mipssde.h: Likewise.
1925         * config/mips/sde.h (FUNCTION_PROFILER): Move to config/mips/sdemtk.h.
1926         * config/mips/mips.h (MIPS_SAVE_REG_FOR_PROFILING_P): New macro.
1927         (MIPS_ICACHE_SYNC): New macro, split from ...
1928         * config/mips/mips.md (clear_cache): ...here.
1929         * config/mips/mips.c (mips_save_reg_p): Check
1930         MIPS_SAVE_REG_FOR_PROFILING_P on profiled functions.
1931         (build_mips16_function_stub): Use targetm.strip_name_encoding.
1932         (build_mips16_call_stub): Likewise.
1933
1934 2007-09-14  Richard Sandiford  <richard@codesourcery.com>
1935
1936         * Makefile.in (stmp-int-hdrs): Depend on fixinc_list.
1937
1938 2007-09-14  Jakub Jelinek  <jakub@redhat.com>
1939
1940         PR target/32337
1941         * config/ia64/ia64.c (find_gr_spill): Don't decrement
1942         current_frame_info.n_local_regs.  Don't return emitted local
1943         regs.
1944         (ia64_compute_frame_size): Improve unwind hack to put
1945         RP, PFS, FP in that order by allowing some of the registers
1946         been already emitted, as long as they are emitted to the
1947         desired register.
1948
1949 2007-09-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1950
1951         * config/spu/vmx2spu.h (vec_extract, vec_insert, vec_lvlx,
1952         vec_lvlxl, vec_lvrx, vec_lvrxl, vec_promote, vec_splats,
1953         vec_stvlx, vec_stvlxl, vec_stvrx, vec_stvrxl): New intrinsics.
1954
1955 2007-09-13  Eric Christopher  <echristo@apple.com>
1956             Kenneth Zadeck <zadeck@naturalbridge.com>
1957
1958         * dse.c (find_shift_sequence): New function.
1959         (replace_read): Add case to remove read if it requires shift.
1960         * config/i386/i386.c (ix86_expand_prologue): Fixed typo in comment.
1961         
1962 2007-09-13  Tom Tromey  <tromey@redhat.com>
1963
1964         * c-common.c (fname_as_string): Update.
1965         * c-parser.c (c_parser) <lex_untranslated_string>: New field.
1966         (c_lex_one_token): Update.  Add 'parser' argument.
1967         (c_parser_simple_asm_expr): Update.
1968         (c_parser_attributes): Update.
1969         (c_parser_asm_statement): Update.
1970         (c_parser_asm_operands): Update.
1971         (c_parser_peek_token): Update.
1972         (c_parser_peek_2nd_token): Update.
1973         * c-lex.c (c_lex_string_translate): Remove.
1974         (c_lex_return_raw_strings): Likewise.
1975         (c_lex_with_flags): Added 'lex_flags' argument.
1976         (lex_string): Added 'translate' argument.
1977         * c-pragma.h (c_lex_with_flags): Update.
1978         (c_lex_string_translate, c_lex_return_raw_strings): Remove.
1979         (C_LEX_STRING_NO_TRANSLATE): New define.
1980         (C_LEX_RAW_STRINGS): Likewise.
1981
1982 2007-09-13  Bernd Schmidt  <bernd.schmidt@analog.com>
1983
1984         From Jie Zhang:
1985         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_ONES,
1986         BFIN_BUILTIN_CPLX_MUL_16_S40, BFIN_BUILTIN_CPLX_MAC_16_S40,
1987         BFIN_BUILTIN_CPLX_MSU_16_S40, and BFIN_BUILTIN_CPLX_SQU.
1988         (bfin_init_builtins): Initialize __builtin_bfin_ones,
1989         __builtin_bfin_min_fr1x16, __builtin_bfin_max_fr1x16,
1990         __builtin_bfin_min_fr1x32, __builtin_bfin_max_fr1x32,
1991         __builtin_bfin_cmplx_add, __builtin_bfin_cmplx_sub,
1992         __builtin_bfin_cmplx_mul_s40, __builtin_bfin_cmplx_mac_s40,
1993         __builtin_bfin_cmplx_msu_s40 and __builtin_bfin_csqu_fr16.
1994         (bdesc_1arg): Add __builtin_bfin_ones.
1995         (bfin_expand_builtin): Expand __builtin_bfin_cmplx_mul_s40,
1996         __builtin_bfin_cmplx_mac_s40, __builtin_bfin_cmplx_msu_s40,
1997         and __builtin_bfin_csqu_fr16.
1998         * config/bfin/bfin.md (UNSPEC_ONES): New constant.
1999         (ones): New define_insn.
2000         (ssaddhi3_parts): New define_insn.
2001         (sssubhi3_parts): New define_insn.
2002         (flag_mulhi_parts): New define_insn.
2003
2004 2007-09-13  Seongbae Park <seongbae.park@gmail.com>
2005
2006         * common.opt (femit-class-debug-always): Turn off by default.
2007
2008 2007-09-13  Bernd Schmidt  <bernd.schmidt@analog.com>
2009
2010         * config/bfin/bfin.md (reload_outpdi, reload_inpdi): New patterns.
2011         * config/bfin/bfin.c (bfin_secondary_reload): Make sure we use them.
2012
2013 2007-09-13  James E. Wilson  <wilson@specifix.com>
2014
2015         PR tree-optimization/33389
2016         * tree-ssa-operands.c (append_vuse): If ann->in_vdef_list true,
2017         then set build_loads before returning.
2018
2019 2007-09-13  Sandra Loosemore  <sandra@codesourcery.com>
2020             David Ung  <davidu@mips.com>
2021
2022         * config/mips/mips.h (ASM_OUTPUT_REG_PUSH): Replace {d}subu with
2023         {d}addiu and a negative immediate such that it works with MIPS16
2024         instructions.
2025         
2026 2007-09-13  H.J. Lu  <hongjiu.lu@intel.com>
2027
2028         PR bootstrap/33418
2029         * configure.ac (ld_vers): Support Linux linker.
2030         * configure: Regenerated.
2031
2032 2007-09-13  Richard Sandiford  <richard@codesourcery.com>
2033             Sandra Loosemore <sandra@codesourcery.com>
2034
2035         * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Delete.
2036         (SYMBOL_REF_MIPS16_FUNC_P): Delete.
2037         * config/mips/mips.c (mips_attribute_table): Turn mips16 and
2038         nomips16 into decl attributes.
2039         (TARGET_INSERT_ATTRIBUTES): Override.
2040         (TARGET_MERGE_DECL_ATTRIBUTES): Likewise.
2041         (TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P): Always return true.
2042         (mips_mips16_type_p, mips_nomips16_type_p): Delete in favor of...
2043         (mips_mips16_decl_p, mips_nomips16_decl_p): ...these new functions.
2044         (mips_comp_type_attributes): Remove mips16 and nomips16 handling.
2045         (mips_use_mips16_mode_p): Reimplement as a function that takes
2046         a decl and considers only decl attributes.  If the decl is nested
2047         function, use its parent attributes.
2048         (mips_function_ok_for_sibcall): Use mips_use_mips16_mode_p
2049         instead of SYMBOL_REF_MIPS16_FUNC_P.
2050         (mips_set_mips16_mode): Move call to sorry here from old
2051         mips_use_mips16_mode_p.
2052         (mflip_mips16_entry): New structure.
2053         (mflip_mips16_htab): New variable.
2054         (mflip_mips16_htab_hash, mflip_mips16_htab_eq): New functions.
2055         (mflip_mips16_use_mips16_p, mips_insert_attributes): Likewise.
2056         (mips_merge_decl_attributes): New function.
2057         (mips_set_current_function): Reinstate call to mips_set_mips16_mode.
2058         Use mips_use_mips16_mode_p.
2059         (mips_output_mi_thunk): Use mips_use_mips16_mode_p instead of
2060         SYMBOL_REF_MIPS16_FUNC_P.
2061         (mips_encode_section_info): Don't set SYMBOL_FLAG_MIPS16_FUNC.
2062
2063 2007-09-13  Richard Sandiford  <richard@codesourcery.com>
2064
2065         * c-parser.c (c_parser_struct_declaration): Check for a null return.
2066
2067 2007-09-13  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2068
2069         PR driver/33309
2070         * gcc.c (xputenv): Make argument const, and use CONST_CAST.
2071
2072 2007-09-12  Michael Meissner  <michael.meissner@amd.com>
2073             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
2074             Tony Linthicum  <tony.linthicum@amd.com>
2075
2076         * tree.h (function_args_iterator): New type to iterate over
2077         function arguments.
2078         (FOREACH_FUNCTION_ARGS_PTR): Iterator macros for iterating over
2079         function arguments providing a pointer to the argument.
2080         (FOREACH_FUNCTION_ARGS): Iterator macros for iterating over
2081         function arguments providing the argument.
2082         (function_args_iter_init): Inline function to initialize
2083         function_args_iterator.
2084         (function_args_iter_cond_ptr): Inline function to return the next
2085         pointer to hold the argument.
2086         (function_args_iter_cond): Inline function to return the next
2087         argument.
2088         (function_args_iter_cond_next): Advance the function args
2089         iterator.
2090         (stdarg_p): New function, return true if variable argument
2091         function.
2092         (prototype_p): New function, return true if function is
2093         prototyped.
2094         (function_args_count): New function, count the number of arguments
2095         of a function.
2096
2097         * tree.c (stdarg_p): New function, return true if variable
2098         argument function.
2099         (prototype_p): New function, return true if function is
2100         prototyped.
2101
2102         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
2103         (TARGET_ROUND): New macro for the round/ptest instructions which
2104         are shared between SSE4.1 and SSE5.
2105         (OPTION_MASK_ISA_ROUND): Ditto.
2106         (OPTION_ISA_ROUND): Ditto.
2107         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
2108         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
2109
2110         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
2111         (-mfused-madd): New switch to give users control over whether the
2112         compiler optimizes to use the multiply/add SSE5 instructions.
2113
2114         * config/i386/i386.c (m_AMD_MULTIPLE): Rename from
2115         m_ATHLON_K8_AMDFAM10, and change all uses.
2116         (enum pta_flags): Add PTA_SSE5.
2117         (ix86_handle_option): Turn off 3dnow if -msse5.
2118         (override_options): Add SSE5 support.
2119         (print_operand): %Y prints comparison codes for SSE5 com/pcom
2120         instructions.
2121         (ix86_expand_sse_movcc): Add SSE5 support.
2122         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
2123         vector type to the next largest size.
2124         (ix86_expand_sse5_pack): New function to use pperm to pack a
2125         vector type to the next smallest size.
2126         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
2127         (IX86_BUILTIN_FMADDSD): Ditto.
2128         (IX86_BUILTIN_FMADDPS): Ditto.
2129         (IX86_BUILTIN_FMADDPD): Ditto.
2130         (IX86_BUILTIN_FMSUBSS): Ditto.
2131         (IX86_BUILTIN_FMSUBSD): Ditto.
2132         (IX86_BUILTIN_FMSUBPS): Ditto.
2133         (IX86_BUILTIN_FMSUBPD): Ditto.
2134         (IX86_BUILTIN_FNMADDSS): Ditto.
2135         (IX86_BUILTIN_FNMADDSD): Ditto.
2136         (IX86_BUILTIN_FNMADDPS): Ditto.
2137         (IX86_BUILTIN_FNMADDPD): Ditto.
2138         (IX86_BUILTIN_FNMSUBSS): Ditto.
2139         (IX86_BUILTIN_FNMSUBSD): Ditto.
2140         (IX86_BUILTIN_FNMSUBPS): Ditto.
2141         (IX86_BUILTIN_FNMSUBPD): Ditto.
2142         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
2143         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
2144         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
2145         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
2146         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
2147         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
2148         (IX86_BUILTIN_PPERM): Ditto.
2149         (IX86_BUILTIN_PERMPS): Ditto.
2150         (IX86_BUILTIN_PERMPD): Ditto.
2151         (IX86_BUILTIN_PMACSSWW): Ditto.
2152         (IX86_BUILTIN_PMACSWW): Ditto.
2153         (IX86_BUILTIN_PMACSSWD): Ditto.
2154         (IX86_BUILTIN_PMACSWD): Ditto.
2155         (IX86_BUILTIN_PMACSSDD): Ditto.
2156         (IX86_BUILTIN_PMACSDD): Ditto.
2157         (IX86_BUILTIN_PMACSSDQL): Ditto.
2158         (IX86_BUILTIN_PMACSSDQH): Ditto.
2159         (IX86_BUILTIN_PMACSDQL): Ditto.
2160         (IX86_BUILTIN_PMACSDQH): Ditto.
2161         (IX86_BUILTIN_PMADCSSWD): Ditto.
2162         (IX86_BUILTIN_PMADCSWD): Ditto.
2163         (IX86_BUILTIN_PHADDBW): Ditto.
2164         (IX86_BUILTIN_PHADDBD): Ditto.
2165         (IX86_BUILTIN_PHADDBQ): Ditto.
2166         (IX86_BUILTIN_PHADDWD): Ditto.
2167         (IX86_BUILTIN_PHADDWQ): Ditto.
2168         (IX86_BUILTIN_PHADDDQ): Ditto.
2169         (IX86_BUILTIN_PHADDUBW): Ditto.
2170         (IX86_BUILTIN_PHADDUBD): Ditto.
2171         (IX86_BUILTIN_PHADDUBQ): Ditto.
2172         (IX86_BUILTIN_PHADDUWD): Ditto.
2173         (IX86_BUILTIN_PHADDUWQ): Ditto.
2174         (IX86_BUILTIN_PHADDUDQ): Ditto.
2175         (IX86_BUILTIN_PHSUBBW): Ditto.
2176         (IX86_BUILTIN_PHSUBWD): Ditto.
2177         (IX86_BUILTIN_PHSUBDQ): Ditto.
2178         (IX86_BUILTIN_PROTB): Ditto.
2179         (IX86_BUILTIN_PROTW): Ditto.
2180         (IX86_BUILTIN_PROTD): Ditto.
2181         (IX86_BUILTIN_PROTQ): Ditto.
2182         (IX86_BUILTIN_PROTB_IMM): Ditto.
2183         (IX86_BUILTIN_PROTW_IMM): Ditto.
2184         (IX86_BUILTIN_PROTD_IMM): Ditto.
2185         (IX86_BUILTIN_PROTQ_IMM): Ditto.
2186         (IX86_BUILTIN_PSHLB): Ditto.
2187         (IX86_BUILTIN_PSHLW): Ditto.
2188         (IX86_BUILTIN_PSHLD): Ditto.
2189         (IX86_BUILTIN_PSHLQ): Ditto.
2190         (IX86_BUILTIN_PSHAB): Ditto.
2191         (IX86_BUILTIN_PSHAW): Ditto.
2192         (IX86_BUILTIN_PSHAD): Ditto.
2193         (IX86_BUILTIN_PSHAQ): Ditto.
2194         (IX86_BUILTIN_FRCZSS): Ditto.
2195         (IX86_BUILTIN_FRCZSD): Ditto.
2196         (IX86_BUILTIN_FRCZPS): Ditto.
2197         (IX86_BUILTIN_FRCZPD): Ditto.
2198         (IX86_BUILTIN_CVTPH2PS): Ditto.
2199         (IX86_BUILTIN_CVTPS2PH): Ditto.
2200         (IX86_BUILTIN_COMEQSS): Ditto.
2201         (IX86_BUILTIN_COMNESS): Ditto.
2202         (IX86_BUILTIN_COMLTSS): Ditto.
2203         (IX86_BUILTIN_COMLESS): Ditto.
2204         (IX86_BUILTIN_COMGTSS): Ditto.
2205         (IX86_BUILTIN_COMGESS): Ditto.
2206         (IX86_BUILTIN_COMUEQSS): Ditto.
2207         (IX86_BUILTIN_COMUNESS): Ditto.
2208         (IX86_BUILTIN_COMULTSS): Ditto.
2209         (IX86_BUILTIN_COMULESS): Ditto.
2210         (IX86_BUILTIN_COMUGTSS): Ditto.
2211         (IX86_BUILTIN_COMUGESS): Ditto.
2212         (IX86_BUILTIN_COMORDSS): Ditto.
2213         (IX86_BUILTIN_COMUNORDSS): Ditto.
2214         (IX86_BUILTIN_COMFALSESS): Ditto.
2215         (IX86_BUILTIN_COMTRUESS): Ditto.
2216         (IX86_BUILTIN_COMEQSD): Ditto.
2217         (IX86_BUILTIN_COMNESD): Ditto.
2218         (IX86_BUILTIN_COMLTSD): Ditto.
2219         (IX86_BUILTIN_COMLESD): Ditto.
2220         (IX86_BUILTIN_COMGTSD): Ditto.
2221         (IX86_BUILTIN_COMGESD): Ditto.
2222         (IX86_BUILTIN_COMUEQSD): Ditto.
2223         (IX86_BUILTIN_COMUNESD): Ditto.
2224         (IX86_BUILTIN_COMULTSD): Ditto.
2225         (IX86_BUILTIN_COMULESD): Ditto.
2226         (IX86_BUILTIN_COMUGTSD): Ditto.
2227         (IX86_BUILTIN_COMUGESD): Ditto.
2228         (IX86_BUILTIN_COMORDSD): Ditto.
2229         (IX86_BUILTIN_COMUNORDSD): Ditto.
2230         (IX86_BUILTIN_COMFALSESD): Ditto.
2231         (IX86_BUILTIN_COMTRUESD): Ditto.
2232         (IX86_BUILTIN_COMEQPS): Ditto.
2233         (IX86_BUILTIN_COMNEPS): Ditto.
2234         (IX86_BUILTIN_COMLTPS): Ditto.
2235         (IX86_BUILTIN_COMLEPS): Ditto.
2236         (IX86_BUILTIN_COMGTPS): Ditto.
2237         (IX86_BUILTIN_COMGEPS): Ditto.
2238         (IX86_BUILTIN_COMUEQPS): Ditto.
2239         (IX86_BUILTIN_COMUNEPS): Ditto.
2240         (IX86_BUILTIN_COMULTPS): Ditto.
2241         (IX86_BUILTIN_COMULEPS): Ditto.
2242         (IX86_BUILTIN_COMUGTPS): Ditto.
2243         (IX86_BUILTIN_COMUGEPS): Ditto.
2244         (IX86_BUILTIN_COMORDPS): Ditto.
2245         (IX86_BUILTIN_COMUNORDPS): Ditto.
2246         (IX86_BUILTIN_COMFALSEPS): Ditto.
2247         (IX86_BUILTIN_COMTRUEPS): Ditto.
2248         (IX86_BUILTIN_COMEQPD): Ditto.
2249         (IX86_BUILTIN_COMNEPD): Ditto.
2250         (IX86_BUILTIN_COMLTPD): Ditto.
2251         (IX86_BUILTIN_COMLEPD): Ditto.
2252         (IX86_BUILTIN_COMGTPD): Ditto.
2253         (IX86_BUILTIN_COMGEPD): Ditto.
2254         (IX86_BUILTIN_COMUEQPD): Ditto.
2255         (IX86_BUILTIN_COMUNEPD): Ditto.
2256         (IX86_BUILTIN_COMULTPD): Ditto.
2257         (IX86_BUILTIN_COMULEPD): Ditto.
2258         (IX86_BUILTIN_COMUGTPD): Ditto.
2259         (IX86_BUILTIN_COMUGEPD): Ditto.
2260         (IX86_BUILTIN_COMORDPD): Ditto.
2261         (IX86_BUILTIN_COMUNORDPD): Ditto.
2262         (IX86_BUILTIN_COMFALSEPD): Ditto.
2263         (IX86_BUILTIN_COMTRUEPD): Ditto.
2264         (IX86_BUILTIN_PCOMEQUB): Ditto.
2265         (IX86_BUILTIN_PCOMNEUB): Ditto.
2266         (IX86_BUILTIN_PCOMLTUB): Ditto.
2267         (IX86_BUILTIN_PCOMLEUB): Ditto.
2268         (IX86_BUILTIN_PCOMGTUB): Ditto.
2269         (IX86_BUILTIN_PCOMGEUB): Ditto.
2270         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
2271         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
2272         (IX86_BUILTIN_PCOMEQUW): Ditto.
2273         (IX86_BUILTIN_PCOMNEUW): Ditto.
2274         (IX86_BUILTIN_PCOMLTUW): Ditto.
2275         (IX86_BUILTIN_PCOMLEUW): Ditto.
2276         (IX86_BUILTIN_PCOMGTUW): Ditto.
2277         (IX86_BUILTIN_PCOMGEUW): Ditto.
2278         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
2279         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
2280         (IX86_BUILTIN_PCOMEQUD): Ditto.
2281         (IX86_BUILTIN_PCOMNEUD): Ditto.
2282         (IX86_BUILTIN_PCOMLTUD): Ditto.
2283         (IX86_BUILTIN_PCOMLEUD): Ditto.
2284         (IX86_BUILTIN_PCOMGTUD): Ditto.
2285         (IX86_BUILTIN_PCOMGEUD): Ditto.
2286         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
2287         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
2288         (IX86_BUILTIN_PCOMEQUQ): Ditto.
2289         (IX86_BUILTIN_PCOMNEUQ): Ditto.
2290         (IX86_BUILTIN_PCOMLTUQ): Ditto.
2291         (IX86_BUILTIN_PCOMLEUQ): Ditto.
2292         (IX86_BUILTIN_PCOMGTUQ): Ditto.
2293         (IX86_BUILTIN_PCOMGEUQ): Ditto.
2294         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
2295         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
2296         (IX86_BUILTIN_PCOMEQB): Ditto.
2297         (IX86_BUILTIN_PCOMNEB): Ditto.
2298         (IX86_BUILTIN_PCOMLTB): Ditto.
2299         (IX86_BUILTIN_PCOMLEB): Ditto.
2300         (IX86_BUILTIN_PCOMGTB): Ditto.
2301         (IX86_BUILTIN_PCOMGEB): Ditto.
2302         (IX86_BUILTIN_PCOMFALSEB): Ditto.
2303         (IX86_BUILTIN_PCOMTRUEB): Ditto.
2304         (IX86_BUILTIN_PCOMEQW): Ditto.
2305         (IX86_BUILTIN_PCOMNEW): Ditto.
2306         (IX86_BUILTIN_PCOMLTW): Ditto.
2307         (IX86_BUILTIN_PCOMLEW): Ditto.
2308         (IX86_BUILTIN_PCOMGTW): Ditto.
2309         (IX86_BUILTIN_PCOMGEW): Ditto.
2310         (IX86_BUILTIN_PCOMFALSEW): Ditto.
2311         (IX86_BUILTIN_PCOMTRUEW): Ditto.
2312         (IX86_BUILTIN_PCOMEQD): Ditto.
2313         (IX86_BUILTIN_PCOMNED): Ditto.
2314         (IX86_BUILTIN_PCOMLTD): Ditto.
2315         (IX86_BUILTIN_PCOMLED): Ditto.
2316         (IX86_BUILTIN_PCOMGTD): Ditto.
2317         (IX86_BUILTIN_PCOMGED): Ditto.
2318         (IX86_BUILTIN_PCOMFALSED): Ditto.
2319         (IX86_BUILTIN_PCOMTRUED): Ditto.
2320         (IX86_BUILTIN_PCOMEQQ): Ditto.
2321         (IX86_BUILTIN_PCOMNEQ): Ditto.
2322         (IX86_BUILTIN_PCOMLTQ): Ditto.
2323         (IX86_BUILTIN_PCOMLEQ): Ditto.
2324         (IX86_BUILTIN_PCOMGTQ): Ditto.
2325         (IX86_BUILTIN_PCOMGEQ): Ditto.
2326         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
2327         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
2328         (bdesc_ptest): Change OPTION_MASK_ISA_SSE4_1 to
2329         OPTION_MASK_ISA_ROUND for instructions that are shared between
2330         SSE4.1 and SSE5.
2331         (bdesc_2arg): Ditto.
2332         (bdesc_sse_3arg): Ditto.
2333         (enum multi_arg_type): New enum for describing the various SSE5
2334         intrinsic argument types.
2335         (bdesc_multi_arg): New table for SSE5 intrinsics.
2336         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
2337         (ix86_expand_multi_arg_builtin): New function for creating SSE5
2338         intrinsics.
2339         (ix86_expand_builtin): Add SSE5 intrinsic support.
2340         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
2341         operand instructions.
2342         (ix86_expand_sse5_multiple_memory): New function to split the
2343         second memory reference from SSE5 instructions.
2344         (type_has_variadic_args_p): Delete in favor of stdarg_p.
2345         (ix86_return_pops_args): Use stdarg_p to determine if the function
2346         has variable arguments.
2347         (ix86_setup_incoming_varargs): Ditto.
2348         (x86_this_parameter): Ditto.
2349
2350         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
2351         declaration.
2352         (ix86_expand_sse5_pack): Ditto.
2353         (ix86_sse5_valid_op_p): Ditto.
2354         (ix86_expand_sse5_multiple_memory): Ditto.
2355
2356         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
2357         constant for SSE5 support.
2358         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
2359         (UNSPEC_SSE5_TRUEFALSE): Ditto.
2360         (UNSPEC_SSE5_PERMUTE): Ditto.
2361         (UNSPEC_SSE5_ASHIFT): Ditto.
2362         (UNSPEC_SSE5_LSHIFT): Ditto.
2363         (UNSPEC_FRCZ): Ditto.
2364         (UNSPEC_CVTPH2PS): Ditto.
2365         (UNSPEC_CVTPS2PH): Ditto.
2366         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
2367         (PCOM_TRUE): Ditto.
2368         (COM_FALSE_S): Ditto.
2369         (COM_FALSE_P): Ditto.
2370         (COM_TRUE_S): Ditto.
2371         (COM_TRUE_P): Ditto.
2372         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
2373         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
2374         types.
2375         (memory attribute): Ditto.
2376         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
2377         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
2378         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
2379         (floor<mode>2): Ditto.
2380         (ceil<mode>2): Ditto.
2381         (btrunc<mode>2): Ditto.
2382         (nearbyintdf2): Ditto.
2383         (nearbyintsf2): Ditto.
2384         (sse_setccsf): Disable if SSE5.
2385         (sse_setccdf): Ditto.
2386         (sse5_setcc<mode>): New support for SSE5 conditional move.
2387         (sse5_pcmov_<mode>): Ditto.
2388
2389         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
2390         (SSEMODEF4): Ditto.
2391         (SSEMODEF2P): Ditto.
2392         (ssemodesuffixf4): New mode attribute for SSE5.
2393         (ssemodesuffixf2s): Ditto.
2394         (ssemodesuffixf2c): Ditto.
2395         (sserotatemax): Ditto.
2396         (ssescalarmode): Ditto.
2397         (sse_maskcmpv4sf3): Disable if SSE5.
2398         (sse_maskcmpv2df3): Ditto.
2399         (sse_vmmaskcmpv4sf3): Ditto.
2400         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add
2401         instructions.
2402         (sse5_vmfmadd<mode>4): Ditto.
2403         (sse5_fmsub<mode>4): Ditto.
2404         (sse5_vmfmsub<mode>4): Ditto.
2405         (sse5_fnmadd<mode>4): Ditto.
2406         (sse5_vmfnmadd<mode>4): Ditto.
2407         (sse5_fnmsub<mode>4): Ditto.
2408         (sse5_vmfnmsub<mode>4): Ditto.
2409         (sse5i_fmadd<mode>4): Ditto.
2410         (sse5i_fmsub<mode>4): Ditto.
2411         (sse5i_fnmadd<mode>4): Ditto.
2412         (sse5i_fnmsub<mode>4): Ditto.
2413         (sse5i_vmfmadd<mode>4): Ditto.
2414         (sse5i_vmfmsub<mode>4): Ditto.
2415         (sse5i_vmfnmadd<mode>4): Ditto.
2416         (sse5i_vmfnmsub<mode>4): Ditto.
2417         (mulv16qi3): Add SSE5 support.
2418         (mulv4si3): Ditto.
2419         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
2420         (sse2_mulv4si3): Disable if SSE5.
2421         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
2422         (sse4_1_roundps): Ditto.
2423         (sse4_1_roundsd): Ditto.
2424         (sse4_1_roundss): Ditto.
2425         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
2426         be generated.
2427         (sse_maskcmpsf3): Ditto.
2428         (sse_vmmaskcmpv4sf3): Ditto.
2429         (sse2_maskcmpv2df3): Ditto.
2430         (sse2_maskcmpdf3): Ditto.
2431         (sse2_vmmaskcmpv2df3): Ditto.
2432         (sse2_eq<mode>3): Ditto.
2433         (sse2_gt<mode>3): Ditto.
2434         (sse5_pcmov_<mode>): Add SSE5 support.
2435         (vec_unpacku_hi_v16qi): Ditto.
2436         (vec_unpacks_hi_v16qi): Ditto.
2437         (vec_unpacku_lo_v16qi): Ditto.
2438         (vec_unpacks_lo_v16qi): Ditto.
2439         (vec_unpacku_hi_v8hi): Ditto.
2440         (vec_unpacks_hi_v8hi): Ditto.
2441         (vec_unpacku_lo_v8hi): Ditto.
2442         (vec_unpacks_lo_v8hi): Ditto.
2443         (vec_unpacku_hi_v4si): Ditto.
2444         (vec_unpacks_hi_v4si): Ditto.
2445         (vec_unpacku_lo_v4si): Ditto.
2446         (vec_unpacks_lo_v4si): Ditto.
2447         (sse5_pmacsww): New SSE5 intrinsic insn.
2448         (sse5_pmacssww): Ditto.
2449         (sse5_pmacsdd): Ditto.
2450         (sse5_pmacssdd): Ditto.
2451         (sse5_pmacssdql): Ditto.
2452         (sse5_pmacssdqh): Ditto.
2453         (sse5_pmacsdqh): Ditto.
2454         (sse5_pmacsswd): Ditto.
2455         (sse5_pmacswd): Ditto.
2456         (sse5_pmadcsswd): Ditto.
2457         (sse5_pmadcswd): Ditto.
2458         (sse5_pcmov_<move>): Conditional move support on SSE5.
2459         (sse5_phaddbw): New SSE5 intrinsic insn.
2460         (sse5_phaddbd): Ditto.
2461         (sse5_phaddbq): Ditto.
2462         (sse5_phaddwd): Ditto.
2463         (sse5_phaddwq): Ditto.
2464         (sse5_phadddq): Ditto.
2465         (sse5_phaddubw): Ditto.
2466         (sse5_phaddubd): Ditto.
2467         (sse5_phaddubq): Ditto.
2468         (sse5_phadduwd): Ditto.
2469         (sse5_phadduwq): Ditto.
2470         (sse5_phaddudq): Ditto.
2471         (sse5_phsubbw): Ditto.
2472         (sse5_phsubwd): Ditto.
2473         (sse5_phsubdq): Ditto.
2474         (sse5_pperm): Ditto.
2475         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
2476         (sse5_pperm_zero_v16qi_v8hi): Ditto.
2477         (sse5_pperm_sign_v8hi_v4si): Ditto.
2478         (sse5_pperm_zero_v8hi_v4si): Ditto.
2479         (sse5_pperm_sign_v4si_v2di): Ditto.
2480         (sse5_pperm_sign_v4si_v2di): Ditto.
2481         (sse5_pperm_pack_v2di_v4si): Ditto.
2482         (sse5_pperm_pack_v4si_v8hi): Ditto.
2483         (sse5_pperm_pack_v8hi_v16qi): Ditto.
2484         (sse5_perm<mode>): New SSE5 intrinsic insn.
2485         (rotl<mode>3): Ditto.
2486         (sse5_rotl<mode>3): Ditto.
2487         (sse5_ashl<mode>3): Ditto.
2488         (sse5_lshl<mode>3): Ditto.
2489         (sse5_frcz<mode>2): Ditto.
2490         (sse5s_frcz<mode>2): Ditto.
2491         (sse5_cvtph2ps): Ditto.
2492         (sse5_cvtps2ph): Ditto.
2493         (sse5_vmmaskcmp<mode>3): Ditto.
2494         (sse5_com_tf<mode>3): Ditto.
2495         (sse5_maskcmp<mode>3): Ditto.
2496         (sse5_maskcmp_uns<mode>3): Ditto.
2497         (sse5_maskcmp_uns2<mode>3): Ditto.
2498         (sse5_pcom_tf<mode>3): Ditto.
2499         
2500         * config/i386/predicates.md (const_0_to_31_operand): New predicate
2501         to match 0..31.
2502         (sse5_comparison_float_operator): New predicate to match the
2503         comparison operators supported by the SSE5 com instruction.
2504         (ix86_comparison_int_operator): New predicate to match just the
2505         signed int comparisons.
2506         (ix86_comparison_uns_operator): New predicate to match just the
2507         unsigned int comparisons.
2508
2509         * doc/invoke.texi (-msse5): Add documentation.
2510         (-mfused-madd): Ditto.
2511
2512         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
2513
2514         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
2515         mmintrin-common.h.
2516         (x86_64-*-*): Ditto.
2517
2518         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
2519
2520         * config/i386/bmmintrin.h: New file, provide common x86 compiler
2521         intrinisics for SSE5.
2522
2523         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
2524         mmintrin-common.h.
2525
2526         * config/i386/mmintrin-common.h: New file, to contain common
2527         instructions between SSE4.1 and SSE5.
2528
2529         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
2530         FOREACH_FUNCTION_ARGS to iterate over the argument list.
2531         (gen_regparm_prefix): Ditto.
2532
2533         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
2534         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
2535         prototype_p to determine if a function is prototyped.
2536
2537 2007-09-12  Janis Johnson  <janis187@us.ibm.com>
2538
2539         * config/dfp-bit.c (dfp_conversion_exception): New function.
2540         (DFP_TO_DFP) Add new variants to use direct conversions in decNumber.
2541         (DFP_TO_INT): Ditto.
2542         (INT_TO_DFP): Ditto.
2543         * config/dfp-bit.h (DEC_FLOAT_FROM_INT, DEC_FLOAT_TO_INT): New.
2544
2545 2007-09-12  Jakub Jelinek  <jakub@redhat.com>
2546
2547         PR target/32338
2548         * config/ia64/ia64.c (ia64_expand_epilogue): Emit blockage
2549         before sp restoration even when total_size is 0, but
2550         frame_pointer_needed.
2551
2552 2007-09-12  Bob Wilson  <bob.wilson@acm.org>
2553
2554         * config/xtensa/xtensa.c (machine_function): Add vararg_a7_copy.
2555         (xtensa_copy_incoming_a7): Use start_sequence instead of
2556         push_to_sequence.  Stash insns in vararg_a7_copy for builtin_saveregs.
2557         (xtensa_builtin_saveregs): Place code from vararg_a7_copy at the start
2558         of the saveregs sequence.
2559
2560 2007-09-12  Richard Sandiford  <richard@codesourcery.com>
2561
2562         * c-tree.h (grokfield): Add a "tree *" argument.
2563         * c-decl.c (grokdeclarator): Take a pointer to the decl's attributes.
2564         Chain nested decl attributes to it.  Don't call decl_attributes here.
2565         (groktypename): Pass grokdeclarator a pointer to the attribute list.
2566         (start_decl, grokparm, push_parm_decl, start_function): Likewise.
2567         (grokfield): Take a pointer to the decl's attributes and pass
2568         it to grokdeclarator.
2569         * c-parser.c (c_parser_struct_declaration): Update the calls to
2570         grokfield.  Call decl_attributes for anonymous struct and union
2571         fields.
2572
2573 2007-09-12  Jan Hubicka  <jh@suse.cz>
2574
2575         * c-objc-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
2576
2577 2007-09-12  Ira Rosen  <irar@il.ibm.com>
2578
2579         PR tree-optimization/32377
2580         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Distinguish
2581         between positive and negative dependence distance using DDR_REVERSED_P.
2582
2583 2007-09-12  Dorit Nuzman  <dorit@il.ibm.com>
2584
2585         PR tree-optimization/33373
2586         * tree-vect-analyze (vect_determine_vectorization_factor): Call 
2587         TREE_INT_CST_LOW when comparing TYPE_SIZE_UNIT. 
2588
2589 2007-09-12  Jan Hubicka  <jh@suse.cz>
2590
2591         PR target/33393
2592         * i386.md (floatsisf2_mixed_memory, floatsisf2_sse_memory): Disable
2593         for !SSE_MATH
2594
2595 2007-09-12  Christian Bruel  <christian.bruel@st.com>
2596
2597         * sh.h (SH_DBX_REGISTER_NUMBER): Added fpscr, fixed sr/gbr regs.
2598         * linux-unwind.h (SH_DWARF_FRAME_GBR): fixed. 
2599         
2600 2007-09-12  Ira Rosen  <irar@il.ibm.com>
2601
2602         * tree-vect-transform.c (vect_get_slp_defs): Don't build a vector
2603         for oprnd1 if not required.
2604         (vectorizable_operation): Use scalar operand in SLP in case of 
2605         shift with scalar argument.
2606
2607 2007-09-12  Ira Rosen  <irar@il.ibm.com>
2608
2609         * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change default and minimum 
2610         to 1.
2611
2612 2007-09-11  James E. Wilson  <wilson@specifix.com>
2613
2614         * defaults.h (DWARF2_UNWIND_INFO): Don't define if
2615         TARGET_UNWIND_INFO is defined.
2616         * config/ia64/ia64.h (INCOMING_RETURN_ADDR_RTX): Delete undef
2617         after definition.
2618
2619 2007-09-12  Kaz Kojima  <kkojima@gcc.gnu.org>
2620
2621         * config/sh/sh.c (calc_live_regs): Use
2622         current_function_saves_all_registers instead of
2623         current_function_has_nonlocal_label.
2624         (sh_allocate_initial_value): Likewise.
2625         (sh_get_pr_initial_val): Likewise.
2626         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Likewise.
2627         * config/sh/sh.md (load_ra): Likewise.
2628
2629 2007-09-12  Hans-Peter Nilsson  <hp@axis.com>
2630
2631         * config/cris/t-linux (LIMITS_H_TEST): Only define if not inhibit_libc.
2632
2633         PR target/33360
2634         * config/cris/cris.c (cris_expand_pic_call_address): Fix typo in
2635         GET_CODE (x) == CONST_INT to CONST_INT_P (x) transformation.
2636
2637 2007-09-12  Sa Liu  <saliu@de.ibm.com>
2638
2639         * config/spu/spu.c (spu_emit_branch_or_set): Handle NaN values as
2640         operands to DFmode GE or LE compares.
2641
2642 2007-09-12  Bernd Schmidt  <bernd.schmidt@analog.com>
2643
2644         * config/bfin/bfin.h (enum reg_class, REG_CLASS_CONTENTS,
2645         REG_CLASS_NAMES): Add P0REGS.
2646         (REGNO_REG_CLASS): Return it where appropriate.
2647         (REG_CLASS_FROM_CONSTRAINT): Add 'qA'.
2648         (CLASS_LIKELY_SPILLED_P): P0REGS is likely_spilled.
2649         * doc/md.texi (Blackfin family): Document 'q' constraints.
2650
2651 2007-09-11  Steve Kenton  <skenton@ou.edu>
2652
2653         * pa/linux-unwind.h: Guard with inhibit_libc.
2654         * pa/hpux-unwind.h: Likewise.
2655
2656 2007-09-11  David Daney  <ddaney@avtrex.com>
2657
2658         * doc/invoke.texi: Document new MIPS -mllsc and -mno-llsc options.
2659         * doc/install.texi: Document new --with-llsc and --without-llsc
2660         options.
2661         * config.gcc: Handle --with-llsc and --without-llsc configure options.
2662         * config/mips/mips.md (sync, memory_barrier): Wrap sync instrunction
2663         in %| and %- operand codes.  Depend on GENERATE_SYNC instead of
2664         ISA_HAS_SYNC.
2665         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
2666         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
2667         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
2668         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
2669         sync_new_nand<mode>, sync_lock_test_and_set<mode>): Depend on
2670         GENERATE_LL_SC instead of ISA_HAS_LL_SC.
2671         * config/mips/mips.opt (mllsc): New option.
2672         * config/mips/mips.c (mips_llsc): Define variable.
2673         (mips_handle_option): Handle mllsc option.
2674         (override_options): Set mips_print_operand_punct for '|' and '-'.
2675         (print_operand): Add new %| and %- operand codes.
2676         * config/mips/mips.h (mips_llsc_setting): New enum type.
2677         (mips_llsc): Declare.
2678         (OPTION_DEFAULT_SPECS): Add llsc handling.
2679         (GENERATE_SYNC): New macro.
2680         (GENERATE_LL_SC): New macro.
2681         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
2682         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
2683         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Wrap instructions
2684         in %| and %- operand codes.
2685
2686 2007-09-11  Eric Botcazou  <ebotcazou@adacore.com>
2687
2688         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Deal with
2689         TYPE_NONALIASED_COMPONENT like with DECL_NONADDRESSABLE_P.
2690
2691 2007-09-11  Jason Merrill  <jason@redhat.com>
2692
2693         PR middle-end/27945
2694         * stor-layout.c (layout_decl): Do pack variable size fields.    
2695
2696 2007-09-11  Maxim Kuvyrkov  <maxim@codesourcery.com>
2697
2698         * config/m68k/predicates.md (movsi_const0_operand,
2699         non_symbolic_call_operand): New predicates.
2700
2701         * config/m68k/constraints.md (Cs, Ci, C0, Cj, CQ, CW, CZ, CS, Ap, Ac):
2702         New constraints.
2703         * doc/md.texi (Constraints for Particular Machines: Motorola 680x0):
2704         Document constraints N, O, P, R, S, T, Q, U, W, Cs, Ci, C0, Cj, CQ,
2705         CW, CZ, CS, Ap and Ac.
2706
2707         * config/m68k/m68k.md (UNSPEC_IB): New constant.
2708         (constraints.md): New include.
2709         (cpu, type, type1, opx, opy, opx_type, opy_type, size, opx_access,
2710         opx_mem, opy_mem, op_mem, guess, split): New attributes.
2711         (movdf_internal): Name pattern.  Fix to use alternatives.  Add split.
2712         Specify attributes.
2713         (pushdi): Add split.
2714         (tstsi_internal): Name pattern.  Fix to use alternatives.  Specify
2715         attributes.  Split tstsi_internal_68020_cf from it.
2716         (tstsi_internal_68020_cf): New pattern.
2717         (tsthi_internal, tstqi_internal): Name pattern.  Specify attributes.
2718         (tst<mode>_cf): Specify attributea.
2719         (cmpsi_cf): Name pattern.  Specify attributes.
2720         (cmp<mode>_68881, cmp<mode>_cf): Specify type attribute.
2721         (pushexthisi_const): Fix to use alternatives.  Specify
2722         attributes.
2723         (movsi_const0): Split movsi_const0_68000_10 and movsi_const0_68040_60
2724         from it.  Fix to use alternatives.  Specify attributes.
2725         (movsi_const0_68040_10, movsi_const0_68040_60): New patterns.
2726         (movsi_cf, movstrictqi_cf): Fix to use alternatives.  Specify
2727         attributes.
2728         (movsf_cf_soft): Specify attributes.
2729         (movdf_cf_soft): Add split.
2730         (pushasi, zero_extendhisi2_cf, zero_extendqisi2_cfv4,
2731         cfv4_extendhisi2, 68k_extendhisi2, extendqihi2, cfv4_extendqisi2,
2732         68k_extendqisi2, truncdfsf2_cf): Specify attributes.
2733         (truncdfsf2_68881): Name pattern.  Specify attributes.
2734         (floatsi<mode>2_cf, floathi<mode>2_68881, floathi<mode>2_cf,
2735         floatqi<mode>2_68881, floatqi<mode>2_cf, ftrunc<mode>2_cf,
2736         fix<mode>qi2_cf, fix<mode>hi2_cf, fix<mode>si2_cf, adddi_dishl32):
2737         Specify attributes.
2738         (addsi3_5200): Fix to use alternatives.  Specify attributes.
2739         Add splits.
2740         (add<mode>3_cf, subdi_dishl32): Specify attributes.
2741         (subsi3): Add alternative for subq.l.  Specify attributes.
2742         (sub<mode>3_cf, mulhi3, mulhisi3): Specify attributes.
2743         (mulhisisi3_s, mulsi3_68020, mulsi3_cf): Name pattern.  Specify
2744         attributes.
2745         (umulhisi3): Specify attributes.
2746         (mulhisisi3_z): Name pattern.  Specify attributes.
2747         (fmul<mode>3_cf, div<mode>3_cf, negsi2_internal, negsi2_5200,
2748         sqrt<mode>2_68881, clzsi2, one_cmplsi2_5200, subreghi1ashrdi_const32,
2749         subregsi1ashrdi_const32, ashrsi3, subreg1lshrdi_const32, lshrsi3,
2750         bsetmemqi): Specify attributes.
2751         (bsetmemqi_ext): Name pattern.  Specify attributes.
2752         (bclrmemqi): Specify attributes.
2753         (bclrmemqi_ext, scc, sls): Name pattern.  Specify attributes.
2754         (beq, bne, bgt, bgtu, blt, bltu, bge, bgeu, ble, bleu): Specify
2755         attributes.
2756         (beq2, bne2, bgt2, bgtu2, blt2, bltu2, bge2, bgeu2, ble2, bleu2): Name
2757         pattern.  Specify attributes.
2758         (jump): Specify attributes.
2759         (tablejump_internal): Name pattern.  Specify attributes.
2760         (call_value): Split into non_symbolic_call_value,
2761         symbolic_call_value_jsr, symbolic_call_value_bsr.  Fix to use
2762         alternatives.  Specify attributes.
2763         (non_symbolic_call_value, symbolic_call_value_jsr,
2764         symbolic_call_value_bsr): New patterns.
2765         (nop, return, unlink, indirect_jump): Specify attributes.
2766         (trap): Fix condition.  Specify attributes.
2767         (ib): New pattern.
2768
2769         * config/m68k/m68k.c (m68k_symbolic_call_var): New variable.
2770         (override_options): Initialize it.  Initialize m68k_sched_cpu.
2771         (CONST_METHOD): Rename to M68K_CONST_METHOD, move to m68k.h.
2772         (const_method): Make global, rename to m68k_const_method.
2773         (const_int_cost, output_move_const_into_data_reg): Update.
2774         (output_move_double): Parametrize to emit rtl code, rename to
2775         handle_move_double.
2776         (output_reg_adjust, emit_reg_adjust, output_compadr, output_movsi,
2777         emit_movsi): New static functions.
2778         (output_move_double): New function with semantics of old
2779         output_move_double.
2780         (m68k_emit_move_double): New function.
2781         (m68k_sched_cpu): New variable.
2782         (attr_op_type): New enum.
2783         (sched_guess_p): New variable.
2784         (sched_address_type, sched_operand_type, sched_attr_op_type):
2785         New static functions.
2786         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
2787         m68k_sched_attr_size, m68k_sched_attr_op_mem): New functions.
2788         (sched_branch_type): New static variable.
2789         (m68k_sched_branch_type): New function.
2790         * config/m68k/m68k.h (M68K_SYMBOLIC_CALL): New enum.
2791         (m68k_symbolic_call_var): Declare.
2792         (M68K_CONST_METHOD): Rename from CONST_METHOD.  Move here from m68k.c.
2793         (m68k_const_method, m68k_emit_move_double, m68k_sched_cpu,
2794         m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
2795         m68k_sched_attr_size, m68k_sched_attr_op_mem, m68k_sched_branch_type):
2796         Declare.
2797
2798 2007-09-11  Jakub Jelinek  <jakub@redhat.com>
2799
2800         * builtins.def (BUILT_IN_VA_ARG_PACK_LEN): New builtin.
2801         * builtins.c (expand_builtin) <case BUILT_IN_VA_ARG_PACK_LEN>: Issue
2802         error if __builtin_va_arg_pack_len () wasn't optimized out during
2803         inlining.
2804         * tree-inline.c (copy_bb): Replace __builtin_va_arg_pack_len ()
2805         with the number of inline's anonymous arguments.
2806         * doc/extend.texi: Document __builtin_va_arg_pack_len ().
2807
2808 2007-09-11  Zdenek Dvorak  <ook@ucw.cz>
2809
2810         * fold-const.c (extract_muldiv_1): Do not simplify
2811         var * c * c to var.
2812
2813 2007-09-11  Jan Hubicka <jh@suse.cz>
2814
2815         * i386.h (ix86_tune_indices): Add X86_TUNE_INTER_UNIT_CONVERSIONS.
2816         (TARGET_INTER_UNIT_CONVERSIONS): New.
2817         * i386.md (floatsi expanders): Remove redundant check for SImode
2818         source; offload to memory when asked for.
2819         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse
2820         floatdisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
2821         Update conditions;
2822         (floatsisf2_mixed_memory, floatsisf2_sse_memory,
2823         floatsidf2_mixed_memory, floatsidf2_sse_memory
2824         floatdisf2_mixed_memory, floatsisf2_sse_memory,
2825         floatsidf2_mixed_memory, floatsidf2_sse_memory): New.
2826
2827 2007-09-11  Jan Hubicka <jh@suse.cz>
2828
2829         * toplev.c (process_options): all frontends now do unit-at-a-time.
2830         * cgraphunit.c: update comments.
2831         (cgraph_expand_function): call passmanager dirrectly; emit thunks.
2832         * c-decl.c (finish_function): use cgraph_add_new_function.
2833         * function.c (expand_function_end): We are always unit-at-a-time.
2834
2835 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
2836
2837         * config/mips/mips.c (mips_set_mips16_mode): Use separate anchor
2838         settings for MIPS16.
2839         (mips_use_anchors_for_symbol_p): Use default_use_anchors_for_symbol_p.
2840
2841 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
2842
2843         * config/mips/mips.c (mips_symbol_insns_1): Allow LEAs of
2844         SYMBOL_FORCE_TO_MEM constants.
2845         (mips_rtx_costs): Give a cost of 1 to force_to_mem_operands.
2846         (mips16_rewrite_pool_refs_info): New structure.
2847         (mips16_rewrite_pool_constant): New function, split out from...
2848         (mips16_rewrite_pool_refs): ...here.  Take a pointer to a
2849         mips16_rewrite_pool_refs_info structure rather than a pointer
2850         to a constant pool.  Force force_to_mem_operands into memory.
2851         (mips16_lay_out_constants): Update call to mips16_rewrite_pool_refs.
2852         * config/mips/predicates.md (force_to_mem_operand): New predicate.
2853         * config/mips/constraints.md (kf): New constraint.
2854         * config/mips/mips.md (*movdi_64bit_mips16): Add a d <- kf alternative.
2855         (*movsi_mips16): Likewise.
2856
2857 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
2858             Nigel Stephens  <nigel@mips.com>
2859             David Ung  <davidu@mips.com>
2860
2861         * config/mips/mips.h (CONSTANT_POOL_COST): Move to...
2862         * config/mips/mips.c: ...here and set to 4 for TARGET_MIPS16.
2863         (mips16_constant_cost, mips_immediate_operand_p, mips_binary_cost)
2864         (mips_fp_mult_cost, mips_fp_div_cost, mips_sign_extend_cost)
2865         (mips_zero_extend_cost): New functions.
2866         (mips_rtx_costs): Treat COMPARE constants as having zero cost.
2867         Use the new functions.  Tweak many cost estimates, both here
2868         and in the new subroutines.  Return false when the cost of the
2869         operands has not been calculated.  Check for *clear_upper32.
2870         Check for floating-point multiply-add, reciprocal and rsqrt
2871         patterns.  Handle comparison and rotation codes.
2872
2873 2007-09-11  Danny Smith  <dannysmith@users.sourceforge.net>
2874
2875         * config/i386/cygming.h (TARGET_STRIP_NAME_ENCODING): Don't
2876         override default.
2877         * config/i386/i386.c (get_dllimport_decl): Don't strip
2878         FASTCALL_PREFIX.
2879
2880 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
2881
2882         PR c/30013
2883         * config/dfp-bit.c: Don't skip TFmode conversions; move strto*
2884         declarations to top.
2885         (DFP_TO_BFP): Use for either XFmode or TFmode.
2886         (BFP_TO_DFP): Use for either XFmode or TFmode; always use cast
2887         of BFP_VIA_TYPE.
2888         * config/dfp-bit.h: Include float.h.
2889         (LONG_DOUBLE_HAS_XF_MODE, LONG_DOUBLE_HAS_TF_MODE): Define if long
2890         double is one of these modes, rather than using LIBGCC_HAS_*F_MODE
2891         which doesn't mean the same thing.
2892         (BFP_KIND): Use 4 to mean TFmode.
2893         (BFP_FMT): Specify the number of decimal digits based on the
2894         number of mantissa digits.
2895         (BFP_VIA_TYPE): Binary float type to use as cast for sprintf.
2896         (BFP_TO_DFP, DFP_TO_BFP): Define names for TFmode variants.
2897         (STR_TO_BFP): Use strtold for XFmode or TFmode.
2898         (TFtype): Define if TFmode is supported.
2899         * doc/libgcc.texi (Decimal float library routines): Document
2900         TF conversion functions.
2901
2902 2007-09-10  Chao-ying Fu  <fu@mips.com>
2903
2904         * config/mips/mips.c (mips_scalar_mode_supported_p): Declare.
2905         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
2906         (mips_emit_compare): Process fixed-point modes.
2907         (mips_pad_arg_upward): Support fixed-point types.
2908         (override_options): Allow fixed-point modes in accumulators.
2909         (mips_pass_by_reference): Pass DQ, UDQ, DA, and UDA modes in registers.
2910         (mips_vector_mode_supported_p): Support V2HQmode, V2UHQmode, V2HAmode,
2911         V2UHAmode, V4QQmode, and V4UQQmode when TARGET_DSP.
2912         (mips_scalar_mode_supported_p): New function to accept fixed-point
2913         modes if the width is not greater than two BITS_PER_WORD.
2914         * config/mips/mips.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
2915         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
2916         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
2917         LONG_LONG_ACCUM_TYPE_SIZE): Define.
2918         * config/mips/mips.md ("d"): Update mode attribute for fixed-point
2919         modes.
2920         ("IMODE"): New mode attribute.
2921         (mips-fixed.md): Include.
2922         * config/mips/mips-modes.def: Create VECTOR_MODES for FRACT, UFRACT,
2923         ACCUM, UACCUM.
2924         * config/mips/mips-fixed.md: New file.
2925
2926 2007-09-11  Ben Elliston  <bje@au.ibm.com>
2927
2928         * config/spu/spu.md: Formatting fixes.
2929
2930 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
2931
2932         * config/dfp-bit.c (dfp_unary_func): Delete.
2933         (dfp_unary_op): Delete.
2934         (dfp_binary_op): Use decFloat functions instead of decNumber
2935         functions for binary operations.
2936         (d32_binary_op): Convert 32-bit operands to 64 bits for evaluation.
2937         (dnn_binary_op): Call dfp_binary_op with decFloat rather than
2938         DFP_C_TYPE.
2939         (dfp_compare_op): Use decFloat functions insteadof decNumber
2940         functions for comparisons.
2941         (d32_compare_op): Convert 32-bit operands to 64 bits for evaluation.
2942         (dnn_binary_op): Call dfp_compare_op with decFloat rather than
2943         DFP_C_TYPE.
2944         (DFP_ADD, DFP_SUB, DFP_MULTIPLE, DFP_DIVIDE): Use macros for
2945         call to dxx_binary_op and decFloat function.
2946         (DFP_EQ, DFP_NE, DFP_LT, DFP_GT, DFP_LE, DFP_GE): Use macros for
2947         calls to dxx_binary_op and decFloat function.
2948         * config/dfp-bit.h: Include decFloat header files.
2949         (decFloat, DFP_BINARY_OP, DFP_COMPARE_OP, DEC_FLOAT_ADD,
2950         DEC_FLOAT_SUBTRACT, DEC_FLOAT_MULTIPLY, DEC_FLOAT_DIVIDE,
2951         DEC_FLOAT_COMPARE, DEC_FLOAT_IS_ZERO, DEC_FLOAT_IS_NAN,
2952         DEC_FLOAT_IS_SIGNED: Define for each of 3 operand widths.
2953
2954 2007-09-10  Harsha Jagasia <harsha.jagasia@amd.com>
2955             Jan Sjodin <jan.sjodin@amd.com>
2956
2957         * tree-vect-analyze.c (vect_analyze_operations): Change
2958         comparison of loop iterations with threshold to less than
2959         or equal to instead of less than. Reduce
2960         min_scalar_loop_bound by one.
2961         * tree-vect-transform.c (vect_estimate_min_profitable_iters): 
2962         Change prologue and epilogue iterations estimate to vf/2,
2963         when unknown at compile-time. Change versioning guard
2964         cost to taken_branch_cost. If peeling for alignment is
2965         unknown at compile-time, change peel guard costs to one
2966         taken branch and one not-taken branch per peeled loop.
2967         If peeling for alignment is known but number of scalar loop
2968         iterations is unknown at compile-time, change peel guard
2969         costs to one taken branch per peeled loop. Change the cost
2970         model equation to consider vector iterations as the loop
2971         iterations less the prologue and epilogue iterations.
2972         Change outside vector cost check to less than or equal to
2973         zero instead of equal to zero.
2974         (vect_do_peeling_for_loop_bound): Reduce
2975         min_scalar_loop_bound by one.
2976         * tree-vectorizer.h: Add TARG_COND_TAKEN_BRANCH_COST and
2977         TARG_COND_NOT_TAKEN_BRANCH_COST.        
2978         * config/i386/i386.h (processor_costs): Add
2979         scalar_stmt_cost, scalar_load_cost, scalar_store_cost,
2980         vec_stmt_cost, vec_to_scalar_cost, scalar_to_vec_cost,
2981         vec_align_load_cost, vect_unalign_load_cost,
2982         vec_store_cost, cond_taken_branch_cost,
2983         cond_not_taken_branch_cost.
2984         Define macros for x86 costs.
2985         * config/i386/i386.c:
2986         (size_cost): Set scalar_stmt_cost, scalar_load_cost,
2987         scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost,
2988         scalar_to_vec_cost, vec_align_load_cost, 
2989         vect_unalign_load_cost, vec_store_cost,
2990         cond_taken_branch_cost, cond_not_taken_branch_cost to one. 
2991         (i386_cost, i486_cost, pentium_cost, pentiumpro_cost,
2992         geode_cost, k6_cost, athlon_cost, pentium4_cost, nocona_cost, 
2993         core2_cost, generic64_cost, generic32_cost): Set to default
2994         untuned costs.
2995         (k8_cost, amdfam10_cost): Costs for vectorization tuned.
2996         (x86_builtin_vectorization_cost): New.
2997
2998 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
2999             Ben Elliston  <bje@au.ibm.com>
3000
3001         * dfp.c: Include decimal128Local.h; 
3002         (dfp_byte_swap): Remove.
3003         (encode_decimal32, decode_decimal32): Don't handle endianness.
3004         (encode_decimal64, decode_decimal64): Ditto.
3005         (encode_decimal128, decode_decimal128): Ditto.
3006         * config/dfp-bit.c (host_to_ieee32, ieee_to_host_32): Ditto.
3007         (__swap64): Remove.
3008         (host_to_ieee_64, ieee_to_host_64): Don't handle endianness.
3009         (__swap128): Remove
3010         (host_to_ieee_128, ieee_to_host_128): Don't handle endianness.
3011         * Makefile.in (DECNUM_H): Add decimal128Local.h.
3012
3013 2007-09-10  David Daney  <ddaney@avtrex.com>
3014
3015         * config/mips/mips.md (UNSPEC_MEMORY_BARRIER): New entry in
3016         define_constants.
3017         (memory_barrier): Rewrote as an insn that clobbers memory.
3018
3019 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
3020
3021         * config/mips/mips.c (mips_global_pointer): Check
3022         call_really_used_regs instead of call_used_regs.
3023         (mips_save_reg_p): Likewise.  Save all call-saved registers
3024         if current_function_saves_all_registers.  Fix indentation.
3025         No longer treat $18 as a special case.
3026         (compute_frame_size): Guard FPR loop with TARGET_HARD_FLOAT.
3027
3028 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
3029
3030         * config/mips/mips.h (MIPS_ARCH_FLOAT_SPEC): New macro.
3031         * config/mips/mips.c (mips_cpu_info_table): Mention it in the
3032         the introductory comment.
3033         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
3034         (override_options): Don't test for it.
3035         * config/mips/sde.h (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
3036         (DRIVER_SELF_SPECS): Add MIPS_ARCH_FLOAT_SPEC.
3037         * config/mips/vr.h: As for config/mips/sde.h.
3038
3039 2007-09-10  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
3040             Revital Eres  <eres@il.ibm.com>
3041
3042         * target.h (struct gcc_target.sched): New field: sms_res_mii.
3043         (struct ddg): Define.
3044         * target-def.h (TARGET_SCHED_SMS_RES_MII): Define.
3045         (TARGET_SCHED): Add TARGET_SCHED_SMS_RES_MII.
3046         * config/spu/spu.c: Include ddg.h.
3047         (TARGET_SCHED_SMS_RES_MII): Define.
3048         (spu_sms_res_mii): New function to calculate mii.
3049         * modulo-sched (res_MII): Use it.
3050         * doc/tm.texi: Document TARGET_SCHED_SMS_RES_MII.
3051
3052 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
3053
3054         * config/s390/s390.c (s390_dump_pool): Create copy of constant
3055         pool entries since they might hold values that must not be shared.
3056
3057 2007-09-10  Uros Bizjak  <ubizjak@gmail.com>
3058
3059         PR target/33369
3060         * gcc/config/i386/sse.md (ashr<mode>3): Change op2 mode to SImode.
3061         Use 'N' operand constraint for op2.
3062         (lshr<mode>3): Ditto.
3063         (ashl<mode>3): Ditto.
3064         (vec_shl_<mode>): Use const_0_to_255_mul_8_operand predicate for op2.
3065         (vec_shr_<mode>): Ditto.
3066         * gcc/config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLL?128,
3067         IX86_BUILTIN_PSRA*?128, IX86_BUILTIN_PSRL?128]: Convert op1 to SImode.
3068
3069 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
3070
3071         * config/s390/s390.md ("fixuns_trunc<BFP:mode><GPR:mode>2"):
3072         Change mode macro in the last real_2expN parameter to uppercase.
3073
3074 2007-09-10  Michael Matz  <matz@suse.de>
3075
3076         * tree-pass.h (pass_cselim): Declare new pass.
3077         * passes.c (init_optimization_passes): Link in pass_cselim.
3078         * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Renamed from
3079         tree_ssa_phiopt; add do_store_elim parameter, handle it by calling
3080         cond_store_replacement.
3081         (condstoretemp): New static variable.
3082         (cond_store_replacement): New function.
3083         (tree_ssa_phiopt, tree_ssa_cs_elim): New wrappers around
3084         tree_ssa_phiopt_worker.
3085         (struct name_to_bb): New.
3086         (get_non_trapping, name_to_bb_hash, name_to_bb_eq, add_or_mark_expr,
3087         nt_init_block, nt_fini_block): New static functions.
3088         (seen_ssa_names, nontrap_set): New static variables.
3089         (gate_cselim, pass_cselim): Define new pass.
3090         * common.opt (ftree-cselim): New flag.
3091         * toplev.c (process_options): Set flag_tree_cselim if required.
3092
3093 2007-09-10  Hans-Peter Nilsson  <hp@axis.com>
3094
3095         * simplify-rtx.c (simplify_relational_operation_1): For recent
3096         canonicalization, don't recurse if op1 equals both PLUS arguments.
3097
3098 2007-09-09  David Daney  <ddaney@avtrex.com>
3099
3100         * optabs.c (expand_sync_operation):  Use plus insn if minus
3101         CONST_INT_P(val).
3102         (expand_sync_fetch_operation):  Ditto.
3103
3104 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
3105
3106         * i386.md (*floatsisf2_mixed_vector): Use cvtdq2ps instead
3107         of cvtpq2ps.
3108         (*floatsisf2_sse_vector): Likewise.
3109
3110 2007-09-09  Krister Walfridsson  <cato@df.lth.se>
3111
3112         * config/netbsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
3113
3114 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
3115
3116         * config/i386/i386.h (ix86_tune_indices): Rename
3117         X86_USE_VECTOR_CONVERTS to X86_TUNE_USE_VECTOR_CONVERTS.
3118         (TARGET_USE_VECTOR_CONVERTS): Updated.
3119         * config/i386/i386.c: Likewise.
3120
3121 2007-09-09  Sandra Loosemore  <sandra@codesourcery.com>
3122             Nigel Stephens <nigel@mips.com>
3123
3124         * doc/invoke.texi (Overall Options):  Add .sx file extension
3125         as a synonym for .S.
3126         * cppspec.c (known_suffixes): Likewise.
3127         * gcc.c (default_compilers): Likewise.
3128
3129 2007-09-09  Rask Ingemann Lambertsen  <rask@sygehus.dk>
3130
3131         PR target/30315
3132         * config/i386/i386.h (CANONICALIZE_COMPARISON): Delete.
3133         * simplify-rtx.c (simplify_relational_operation_1): Add the
3134         canonicalization from i386.h.
3135         * doc/md.texi (Canonicalization of Instructions): Document it.
3136
3137 2007-09-09  Jan Hubicka  <jh@suse.cz>
3138             Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
3139
3140         * i386.h (ix86_tune_indices): Add X86_USE_VECTOR_CONVERTS.
3141         (TARGET_USE_VECTOR_CONVERTS): New.
3142         * i386.md: New post-reload splitters for converting SF to DF and DF to
3143         SF.
3144         (floatsi* expander): Special case vector conversions.
3145         (floatsisf2_mixed_vector, floatsisf2_sse_vector_nointernunit,
3146         floatsisf2_sse_vector_internunit, floatsisf2_sse_vector,
3147         floatsidf2_mixed_vector, floatsidf2_sse_vector): New.
3148         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
3149         Disable when doing vector converts.
3150         (floatsi<mode>2_i387): Disable when
3151         * sse.md (vec_dupv2df): Export.
3152         * i386.c (ix86_tune_features): Enable SSE conversions.
3153
3154 2007-09-09  Richard Guenther  <rguenther@suse.de>
3155
3156         * tree-ssa-operands.c (add_virtual_operand): Only mark
3157         stores as has_volatile_ops if alias information is not available.
3158
3159 2007-09-09  Revital Eres  <eres@il.ibm.com>
3160
3161         * doc/contrib.texi: Add myself.
3162
3163 2007-09-09  Ira Rosen  <irar@il.ibm.com>
3164
3165         * tree-vectorizer.h (stmt_vinfo_set_inside_of_loop_cost,
3166         stmt_vinfo_set_outside_of_loop_cost): New functions.
3167         * tree-vect-transform.c (vect_get_cost_fields): Remove.
3168         (vect_model_simple_cost): Call
3169         stmt_vinfo_set_inside/outside_of_loop_cost to set the relevant cost
3170         field instead of calling vect_get_cost_fields.
3171         (vect_model_store_cost, vect_model_load_cost): Likewise.
3172
3173 2007-09-09  Revital Eres  <eres@il.ibm.com>
3174
3175         * config/rs6000/rs6000.c (paired_init_builtins): Add const
3176         declaration to bdesc_paired_preds variable.
3177         (paired_expand_builtin): Likewise.
3178
3179 2007-09-09  Revital Eres  <eres@il.ibm.com>
3180
3181         * dbgcnt.def (sms_sched_loop): New counter.
3182         * modulo-sched.c: Use sms_sched_loop instead of
3183         MAX_SMS_LOOP_NUMBER to determine the maximum number of loops to
3184         perform swing modulo scheduling on.  Include dbgcnt.h.
3185         * Makefile.in: Add DBGCNT_H to modulo-sched.o.
3186         * params.def: Remove PARAM_MAX_SMS_LOOP_NUMBER.
3187
3188 2007-09-09  Uros Bizjak  <ubizjak@gmail.com>
3189
3190         * config/i386/i386.md (X87MODEF12, SSEMODEF): Remove mode iterators.
3191         Substitute all uses with ...
3192         (MODEF): New mode iterator.
3193
3194         (fix_trunc<mode>_fisttp_i387_1): Remove operand constraints
3195         from pre-regalloc define_insn_and_split splitter pattern.
3196         (*fix_trunc<mode>_i387_1): Ditto.
3197         (*fistdi2_1): Ditto.
3198         (*fist<mode>2_1): Ditto.
3199         (frndintxf2_floor): Ditto.
3200         (*fist<mode>2_floor_1): Ditto.
3201         (frndintxf2_ceil): Ditto.
3202         (*fist<mode>2_ceil_1): Ditto.
3203         (frndintxf2_trunc): Ditto.
3204         (frndintxf2_mask_pm): Ditto.
3205
3206         (prologue): Use (const_int 0) as never generated filler insn.
3207         (epilogue): Ditto.
3208         (sibcall_epilogue): Ditto.
3209         (eh_return_si): Ditto.
3210         (eh_return_di): Ditto.
3211
3212         (add<mode>3): Rename from adddf3 and addsf3.  Macroize expander
3213         using MODEF mode iterator.
3214         (sub<mode>3): Rename from subdf3 and subsf3.  Macroize expander
3215         using MODEF mode iterator.
3216         (mul<mode>3): Rename from muldf3 and mulsf3.  Macroize expander
3217         using MODEF mode iterator.
3218         (nearbyint<mode>2): Rename from nearbyintdf2 and nearbyintsf2.
3219         Macroize expander using MODEF mode iterator.
3220
3221         (zero_extendsidi2): Remove operand constraints from expander.
3222         (smuldi3_highpart): Ditto.
3223         (indirect_jump): Ditto.
3224         (tablejump): Ditto.
3225         (rsqrtsf2): Ditto.
3226         * config/i386/sse.md (storentv4sf): Ditto.
3227         (storentv2df): Ditto.
3228         (storentv2di): Ditto.
3229         (storentsi): Ditto.
3230         (sse2_cvtpd2ps): Ditto.
3231         (vec_interleave_highv16qi): Ditto.
3232         (vec_interleave_lowv16qi): Ditto.
3233         (vec_interleave_highv8hi): Ditto.
3234         (vec_interleave_lowv8hi): Ditto.
3235         (vec_interleave_highv4si): Ditto.
3236         (vec_interleave_lowv4si): Ditto.
3237         (vec_interleave_highv2di): Ditto.
3238         (vec_interleave_lowv2di): Ditto.
3239         (sse2_maskmovdqu): Ditto.
3240         * config/i386/mmx.md (mmx_maskmovq): Ditto.
3241
3242 2007-09-09  Ira Rosen  <irar@il.ibm.com>
3243
3244         * tree-vectorizer.h (enum vect_def_type): Start enumeration from 1.
3245         (struct _slp_tree, struct _slp_instance): Define new data structures
3246         along macros for their access.
3247         (struct _loop_vec_info): Define new fields: strided_stores,
3248         slp_instances, and slp_unrolling_factor along macros for their access.
3249         (enum slp_vect_type): New.
3250         (struct _stmt_vec_info): Define new field, slp_type, and macros for
3251         its access.
3252         (STMT_VINFO_STRIDED_ACCESS): New macro.
3253         (vect_free_slp_tree): Declare.
3254         (vectorizable_load): Add an argument of type slp_tree.
3255         (vectorizable_store, vectorizable_operation, vectorizable_conversion,
3256         vectorizable_assignment): Likewise.
3257         (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
3258         Declare (make extern).
3259         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
3260         (new_loop_vec_info): Likewise.
3261         (destroy_loop_vec_info): Free memory allocated for SLP structures.
3262         * tree-vect-analyze.c: Include recog.h.
3263         (vect_update_slp_costs_according_to_vf): New.
3264         (vect_analyze_operations): Add argument for calls to vectorizable_ ()
3265         functions. For not pure SLP stmts with strided access check that the
3266         group size is power of 2. Update the vectorization factor according to
3267         SLP. Call vect_update_slp_costs_according_to_vf.
3268         (vect_analyze_group_access): New.
3269         (vect_analyze_data_ref_access): Call vect_analyze_group_access.
3270         (vect_free_slp_tree): New functions.
3271         (vect_get_and_check_slp_defs, vect_build_slp_tree, vect_print_slp_tree,
3272         vect_mark_slp_stmts, vect_analyze_slp_instance, vect_analyze_slp,
3273         vect_make_slp_decision, vect_detect_hybrid_slp_stmts,
3274         vect_detect_hybrid_slp): Likewise.
3275         (vect_analyze_loop): Call vect_analyze_slp, vect_make_slp_decision
3276         and vect_detect_hybrid_slp.
3277         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Take
3278         SLP costs into account.
3279         (vect_get_cost_fields): New function.
3280         (vect_model_simple_cost): Make extern, add SLP parameter and handle
3281         SLP.
3282         (vect_model_store_cost, vect_model_load_cost): Likewise.
3283         (vect_get_constant_vectors): New function.
3284         (vect_get_slp_vect_defs, vect_get_slp_defs,
3285         vect_get_vec_defs_for_stmt_copy, vect_get_vec_defs_for_stmt_copy,
3286         vect_get_vec_defs): Likewise.
3287         (vectorizable_reduction): Don't handle SLP for now.
3288         (vectorizable_call): Don't handle SLP for now. Add argument to
3289         vect_model_simple_cost.
3290         (vectorizable_conversion): Handle SLP (call vect_get_vec_defs to
3291         get SLPed and vectorized defs). Fix indentation and spacing.
3292         (vectorizable_assignment): Handle SLP.
3293         (vectorizable_induction): Don't handle SLP for now.
3294         (vectorizable_operation): Likewise.
3295         (vectorizable_type_demotion): Add argument to
3296         vect_model_simple_cost.
3297         (vectorizable_type_promotion): Likewise.
3298         (vectorizable_store, vectorizable_load): Handle SLP.
3299         (vectorizable_condition): Don't handle SLP for now.
3300         (vect_transform_stmt): Add a new argument for SLP. Check that there is
3301         no SLP transformation required for unsupported cases. Add SLP
3302         argument for supported cases.
3303         (vect_remove_stores): New function.
3304         (vect_schedule_slp_instance, vect_schedule_slp): Likewise.
3305         (vect_transform_loop): Schedule SLP instances.
3306         * Makefile.in: (tree-vect-analyze.o): Depend on recog.h.
3307
3308 2007-09-09  Andrew Haley  <aph@redhat.com>
3309
3310         * optabs.c (sign_expand_binop): Set libcall_gen = NULL in the fake
3311         signed optab.
3312
3313 2007-09-09  Hans-Peter Nilsson  <hp@axis.com>
3314
3315         Divide REG_LABEL notes into REG_LABEL_OPERAND and REG_LABEL_TARGET.
3316         * doc/rtl.texi (Insns): Specify when a label_ref makes a jump_insn.
3317         Similar for what label_refs can go in the JUMP_TARGET field.  Split
3318         REG_LABEL documentation into REG_LABEL_TARGET and REG_LABEL_OPERAND.
3319         * reload.c (find_reloads): Generate REG_LABEL_OPERAND, not
3320         REG_LABEL when replacing an operand with a LABEL_REF for a
3321         non-jump insn.
3322         (subst_reloads): When replacing a LABEL_REG with a register,
3323         instead of generating a REG_LABEL note, assert that there already
3324         is one or that the label is a known target for the insn.
3325         * rtlanal.c (computed_jump_p): Instead of looking for a REG_LABEL
3326         note, check the JUMP_LABEL field.  Remove "else" after return.
3327         * reorg.c (emit_delay_sequence): Replace case for REG_LABEL with
3328         cases for REG_LABEL_OPERAND and REG_LABEL_TARGET.
3329         (fill_slots_from_thread): Handle both REG_LABEL_OPERAND and
3330         REG_LABEL_TARGET notes, including the JUMP_TARGET field on JUMP_P
3331         insns.  Iterate over all notes; don't assume there's only one.
3332         * cse.c (recorded_label_ref): Adjust comment to refer to
3333         REG_LABEL_OPERAND.
3334         (cse_extended_basic_block): Do LABEL_REF check for all INSN_P
3335         insns, not just NONJUMP_INSN_P.
3336         (check_for_label_ref): For JUMP_P insns, check that the LABEL_REF
3337         isn't a jump target.
3338         * jump.c (rebuild_jump_labels): Adjust head comment.
3339         (init_label_info): Ditto.  Remove REG_LABEL_OPERAND notes only;
3340         don't reset REG_LABEL_TARGET notes, including the JUMP_LABEL field.
3341         (mark_all_labels): For JUMP_P insns without a target, check if the
3342         the target is noted on the previous nonjump insn.
3343         (mark_jump_label_1): New function, guts from mark_jump_label.
3344         <case IF_THEN_ELSE>: Handle first operand as a non-target when
3345         marking jump target labels.
3346         <case LABEL_REF>: Adjust for whether to generate a
3347         REG_LABEL_TARGET or a REG_LABEL_OPERAND note.
3348         For 'E' format rtl, iterate in descending element order.
3349         (delete_related_insns): Handle both REG_LABEL_TARGET and
3350         REG_LABEL_OPERAND notes.  For JUMP_P insns with labels with zero
3351         reference count, delete and fallthrough.  Move finding-next-
3352         non-deleted insn last in the function.  Look at all INSN_P insns
3353         for REG_LABEL_OPERAND notes.
3354         (redirect_jump_2): Assert that OLABEL equals the old JUMP_LABEL of
3355         JUMP.
3356         * print-rtl.c (print_rtx): For JUMP_P insns and a non-NULL
3357         JUMP_LABEL, output the INSN_UID of it.
3358         * gcse.c: Adjust comments as appropriate to say REG_LABEL_OPERAND
3359         and/or REG_LABEL_TARGET.
3360         (add_label_notes): Only add REG_LABEL_OPERAND notes.  Put in line
3361         with jump.c copy by only adding notes for labels actually
3362         referenced in the insn.
3363         * emit-rtl.c (try_split): Don't assume only NONJUMP_INSN_P need
3364         usage count increment; handle all INSN_P trial insns.
3365         (emit_copy_of_insn_after): Change to not copy REG_LABEL_OPERAND
3366         notes.
3367         * rtl.h (struct rtx_def) <volatil>: Adjust to mention
3368         REG_LABEL_TARGET and REG_LABEL_OPERAND.
3369         (LABEL_REF_NONLOCAL_P): Allow REG_LABEL_TARGET and
3370         REG_LABEL_OPERAND.
3371         * combine.c (distribute_notes): Adjust for REG_LABEL_TARGET on
3372         JUMP_P insns and REG_LABEL_OPERAND everywhere.
3373         * sched-rgn.c (is_cfg_nonregular): Check for REG_LABEL_OPERANDS
3374         on all INSN_P insns.
3375         * reg-notes.def (LABEL_TARGET, LABEL_OPERAND): Split from LABEL.
3376         * cfgrtl.c (delete_insn): Adjust to handle REG_LABEL_TARGET and
3377         REG_LABEL_OPERAND notes.
3378         * reload1.c (calculate_needs_all_insns): Adjust comments.
3379         (set_label_offsets): Adjust to look for REG_LABEL_OPERAND notes.
3380         * config/alpha/alpha.md (split for load of an address into a
3381         four-insn sequence on Unicos/Mk): Adjust to use
3382         REG_LABEL_OPERAND.
3383         * config/sh/sh.md (sh_reorg, final_prescan_insn): Ditto.
3384
3385 2007-09-09  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
3386
3387         Revert:
3388         2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
3389         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
3390         FOR_BB_INSNS_SAFE instead of for loop.
3391         * cse.c (cse_extended_basic_block): Likewise.
3392         * postreload.c (reload_cse_regs_1): New variable next. Make sure
3393         that the for loop does not invoke NEXT_INSN on a deleted insn.
3394         * function.c (instantiate_virtual_regs): Likewise.
3395         * lower-subreg.c (remove_retval_note): Likewise.
3396         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
3397         FOR_BB_INSNS.
3398         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
3399         a deleted insn.
3400         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
3401         insn, if it's a jump.
3402         (try_redirect_by_replacing_jump): New variable jump_p. Call
3403         tablejump_p before delete_insn_chain.
3404         * reload1.c (reload): New variable next. Make sure that the for
3405         loop does not invoke NEXT_INSN on a deleted insn.
3406         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
3407         (delete_output_reload): New variable prev. Make sure the the for
3408         loops do not invoke PREV_INSN on a deleted insn.
3409
3410 2007-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3411
3412         * pa/constraints.md: Remove 'X' from unused letters comment.
3413
3414 2007-09-08  Richard Guenther  <rguenther@suse.de>
3415
3416         * tree-tailcall.c (find_tail_calls): If we don't have aliases
3417         computed check stmt_ann->references_memory instead of counting
3418         virtual operands.
3419  
3420 2007-09-08  Segher Boessenkool  <segher@kernel.crashing.org>
3421
3422         * cse.c (fold_rtx): Use validate_unshare_change() instead of
3423         validate_change() in one more case.
3424
3425 2007-09-08  Zdenek Dvorak  <ook@ucw.cz>
3426
3427         PR tree-optimization/32283
3428         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Use
3429         estimated_loop_iterations.
3430         (determine_use_iv_cost_condition): Decrease cost of expressions
3431         used in iv elimination.
3432
3433 2007-09-08  Richard Guenther  <rguenther@suse.de>
3434
3435         * tree-cfg.c (verify_gimple_expr): Avoid building new
3436         pointer types, use TYPE_POINTER_TO if available instead.
3437
3438 2007-09-08  Uros Bizjak  <ubizjak@gmail.com>
3439
3440         PR target/33329
3441         PR rtl-optimization/26449
3442         * config/i386/sse.md (mulv4si3): Do not expand sse2 sequence.
3443         (*sse2_mulv4si3): New define_insn_and_split pattern. Split insn in
3444         split1 pass.
3445         (mulv16qi3): Implement as define_insn_and_split pattern instead of
3446         define_expand.  Split insn in split1 pass.
3447         (mulv2di3): Ditto.
3448
3449 2007-09-08  Dorit Nuzman  <dorit@il.ibm.com>
3450
3451         PR tree-optimization/33301
3452         * tree-vect-analyze (analyze_operations): Look at the type of the rhs
3453         when relevant.
3454
3455 2007-09-07  Zdenek Dvorak  <ook@ucw.cz>
3456
3457         PR tree-optimization/32183
3458         * Makefile.in (tree-ssa-reassoc.o): Also depend on $(CFGLOOP_H).
3459
3460         * tree-ssa-reassoc.c: Include cfgloop.h.
3461         (is_reassociable_op): Add a loop argument and return true only
3462         for inside loop.
3463         (linearize_expr): Updated.
3464         (should_break_up_subtract): Likewise.
3465         (linearize_expr_tree): Likewise.
3466         (init_reassoc): Call loop_optimizer_init with
3467         AVOID_CFG_MODIFICATIONS.  Remove calculate_dominance_info call
3468         with CDI_DOMINATORS.
3469         (fini_reassoc): Call loop_optimizer_finalize.
3470
3471 2007-09-07  Sterling Augustine  <sterling@tensilica.com>
3472
3473         * config/xtensa/lib2funcs.S (__xtensa_sync_caches): Use an ISYNC even
3474         if there is no i-cache.
3475
3476 2007-09-07  Richard Guenther  <rguenther@suse.de>
3477
3478         Reapply
3479         2007-09-06  Richard Guenther  <rguenther@suse.de>
3480
3481         PR tree-optimization/32586
3482         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
3483         folding if nothing changed.
3484         (simplify_unary_expression): New function.  Do tree combining
3485         on conversion like codes.
3486         (try_to_simplify): Call it.
3487
3488 2007-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3489
3490         PR target/33286
3491         * gthr-posix.h (__gthread_active_p): Add implementation for hppa-hpux.
3492         (__gthread_active,__gthread_start, __gthread_active_init): New.
3493         * gthr-posix95.h: Likewise.
3494
3495 2007-09-07  Roman Zippel <zippel@linux-m68k.org>
3496
3497         * function.h (struct function): Rename calls_unwind_init
3498         to saves_all_registers.
3499         (current_function_saves_all_registers): Renamed from
3500         current_function_calls_unwind_init.
3501         * reload1.c (reload): Set current_function_saves_all_registers.
3502         * except.c (expand_builtin_unwind_init): Likewise.
3503         * config/m68k/m68k.c (m68k_save_reg): Use
3504         current_function_saves_all_registers to save pic register.
3505
3506 2007-09-07  Janis Johnson  <janis187@us.ibm.com>
3507
3508         config/m68k/m68k.c (floating_exact_log2): Update call to real_2expN.
3509         config/s390/s390.md (fixuns_trunc<BFP:mode><GPR:mode>2): Ditto.
3510
3511         Reapply reverted changes:
3512
3513         2007-09-06  Jan Hubicka  <jh@suse.cz>
3514  
3515         * config/i386.c (ix86_expand_lround, ix86_expand_round): Update call
3516         of real_2expN.
3517
3518         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
3519
3520         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
3521         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
3522
3523         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
3524
3525         * optabs.c (expand_float): Convert unsigned integer as signed only
3526         if it provides sufficient accuracy; add mode argument to real_2expN.
3527         (expand_fix): Fix comment typos; extend binary float into mode
3528         wider than destination for converion to unsigned integer; add mode
3529         argument to real_2expN.
3530         * real.c (real_2expN): Add mode argument to special-case decimal
3531         float values.
3532         * real.h (real_2expN): Ditto.
3533         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
3534         real_2expN.
3535         (fixed_from_string): Ditto.
3536         (fixed_to_decimal): Ditto.
3537         (fixed_convert_from_real): Ditto.
3538         (real_convert_from_fixed): Ditto.
3539         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
3540         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
3541         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
3542         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
3543
3544 2007-09-07  Diego Novillo  <dnovillo@google.com>
3545
3546         * tree-flow.h (const_block_stmt_iterator): Remove.
3547         Update all users to use block_stmt_iterator.
3548         * tree-iterator.h (const_tree_stmt_iterator): Remove.
3549         Update all users to use tree_stmt_iterator.
3550
3551 2007-09-07  Sandra Loosemore  <sandra@codesourcery.com>
3552
3553         * config/mips/mips.c (mips_set_current_function): Temporarily
3554         make this a no-op to fix bootstrap errors, pending rewrite.
3555
3556 2007-09-07  Jan Hubicka  <jh@suse.cz>
3557
3558         * reorg.c (dbr_schedule): Move code removing placeholder USEs later
3559         in the pass.
3560
3561 2007-09-07  Dorit Nuzman  <dorit@il.ibm.com>
3562
3563         PR tree-optimization/33299
3564         * tree-vect-transform.c (vect_create_epilog_for_reduction): Update
3565         uses for all relevant loop-exit phis, not just the first.
3566
3567 2007-09-07  Richard Guenther  <rguenther@suse.de>
3568
3569         PR middle-end/33330
3570         * tree-ssa-operands.c (access_can_touch_variable): An access
3571         of the form (*p)[0] can touch a variable of same size.
3572
3573 2007-09-07  Jan Hubicka  <jh@suse.cz>
3574
3575         * passes.c (init_optimization_passes): Add simple dce and addressable
3576         passes.
3577         * tree-ssa.c (execute_update_addresses_taken): New function.
3578         (pass_update_address_taken): New.
3579         * tree-ssa-dse.c (execute_simple_dse): New function.
3580         (pass_simple_dse): New.
3581         * tree-pass.h (pass_simple_dse, pass_update_address_taken): Declare.
3582
3583 2007-09-07  Tobias Burnus  <burnus@net-b.de>
3584
3585         PR middle-end/33321
3586         * doc/invoke.texi: Fix -Wstrict-overflow= table.
3587
3588 2007-09-07  Richard Guenther  <rguenther@suse.de>
3589
3590         Revert
3591         2007-09-06  Richard Guenther  <rguenther@suse.de>
3592
3593         PR tree-optimization/32586
3594         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
3595         folding if nothing changed.
3596         (simplify_unary_expression): New function.  Do tree combining
3597         on conversion like codes.
3598         (try_to_simplify): Call it.
3599
3600 2007-09-07  Richard Guenther  <rguenther@suse.de>
3601             Uros Bizjak  <ubizjak@gmail.com>
3602
3603         PR tree-optimization/32821
3604         * tree_if_conv.c (combine_blocks): Use alloc_stmt_list instead of
3605         NULL in the call to set_bb_stmt_list.
3606
3607 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
3608
3609         * config/mips/mips.c (build_mips16_call_stub): Emit all direct
3610         float calls here, rather than leaving some to the caller.
3611         Use call_internal_direct and call_value_internal_direct.
3612         * config/mips/mips.md (call_internal_direct): New pattern.
3613         (call_value_internal_direct): Likewise.
3614
3615 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
3616
3617         * config/mips/mips.c (mips_base_move_loop_invariants): New variable.
3618         (mips_set_mips16_mode): Restore flag_move_loop_invariants, then set
3619         to 0 for MIPS16.
3620         (override_options): Set mips_base_move_loop_invariants.
3621
3622 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
3623
3624         * config/mips/mips.opt (mcode-readable=): Move to keep list
3625         alphabetical.
3626
3627 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
3628
3629         * doc/invoke.texi: Document the MIPS -mlocal-sdata, -mextern-sdata
3630         and -mgpopt options.  Adjust the -G documentation to match.
3631         * config/mips/mips.opt (mextern-data, mgpopt, mlocal-data): New.
3632         * config/mips/mips.c (mips_rtx_constant_in_small_data_p): New
3633         function, split out from mips_classify_symbol.  Return false for
3634         !TARGET_LOCAL_SDATA.
3635         (mips_classify_symbol): Call mips_rtx_constant_in_small_data_p.
3636         Only use GP-relative accesses for non-pool symbols if TARGET_GPOPT.
3637         (override_options): Check whether the -mgpopt setting is consistent
3638         with the other flags.
3639         (symbolic_expression_p): Delete.
3640         (mips_select_rtx_section): Use mips_rtx_constant_in_small_data_p
3641         and default_elf_select_rtx_section.
3642         (mips_in_small_data_p): Honor section attributes for MIPS16 too.
3643         Return false for local data unless TARGET_LOCAL_SDATA.  Likewise
3644         external data and TARGET_EXTERN_SDATA.
3645
3646 2007-09-07  Tobias Burnus  <burnus@net-b.de>
3647
3648         PR fortran/33303
3649         * doc/cpp.texi (Common Predefined Macros): Add __GFORTRAN__.
3650
3651 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
3652
3653         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
3654         FOR_BB_INSNS_SAFE instead of for loop.
3655         * cse.c (cse_extended_basic_block): Likewise.
3656         * postreload.c (reload_cse_regs_1): New variable next. Make sure
3657         that the for loop does not invoke NEXT_INSN on a deleted insn.
3658         * function.c (instantiate_virtual_regs): Likewise.
3659         * lower-subreg.c (remove_retval_note): Likewise.
3660         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
3661         FOR_BB_INSNS.
3662         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
3663         a deleted insn.
3664         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
3665         insn, if it's a jump.
3666         (try_redirect_by_replacing_jump): New variable jump_p. Call
3667         tablejump_p before delete_insn_chain.
3668         * reload1.c (reload): New variable next. Make sure that the for
3669         loop does not invoke NEXT_INSN on a deleted insn.
3670         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
3671         (delete_output_reload): New variable prev. Make sure the the for
3672         loops do not invoke PREV_INSN on a deleted insn.
3673
3674 2007-09-06  Zdenek Dvorak  <ook@ucw.cz>
3675
3676         * cgraphbuild.c (rebuild_cgraph_edges): Export.
3677         * cgraph.h (rebuild_cgraph_edges): Declare.
3678         * tree-pass.h (pass_expand_omp_ssa): New.
3679         * omp-low.c (find_omp_clause): Export.
3680         (copy_var_decl): Split from omp_copy_decl_2.
3681         (build_omp_barrier): Return the call to emit instead of emitting
3682         it directly.
3683         (lower_rec_input_clauses, expand_omp_single): Gimplify the result of
3684         build_omp_barrier.
3685         (extract_omp_for_data, expand_parallel_call, expand_omp_parallel,
3686         expand_omp_for_generic, expand_omp_for_static_nochunk,
3687         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
3688         Adapted to work on SSA form.
3689         (execute_expand_omp): Do not invalidate dominance information.
3690         (gate_expand_omp): Do not run with -fopenmp-ssa flag.
3691         (gate_expand_omp_ssa, pass_expand_omp_ssa): New.
3692         * gimplify.c (gimplify_omp_for): Ensure that the control variable is
3693         a gimple_reg.
3694         (force_gimple_operand): Allow gimplifying code expressions without
3695         value.
3696         * tree-predcom.c (mark_virtual_ops_for_renaming): Handle phi nodes.
3697         * common.opt (fopenmp-ssa): New.
3698         * tree-flow.h (find_omp_clause, copy_var_decl): Declare.
3699         * Makefile.in (tree-cfg.o): Add TREE_INLINE_H dependency.
3700         * tree-cfg.c: Include tree-inline.h.
3701         (struct move_stmt_d): Replace vars_to_remove by vars_map field.
3702         (replace_by_duplicate_decl, replace_ssa_name,
3703         mark_virtual_ops_in_region): New functions.
3704         (move_stmt_r, move_block_to_fn, move_sese_region_to_fn): Adapted
3705         to work on SSA form.
3706         * passes.c (init_optimization_passes): Add pass_expand_omp_ssa pass.
3707         * tree-ssa-operands.c (get_expr_operands): Handle operands of OMP
3708         constructs.
3709
3710 2007-09-06  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
3711
3712         * tree-loop-linear.c: Include obstack.h.
3713         (linear_transform_loops): New obstack lambda_obstack.
3714         Initialize it, pass it to gcc_loopnest_to_lambda_loopnest,
3715         lambda_loopnest_transform, lambda_loopnest_to_gcc_loopnest calls
3716         and free afterwards.
3717         * lambda.h (struct obstack): New forward declaration.
3718         (lambda_linear_expression_new): New parameter of type struct
3719         obstack *.
3720         (lambda_loopnest_new): Likewise.
3721         (lambda_loopnest_transform): Likewise.
3722         (lambda_body_vector_new): Likewise.
3723         (lambda_body_vector_compute_new): Likewise.
3724         (gcc_loopnest_to_lambda_loopnest): Likewise.
3725         (lambda_loopnest_to_gcc_loopnest): Likewise.
3726         * lambda-code.c: Include obstack.h.
3727         (lambda_lattice_new): New parameter lambda_obstack.  Use it for
3728         allocation of ret.
3729         (lambda_body_vector_new): Likewise.
3730         (lambda_linear_expression_new): Likewise.
3731         (lambda_lattice_new): Likewise.
3732         (lambda_loopnest_new): Likewise.  Additionally use obstack to
3733         allocate LN_LOOPS(ret).
3734         (lambda_lattice_compute_base): New parameter lambda_obstack.  Pass
3735         it to lambda_lattice_new.
3736         (lambda_body_vector_compute_new): New parameter lambda_obstack.
3737         Pass it to lambda_body_vector_new.
3738         (lambda_lattice_compute_base): New paramater lambda_obstack.  Pass
3739         it to lambda_lattice_new.
3740         (compute_nest_using_fourier_motzkin): New parameter lambda_obstack.
3741         Pass it to lambda_loopnest_new, lambda_linear_expression_new.
3742         (lambda_compute_target_space): Likewise.
3743         (lambda_compute_auxillary_space): New parameter lambda_obstack.
3744         Pass it to lambda_lattice_compute_base and
3745         compute_nest_using_fourieer_motzkin.
3746         (lambda_loopnest_transform): New parameter lambda_obstack.  Pass
3747         it to lambda_lattice_compute_base, lambda_lattice_auxillary_space
3748         and lambda_lattice_compute_target_space.
3749         (gcc_tree_to_linear_expression): Nex parameter lambda_obstack.
3750         Pass it to lambda_linear_expression_new.
3751         (gcc_loop_to_lambda_loop): New parameter lambda_obstack.  Pass it
3752         to gcc_tree_to_linear_expression.
3753         (gcc_loopnest_to_lambda_loopnest): New parameter lambda_obstack.
3754         Pass it to gcc_loop_to_lambda_loop and lambda_loopnest_new.
3755         (lambda_loopnest_to_gcc_loopnest): New parameter lambda_obstack.
3756         Pass it to lambda_body_vector_new and
3757         lambda_body_vector_compute_new.
3758         * Makefile.in (tree-loop-linear.o): Add $(OBSTACK_H) dependency.
3759         (lambda-code.o): Likewise.
3760
3761 2007-09-06  Chao-ying Fu  <fu@mips.com>
3762
3763         * ginclude/stdfix.h: New file.
3764         * Makefile.in (USER_H): Add $(srcdir)/ginclude/stdfix.h.
3765         (convert.o): Add dependence on fixed-value.h.
3766         * c-convert.c (convert): Support FIXED_POINT_TYPE.
3767         * c-cppbuiltin.c (builtin_define_fixed_point_constants): New function
3768         to define fixed-point constants.
3769         (c_cpp_builtins): Define fixed-point constants.
3770         * convert.c (fixed-value.h): New include.
3771         (convert_to_real): Update comment to include fixed-point.
3772         Support FIXED_POINT_TYPE.
3773         (convert_to_integer): Update comment to include fixed-point.
3774         Support FIXED_POINT_TYPE.
3775         (convert_to_complex): Support FIXED_POINT_TYPE.
3776         (convert_to_fixed): New function.
3777         * convert.h (convert_to_fixed): Declare.
3778         * genopinit.c: Add comment about $Q for only fixed-point modes.
3779         (optabs): Add fract_optab, fractuns_optab, satfract_optab,
3780         satfractuns_optab, add_optab, ssadd_optab, usadd_optab, sub_optab,
3781         sssub_optab, ussub_optab, smul_optab, ssmul_optab, usmul_optab,
3782         ssmadd_widen_optab, usmadd_widen_optab, ssdiv_optab, udiv_optab,
3783         usdiv_optab, ssashl_optab, usashl_optab, neg_optab, ssneg_optab,
3784         usneg_optab for fixed-point modes.
3785         (gen_insn): Add force_fixed to track the $Q format for all fixed-point
3786         modes.
3787         * optabs.c (optab_for_tree_code): For *DIV_EXPR, LSHIFT_EXPR,
3788         PLUS_EXPR, MINUS_EXPR, MULT_EXPR, NEGATE_EXPR, return signed or
3789         unsigned saturation optabs, when type is saturating.
3790         (shift_optab_p): Return true for SS_ASHIFT or US_ASHIFT.
3791         (expand_fixed_convert): New function.
3792         (gen_fixed_libfunc, gen_signed_fixed_libfunc,
3793         gen_unsigned_fixed_libfunc, gen_int_fp_fixed_libfunc,
3794         gen_int_fp_signed_fixed_libfunc, gen_int_fixed_libfunc,
3795         gen_int_signed_fixed_libfunc, gen_int_unsigned_fixed_libfunc,
3796         gen_fract_conv_libfunc, gen_fractuns_conv_libfunc,
3797         gen_satfract_conv_libfunc, gen_satfractuns_conv_libfunc): New
3798         functions.
3799         (init_optabs): Initialize ssadd_optab, usadd_optab, sssub_optab,
3800         ussub_optab, ssmul_optab, usmul_optab, ssmadd_widen_optab,
3801         usmadd_widen_optab, ssmsub_widen_optab, usmsub_widen_optab,
3802         ssdiv_optab, usdiv_optab, ssashl_optab, usashl_optab, ssneg_optab,
3803         usneg_optab, fract_optab, fractuns_optab, satfract_optab,
3804         satfractuns_optab.
3805         Initialize fixed-point libraries, including add, ssadd, usadd, sub,
3806         sssub, ussub, mul, ssmul, usmul, div, ssdiv, udiv, usdiv, ashl,
3807         ssashl, usashl, ashr, lshr, neg, ssneg, usneg, cmp, fract, satfract,
3808         fractuns, satfractuns.
3809         * optabs.h (enum optab_index): Add OTI_ssadd, OTI_usadd, OTI_sssub,
3810         OTI_ussub, OTI_ssmul, OTI_usmul, OTI_ssdiv, OTI_usdiv, OTI_ssneg,
3811         OTI_usneg, OTI_ssashl, OTI_usashl, OTI_ssmadd_widen, OTI_usmadd_widen,
3812         OTI_ssmsub_widen,  OTI_usmsub_widen.
3813         (ssadd_optab, usadd_optab, sssub_optab, ussub_optab, ssmul_optab,
3814         usmul_optab, ssdiv_optab, usdiv_optab, ssneg_optab, usneg_optab,
3815         ssashl_optab, usashl_optab, ssmadd_widen_optab, usmadd_widen_optab,
3816         umsub_widen_optab, usmsub_widen_optab): Define.
3817         (enum convert_optab_index): Add COI_fract, COI_fractuns, COI_satfract,
3818         COI_satfractuns.
3819         (fract_optab, fractuns_optab, satfract_optab, satfractuns_optab):
3820         Define.
3821         (expand_fixed_convert): Declare.
3822         * expr.c (convert_move): Support the move of fixed-point modes.
3823         (emit_move_insn_1): Handle fixed-point mode to move via integer.
3824         (categorize_ctor_elements_1): Handle FIXED_CST.
3825         (count_type_elements): Handle FIXED_POINT_TYPE.
3826         (expand_expr_real_1): For VECTOR_CST, check MODE_VECTOR_FRACT,
3827         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
3828         Support FIXED_CST.
3829         For PLUS_EXPR and MINUS_EXPR, support saturating and non-saturating
3830         multiply and add/subtract for fixed-point types.
3831         For MULT_EXPR, *DIV_EXPR, *SHIFT_EXPR, if the mode if a fixed-point
3832         mode, we jump to binop directly.
3833         Support FIXED_CONVERT_EXPR.
3834         (do_store_flag): Check FIXED_CST to put a constant second.
3835         (vector_mode_valid_p): Handle MODE_VECTOR_FRACT,
3836         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
3837         (const_vector_from_tree): Support FIXED_CST.
3838         * doc/extend.texi (Fixed-Point): New node.
3839         * doc/md.texi (ssadd, usadd, sssub, ussub, ssmul, usmul, ssdiv, usdiv,
3840         ssmadd, usmadd, ssmsub, usmsub, ssashl, usashl, ssneg, usneg, fract,
3841         satfract, fractuns, satfractuns): Document them.
3842
3843 2007-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
3844
3845         * config/bfin/bfin.h (PREFERRED_RELOAD_CLASS): Don't reload autoinc
3846         addresses into I registers.
3847
3848 2007-09-06  Jan Hubicka  <jh@suse.cz>
3849             Andreas Tobler  <a.tobler@schweiz.org>
3850
3851         * config/darwin.c (machopic_indirect_data_reference): Avoid invalid
3852         sharing.
3853         (machopic_legitimize_pic_address): Likewise.
3854
3855 2007-09-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3856             Jan Hubicka  <jh@suse.cz>
3857
3858         * config/spu/spu.md (floatsidf2): Use convert_optab_libfunc
3859         instead of ufloat_optab->handlers directly.
3860         (floatdidf2): Likewise.
3861
3862 2007-09-06  Sandra Loosemore  <sandra@codesourcery.com>
3863
3864         * config/mips/mips.c:  Include diagnostic.h.
3865         (mips_set_current_function): Check errorcount and sorrycount 
3866         before generating RTL.
3867
3868 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
3869
3870         PR target/33256
3871         * config/mips/mips.c (mips_classify_symbolic_expression): New function.
3872         (mips_classify_address): Use it instead of mips_symbolic_constant_p.
3873         (print_operand_reloc): Likewise.
3874
3875 2007-09-06  Janis Johnson  <janis187@us.ibm.com>
3876
3877         Revert:
3878
3879         2007-09-06  Jan Hubicka  <jh@suse.cz>
3880  
3881         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
3882         real_2expN.
3883
3884         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
3885
3886         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
3887         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
3888
3889         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
3890
3891         * optabs.c (expand_float): Convert unsigned integer as signed only
3892         if it provides sufficient accuracy; add mode argument to real_2expN.
3893         (expand_fix): Fix comment typos; extend binary float into mode
3894         wider than destination for converion to unsigned integer; add mode
3895         argument to real_2expN.
3896         * real.c (real_2expN): Add mode argument to special-case decimal
3897         float values.
3898         * real.h (real_2expN): Ditto.
3899         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
3900         real_2expN.
3901         (fixed_from_string): Ditto.
3902         (fixed_to_decimal): Ditto.
3903         (fixed_convert_from_real): Ditto.
3904         (real_convert_from_fixed): Ditto.
3905         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
3906         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
3907         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
3908         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
3909
3910 2007-09-06  Tom Tromey  <tromey@redhat.com>
3911
3912         * tree-cfg.c (remove_bb): Only warn if line is non-zero.
3913         * c-pch.c (c_common_read_pch): Restore current location after
3914         reading PCH file.
3915         * tree.c (expand_location): Update.
3916         (expr_filename): Changed return type.  Unified the two cases.
3917         (expr_lineno): Likewise.
3918         (annotate_with_file_line): Don't use EXPR_LINENO and EXPR_FILENAME
3919         as lvalues.
3920         * toplev.c (line_table): Changed type.
3921         (general_init): Update.
3922         (realloc_for_line_map): New function.
3923         (general_init): Allocate line_table using GC.
3924         * fix-header.c (line_table): Changed type.
3925         (read_scan_file): Update.
3926         (read_scan_file): Update.
3927         * c-ppoutput.c (maybe_print_line): Update.
3928         (print_line): Update.
3929         (cb_line_change): Update.
3930         (cb_define): Update.
3931         (pp_file_change): Update.
3932         * c-opts.c (c_common_init_options): Update.
3933         (finish_options): Update.
3934         (push_command_line_include): Update.
3935         * c-lex.c (cb_line_change): Update.
3936         (cb_def_pragma): Update.
3937         (cb_define): Update.
3938         (cb_undef): Update.
3939         (c_lex_with_flags): Use cpp_get_token_with_location.
3940         * input.h (line_table): Changed type.
3941         (location_from_locus): New macro.
3942         * tree.h (EXPR_FILENAME): No longer an lvalue.
3943         (EXPR_LINENO): Likewise.
3944         (expr_locus, set_expr_locus): Declare separately for
3945         USE_MAPPED_LOCATION.
3946         (expr_filename, expr_lineno): Changed return type.
3947         * gimplify.c (tree_to_gimple_tuple): Use SET_EXPR_LOCUS.
3948         * cfgexpand.c (expand_gimple_cond_expr): Use location_from_locus.
3949         (expand_gimple_basic_block): Likewise.
3950         * final.c (final_scan_insn): Use expanded_location.
3951
3952 2007-09-06  Richard Guenther  <rguenther@suse.de>
3953
3954         PR tree-optimization/32586
3955         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
3956         folding if nothing changed.
3957         (simplify_unary_expression): New function.  Do tree combining
3958         on conversion like codes.
3959         (try_to_simplify): Call it.
3960         * builtins.c (fold_builtin_cexp): Fold the built expressions.
3961         * fold-const.c (fold_unary): Test result of get_callee_fndecl().
3962
3963 2007-09-06  Jan Hubicka  <jh@suse.cz>
3964
3965         PR target/33318
3966         * cse.c (fold_rtx): Avoid invalid sharing.
3967
3968 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
3969
3970         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
3971         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
3972
3973 2007-09-06  Revital Eres  <eres@il.ibm.com>