OSDN Git Service

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