OSDN Git Service

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