OSDN Git Service

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