OSDN Git Service

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