OSDN Git Service

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