OSDN Git Service

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