OSDN Git Service

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