OSDN Git Service

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