OSDN Git Service

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