OSDN Git Service

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