OSDN Git Service

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