OSDN Git Service

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