OSDN Git Service

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