OSDN Git Service

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