OSDN Git Service

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