OSDN Git Service

1e56d980a3dbbc8248abb23d161e5de29947f0d5
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-09-04  Jan Hubicka  <jh@suse.cz>
2
3         * regrename.c(copyprop_hardreg_forward_1): Unshare when doing copyprop.
4
5 2007-09-04  Jan Hubicka  <jh@suse.cz>
6
7         * regrename.c (build_def_use): Don't share RTL between MATCH_OPERATOR
8         and corresponding MATCH_DUP.
9
10 2007-09-04  Uros Bizjak  <ubizjak@gmail.com>
11
12         PR middle-end/33187
13         * combine.c (subst): Do not try to simplify X if it represents load
14         of FP constant from the constant pool via float extension.
15
16 2007-09-04  Ben Elliston  <bje@au.ibm.com>
17
18         * c-opts.c: Include "tm_p.h".
19         * Makefile.in (c-opts.o): Add $(TM_P_H) as a dependency.
20
21 2007-09-04  Richard Guenther  <rguenther@suse.de>
22
23         PR tree-optimization/33291
24         * tree-pretty-print.c (dump_generic_node): Dump all
25         qualifiers for pointer types, not only first.  Dump
26         qualifiers for aggregate types as well.
27         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Always
28         use the canonical type for building ARRAY_REFs.
29         * gimplify.c (canonicalize_addr_expr): Clean up.  The
30         correct validness check is compatibility of the pointer
31         types.  Always use the canonical type for building
32         ARRAY_REFs and ADDR_EXPRs.
33         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Revert
34         change that disabled propagation of ADDR_EXPRs into statements
35         with volatile ops.
36
37 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
38
39         * config/arm/arm.md (mulsidi3, umulsidi3, mulsi3_highpart)
40         (umulsi3_highpart): Make into expanders; existing insns are
41         now named *[insn]_nov6.  Add stars to existing [insn]_v6
42         counterparts' names.
43
44 2007-09-03  Daniel Jacobowitz  <dan@codesourcery.com>
45
46         * Makefile.in (DRIVER_DEFINES, gcc.o, gccspec.o, protoize.o)
47         (unprotoize.o): Remove SHLIB_MULTILIB.
48
49 2007-09-03  Eric Weddington  <eweddington@cso.atmel.com>
50
51         * doc/extend.texi: Document progmem attribute for AVR.
52
53 2007-09-03  Anatoly Sokolov <aesok@post.ru>
54
55         PR target/28902
56         * config/avr/avr.h (TARGET_VTABLE_ENTRY_ALIGN): Define.
57
58 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
59
60         * optabs.c (expand_ffs): Initialize val and defined_at_zero
61         to avoid warnings.
62
63         * optabs.c: Remove unnecessary forward declarations.
64         (expand_unop_direct): New, broken out of expand_unop.
65         (expand_doubleword_clz): New.
66         (expand_ctz): Move above expand_ffs.  Use
67         start_sequence, end_sequence, add_equal_note, and
68         expand_unop_direct.  Add more commentary.
69         (expand_ffs): Try both ctz optab and expand_ctz.
70         Generate a test and branch if the hardware doesn't give us
71         a useful value for input zero.  Style improvements similar to
72         expand_ctz.
73
74         * config/arm/arm.md (ffssi2, ctzsi2): Delete.
75
76 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
77
78         * config.gcc: Delete stanza for arm-semi-aof and
79         armel-semi-aof targets.
80         * config/arm/arm-protos.h
81         * config/arm/arm.c
82         * config/arm/arm.h: Delete all #ifdef AOF_ASSEMBLER blocks;
83         make all #ifndef AOF_ASSEMBLER blocks unconditional.  Also
84         delete aof_pic_label and remove mention of AOF in comments.
85         * config/arm/arm.md: Delete patterns used only for AOF assembly.
86         * config/arm/aof.h
87         * config/arm/semiaof.h
88         * config/arm/t-semi: Delete file.
89
90 2007-09-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
91
92         * system.h (CONST_CAST2, CONST_CAST_TREE, CONST_CAST_RTX,
93         CONST_CAST_BB): New macros for type-specific casts.
94         (CONST_CAST): Add a TYPE parameter and define it in terms of
95         CONST_CAST2.
96
97         * c-decl.c (c_make_fname_decl): Supply a TYPE for CONST_CAST.
98         * c-lex.c (cb_ident, lex_string): Likewise,
99         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise,
100         * config/i386/i386.c (ix86_function_regparm,
101         ix86_function_sseregparm): Use CONST_CAST_TREE.
102         * config/mmix/mmix.c (mmix_encode_section_info): Supply a TYPE for
103         CONST_CAST.
104         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
105         give_switch, set_multilib_dir): Likewise,
106         * gengtype-parse.c (string_seq, typedef_name): Likewise,
107         * gimple-low.c (block_may_fallthru): Use CONST_CAST_TREE.
108         * jump.c (reversed_comparison_code_parts): Use CONST_CAST_RTX.
109         * passes.c (execute_one_pass): Supply a TYPE for CONST_CAST.
110         * prefix.c (update_path): Likewise,
111         * pretty-print.c (pp_base_destroy_prefix): Likewise,
112         * rtlanal.c (keep_with_call_p): Use CONST_CAST_RTX.
113         * tree-cfg.c (tree_can_merge_blocks_p,
114         tree_block_ends_with_condjump_p): Use CONST_CAST_BB.
115         * tree-eh.c (lookup_stmt_eh_region_fn): USe CONST_CAST_TREE.
116         * tree.c (build_string): Supply a TYPE for CONST_CAST.
117         (attribute_list_contained): Use CONST_CAST_TREE.
118
119 2007-09-03  Krister Walfridsson  <cato@df.lth.se>
120
121         * config/netbsd-elf.h (USE_LD_AS_NEEDED): Define.
122
123 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
124
125         PR middle-end/33290
126         * optabs.c (avoid_expensive_constant): Canonicalize CONST_INTs
127         before forcing them into a register.
128
129 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
130
131         * config/mips/mips.md (fetchop_bit): Use define_code_iterator
132         rather than define_code_macro.
133
134 2007-09-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
135
136         * gcc.c (xputenv): New function.
137         (putenv_from_prefixes): Use xputenv instead of putenv.
138         (process_command): Use xputenv instead of putenv.
139         (set_collect_gcc_options): Use xputenv instead of putenv.
140         (main): Use xputenv instead of putenv.
141
142 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
143
144         * config/cris/cris.h (TARGET_HAS_SWAP): Defined to describe
145         availability of swap instruction.
146         * config/cris/cris.md (bswapsi2): Implement using swap instruction.
147
148 2007-09-03  Revital Eres  <eres@il.ibm.com>
149
150         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Update
151         Documentation.
152
153 2007-09-03  Vladimir Yanovsky  <yanov@il.ibm.com>
154             Ayal Zaks  <zaks@il.ibm.com>
155             Revital Eres  <eres@il.ibm.com>
156
157         * modulo-sched.c (ps_insert_empty_row, verify_partial_schedule,
158         compute_split_row): New functions.
159         (ps_unschedule_node): Remove.
160         (normalize_sched_times): Iterate over the already scheduled
161         insns instead of the number of nodes.
162         (MAX_SPLIT_NUM): New definition.
163         (sms_schedule_by_order): Change the scheduling heuristic to
164         avoid useless increases of initiation interval ii.
165         (get_sched_window): Add dump printouts.
166
167 2007-09-02  David Daney  <ddaney@avtrex.com>
168
169         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP, UNSPEC_SYNC_OLD_OP,
170         UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE): New define_constants.
171         (optab, insn): Add more attributes.
172         (fetchop_bit): New code macro.
173         (immediate_insn): New code macro attribute.
174         (sync): Change condition to ISA_HAS_SYNC.
175         (rdhwr): Change predicate for operand 0 to register_operand.
176         (memory_barrier): New expand.
177         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
178         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
179         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
180         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
181         sync_new_nand<mode>, sync_lock_test_and_set<mode>): New insns.
182         * config/mips/mips.h (ISA_HAS_SYNC, ISA_HAS_LL_SC): New ISA predicates.
183         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
184         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
185         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): New Macros.
186         
187 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
188             Hans-Peter Nilsson  <hp@axis.com>
189
190         * config/cris/cris.h (TARGET_HAS_LZ, CLZ_DEFINED_VALUE_AT_ZERO):
191         Defined to describe availability and behavior of CLZ.
192         * config/cris/cris.md (clzsi2): Implement using lz instruction.
193         * config/cris/cris.opt: Tweak comment for "-metrax4".
194         * config/cris/arit.c (LZ): When defined, define as __builtin_clz.
195         * longlong.h [__CRIS__ && __CRIS_arch_version >= 3]
196         (count_leading_zeros): Define.
197
198 2007-09-01  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
199
200         * ggc-page.c (ggc_pch_read): Call validate_free_objects.
201
202 2007-09-02  Joseph Myers  <joseph@codesourcery.com>
203
204         PR middle-end/33272
205         * c-decl.c (grokdeclarator): Apply qualifiers to type of parameter
206         decayed from array.
207
208 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
209
210         * config/arm/arm.c, config/rs6000/ppu_intrinsics.h,
211         config/spu/spu.c, df-scan.c, fixed-value.c, fold-const.c,
212         ginclude/tgmath.h, haifa-sched.c, optabs.c, recog.c,
213         sched-deps.c, sched-int.h, system.h, target.h,
214         tree-ssa-live.c, tree-vect-transform.c, tree-vectorizer.c,
215         tree.def: Fix comment typos.
216
217 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
218
219         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove.
220         (override_options): Turn on -mstrict-align on non-ColdFire
221         targets.
222         * config/m68k/m68k.h (BIGGEST_ALIGNMENT): Update a comment.
223
224 2007-09-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
225
226         * c-common.c (const_strip_array_types): Delete.
227         * c-common.h (const_strip_array_types): Likewise.
228         * emit-rtl.c (const_next_insn, const_previous_insn,
229         const_next_nonnote_insn, const_prev_nonnote_insn,
230         const_next_real_insn, const_prev_real_insn,
231         const_next_active_insn, const_prev_active_insn, const_next_label,
232         const_prev_label): Delete.
233         * gimple-low.c (block_may_fallthru): Use expr_last.
234         * jump.c (reversed_comparison_code_parts): Use prev_nonnote_insn.
235         * rtl.h (const_previous_insn, const_next_insn,
236         const_prev_nonnote_insn, const_next_nonnote_insn,
237         const_prev_real_insn, const_next_real_insn,
238         const_prev_active_insn, const_next_active_insn, const_prev_label,
239         const_next_label): Delete.
240         * rtlanal.c (keep_with_call_p): Use next_nonnote_insn.
241         * system.h (CONST_CAST): Update comment.
242         * tree-cfg.c (tree_can_merge_blocks_p): Use last_stmt.
243         (const_first_stmt, const_last_stmt): Delete.
244         (tree_block_ends_with_condjump_p): Use last_stmt.
245         * tree-flow.h (const_first_stmt, const_last_stmt): Delete.
246         * tree-iterator.c (const_expr_first, const_expr_last,
247         const_expr_only): Delete.
248         * tree.c (const_lookup_attribute): Likewise.
249         (attribute_list_contained): Use lookup_attribute.
250         * tree.h (const_lookup_attribute, const_expr_first,
251         const_expr_last, const_expr_only): Delete.
252
253 2007-09-01  Richard Guenther  <rguenther@suse.de>
254
255         * tree-ssa-alias.c (create_name_tags): Use TYPE_VOLATILE
256         instead of TREE_THIS_VOLATILE.
257         * tree-ssa-operands.c (add_virtual_operand): Do not set
258         has_volatile_ops.  Do not check s_ann for NULL.
259         (get_indirect_ref_operands): Likewise.
260         (get_expr_operands): Likewise.  For all reference trees
261         set has_volatile_ops based on TREE_THIS_VOLATILE.  Also
262         check base of reference for TREE_THIS_VOLATILE.
263
264 2007-09-01  Richard Guenther  <rguenther@suse.de>
265
266         * tree-cfg.c (verify_gimple_expr): Fix check for conversions
267         between integral types.  Also allow conversions between
268         pointer types.
269
270 2007-08-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
271
272         * optabs.c (prepare_float_lib_cmp): Use
273         libgcc_cmp_return_mode instead of word_mode.
274         * config/dfp-bit.h: Likewise.
275         * config/fp-bit.h: Likewise.
276         * config/spu/spu.c (spu_libgcc_cmp_return_mode):
277         New function.
278         (spu_libgcc_shift_count_mode): New function.
279         (TARGET_LIBGCC_CMP_RETURN_MODE): Define.
280         (TARGET_LIBGCC_SHIFT_COUNT_MODE): Define.
281
282 2007-08-31  Joseph Myers  <joseph@codesourcery.com>
283
284         * tree-pretty-print.c: Include output.h.
285         (dump_decl_name, dump_generic_node): Use %wd with pp_printf, not
286         HOST_WIDE_INT_PRINT_DEC.
287         * Makefile.in (tree-pretty-print.o): Add dependency on output.h.
288
289 2007-08-31  Zdenek Dvorak  <ook@ucw.cz>
290
291         PR rtl-optimization/33224
292         * loop-iv.c (latch_dominating_def): Check that the definition belongs
293         to the analysed region.
294
295 2007-08-31  Richard Guenther  <rguenther@suse.de>
296
297         * function.c (allocate_struct_function): Do not set
298         current_function_returns_pointer.
299         * function.h (struct var_refs_queue): Remove.
300         (struct simple_obstack_stack): Likewise.
301         (struct function): Remove fixup_var_refs_queue member.
302         Remove returns_pointer flag.
303         (current_function_returns_pointer): Remove define.
304
305 2007-08-31  Nick Clifton  <nickc@redhat.com>
306
307         * tree-ssa-coalesce.c (compare_pairs): Use the elements as
308         secondary keys in order to obtain a stable sort.
309
310 2007-08-31  Nick Clifton  <nickc@redhat.com>
311
312         PR target/33132
313         * config/m32r/constraints.md: Add W constraint for integer zero.
314         * config/m32r/m32r.md (get_pc): Use W and i constraints.
315         Fix length calculation by using alternatives.
316
317 2007-08-31  Richard Sandiford  <richard@codesourcery.com>
318
319         * optabs.c (shift_optab_p, commutative_optab_p): New functions,
320         split out from expand_binop.
321         (avoid_expensive_constant): New function.
322         (expand_binop_directly): Remove commutative_op argument and
323         (expand_binop_directly): Remove commutative_op argument and
324         call cummutative_optab_p instead.  Do not change op0 or op1
325         when swapping xop0 and xop1.  Apply avoid_expensive_constant
326         to each argument after potential swapping.  Enforce the
327         canonical order of commutative operands.
328         (expand_binop): Use shift_optab_p and commutative_optab_p.
329         Update the calls to expand_binop_directly.  Only force constants
330         into registers when widening an operation.  Only swap operands
331         once a direct expansion has been rejected.
332         (expand_twoval_binop): Only force constants into registers when
333         using a direct expansion.
334
335 2007-08-31  Maxim Kuvyrkov  <maxim@codesourcery.com>
336
337         * sched-deps.c (update_dep): Mark arguments with ATTRIBUTE_UNUSED.
338         (sched_analyze_insn): Don't postprocess speculative dependencies when
339         target has no scheduling.
340         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Fix
341         'uninitialized' warning.
342
343 2007-08-31  Richard Guenther  <rguenther@suse.de>
344
345         * tree.c (build_complex_type): Always set TYPE_NAME for
346         comples types.
347
348 2007-08-31  Olivier Hainque  <hainque@adacore.com>
349
350         * config/rs6000/xcoff.h (XCOFF_CSECT_DEFAULT_ALIGNMENT_STR): New
351         internal macro. Default alignment factor for csect directives, chosen
352         to match what BIGGEST_ALIGNMENT allows.
353         (DATA_SECTION_ASM_OP): Use it.
354         * config/rs6000/rs6000.c
355         (rs6000_xcoff_output_readonly_section_asm_op):
356         Use XCOFF_CSECT_DEFAULT_ALIGNMENT_STR.
357         (rs6000_xcoff_output_readwrite_section_asm_op): Likewise.
358         
359 2007-08-31  Olivier Hainque  <hainque@adacore.com>
360
361         * dbxout.c (dbxout_block): Move declaration within the first
362         #if defined (DBX_DEBUGGING_INFO) block.  Rearrange another such
363         block to include the definition, together with the associated
364         helpers.
365
366 2007-08-31  David Edelsohn  <edelsohn@gnu.org>
367             Revital Eres  <eres@il.ibm.com>
368
369         * doc/invoke.texi (-mpaired): Document flag.
370         * config.gcc: Include paired.h in powerpc extra_headers and
371         750cl.h in powerpc-*-linux*paired*.
372         * config/rs6000/rs6000.opt (-mpaired): New flag.
373         * config/rs6000/rs6000.c (paired_init_builtins,
374         paired_expand_builtin, paired_expand_lv_builtin,
375         paired_expand_stv_builtin, paired_expand_predicate_builtin):
376         New functions to support the paired single builtin functions.
377         (rs6000_hard_regno_mode_ok): Handle PAIRED_VECTOR_MODE.
378         (def_builtin, bdesc_3arg, bdesc_2arg, bdesc_1arg): Add paired
379         single builtins.
380         (bdesc_paired_preds): New structure for paired predicate
381         instructions.
382         (rs6000_expand_builtin): Expand paired single builtins.
383         (rs6000_init_builtins): Init paired single builtins.
384         (rs6000_common_init_builtins): Add v2sf_ftype_v2sf_v2sf_v2sf.
385         Rename v2sf_ftype_v2sf_v2sf to v2sf_ftype_v2sf_v2sf_spe
386         and v2sf_ftype_v2sf_spe to v2sf_ftype_v2sf.  Add new types
387         v2sf_ftype_v2sf_v2sf and v2sf_ftype_v2sf.
388         (rs6000_vector_mode_supported_p): Support paired vector mode.
389         * config/rs6000/rs6000.h: (UNITS_PER_PAIRED_WORD,
390         PAIRED_VECTOR_MODE, PAIRED_SIMD_REGNO_P, TARGET_PAIRED_FLOAT):
391         New.
392         (LOCAL_ALIGNMENT): Handle PAIRED_VECTOR_MODE.
393         (DATA_ALIGNMENT): Likewise.
394         (UNITS_PER_SIMD_WORD): Handle PAIRED_VECTOR_MODE.
395         (rs6000_builtins): Add PAIRED builtins.
396         * config/rs6000/rs6000.md: Include paired.md.
397         * config/rs6000/paired.h: New.
398         * config/rs6000/paired.md: New.
399         * config/rs6000/750cl.h: New.
400         * config/rs6000/spe.md: Recognize movv2sf instruction for 750cl.
401
402 2007-08-30  Ollie Wild  <aaw@google.com>
403
404         * c-opts.c (c_common_handle_option): Support -fno-directives-only.
405         * gcc.c (default_compilers): Add -fno-directives-only to
406         @assembler-with-cpp.
407
408 2007-08-30  Sandra Loosemore  <sandra@codesourcery.com>
409
410         PR middle-end/33211
411
412         * regclass.c (initial_fixed_regs): Revert previous change and make
413         it const again.
414         (initial_call_used_regs): Likewise.
415         (initial_call_really_used_regs): Delete, reverting previous addition.
416         (initial_reg_names): Likewise.
417         (init_reg_sets): Revert previous change.
418         (saved_fixed_regs): New.
419         (saved_call_used_regs): New.
420         (saved_call_really_used_regs): New.
421         (saved_reg_names): New.
422         (save_register_info): New.
423         (restore_register_info): New.
424         (init_reg_sets_1): Replace reset of register info with call to
425         restore_register_info.
426         * rtl.h (save_register_info): Declare.
427         * toplev.c (backend_init): Call save_register_info.
428
429 2007-08-30  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
430
431         * tree-ssa-propagate.c (set_rhs): Remove the copied annotation
432         from the original statement.
433
434 2007-08-30  Chao-ying Fu  <fu@mips.com>
435
436         * c-lex.c (interpret_fixed): Declare.
437         (interpret_float): Process _Fract and _Accum.
438         (interpret_fixed): New function.
439         * final.c (output_addr_const): Process CONST_FIXED.
440         * simplify-rtx.c (simplify_const_unary_operation): Handle US_NEG.
441         (simplify_binary_operation_1): Handle US_ASHIFT, SS_MULT, US_MULT,
442         SS_DIV, US_DIV.
443         (simplify_const_binary_operation): Handle SS_MULT, US_MULT, SS_DIV,
444         US_DIV, US_ASHIFT.
445         (simplify_immed_subreg): Support CONST_FIXED.
446         Process MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
447         (simplify_subreg): Support CONST_FIXED.
448
449 2007-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
450
451         * config/rs6000/ppu_intrinsics.h: New file.
452         * config.gcc (powerpc*-*-* <extra_headers>): Install
453         ppu_intrinsics.h.
454
455 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
456
457         * cfg.c (dump_flow_info): Change to also print entry and exit
458         block info.
459         * print-rtl.c (print_rtl_single): Allow to print rtl with
460         -fdump-unnumbered.
461         
462 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
463
464         * df-core.h (df_dump_region): New function.
465         * df.h (df_dump_region): New function.
466         * loop-invariant.c (find_defs): Add call to df_dump_region.
467         * loop-iv.c (iv_analysis_loop_init): Changed call from df_dump to
468         df_dump_region.
469         
470 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
471
472         * decl.c (start_preparsed_function): Set
473         DECL_DISREGARD_INLINE_LIMITS for GNU_INLINE_P functions.
474
475         PR target/33168
476         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Return
477         true if any of the compare_section_name calls returned true,
478         rather than if any returned false.
479
480 2007-08-30  Richard Guenther  <rguenther@suse.de>
481
482         PR tree-optimization/33199
483         * tree-ssa-structalias.c (handle_lhs_call): New function.
484         (find_func_aliases): In non-IPA mode make sure that for
485         calls that return a pointer we add a constraint for the
486         result to point to anything.
487
488 2007-08-30  Richard Guenther  <rguenther@suse.de>
489
490         * doc/invoke.texi (-mveclibabi): Document new target option.
491         * config/i386/i386.opt (-mveclibabi): New target option.
492         * config/i386/i386.c (ix86_veclib_handler): Handler for
493         vectorization library support.
494         (override_options): Handle the -mveclibabi option, initialize
495         the vectorization library handler.
496         (ix86_builtin_vectorized_function): As fallback call the
497         vectorization library handler, if set.
498         (ix86_veclibabi_acml): New static function for ACML ABI style
499         vectorization support.
500
501 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
502
503         * config/rs6000/rs6000.c (rs6000_emit_sync): For QI or HI mode
504         used_m, even if it is 32-bit aligned, adjust used_m MEM to have
505         SImode and update m.  Don't run gen_lowpart_common on arbitrary
506         memory address, force it to register first.
507
508         PR middle-end/32758
509         * dce.c (dce_process_block): Don't delete setters of
510         artificially used registers.
511
512 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
513
514         * config/s390/s390.md ("*add<mode>3_alc_carry1_cc",
515         "*add<mode>3_alc_carry1_cconly", "*add<mode>3_alc_carry2_cc",
516         "*add<mode>3_alc_carry2_cconly"): New insn definitions.
517
518 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
519
520         * config/s390/s390.c (s390_expand_addcc): Emit canonical alc
521         pattern.
522         * config/s390/s390.md ("*add<mode>3_alc_cc", "*add<mode>3_alc",
523         "addti3", "*adddi3_31z", "*scond<mode>"): Make alc pattern canonical.
524
525 2007-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
526
527         * system.h: Activate -Wcast-qual as warning-only.
528
529 2007-08-29  Paolo Bonzini  <bonzini@gnu.org>
530
531         PR target/33168
532         * config/rs6000/rs6000.c (compare_section_name): New function.
533         (rs6000_elf_in_small_data_p): Compare section prefixes instead
534         of full name.
535
536 2007-08-29  Olivier Hainque  <hainque@adacore.com>
537
538         * xcoffout.c: #include debug.h.
539         * Makefile.in (xcoffout.o): Add debug.h dependency.
540
541 2007-08-29  Uros Bizjak  <ubizjak@gmail.com>
542
543         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
544         Change CONST_VECTOR_ELT to XVECEXP in elem calculation.
545
546 2007-08-29  Richard Guenther  <rguenther@suse.de>
547
548         * tree-pretty-print.c (dump_generic_node): Print
549         label DECL_UID as D.%u.
550         * tree-dfa.c (dump_variable): Print DECL_UID as D.%u.
551
552 2007-08-29  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
553
554         * gcc/builtin-types.def (BT_FN_PTR_PTR_SIZE): New type.
555         * gcc/builtins.def (BUILT_IN_REALLOC): New builtin.
556
557 2007-08-29  Douglas Gregor  <doug.gregor@gmail.com>
558
559         PR c++/33194
560         * tree.c (build_type_attribute_qual_variant): Set canonical types
561         on the final, unqualified attribute variant before building the
562         qualified version.
563
564 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
565
566         * config/bfin/bfin.c (bfin_expand_builtin): Fix the argument
567         order of __builtin_bfin_cmplx_mac and __builtin_bfin_cmplx_msu.
568
569 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
570
571         Revert
572         2007-08-29  Jie Zhang  <jie.zhang@analog.com>
573         * config/bfin/bfin.md (composev2hi): Put operands into vector
574         with correct order.
575
576 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
577
578         * config/bfin/bfin.md (composev2hi): Put operands into vector
579         with correct order.
580
581 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
582
583         * config/bfin/bfin.c (bfin_expand_call): Inline PLT with l1_text
584         attribute when appropriate.
585         (bfin_handle_l1_text_attribute): New.
586         (bfin_handle_l1_data_attribute): New.
587         (bfin_attribute_table): Add attributes: l1_text, l1_data,
588         l1_data_A and l1_data_B.
589         * doc/extend.texi (node Function Attributes): Document l1_text
590         function attribute.
591         (Variable Attributes): Add Blackfin subsection. Document l1_data,
592         l1_data_A and l1_data_B variable attributes.
593
594 2007-08-28  Jie Zhang  <jie.zhang@analog.com>
595
596         * config/bfin/bfin.opt (minline-plt): Add.
597         * config/bfin/bfin.c (bfin_expand_call): Inline PLT when emit
598         call to global functions.
599         * doc/invoke.texi (Option Summary): Mention -minline-plt.
600         (Blackfin Options): Document -minline-plt.
601
602 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
603
604         * config/m68k/m68k.c (m68k_get_function_kind): Assert we're never
605         given a non-function.
606         (m68k_ok_for_sibcall_p): Only sibcall functions of the same kind.
607
608 2007-08-28  DJ Delorie  <dj@redhat.com>
609
610         * config/sh/sh.c (sh_gimplify_va_arg_expr): Fix sh2a support.
611
612 2007-08-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
613
614         * system.h (CONST_CAST): Avoid union for gcc-4.0.x.
615
616 2007-08-28  Richard Guenther  <rguenther@suse.de>
617
618         * tree.h (struct tree_function_decl): Increase size of
619         function_code bitfield.
620
621 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
622             Kazu Hirata  <kazu@codesourcery.com>
623
624         * gcc/config/m68k/linux.h
625         (M68K_HONOR_TARGET_STRICT_ALIGNMENT): Redefine as 0.
626         * config/m68k/m68k.c (TARGET_RETURN_IN_MEMORY): New.
627         (m68k_return_in_memory): New.
628         * gcc/config/m68k/m68k.h (M68K_HONOR_TARGET_STRICT_ALIGNMENT):
629         New.
630
631 2007-08-28  Uros Bizjak  <ubizjak@gmail.com>
632
633         PR target/32661
634         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
635         Simplify nested VEC_SELECT (with optional VEC_CONCAT operator as
636         operand) when top VEC_SELECT extracts scalar element.
637         * config/i386/sse.md (*vec_extract_v4si_mem): New pattern.
638         (*vec_extract_v4sf_mem): Ditto.
639
640 2007-08-28  Jakub Jelinek  <jakub@redhat.com>
641
642         PR middle-end/32370
643         * passes.c (init_optimization_passes): Move pass_df_finish
644         after pass_postreload sublist.
645
646         PR rtl-optimization/33148
647         * simplify-rtx.c (simplify_unary_operation_1): Only optimize
648         (neg (lt X 0)) if X has scalar int mode.
649
650         PR debug/32914
651         * dwarf2out.c (rtl_for_decl_init): If vector decl has CONSTRUCTOR
652         initializer, use build_vector_from_ctor if possible to create
653         VECTOR_CST out of it.  If vector initializer is not VECTOR_CST
654         even after this, return NULL.
655
656 2007-08-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
657
658         * c-pretty-print.c (pp_c_constant): Handle COMPLEX_CST.
659
660 2007-08-28  Richard Guenther  <rguenther@suse.de>
661
662         * tree.h (DECL_DISREGARD_INLINE_LIMITS): New.
663         (struct tree_function_decl): Make function_code a bitfield.
664         Add disregard_inline_limits flag.
665         * cgraphunit.c (cgraph_process_new_functions): Check
666         DECL_DISREGARD_INLINE_LIMITS instead of disregard_inline_limits_p.
667         (cgraph_preserve_function_body_p): Likewise.
668         * ipa-inline.c (compute_inline_parameters): Likewise.
669         * c-decl.c (finish_function): Set DECL_DISREGARD_INLINE_LIMITS
670         for GNU C extern inline functions.
671         (merge_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
672         * tree-inline.c (disregard_inline_limits_p): Remove.
673         * tree-inline.h (disregard_inline_limits_p): Likewise.
674         * c-common.c (handle_always_inline_attribute): Set
675         DECL_DISREGARD_INLINE_LIMITS.
676         * langhooks.c (add_builtin_function): Verify the function code
677         fits in the bitfield.
678
679 2007-08-28  Mircea Namolaru  <namolaru@il.ibm.com>
680             Vladimir Yanovsky  <yanov@il.ibm.com>
681             Revital Eres  <eres@il.ibm.com>
682             Andrey Belevantsev  <abel@ispras.ru>
683
684         * config/spu/spu.md: Recognize doloop pattern when -fmodulo-sched
685         is set.
686         * modulo-sched.c: Add documentation regarding do-loop.
687         (doloop_register_get): Change number of arguments to support
688         the new do-loop pattern and check whether COUNT_REG has no other
689         occurences in the loop besides in the control part.
690         (duplicate_insns_of_cycles): Do not duplicate the insn which
691         changes count_reg as it is already adjusted.
692         (generate_prolog_epilog): New argument to support the new
693         do-loop pattern.  Change the subtract instruction to use
694         expand_simple_binop.  Call duplicate_insns_of_cycles with new
695         argument.
696         (sms_schedule): Call doloop_register_get and
697         generate_prolog_epilog with new argument.  Do not handle loops
698         with single sets insns with subreg in their lhs.
699         * loop-doloop.c (doloop_optimize): Support for another do-loop
700         pattern.
701         (doloop_condition_get): Gets an instruction instead of a pattern
702         and change the return condition when the do-loop pattern is
703         not parallel.
704         * ddg.c (create_ddg_dep_from_intra_loop_link): Handle only reg
705         deps when considering to not create edges.
706
707 2007-08-27  Alexandre Oliva  <aoliva@redhat.com>
708
709         * doc/extend.texi (gnu_inline funtion attribute): Document C++
710         behavior.
711
712 2007-08-27  Jason Merrill  <jason@redhat.com>
713
714         PR c++/31337
715         * gimplify.c (gimplify_modify_expr): Discard the assignment of 
716         zero-sized types after calling gimplify_modify_expr_rhs.
717
718 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
719
720         * regclass.c (init_reg_autoinc): Fix typo.
721
722 2007-08-27  Daniel Berlin  <dberlin@dberlin.org>
723         
724         Fix PR tree-optimization/33173
725         * tree-ssa-alias.c (find_used_portions): Fix reversed test.
726
727 2007-08-27  H.J. Lu  <hongjiu.lu@intel.com>
728
729         PR target/31385
730         * config/i386/i386.h (VALID_DFP_MODE_P): New.
731         * config/i386/i386.c (ix86_hard_regno_mode_ok): Allow DFP in
732         GPR.
733
734 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
735             David Ung  <davidu@mips.com>
736             Nigel Stephens <nigel@mips.com>
737
738         Separate target-specific initialization from general
739         back-end initialization.
740
741         * toplev.c (init_alignments): New, split out from...
742         (process_options): ...here.
743         (backend_init_target):  New, split out from...
744         (backend_init): ...here.
745         (lang_dependent_init_target):  New, split out from...
746         (lang_dependent_init): ...here.
747         (target_reinit): New.
748         * toplev.h (target_reinit): Declare.
749         * expr.c (init_expr_target): Renamed from init_expr_once, since it
750         now can be called more than once.  Update comments.
751         * expr.h (init_expr_target): Likewise.
752         * alias.c (init_alias_target): Renamed from init_alias_once, since it
753         now can be called more than once.  Explicitly zero
754         static_reg_base_value.
755         * emit-rtl.c (init_emit_regs): New, split out from...
756         (init_emit_once): Here.
757         * regclass.c (initial_fixed_regs, initial_call_used_regs): Make
758         non-const, so that changes from command-line arguments can overwrite
759         values provided by the static initializers.
760         (initial_call_really_used_regs): New, used similarly to the above.
761         (initial_reg_names): Likewise.
762         (last_mode_for_init_move_cost): Promoted function-local static to
763         file-scope static to make it accessible outside init_move_cost.
764         (init_reg_sets): Do not initialize fixed_regs and call_used_regs yet.
765         Do not initialize inv_reg_alloc_order yet, either.  Do initialize
766         reg_names since it is needed for parsing command-line options.
767         (init_move_cost): Use last_mode_for_init_move_cost instead of
768         function-local static.
769         (init_reg_sets_1): Initialize fixed_regs, call_used_regs, and
770         call_really_used_regs now.  Reinitialize reg_names.  Also
771         initialize inv_reg_alloc_order.  Zero reg_class_subunion and
772         reg_class_superunion.  Clear losing_caller_save_reg_set.
773         Preserve global registers if called more than once.  Reset
774         move cost, may_move_in_cost, may_move_out_cost, and
775         last_mode_for_init_move_cost.
776         (init_reg_modes_target): Renamed from init_reg_modes_once, since it
777         can now be invoked more than once.  Update comments.
778         (init_regs): Update comments.
779         (fix_register): Update initial_fixed_regs, initial_call_used_regs,
780         and initial_call_really_used_regs, instead of the non-initial 
781         variables.  This allows us to save the command-line register settings
782         after target reinitialization.
783         (init_reg_autoinc): Zero forbidden_inc_dec_classes.
784         * rtl.h (init_emit_regs): Declare.
785         (init_reg_modes_target, init_alias_target): Renamed as described
786         above.
787         * reload1.c (init_reload): Update comments.
788         * optabs.c (init_optabs): Likewise.
789         * cfgloopanal.c (init_set_costs): Explicitly zero target_avail_regs.
790         
791 2007-08-26  Chao-ying Fu  <fu@mips.com>
792
793         * rtl.h (XCNMPFV): Preserve const-ness of parameters through use of
794         __typeof().
795
796 2007-08-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
797
798         * alias.c (memory_modified_1, memory_modified_in_insn_p):
799         Constify.
800         * basic-block.h (tree_predicted_by_p, rtl_predicted_by_p):
801         Likewise.
802         * bb-reorder.c (copy_bb_p): Likewise.
803         * cfghooks.c (can_remove_branch_p, can_merge_blocks_p,
804         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
805         block_ends_with_condjump_p): Likewise.
806         * cfghooks.h (can_remove_branch_p, can_merge_blocks_p,
807         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
808         block_ends_with_condjump_p): Likewise.
809         * cfglayout.c (cfg_layout_can_duplicate_bb_p): Likewise.
810         * cfgrtl.c (can_delete_note_p, can_delete_label_p,
811         rtl_can_merge_blocks, cfg_layout_can_merge_blocks_p,
812         rtl_block_ends_with_call_p, rtl_block_ends_with_condjump_p,
813         need_fake_edge_p, rtl_can_remove_branch_p): Likewise.
814         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Use
815         debug_true_const_tree instad of debug_true_tree.
816         * debug.c (do_nothing_debug_hooks): Likewise.
817         * debug.h (ignore_block, debug_true_const_tree): Constify.
818         * dwarf2out.c (stack_adjust_offset, clobbers_queued_reg_save,
819         dwarf2out_ignore_block, is_pseudo_reg, is_tagged_type,
820         decl_ultimate_origin, block_ultimate_origin, lookup_decl_loc,
821         same_dw_val_p, add_ranges, is_subrange_type, type_is_enum,
822         dbx_reg_number, is_based_loc, field_type,
823         simple_type_align_in_bits, simple_decl_align_in_bits,
824         simple_type_size_in_bits, field_byte_offset, insert_float,
825         type_tag, member_declared_type, is_redundant_typedef,
826         secname_for_decl, is_inlined_entry_point): Likewise.
827         * emit-rtl.c (const_next_insn, const_previous_insn,
828         const_next_nonnote_insn, const_prev_nonnote_insn,
829         const_next_real_insn, const_prev_real_insn,
830         const_next_active_insn, const_prev_active_insn, const_next_label,
831         const_prev_label): Likewise.
832         * except.h (lookup_stmt_eh_region_fn, lookup_stmt_eh_region):
833         Likewise.
834         * haifa-sched.c (may_trap_exp, haifa_classify_insn,
835         find_set_reg_weight, no_real_insns_p, find_set_reg_weight,
836         sched_insn_is_legitimate_for_speculation_p): Likewise.
837         * jump.c (reversed_comparison_code_parts,
838         reversed_comparison_code, reversed_comparison, condjump_label):
839         Likewise.
840         * predict.c (rtl_predicted_by_p, tree_predicted_by_p): Likewise.
841         * reg-stack.c (stack_regs_mentioned_p, stack_regs_mentioned):
842         Likewise.
843         * rtl.h (const_previous_insn, const_next_insn,
844         const_prev_nonnote_insn, const_next_nonnote_insn,
845         const_prev_real_insn, const_next_real_insn,
846         const_prev_active_insn, const_next_active_insn, const_prev_label,
847         const_next_label, modified_between_p, modified_in_p,
848         const_note_storeskeep_with_call_p, condjump_label,
849         reversed_comparison, reversed_comparison_code,
850         reversed_comparison_code_parts, memory_modified_in_insn_p,
851         stack_regs_mentioned): Likewise.
852         * rtlanal.c (modified_between_p, modified_in_p, const_note_stores,
853         keep_with_call_p): Likewise.
854         * sched-deps.c (deps_may_trap_p, sched_get_condition,
855         conditions_mutex_p, sched_insns_conditions_mutex_psd_next_list,
856         sd_lists_size, sd_lists_empty_p): Likewise.
857         * sched-int.h (sched_insns_conditions_mutex_p,
858         haifa_classify_insn, no_real_insns_p,
859         sched_insn_is_legitimate_for_speculation_p, sd_next_list,
860         sd_lists_size, sd_lists_empty_p): Likewise.
861         * sdbout.c (sdb_debug_hooks): Likewise.
862         * tree-cfg.c (tree_can_merge_blocks_p, is_ctrl_altering_stmt,
863         stmt_ends_bb_p, tree_can_remove_branch_p, tree_can_duplicate_bb_p,
864         -tree_block_ends_with_call_p, tree_block_ends_with_condjump_p):
865         Likewise.
866         * tree-eh.c (lookup_stmt_eh_region_fn, lookup_stmt_eh_region,
867         tree_can_throw_internal): Likewise.
868         * tree-flow-inline.h (phi_nodes): Likewise.
869         * tree-flow.h (phi_nodesstmt_ends_bb_p, is_ctrl_altering_stmt,
870         tree_can_throw_internal, lookup_stmt_eh_region): Likewise.
871         * tree-gimple.c (const_get_call_expr_in): Likewise.
872         * tree-gimple.h (const_get_call_expr_in): Likewise.
873         * tree.c (const_lookup_attribute, attribute_list_equal,
874         attribute_list_contained): Likewise.
875         * tree.h (attribute_list_equal, attribute_list_contained,
876         const_lookup_attribute): Likewise.
877         * vmsdbgout.c (vmsdbgout_ignore_block): Likewise.
878
879 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
880
881         * tree-ssa-sccvn.c, tree-ssa-sccvn.h, tree-vn.c,
882         tree-ssa-pre.c: Remove unnecessary trailing whitespace.
883
884 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
885
886         PR target/32991
887         * config/alpha/constraints.md: Delete "svn:mime-type" property
888         with svn propdel "svn:mime-type".
889
890 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
891
892         PR middle-end/33181
893         * ifcvt.c (noce_get_alt_condition): Make sure that the previous
894         non NOTE insn doesn't cross basic block.
895         (noce_try_abs): Likewise.
896         (noce_process_if_block): Likewise.
897
898 2007-08-26  David Edelsohn  <edelsohn@gnu.org>
899
900         PR target/33151
901         * config/rs6000/predicates.md (offsettable_mem_operand): Memory
902         operand without auto-inc-dec.
903         * config/rs6000/rs6000.md (floatsidf2_internal): Use
904         offsettable_mem_operand.
905         (floatunssidf2_internal): Same.
906         (fix_truncdfsi2_internal): Same.
907         (floatsidf_ppc64): Same.
908         (floatunssidf_ppc64): Same.
909         (fix_trunctfsi2_internal): Same.
910
911 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
912
913         PR bootstrap/30620
914         * Makefile.in (libbackend.o): Add gcov-iov.h dependency and
915         pass defines needed for version.c.
916
917 2007-08-25  Joseph Myers  <joseph@codesourcery.com>
918
919         * configure.ac (--debug-prefix-map check): Change assembler
920         version presumed to have feature to 2.18.
921         * configure: Regenerate.
922
923 2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
924
925         * c-common.c (vector_types_convertible_p,
926         decl_with_nonnull_addr_p, c_promoting_integer_type_p,
927         self_promoting_args_p): Constify.
928         * c-common.h (has_c_linkage, decl_with_nonnull_addr_p,
929         c_promoting_integer_type_p, self_promoting_args_p,
930         anon_aggr_type_p, vector_types_convertible_p): Likewise.
931         * c-decl.c (anon_aggr_type_p): Likewise.
932         * * c-dump.c (dump_stmt): Likewise.
933         * c-objc-common.c (has_c_linkage): Likewise.
934         * c-tree.h (same_translation_unit_p): Likewise.
935         * c-typeck.c (null_pointer_constant_p,
936         tagged_types_tu_compatible_p, function_types_compatible_p,
937         type_lists_compatible_p, lvalue_or_else, lvalue_p,
938         comptypes_internal, struct tagged_tu_seen_cache,
939         same_translation_unit_p, alloc_tagged_tu_seen_cache,
940         c_size_in_bytes): Likewise.
941         * ggc-common.c (compare_ptr_data, hash_descriptor, eq_descriptor,
942         hash_ptr, eq_ptr): Likewise.
943         * langhooks-def.h (lhd_decl_ok_for_sibcall,
944         LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Likewise.
945         * langhooks.c (lhd_decl_ok_for_sibcall): Likewise.
946         * langhooks.h (ok_for_sibcall, omp_privatize_by_reference):
947         Likewise.
948         * optabs.c (optab_for_tree_code): Likewise.
949         * optabs.h (optab_for_tree_code): Likewise.
950         * rtl.h (simplify_rtx): Likewise.
951         * simplify-rtx.c (simplify_rtx): Likewise.
952         * tree-dump.c (queue, queue_and_dump_index, queue_and_dump_type,
953         dump_flag, dump_node): Likewise.
954         * tree-dump.h (struct dump_info, dump_stmt, queue_and_dump_index,
955         queue_and_dump_type, dump_flag): Likewise.
956         * tree-flow.h (vect_can_force_dr_alignment_p): Likewise.
957         * tree-pass.h (dump_node): Likewise.
958         * tree-vectorizer.c (vect_can_force_dr_alignment_p,
959         supportable_narrowing_operation): Likewise.
960         * tree-vectorizer.h (vect_can_force_dr_alignment_p,
961         supportable_narrowing_operation): Likewise.
962         * tree-vrp.c (needs_overflow_infinity, supports_overflow_infinity,
963         is_negative_overflow_infinity, is_positive_overflow_infinity,
964         is_overflow_infinity, vrp_val_is_max, vrp_val_is_min,
965         nonnull_arg_p, get_value_range, vrp_operand_equal_p,
966         update_value_range, add_equivalence, ssa_name_nonnegative_p,
967         ssa_name_nonzero_p, fp_predicate): Likewise.
968         * tree.c (auto_var_in_fn_p, empty_body_p): Likewise.
969         * tree.h (empty_body_p, auto_var_in_fn_p, ssa_name_nonzero_p,
970         ssa_name_nonnegative_p): Likewise.
971
972 2007-08-25  Hans Kester  <hans.kester@ellips.nl>
973
974         * config.gcc : Add x86_64-elf target.
975
976 2007-08-25  Jakub Jelinek  <jakub@redhat.com>
977
978         * expr.c (store_expr): Fix order of store_by_pieces arguments.
979
980 2007-08-24  Sandra Loosemore  <sandra@codesourcery.com>
981             Nigel Stephens <nigel@mips.com>
982
983         PR target/11787
984
985         * doc/tm.texi (SET_RATIO, SET_BY_PIECES_P): Document new macros.
986         (STORE_BY_PIECES_P): No longer applies to __builtin_memset.
987         * expr.c (SET_BY_PIECES_P): Define.
988         (can_store_by_pieces, store_by_pieces): Add MEMSETP argument; use
989         it to decide whether to use SET_BY_PIECES_P or STORE_BY_PIECES_P.
990         (store_expr): Pass MEMSETP argument to can_store_by_pieces and
991         store_by_pieces.
992         * expr.h (SET_RATIO): Define.
993         (can_store_by_pieces, store_by_pieces): Update prototypes.
994         * builtins.c (expand_builtin_memcpy): Pass MEMSETP argument to
995         can_store_by_pieces/store_by_pieces.
996         (expand_builtin_memcpy_args): Likewise.
997         (expand_builtin_strncpy): Likewise.
998         (expand_builtin_memset_args): Likewise.  Also remove special case
999         for optimize_size so that can_store_by_pieces/SET_BY_PIECES_P can
1000         decide what to do instead.
1001         * value-prof.c (tree_stringops_transform): Pass MEMSETP argument
1002         to can_store_by_pieces.
1003
1004         * config/sh/sh.h (SET_BY_PIECES_P): Clone from STORE_BY_PIECES_P.
1005         * config/s390/s390.h (SET_BY_PIECES_P): Likewise.
1006
1007         * config/mips/mips.opt (mmemcpy): Change from Var to Mask.
1008         * config/mips/mips.c (override_options): Make -Os default to -mmemcpy.
1009         * config/mips/mips.h (MIPS_CALL_RATIO): Define.
1010         (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Define.
1011         (STORE_BY_PIECES_P): Define.
1012
1013 2007-08-24  Tom Tromey  <tromey@redhat.com>
1014
1015         * varpool.c (varpool_last_needed_node): Fix comment typo.
1016         * c-decl.c (duplicate_decls): Fix comment typo.
1017         (clone_underlying_type): Update comment.
1018
1019 2007-08-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1020
1021         * config/alpha/alpha.c (alpha_mangle_type, decl_has_samegp,
1022         alpha_in_small_data_p, alpha_split_complex_arg,
1023         alpha_stdarg_optimize_hook, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
1024         Constify.
1025         * config/arm/arm-protos.h (arm_mangle_type): Likewise.
1026         * config/arm/arm.c (arm_comp_type_attributes, arm_mangle_type):
1027         Likewise.
1028         * config/bfin/bfin.c (funkind, bfin_comp_type_attributes,
1029         TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
1030         * config/darwin-protos.h (darwin_binds_local_p): Likewise.
1031         * config/darwin.c (darwin_binds_local_p): Likewise.
1032         * config/frv/frv.c (frv_string_begins_with, frv_in_small_data_p):
1033         Likewise.
1034         * config/i386/i386-protos.h (i386_pe_binds_local_p,
1035         i386_pe_valid_dllimport_attribute_p): Likewise.
1036         * config/i386/i386.c (ix86_function_regparm,
1037         ix86_comp_type_attributes, ix86_ms_bitfield_layout_p,
1038         x86_can_output_mi_thunk, ix86_mangle_type,
1039         TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
1040         * config/i386/winnt.c (i386_pe_valid_dllimport_attribute_p,
1041         i386_pe_binds_local_p): Likewise.
1042         * config/ia64/ia64.c
1043         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec,
1044         ia64_needs_block_p, ia64_in_small_data_p, ia64_mangle_type,
1045         ia64_invalid_conversion, ia64_invalid_unary_op,
1046         ia64_invalid_binary_op, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
1047         Likewise.
1048         * config/m32c/m32c.c (m32c_comp_type_attributes): Likewise.
1049         * config/m32r/m32r.c (m32r_in_small_data_p): Likewise.
1050         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
1051         * config/mips/mips.c (mips_use_blocks_for_constant_p,
1052         mips_in_small_data_p, mips_use_anchors_for_symbol_p,
1053         mips_comp_type_attributes, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
1054         mips_near_type_p, mips_far_type_p, mips_global_symbol_p,
1055         mips_symbol_binds_local_p, mips_classify_symbol): Likewise.
1056         * config/pa/pa.c (pa_commutative_p): Likewise.
1057         * config/rs6000/rs6000-protos.h (rs6000_elf_in_small_data_p):
1058         Likewise.
1059         * config/rs6000/rs6000.c (rs6000_invalid_within_doloop,
1060         rs6000_ms_bitfield_layout_p, rs6000_mangle_type,
1061         rs6000_use_blocks_for_constant_p,
1062         rs6000_vector_alignment_reachable, rs6000_is_opaque_type,
1063         invalid_arg_for_unprototyped_fn, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
1064         TARGET_SPLIT_COMPLEX_ARG, rs6000_elf_in_small_data_p): Likewise.
1065         * config/s390/s390.c (s390_mangle_type,
1066         TARGET_ASM_CAN_OUTPUT_MI_THUNK, TARGET_INVALID_WITHIN_DOLOOP):
1067         Likewise.
1068         * config/score/score.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
1069         th_in_small_data_p): Likewise.
1070         * config/sh/sh.c (sh_ms_bitfield_layout_p,
1071         sh_dwarf_calling_convention, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
1072         Likewise.
1073         * config/sparc/sparc.c (sparc_can_output_mi_thunk,
1074         sparc_mangle_type): Likewise.
1075         * config/spu/spu.c (spu_vector_alignment_reachable): Likewise.
1076         * config/xtensa/xtensa.c (TARGET_SPLIT_COMPLEX_ARG): Likewise.
1077         * emit-rtl.c (const_fixed_htab_hash, const_fixed_htab_eq):
1078         Likewise.
1079         * hooks.c (hook_bool_mode_const_rtx_false,
1080         hook_bool_mode_const_rtx_true,
1081         hook_bool_const_tree_hwi_hwi_const_tree_false,
1082         hook_bool_const_tree_hwi_hwi_const_tree_true,
1083         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
1084         hook_constcharptr_const_tree_null,
1085         hook_constcharptr_const_rtx_null,
1086         hook_constcharptr_const_tree_const_tree_null,
1087         hook_constcharptr_int_const_tree_null,
1088         hook_constcharptr_int_const_tree_const_tree_null): New.
1089         (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
1090         hook_bool_tree_hwi_hwi_tree_false,
1091         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
1092         hook_int_tree_tree_1, hook_constcharptr_tree_null,
1093         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
1094         hook_constcharptr_int_tree_null,
1095         hook_constcharptr_int_tree_tree_null): Delete.
1096         (default_can_output_mi_thunk_no_vcall): Constify.
1097         * hooks.h (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
1098         hook_bool_tree_hwi_hwi_tree_false,
1099         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
1100         hook_int_tree_tree_1, hook_constcharptr_tree_null,
1101         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
1102         hook_constcharptr_int_tree_null,
1103         hook_constcharptr_int_tree_tree_null): Delete.
1104         (hook_bool_mode_const_rtx_false, hook_bool_mode_const_rtx_true,
1105         hook_bool_const_tree_hwi_hwi_const_tree_false,
1106         hook_bool_const_tree_hwi_hwi_const_tree_true,
1107         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
1108         hook_constcharptr_const_tree_null,
1109         hook_constcharptr_const_rtx_null,
1110         hook_constcharptr_const_tree_const_tree_null,
1111         hook_constcharptr_int_const_tree_null,
1112         hook_constcharptr_int_const_tree_const_tree_null): New.
1113         (default_can_output_mi_thunk_no_vcall): Constify.
1114         * integrate.c (function_attribute_inlinable_p): Likewise.
1115         * integrate.h (function_attribute_inlinable_p): Likewise.
1116         * jump.c (rtx_renumbered_equal_p): Likewise.
1117         * output.h (decl_readonly_section, categorize_decl_for_section,
1118         default_use_anchors_for_symbol_p, default_binds_local_p,
1119         default_binds_local_p_1): Likewise.
1120         * rtl.h (rtx_renumbered_equal_p, decl_default_tls_model):
1121         Likewise.
1122         * target-def.h (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
1123         TARGET_VALID_DLLIMPORT_ATTRIBUTE_P, TARGET_VECTOR_OPAQUE_P,
1124         TARGET_COMMUTATIVE_P, TARGET_USE_BLOCKS_FOR_CONSTANT_P,
1125         TARGET_COMP_TYPE_ATTRIBUTES,
1126         TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P,
1127         TARGET_MS_BITFIELD_LAYOUT_P, TARGET_MANGLE_TYPE,
1128         TARGET_IN_SMALL_DATA_P, TARGET_INVALID_CONVERSION,
1129         TARGET_INVALID_UNARY_OP, TARGET_INVALID_BINARY_OP,
1130         TARGET_DWARF_CALLING_CONVENTION): Likewise.
1131         * target.h (can_output_mi_thunk, needs_block_p,
1132         first_cycle_multipass_dfa_lookahead_guard_spec,
1133         vector_alignment_reachable, comp_type_attributes,
1134         function_attribute_inlinable_p, ms_bitfield_layout_p, mangle_type,
1135         commutative_p, use_blocks_for_constant_p,
1136         use_anchors_for_symbol_p, in_small_data_p, binds_local_p,
1137         vector_opaque_p, dwarf_calling_convention, stdarg_optimize_hook,
1138         invalid_within_doloop, valid_dllimport_attribute_p,
1139         split_complex_arg, invalid_arg_for_unprototyped_fn,
1140         invalid_conversion, invalid_unary_op, invalid_binary_op):
1141         Likewise.
1142         * targhooks.c (default_invalid_within_doloop,
1143         hook_invalid_arg_for_unprototyped_fn,
1144         default_builtin_vector_alignment_reachable): Likewise.
1145         (hook_bool_rtx_commutative_p): Delete.
1146         (hook_bool_const_rtx_commutative_p): New.
1147         * targhooks.h (default_invalid_within_doloop,
1148         default_builtin_vector_alignment_reachable,
1149         hook_invalid_arg_for_unprototyped_fn): Constify.
1150         (hook_bool_rtx_commutative_p): Delete.
1151         (hook_bool_const_rtx_commutative_p): New.
1152         * varasm.c (bss_initializer_p, decl_default_tls_model,
1153         categorize_decl_for_section, decl_readonly_section,
1154         default_use_anchors_for_symbol_p, default_binds_local_p,
1155         default_binds_local_p_1): Constify.
1156
1157 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
1158
1159         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
1160         __NO_BUILTIN if -fno-builtin.
1161
1162 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
1163
1164         * config/bfin/bfin.c (print_operand): Report error instead of
1165         ICE for wrong operand.
1166
1167 2007-08-24  Michael Matz  <matz@suse.de>
1168
1169         * Makefile.in (GTFILES_H): Use $(patsubst) instead of $(subst).
1170
1171 2007-08-24  Richard Guenther  <rguenther@suse.de>
1172
1173         PR middle-end/33166
1174         * tree-ssa.c (useless_type_conversion_p): Split into a
1175         recursive and a non-recursive part.
1176         (useless_type_conversion_p_1): New function.
1177         * tree-ssa-ccp.c (fold_stmt_r): Make sure that the result
1178         from maybe_fold_offset_to_reference is trivially convertible
1179         to the desired type before doing the simplification.
1180
1181 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
1182
1183         * expr.c (store_expr): Optimize initialization of an array
1184         with STRING_CST.
1185         * expr.h (builtin_strncpy_read_str): New prototype.
1186         * builtins.c (builtin_strncpy_read_str): Remove prototype.
1187         No longer static.
1188
1189 2007-08-24  Uros Bizjak  <ubizjak@gmail.com>
1190
1191         PR middle-end/33157
1192         * ifcvt.c (noce_find_if_block): Do not clear if_info.cond_earliest
1193         field when initializing if_info structure.
1194
1195 2007-08-24  Richard Guenther  <rguenther@suse.de>
1196
1197         * Makefile.in (tree-inline.o): Add $(TARGET_H) and $(INTEGRATE_H)
1198         dependencies.
1199         * c-objc-common.c (c_cannot_inline_tree_fn): Remove.
1200         * langhooks.c (lhd_tree_inlining_cannot_inline_tree_fn): Likewise.
1201         * tree-inline.c (inlinable_function_p): Fold in common parts of
1202         the cannot_inline_tree_fn langhook.
1203         * langhooks-def.h (lhd_tree_inlining_cannot_inline_tree_fn): Remove.
1204         (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN): Likewise.
1205         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
1206         cannot_inline_tree_fn langhook.
1207         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
1208         cannot_inline_tree_fn member.
1209
1210 2007-08-24  Richard Guenther  <rguenther@suse.de>
1211
1212         * expr.c (get_inner_reference): Do computation of bitoffset
1213         from offset in a way we can detect overflow reliably.
1214
1215 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
1216
1217         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define for uClibc.
1218
1219 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
1220
1221         * config/bfin/bfin.opt (mfast-fp): Add.
1222         * config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Let
1223         libbffastfp override libgcc if -mfast-fp.
1224         * config/bfin/bfin.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
1225         * doc/invoke.texi (Option Summary): Mention -mfast-fp.
1226         (Blackfin Options): Document -mfast-fp.
1227
1228 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
1229
1230         PR tree-optimization/32573
1231         PR middle-end/32946
1232         * tree-data-ref.c (initialize_data_dependence_relation): Clear
1233         DDR_SUBSCRIPTS, DDR_DIR_VECTS and DDR_DIST_VECTS at the beginning.
1234         (finalize_ddr_dependent): Clear DDR_SUBSCRIPTS after freeing it.
1235         (build_classic_dist_vector): Return false rather than true if
1236         DDR_ARE_DEPENDENT is non-NULL at the beginning.  Return false
1237         if either subscript_dependence_tester_1 or build_classic_dist_vector_1
1238         returned false.  Don't call save_dist_v before calling
1239         build_classic_dist_vector_1.
1240         (free_dependence_relation): Don't guard freeing DDR_SUBSCRIPTS
1241         with NULL DDR_ARE_DEPENDENT.  Also free DDR_DIST_VECTS and/or
1242         DDR_DIR_VECTS vectors.
1243
1244 2007-08-23  Brian Sidebotham  <brian.sidebotham@gmail.com>
1245
1246         * configure.ac (leb128): Modify sed statement to work with any
1247         binutils version string.
1248         * configure: Regenerate
1249
1250 2007-08-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1251
1252         * config/arc/arc-protos.h arc_select_cc_mode, gen_compare_reg):
1253         Wrap in RTX_CODE macro guard.
1254         * config/arm/pe.c (arm_dllexport_p, arm_dllimport_p,
1255         arm_dllexport_name_p, arm_dllimport_name_p, arm_mark_dllexport,
1256         arm_mark_dllimport, arm_pe_encode_section_info,
1257         arm_pe_unique_section): Use ISO-C function declarations.
1258         * config/c4x/c4x-c.c (c4x_parse_pragma, c4x_pr_CODE_SECTION,
1259         c4x_pr_DATA_SECTION, c4x_pr_FUNC_IS_PURE,
1260         c4x_pr_FUNC_NEVER_RETURNS, c4x_pr_INTERRUPT, c4x_pr_ignored):
1261         Likewise.
1262         * config/iq2000/iq2000.h (ASM_OUTPUT_SKIP): Fix format warning.
1263         * config/m68hc11/m68hc11.h (ASM_OUTPUT_EXTERNAL): Undef before
1264         defining.
1265         * config/mips/mips.h (ASM_DECLARE_OBJECT_NAME): Fix format
1266         warnings.
1267         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Likewise.
1268         * config/pdp11/pdp11.c (pdp11_output_function_epilogue): Likewise.
1269         (register_move_cost): Use ISO-C function declarations.
1270         * config/pdp11/pdp11.h (PRINT_OPERAND): Fix format warnings.
1271         * config/score/score-protos.h (score_declare_object): Add
1272         ATTRIBUTE_PRINTF_4.
1273         * config/score/score.h (ASM_DECLARE_OBJECT_NAME): Fix format
1274         warnings.
1275         * final.c (profile_function): Avoid empty if-bodies.
1276         
1277         
1278         * calls.c (must_pass_in_stack_var_size,
1279         must_pass_in_stack_var_size_or_pad): Constify.
1280         * config/alpha/alpha-protos.h (function_value): Likewise.
1281         * config/alpha/alpha.c (alpha_return_in_memory,
1282         alpha_pass_by_reference, function_value,
1283         unicosmk_must_pass_in_stack, TARGET_PROMOTE_FUNCTION_ARGS,
1284         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
1285         Likewise.
1286         * config/arc/arc.c (arc_return_in_memory, arc_pass_by_reference,
1287         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
1288         TARGET_PROMOTE_PROTOTYPES): Likewise.
1289         * config/arm/arm-protos.h (arm_return_in_memory,
1290         arm_pad_arg_upward, arm_function_value): Likewise.
1291         * config/arm/arm.c (arm_pass_by_reference,
1292         arm_promote_prototypes, arm_return_in_msb, arm_must_pass_in_stack,
1293         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
1294         arm_function_value, arm_return_in_memory, arm_pad_arg_upward):
1295         Likewise.
1296         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
1297         * config/avr/avr-protos.h (avr_function_value): Likewise.
1298         * config/avr/avr.c (avr_return_in_memory,
1299         gas_output_limited_string, gas_output_ascii, avr_function_value,
1300         avr_return_in_memory): Likewise.
1301         * config/bfin/bfin-protos.h (bfin_return_in_memory): Likewise.
1302         * config/bfin/bfin.c (bfin_pass_by_reference,
1303         bfin_return_in_memory, TARGET_PROMOTE_PROTOTYPES,
1304         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN):
1305         Likewise.
1306         * config/cris/cris.c (cris_pass_by_reference,
1307         TARGET_PROMOTE_FUNCTION_ARGS): Likewise.
1308         * config/crx/crx.c (crx_return_in_memory): Likewise.
1309         * config/darwin.c (function_base, machopic_function_base_name):
1310         Likewise.
1311         * config/fr30/fr30.c (fr30_must_pass_in_stack,
1312         TARGET_PROMOTE_PROTOTYPES): Likewise.
1313         * config/frv/frv.c (frv_must_pass_in_stack): Likewise.
1314         * config/h8300/h8300.c (h8300_return_in_memory): Likewise.
1315         * config/i386/i386-protos.h (ix86_return_in_memory,
1316         ix86_sol10_return_in_memory): Likewise.
1317         * config/i386/i386.c (ix86_function_value,
1318         ix86_function_sseregparm, ix86_must_pass_in_stack,
1319         type_natural_mode, classify_argument, examine_argument,
1320         construct_container, ix86_pass_by_reference, function_value_32,
1321         function_value_64, ix86_function_value_1, return_in_memory_32,
1322         return_in_memory_64, return_in_memory_ms_64,
1323         ix86_return_in_memory, ix86_sol10_return_in_memory,
1324         TARGET_PROMOTE_PROTOTYPES): Likewise.
1325         * config/ia64/ia64-protos.h (ia64_function_value,
1326         ia64_hpux_function_arg_padding): Likewise.
1327         * config/ia64/ia64.c (hfa_element_mode, ia64_return_in_memory,
1328         ia64_function_value, bundle_state_hash, bundle_state_eq_p,
1329         ia64_hpux_function_arg_padding): Likewise.
1330         * config/iq2000/iq2000-protos.h (function_arg,
1331         iq2000_function_value): Likewise.
1332         * config/iq2000/iq2000.c (iq2000_return_in_memory,
1333         iq2000_pass_by_reference, TARGET_PROMOTE_FUNCTION_ARGS,
1334         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
1335         function_arg, iq2000_function_value): Likewise.
1336         * config/m32c/m32c-protos.h (m32c_function_value,
1337         m32c_promote_function_return): Likewise.
1338         * config/m32c/m32c.c (m32c_pass_by_reference,
1339         m32c_promote_prototypes, m32c_promote_function_return,
1340         m32c_function_value): Likewise.
1341         * config/m32r/m32r.c (m32r_return_in_memory,
1342         m32r_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
1343         m32r_in_small_data_p): Likewise.
1344         * config/m68hc11/m68hc11-protos.h (m68hc11_function_arg_padding):
1345         Likewise.
1346         * config/m68hc11/m68hc11.c (m68hc11_return_in_memory,
1347         m68hc11_function_arg_padding): Likewise.
1348         * config/m68k/m68k-protos.h (m68k_function_value): Likewise.
1349         * config/m68k/m68k.c (TARGET_PROMOTE_PROTOTYPES,
1350         m68k_function_value): Likewise.
1351         * config/mcore/mcore-protos.h (mcore_num_arg_regs,
1352         mcore_function_value): Likewise.
1353         * config/mcore/mcore.c (handle_structs_in_regs,
1354         mcore_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
1355         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
1356         mcore_num_arg_regs, mcore_function_value): Likewise.
1357         * config/mips/mips-protos.h (mips_pad_arg_upward,
1358         mips_function_value): Likewise.
1359         * config/mips/mips.c (mips_fpr_return_fields, mips_return_in_msb,
1360         mips_return_in_memory, mips_pass_by_reference, mips_callee_copies,
1361         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
1362         TARGET_PROMOTE_PROTOTYPES, mips_pad_arg_upward,
1363         mips_function_value): Likewise.
1364         * config/mmix/mmix-protos.h (mmix_function_outgoing_value):
1365         Likewise.
1366         * config/mmix/mmix.c (mmix_pass_by_reference,
1367         TARGET_PROMOTE_FUNCTION_ARGS, mmix_function_outgoing_value,
1368         mmix_encode_section_info): Likewise.
1369         * config/mn10300/mn10300-protos.h (mn10300_function_value):
1370         Likewise.
1371         * config/mn10300/mn10300.c (mn10300_return_in_memory,
1372         mn10300_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
1373         mn10300_function_value): Likewise.
1374         * config/mt/mt-protos.h (mt_function_value): Likewise.
1375         * config/mt/mt.c (mt_pass_by_reference, mt_function_value,
1376         mt_pass_in_stack, TARGET_PROMOTE_PROTOTYPES): Likewise.
1377         * config/pa/pa-protos.h (function_arg_padding, function_value,
1378         pa_return_in_memory): Likewise.
1379         * config/pa/pa.c (pa_pass_by_reference,
1380         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
1381         function_arg_padding, function_value, pa_return_in_memory):
1382         Likewise.
1383         * config/pdp11/pdp11.c (pdp11_return_in_memory): Likewise.
1384         * config/rs6000/rs6000-protos.h (rs6000_function_value,
1385         function_arg_padding): Likewise.
1386         * config/rs6000/rs6000.c (rs6000_return_in_memory,
1387         rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
1388         rs6000_pass_by_reference, rs6000_must_pass_in_stack,
1389         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
1390         function_arg_padding, altivec_expand_dst_builtin,
1391         altivec_expand_builtin, rs6000_expand_builtin, spe_init_builtins,
1392         altivec_init_builtins, rs6000_common_init_builtins,
1393         rs6000_function_value): Likewise.
1394         * s390/s390-protos.h (s390_function_value): Likewise.
1395         * config/s390/s390.c (s390_function_arg_size,
1396         s390_pass_by_reference, s390_return_in_memory,
1397         s390_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
1398         TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
1399         * config/score/score-protos.h (score_function_value): Likewise.
1400         * config/score/score.c (score_arg_partial_bytes,
1401         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
1402         TARGET_PROMOTE_PROTOTYPES, score_return_in_memory,
1403         score_pass_by_reference, score_add_offset, score_function_value):
1404         Likewise.
1405         * config/sh/sh-protos.h (sh_attr_renesas_p,
1406         sh_promote_prototypes): Likewise.
1407         * config/sh/sh.c (sh_return_in_memory, sh_pass_by_reference,
1408         sh_callee_copies, sh_promote_prototypes, shcompact_byref,
1409         sh_attr_renesas_p): Likewise.
1410         * config/sparc/sparc-protos.h (function_value,
1411         function_arg_padding): Likewise.
1412         * config/sparc/sparc.c (sparc_promote_prototypes,
1413         sparc_return_in_memory, sparc_pass_by_reference,
1414         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
1415         function_arg_record_value_2, function_arg_record_value_1,
1416         function_arg_record_value, function_arg_record_value,
1417         function_arg_padding, function_value): Likewise.
1418         * config/spu/spu-protos.h (spu_function_value): Likewise.
1419         * config/spu/spu.c (spu_pass_by_reference, spu_return_in_memory,
1420         spu_function_value): Likewise.
1421         * config/stormy16/stormy16-protos.h (xstormy16_function_value):
1422         Likewise.
1423         * config/stormy16/stormy16.c (xstormy16_return_in_memory,
1424         xstormy16_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
1425         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
1426         Likewise.
1427         * config/v850/v850.c (v850_return_in_memory,
1428         v850_pass_by_reference, TARGET_PROMOTE_PROTOTYPES): Likewise.
1429         * config/vax/vax.c (TARGET_PROMOTE_PROTOTYPES): Likewise.
1430         * config/xtensa/xtensa.c (xtensa_return_in_msb,
1431         xtensa_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
1432         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
1433         Likewise.
1434         * explow.c (promote_mode, hard_function_value): Likewise.
1435         * expr.h (hard_function_value, promote_mode): Likewise.
1436         * function.c (aggregate_value_p): Likewise.
1437         * hooks.c (hook_bool_const_tree_true): New.
1438         * hooks.h (hook_bool_const_tree_true): New.
1439         * sdbout.c (SET_KNOWN_TYPE_TAG, plain_type_1): Constify.
1440         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
1441         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
1442         TARGET_RETURN_IN_MSB): Likewise.
1443         * target.h (promote_function_args, promote_function_return,
1444         promote_prototypes, return_in_memory, return_in_msb,
1445         pass_by_reference, must_pass_in_stack, callee_copies,
1446         function_value): Likewise.
1447         * targhooks.c (default_return_in_memory,
1448         hook_pass_by_reference_must_pass_in_stack,
1449         hook_callee_copies_named,
1450         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
1451         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
1452         default_function_value): Likewise. 
1453         * targhooks.h (default_return_in_memory,
1454         hook_pass_by_reference_must_pass_in_stack,
1455         hook_callee_copies_named,
1456         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
1457         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
1458         default_function_value): Likewise.
1459         * tree-ssa-structalias.c (const_equiv_class_label_t): New.
1460         (equiv_class_label_hash, equiv_class_label_eq): Constify.
1461         * tree-vectorizer.c (bb_in_loop_p): Likewise.
1462         * tree.c (needs_to_live_in_memory): Likewise.
1463         * tree.h (struct tree_type, needs_to_live_in_memory,
1464         aggregate_value_p, must_pass_in_stack_var_size,
1465         must_pass_in_stack_var_size_or_pad): Likewise.
1466         * vmsdbgout.c (write_debug_addr, write_debug_delta4,
1467         write_debug_string, ASM_OUTPUT_DEBUG_STRING, write_rtnbeg,
1468         lookup_filename): Likewise.
1469
1470 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
1471
1472         PR target/17390
1473         * config/i386/i386.c (ix86_expand_fp_compare): Expand fp comparison to
1474         fake fcomi i387 instruction for !TARGET_CMOVE.
1475         (ix86_expand_branch): Expand natural sequence with one jump for
1476         all targets, not only TARGET_CMOVE.
1477         * config/i386/i386.md (*cmpfp_0_cc): New define_insn_and_split
1478         pattern to implement fake fcomi sequence.  Split instruction after
1479         reload to correct compare sequences.
1480         (*cmpfp_xf_cc): Ditto.
1481         (*cmpfp_<mode>_cc): Ditto.
1482         (*cmpfp_u_cc): Ditto.
1483         (*cmpfp_<mode>_cc): Ditto.
1484
1485 2007-08-23  Richard Guenther  <rguenther@suse.de>
1486
1487         * tree-pretty-print.c (dump_generic_node): Annotate
1488         GIMPLE_MODIFY_STMTs with volatile ops with "{v}".
1489
1490 2007-08-23  Richard Guenther  <rguenther@suse.de>
1491
1492         * builtins.c (expand_builtin_mathfn): Wrap argument in
1493         save_expr directly instead of re-building the call.
1494         (expand_builtin_mathfn_2): Likewise.
1495         (expand_builtin_mathfn_3): Likewise.
1496         (expand_builtin_interclass_mathfn): Likewise.
1497         (expand_builtin_int_roundingfn): Set arg.
1498         (expand_builtin_int_roundingfn_2): Likewise.
1499
1500 2007-08-23  Paolo Bonzini  <bonzini@gnu.org>
1501
1502         * config/i386/sse.md (*sse_and<mode>3, *sse_ior<mode>3,
1503         *sse_nand<mode>3, *sse_xor<mode>3): New.
1504
1505 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
1506
1507         * config/i386/i386.h (PRINT_OPERAND_PUNCT_VALID_P): Add ';' code.
1508         * config/i386/i386.c (print_operand): Handle ';' code.  Output
1509         semicolon for TARGET_MACHO.
1510         * config/i386/sync.md (*sync_compare_and_swap<mode>): Use '%;' to
1511         emit semicolon after 'lock' prefix.
1512         (sync_double_compare_and_swap<mode>): Ditto.
1513         (*sync_double_compare_and_swapdi_pic): Ditto.
1514         (*sync_compare_and_swap_cc<mode>): Ditto.
1515         (sync_double_compare_and_swap_cc<mode>): Ditto.
1516         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
1517         (sync_old_add<mode>): Ditto.
1518         (sync_add<mode>): Ditto.
1519         (sync_sub<mode>): Ditto.
1520         (sync_ior<mode>): Ditto.
1521         (sync_and<mode>): Ditto.
1522         (sync_xor<mode>): Ditto.
1523
1524 2007-08-22  Chao-ying Fu  <fu@mips.com>
1525
1526         * rtl.c (rtx_code_size): Check CONST_FIXED to calcualte correct sizes
1527         in DEF_RTL_EXPR.
1528         (copy_rtx): Handle CONST_FIXED.
1529         (rtx_equal_p): Likewise.
1530         * rtl.h (fixed_value.h): New include.
1531         (rtx_def): Add a new field of fixed_value to u.
1532         (XCNMPFV): Define for accessing fixed_value.
1533         (CONST_FIXED_VALUE, CONST_FIXED_VALUE_HIGH, CONST_FIXED_VALUE_LOW):
1534         Define.
1535         * rtl.def (CONST_FIXED): New constant.
1536         (SS_MULT, US_MULT, SS_DIV, US_DIV, FRACT_CONVERT,
1537         UNSIGNED_FRACT_CONVERT, SAT_FRACT, UNSIGNED_SAT_FRACT, US_NEG,
1538         US_ASHIFT): New codes.
1539         * doc/rtl.texi (Expressions): Document const_fixed, us_neg, ss_mult,
1540         us_mult, ss_div, us_div, us_ashift, fract_convert, sat_fract,
1541         unsigned_fract_convert, unsigned_sat_fract): Document them.
1542         * varasm.c (assemble_integer): Extend to support fixed-point constants
1543         by using different machine classes.
1544         (decode_addr_const): Handle FIXED_CST.
1545         (const_hash_1): Likewise.
1546         (compare_constant): Likewise.
1547         (copy_constant): Likewise.
1548         (const_rtx_hash_1): Handle CONST_FIXED.
1549         (output_constant_pool_2): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
1550         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
1551         MODE_VECTOR_UACCUM.
1552         (initializer_constant_valid_p): Handle FIXED_CST.
1553         (output_constant): Support FIXED_POINT_TYPE.
1554         * gengenrtl.c (excluded_rtx): Check CONST_FIXED to exclude.
1555         * cse.c (hash_rtx): Support CONST_FIXED.
1556         (exp_equiv_p): Likewise.
1557         (cannon_reg): Likewise.
1558         (fold_rtx): Likewise.
1559         (equiv_constant): Likewise.
1560         (cse_process_notes_1): Likewise.
1561         (count_reg_usage): Likewise.
1562         * cselib.c (entry_and_rtx_equal_p): Check CONST_FIXED.
1563         (rtx_equal_for_cselib_p): Handle CONST_FIXED.
1564         (wrap_constant): Check CONST_FIXED.
1565         (cselib_hash_rtx): Support CONST_FIXED.
1566         (cselib_subst_to_values): Likewise.
1567         * df-scan.c (df_uses_record): Likewise.
1568         * gcse.c (want_to_gcse_p): Likewise.
1569         (oprs_unchanged_p): Likewise.
1570         (oprs_not_set_p): Likewise.
1571         (compute_transp): Likewise.
1572         (extract_mentioned_regs_helper): Likewise.
1573         * genemit.c (gen_exp): Likewise.
1574         * local-alloc.c (equiv_init_varies_p): Likewise.
1575         (contains_replace_regs): Likewise.
1576         (memref_referenced_p): Likewise.
1577         * loop-invariant.c (check_maybe_invariant): Likewise.
1578         (hash_invariant_expr_1): Likewise.
1579         (invariant_expr_equal_p): Likewise.
1580         * postreload-gcse.c (oprs_unchanged_p): Likewise.
1581         * regclass.c (reg_scan_mark_refs): Likewise.
1582         * regrename.c (scan_rtx): Likewise.
1583         * resource.c (mark_referenced_resources): Likewise.
1584         (mark_set_resources): Likewise.
1585         * rtlanal.c (rtx_unstable_p): Likewise.
1586         (rtx_varies_p): Likewise.
1587         (count_occurrences): Likewise.
1588         (reg_mentioned_p): Likewise.
1589         (modified_between_p): Likewise.
1590         (modified_in_p): Likewise.
1591         (volatile_insn_p): Likewise.
1592         (volatile_refs_p): Likewise.
1593         (side_effects_p): Likewise.
1594         (may_trap_p_1): Likewise.
1595         (inequality_comparisons_p): Likewise.
1596         (computed_jump_p_1): Likewise.
1597         (commutative_operand_precedence): Likewise.
1598         * sched-deps.c (sched_analyze_2): Likewise.
1599         * sched-vis.c (print_value): Likewise.
1600         * reload.c (operands_match_p): Likewise.
1601         (subst_reg_equivs): Likewise.
1602         * reload1.c (eliminate_regs_1): Likewise.
1603         (elimination_effects): Likewise.
1604         (scan_paradoxical_subregs): Likewise.
1605         * alias.c (rtx_equal_for_memref_p): Likewise.
1606         * Makefile.in (RTL_BASE_H): Add fixed-value.h.
1607         * emit-rtl.c (const_fixed_htab): New hash table.
1608         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed):
1609         Declare.
1610         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed,
1611         const_fixed_from_fixed_value): New functions.
1612         (verify_rtx_sharing): Handle CONST_FIXED.
1613         (copy_rtx_if_shared_1): Likewise.
1614         (reset_used_flags): Likewise.
1615         (set_used_flags): Likewise.
1616         (copy_insn_1): Likewise.
1617         (init_emit_once): Create const_fixed_htab.
1618         Store fixed-point scalar and vector zero and one to const_tiny_rtx.
1619
1620 2007-08-22  Zdenek Dvorak  <ook@ucw.cz>
1621
1622         PR tree-optimization/32949
1623         * tree-ssa-loop-niter.c (scev_probably_wraps_p): Test nowrap_type_p
1624         before failing for ivs with non-constant step.
1625
1626 2007-08-22  Hans-Peter Nilsson  <hp@axis.com>
1627
1628         * doc/md.texi (Iterators): Renamed from Macros.  All contents
1629         changed to reflect rename of respectively define_code_macro and
1630         define_mode_macro to define_code_iterator and define_mode_iterator.
1631         (Mode Iterators, Code Iterators): Similar.
1632         * read-rtl.c (struct iterator_group, struct iterator_traverse_data)
1633         (uses_mode_iterator_p, apply_mode_iterator, uses_code_iterator_p)
1634         (apply_iterator_to_string, uses_iterator_p, apply_iterator_traverse)
1635         (initialize_iterators, find_iterator, check_code_iterator)
1636         (map_attr_string, apply_mode_maps, apply_iterator_to_rtx, add_mapping)
1637         (read_mapping, read_rtx_1): Similar.
1638         * config/alpha/sync.md, config/alpha/alpha.md, config/frv/frv.md,
1639         config/s390/s390.md, config/m32c/blkmov.md, config/m32c/m32c.md,
1640         config/spu/spu.md, config/sparc/sparc.md, config/sparc/sync.md,
1641         config/i386/i386.md, config/i386/mmx.md, config/i386/sse.md,
1642         config/i386/sync.md, config/crx/crx.md, config/xtensa/xtensa.md,
1643         config/cris/cris.c, config/cris/cris.md, config/ia64/sync.md,
1644         config/ia64/div.md, config/ia64/vect.md, config/ia64/ia64.md,
1645         config/m68k/m68k.md, config/rs6000/spe.md, config/rs6000/altivec.md,
1646         config/rs6000/sync.md, config/rs6000/rs6000.md,
1647         config/arm/vec-common.md, config/arm/neon.md, config/arm/iwmmxt.md,
1648         config/arm/arm.md, config/mips/mips-dsp.md, config/mips/mips.md,
1649         config/vax/vax.md, config/bfin/bfin.md: Similar.
1650
1651 2007-08-22  David Daney  <ddaney@avtrex.com>
1652
1653         * doc/install.texi (Testing): Mention testing on a simulator.
1654
1655 2007-08-22  Janis Johnson  <janis187@us.ibm.com>
1656
1657         * config/dfp-bit.c (DFP_TO_DFP): Check for overflow.
1658
1659         * doc/libgcc.texi (Decimal float library routines): Fix formatting
1660         and rearrange floating point conversion functions into different
1661         categories.
1662
1663 2007-08-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
1664
1665         * target.h (struct gcc_target.sched: dfa_pre_advance_cycle,
1666         dfa_post_advance_cycle): New scheduler hooks.
1667         * target-def.h (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
1668         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): New macros to initialize
1669         new hooks.
1670         (TARGET_SCHED): Use them.
1671         * doc/tm.texi (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
1672         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Document new hooks.
1673         * haifa-sched.c (advance_one_cycle): Invoke new hooks.
1674
1675         * genautomata.c (insn_has_dfa_reservation_p): New DFA interface
1676         function to facilitate debugging.
1677         (INSN_HAS_DFA_RESERVATION_P_FUNC_NAME): New macro.
1678         (output_insn_has_dfa_reservation_p): New static function to output
1679         insn_has_dfa_reservation_p ().
1680         (write_automata): Use it.
1681         * genattr.c (main): Output declaration for
1682         insn_has_dfa_reservation_p ().
1683
1684 2007-08-22  Christian Bruel  <christian.bruel@st.com>   
1685             Richard Guenther <rguenther@suse.de>
1686         
1687         * fold-const.c (fold_binary): Optimize A-A if -ffinite-math-only.
1688         * simplify_rtx (simplify_binary_operation_1): Likewise.
1689                 
1690 2007-08-22  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1691
1692         PR rtl-optimization/32557
1693         * df-problems.c (df_note_bb_compute): Use mws->start_regno instead
1694         of REGNO (mws->mw_reg).
1695
1696 2007-08-22  Richard Guenther  <rguenther@suse.de>
1697
1698         PR middle-end/33007
1699         * builtins.c (expand_builtin_int_roundingfn): Replace call
1700         argument wrapped with SAVE_EXPR directly.
1701         (expand_builtin_int_roundingfn_2): Likewise.
1702
1703 2007-08-22  Richard Guenther  <rguenther@suse.de>
1704
1705         * tree-inline.c (inlinable_function_p): Restore disregarding
1706         inline limits for GNU extern inline functions.
1707
1708 2007-08-22  Richard Guenther  <rguenther@suse.de>
1709
1710         PR middle-end/32563
1711         * tree.c (host_integerp): Treat sizetype as signed as it is
1712         sign-extended.
1713
1714 2007-08-21  Ian Lance Taylor  <iant@google.com>
1715
1716         PR tree-optimization/33134
1717         * tree-vrp.c (adjust_range_with_scev): Call
1718         set_value_range_to_value.
1719
1720 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
1721
1722         * value-prof.h (gimple_remove_histogram_value): Remove duplicate
1723         prototype.
1724         
1725 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
1726
1727         * tree-flow-inline.h (next_imm_use_stmt): Remove unecessary
1728         whitespace.
1729
1730 2007-08-21  Nathan Froyd  <froydnj@codesourcery.com>
1731
1732         * config/rs6000/rs6000.c (expand_block_clear): Add TARGET_SPE
1733         cases to set eight bytes at a time.
1734         (expand_block_move): Likewise.
1735         
1736 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
1737
1738         PR debug/32610
1739         * dwarf2out.c (gen_decl_die): Don't call
1740         gen_tagged_type_instantiation_die if decl doesn't have tagged type.
1741
1742 2007-08-21  Paul Brook  <paul@codesourcery.com>
1743             Nathan Sidwell  <nathan@codesourcery.com>
1744             Mark Mitchell  <mark@codesourcery.com>
1745             Joseph Myers  <joseph@codesourcery.com>
1746
1747         * configure.ac: Add --with-pkgversion and --with-bugurl.
1748         * configure: Regenerate.
1749         * doc/install.texi: Document them.
1750         * version.c (version_string): Remove VERSUFFIX.
1751         (VERSUFFIX): Remove.
1752         (pkgversion_string): New.
1753         (bug_report_url): Do not hard-code initializer.
1754         * version.h (pkgversion_string): Declare.
1755         * Makefile.in (PKGVERSION_s, BUGURL_s, PKGVERSION, BUGURL_TEXI):
1756         Define.
1757         (version.o): Define PKGVERSION and BUGURL.
1758         (gcc-vers.texi): Define VERSION_PACKAGE and BUGURL.
1759         (%.pod): Define BUGURL.
1760         * gcc.c (process_command, main): Use pkgversion_string.
1761         * toplev.c (compile_file, print_version): Likewise.
1762         * protoize.c (main): Likewise.
1763         * gcov.c (print_version): Likewise.  Update copyright date.
1764         * gcov-dump.c (print_version): Likewise.  Update copyright date.
1765         * mips-tdump.c (main): Likewise.  Update copyright date.
1766         * mips-tfile.c (main): Likewise.  Update copyright date.
1767         * doc/include/gcc-common.texi: Include VERSION_PACKAGE as subtitle.
1768         * doc/bugreport.texi: Use BUGURL for bug-reporting instructions;
1769         shorten description.
1770         * doc/gcc.texi: Include VERSION_PACKAGE in version description.
1771         * doc/gccint.texi: Likewise.
1772         * doc/invoke.texi: Use BUGURL for bug-reporting instructions.
1773         Update copyright date.
1774
1775 2007-08-21  Uros Bizjak  <ubizjak@gmail.com>
1776
1777         * config/i386/i386.c (ix86_expand_clear): Use FLAGS_REG.
1778         (ix86_expand_strlensi_unroll_1): Ditto.
1779         (ix86_expand_branch): Use FLAGS_REG and FPSR_REG.
1780         (ix86_expand_carry_flag_compare): Update comment.
1781
1782 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
1783
1784         PR middle-end/32912
1785         * fold-const.c (fold_unary): Optimize BIT_NOT_EXPR of VECTOR_CST.
1786         (fold_binary): Handle vectors in X | ~X and X ^ ~X optimizations.
1787
1788 2007-08-21  Richard Guenther  <rguenther@suse.de>
1789
1790         * fold-const.c (fold_binary): Revert removing of index +p PTR folding.
1791
1792 2007-08-21  Richard Guenther  <rguenther@suse.de>
1793
1794         PR middle-end/33122
1795         * fold-const.c (fold_binary): Remove index +p PTR folding.
1796         Fix types of POINTER_PLUS_EXPR generated by folding of
1797         (PTR +p B) +p A.
1798
1799 2007-08-20  Chao-ying Fu  <fu@mips.com>
1800
1801         * c-common.h (enum rid): Add new enumeration values of RID_SAT,
1802         RID_FRACT, and RID_ACCUM.  RID_SAT needs to be inserted before
1803         RID_ONEWAY, so that it can be checked in declspecs_add_type.
1804         (c_common_fixed_point_type_for_size): Declare.
1805         * c-parser.c (reswords): Add _Fract, _Accum, and _Sat.
1806         (c_token_starts_typename): Handle RID_FRACT, RID_ACCUM, and RID_SAT.
1807         (c_token_starts_declspecs): Likewise.
1808         (c_parser_declspecs): Likewise.
1809         (c_parser_attributes): Likewise.
1810         * c-tree.h (enum c_typespec_keyword): Add cts_fract and cts_accum.
1811         (c_declspecs): Add saturating_p.
1812         * c-decl.c (build_null_declspecs): Initialize saturating_p.
1813         (declspecs_add_type): Avoid using complex with _Fract, _Accum, or
1814         _Sat.  Handle RID_SAT.
1815         Avoid using void, bool, char, int, float, double, _Decimal32,
1816         _Decimal64, _Decimal128, and complex with _Sat.
1817         Handle RID_FRACT and RID_ACCUM.
1818         Make sure _Sat is used with _Fract or _Accum.
1819         (finish_declspecs): Handle cts_fract and cts_accum.
1820         * c-common.c (fixed-value.h): New include.
1821         (constant_expression_warning): Handle FIXED_CST.
1822         (overflow_warning): Likewise.
1823         (warnings_for_convert_and_check): Likewise.
1824         (c_common_fixed_point_type_for_size): New.
1825         (c_common_type_for_mode): Handle fixed-point modes to
1826         return various saturating/non-saturating, signed/unsigned types.
1827         (c_common_signed_or_unsigned_type): Support fixed-point types.
1828         (shorten_compare): Check fixed-point zero.
1829         Handle FIXED_POINT_TYPE.
1830         (c_common_truthvalue_conversion): Handle FIXED_CST.
1831         Handle FIXED_POINT_TYPE.
1832         (c_common_nodes_and_builtins): Record builtin types for fixed-point
1833         types.
1834         (handle_mode_attribute): Handle fixed-point modes.  Need to check
1835         if the signness of base type and fixed-point modes are consistent.
1836         (handle_vector_size_attribute): Handle fixed-point modes.
1837         (same_scalar_type_ignoring_signedness): Handle FIXED_POINT_TYPE.
1838         (warn_for_div_by_zero): Check fixed-point zero.
1839         * c-typeck.c (c_common_type): Check FIXED_POINT_TYPE.  Build
1840         a common fixed-point type based on fbit, ibit, sign, and saturation.
1841         (build_unary_op): Allow FIXED_POINT_TYPE for CONVERT_EXPR,
1842         NEGATE_EXPR, TRUTH_NOT_EXPR, PREINCREMENT_EXPR, POSTINCREMENT_EXPR,
1843         PREDECREMENT_EXPR, and POSTDECREMENT_EXPR.
1844         (convert_for_assignment): Support FIXED_POINT_TYPE.
1845         (digest_init): Handle FIXED_POINT_TYPE.
1846         (build_binary_op): Support FIXED_POINT_TYPE in *_DIV_EXPR,
1847         TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR, TRUTH_AND_EXPR, TRUTH_OR_EXPR,
1848         TRUTH_XOR_EXPR, RSHIFT_EXPR, LSHIFT_EXPR, EQ_EXPR, NE_EXPR, LE_EXPR,
1849         GE_EXPR, LT_EXPR, GT_EXPR.
1850         * target-def.h (TARGET_FIXED_POINT_SUPPORTED_P): New.
1851         (TARGET_INITIALIZER): Add TARGET_FIXED_POINT_SUPPORTED_P.
1852         * target.h (gcc_target): Add fixed_point_supported_p.
1853         * targhooks.c (default_scalar_mode_supported_p): Handle MODE_FRACT,
1854         MODE_UFRACT, MODE_ACCUM, and MODE_UACCUM.
1855         (default_fixed_point_supported_p): Define.
1856         * targhooks.h (default_fixed_point_supported_p): Declare.
1857         * doc/tm.texi (TARGET_FIXED_POINT_SUPPORTED_P): Add.
1858         * doc/install.texi (Configuration): Add --enable-fixed-point.
1859         * configure.ac (--enable-fixed-point): New to enable fixed-point
1860         arithmetic extension to C.  For mips targets, we enable it by default.
1861         * configure, config.in: Regenerate.
1862
1863 2007-08-20  Pawel Sikora  <pluto@pld-linux.org>
1864
1865         * doc/invoke.texi (-Wnon-virtual-dtor): Update documentation.
1866
1867 2007-08-20  David Edelsohn  <edelsohn@gnu.org>
1868
1869         * dwarf2out.c (text_section_used): Move declaration outside ifdef
1870         DWARF2_DEBUGGING_INFO.
1871         (cold_text_section_used): Same.
1872         (cold_text_section): Same.
1873
1874 2007-08-20  Richard Guenther  <rguenther@suse.de>
1875
1876         * c-typeck.c (convert_for_assignment): Use the type of
1877         the member for the initialization.
1878
1879 2007-08-20  Richard Guenther  <rguenther@suse.de>
1880
1881         * c-objc-common.c (c_disregard_inline_limits): Remove.
1882         * c-objc-common.h (c_disregard_inline_limits): Likewise.
1883         * cgraphunit.c (cgraph_process_new_functions): Call
1884         disregard_inline_limits_p.
1885         (cgraph_preserve_function_body_p): Likewise.
1886         * ipa-inline.c (compute_inline_parameters): Likewise.
1887         * langhooks-def.h (lhd_tree_inlining_disregard_inline_limits):
1888         Remove.
1889         (LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS): Remove.
1890         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
1891         disregard_inline_limits langhook.
1892         * langhooks.c (lhd_tree_inlining_disregard_inline_limits):
1893         Remove.
1894         * langhooks.h (lang_hooks_for_tree_inlining): Remove
1895         disregard_inline_limits langhook.
1896         * tree-inline.c (disregard_inline_limits_p): New function.
1897         * tree-inline.h (disregard_inline_limits_p): Declare.
1898
1899 2007-08-20  Richard Guenther  <rguenther@suse.de>
1900
1901         * langhooks-def.h (lhd_tree_inlining_auto_var_in_fn_p): Remove.
1902         (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P): Likewise.
1903         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
1904         auto_var_in_fn_p langhook.
1905         * langhooks.c (lhd_tree_inlining_auto_var_in_fn_p): Rename and
1906         move ...
1907         * tree.c (auto_var_in_fn_p): ... here.
1908         (find_var_from_fn): Call auto_var_in_fn_p directly.
1909         * langhooks.h (lang_hooks_for_tree_inlining): Remove
1910         auto_var_in_fn_p langhook.
1911         * tree-inline.c (remap_decls): Call auto_var_in_fn_p directly.
1912         (copy_body_r): Likewise.
1913         (self_inlining_addr_expr): Likewise.
1914         * tree.h (auto_var_in_fn_p): Declare.
1915
1916 2007-08-20  Richard Guenther  <rguenther@suse.de>
1917
1918         * tree.c (WALK_SUBTREE): Call walk_tree_1.
1919         (walk_type_fields): Take lh parameter.
1920         (walk_tree): Rename to ...
1921         (walk_tree_1): ... this.  Do not call the walk_subtrees
1922         langhook but the now passed callback.  Pass lh on recursion.
1923         (walk_tree_without_duplicates): Rename to ...
1924         (walk_tree_without_duplicates_1): ... this.  Take lh parameter
1925         and call walk_tree_1.
1926         * tree.h (walk_tree_lh): New typedef.
1927         (walk_tree_1): Declare.
1928         (walk_tree_without_duplicates_1): Likewise.
1929         (walk_tree): New define to walk_tree_1 with NULL lh parameter.
1930         (walk_tree_without_duplicates): New define to
1931         walk_tree_without_duplicates_1 with NULL lh parameter.
1932         * langhooks.c (lhd_tree_inlining_walk_subtrees): Remove.
1933         * langhooks.h (lang_hooks_for_tree_inlining): Remove walk_subtrees
1934         langhook.
1935         * langhooks-def.h (lhd_tree_inlining_walk_subtrees): Remove.
1936         (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Likewise.
1937         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove walk_subtrees
1938         initializer.
1939
1940 2007-08-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1941
1942         PR middle-end/30564
1943         * tree-inline.c (optimize_inline_calls): Move the cgraph checking
1944         code in front of the compacting of basic blocks.
1945         Move the folding of statements inbetween the cgraph checking
1946         and compacting of basic blocks.
1947
1948 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1949            Serge Belyshev  <belyshev@depni.sinp.msu.ru>
1950
1951         PR target/32522
1952         * config/alpha/alpha.c (va_list_skip_additions): Check for
1953         POINTER_PLUS_EXPR in addition to PLUS_EXPR.
1954         (alpha_stdarg_optimize_hook): Look for POINTER_PLUS_EXPR instead of
1955         PLUS_EXPR when checking ap.__base.
1956         (alpha_va_start): Create POINTER_PLUS_EXPR instead of PLUS_EXPR
1957         when doing addition on pointer types.  Use size_int instead of
1958         build_int_cst.
1959         (alpha_gimplify_va_arg_1): Likewise, but use sizetype instead of
1960         ptr_type in the second operand.
1961
1962 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
1963
1964         PR target/33115
1965         * config/i386/darwin.h (CC1_SPEC): Add %(cc1_cpu) in front.
1966
1967 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1968
1969         PR middle-end/32940
1970         * cfgexpand.c  (expand_one_register_var): Mark pointer
1971         DECL_ARTIFICIAL as REG_POINTER also.
1972         * stmt.c (expand_decl): Likewise.
1973
1974 2007-08-19  Daniel Berlin  <dberlin@dberlin.org>
1975
1976         Fix PR 32772
1977         Fix PR 32716
1978         Fix PR 32328
1979         Fix PR 32303
1980
1981         * tree-flow.h (struct stmt_ann_d): Remove makes_clobbering_call.
1982         * tree-ssa-alias.c (init_transitive_clobber_worklist): Add
1983         on_worklist argument and avoid adding things to worklist multiple
1984         times.
1985         (add_to_worklist): Ditto.
1986         (mark_aliases_call_clobbered): Mark entire structure clobbered if
1987         single SFT is clobbered.
1988         (set_initial_properties): Ditto.
1989         (compute_call_clobbered): Update for changes to function
1990         arguments.
1991         (create_overlap_variables_for): Always create SFT for offset 0.
1992         (create_structure_vars): Handle PHI's, since we are in SSA form at
1993         this point.
1994         * tree-ssa-loop-ivopts.c (get_ref_tag): Don't return subvars.
1995         * tree-ssa-operands.c (access_can_touch_variable): Don't handle
1996         TARGET_MEM_REF.
1997         (add_vars_for_offset): Figure out aliases from access + points-to.
1998         (add_virtual_operand): Use add_vars-for_offset.
1999         (get_tmr_operands): Update for NMT changes, rewrite to be correct.
2000         (add_call_clobber_ops): Remove makes_clobbering_call set.
2001         (get_expr_operands): Always pass through the INDIRECT_REF
2002         reference.
2003         * tree-ssa-structalias.c (struct constraint_graph): Remove
2004         variables member.
2005         Add pe, pe_rep, pointer_label, loc_label, pointed_by, points_to,
2006         address_taken, pt_used, number_incoming.
2007         (FIRST_ADDR_NODE): Removed.
2008         (merge_graph_nodes): Remove broken code for the moment.
2009         (init_graph): New function.
2010         (build_pred_graph): Remove code to init_graph.
2011         Add location equivalence support.
2012         (struct scc_info): Rename roots to deleted.
2013         (scc_visit): Ditto.
2014         (init_scc_info): Ditto
2015         (init_topo_info): Use graph->size.
2016         (compute_topo_order): Ditto.
2017         (do_da_constraint): Removed.
2018         (do_sd_constraint): Remove calls to find().
2019         set_union_with_increment should always get 0 as last arg here.
2020         (do_complex_constraint): Replace do_da_constraint with assert.
2021         Stop calling find.
2022         (struct equiv_class_label): New.
2023         (pointer_equiv_class_table): Ditto.
2024         (location_equiv_class_table): Ditto.
2025         (equiv_class_label_hash): Ditto.
2026         (equiv_class_label_eq): Ditto
2027         (equiv_class_lookup): Ditto.
2028         (equiv_class_ladd): Ditto.
2029         (pointer_equiv_class): Ditto.
2030         (location_equiv_class): Ditto.
2031         (condense_visit): Rename and rewrite from label_visit to do only
2032         SCC related stuff for HU.
2033         (label_visit): Do HU work for HU.
2034         (perform_var_substitution): Update to do HU and location
2035         equivalence.
2036         (free_var_substitution_info): Update to free HU and location
2037         equivalence structures.  */
2038         (find_equivalent_node): Update for pointer but not location
2039         equivalence.
2040         (unite_pointer_equivalences): New function.
2041         (move_complex_constraints): Rewrite to only do moving.
2042         (rewrite_constraints): Split out of move_complex_constraints.
2043         (solve_graph): Use graph->size.
2044         (process_constraint_1): Add from_call argument, use it.
2045         Split *a = &b into two constraints.
2046         (process_constraint): Use new process_constraint_1.
2047         (get_constraint_for_component_ref): Handle bitmaxsize == -1 case.
2048         (get_constraint_for): Handle non-pointer integers properly.
2049         Remove code that used to handle structures.
2050         (handle_ptr_arith): Fix a few bugs in pointer arithmetic handling
2051         with unknown addends.
2052         (handle_rhs_call): New function.
2053         (find_func_aliases): Use handle_rhs_call.
2054         (set_uids_in_ptset): Add an assert.
2055         (set_used_smts): Fix bug in not considering unified vars.
2056         (compute_tbaa_pruning): Stop initing useless iteration_obstack.
2057         (compute_points_to_sets): Update for other function changes.
2058         (delete_points_to_sets): Ditto.
2059         (ipa_pta_execute): Ditto.
2060         (pass_ipa_pta): We need to update SSA after ipa_pta.
2061         
2062 2007-08-19  Jan Hubicka  <jh@suse.cz>
2063
2064         * i386.md: Replace "rim" and "mri" constraints by "g".
2065
2066 2007-08-19  Joseph Myers  <joseph@codesourcery.com>
2067
2068         * dwarf2out.c (text_section_used, cold_text_section_used,
2069         cold_text_section, dwarf2out_note_section_used): New.
2070         (dwarf2out_init): Initialize cold_text_section.
2071         (dwarf2out_switch_text_section, dwarf2out_begin_function): Call
2072         dwarf2out_note_section_used.
2073         (size_of_aranges): Only count entry for text section if it was
2074         used.  Count entry for cold text section if it was used.
2075         (output_aranges): Only output entries for text section and cold
2076         text section if they were used.
2077
2078 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
2079
2080         * tree-pretty-print.c (debug_generic_expr): Add a comment about
2081         the function.
2082         (debug_generic_stmt): Likewise.
2083         (debug_tree_chain): Likewise.
2084
2085 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
2086
2087         * tree-data-refs.c (split_constant_offset): Expose.
2088         * tree-data-refs.h (split_constant_offset): Add declaration.
2089
2090         * tree-vectorizer.h (dr_alignment_support): Renamed
2091         dr_unaligned_software_pipeline to dr_explicit_realign_optimized.
2092         Added a new value dr_explicit_realign.
2093         (_stmt_vec_info): Added new fields: dr_base_address, dr_init,
2094         dr_offset, dr_step, and dr_aligned_to, along with new access
2095         functions for these fields: STMT_VINFO_DR_BASE_ADDRESS,
2096         STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET, STMT_VINFO_DR_STEP, and
2097         STMT_VINFO_DR_ALIGNED_TO.
2098
2099         * tree-vectorizer.c (vect_supportable_dr_alignment): Add
2100         documentation.
2101         In case of outer-loop vectorization with non-fixed misalignment - use
2102         the dr_explicit_realign scheme instead of the optimized realignment
2103         scheme.
2104         (new_stmt_vec_info): Initialize new fields.
2105
2106         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Handle the
2107         'nested_in_vect_loop' case. Change verbosity level.
2108         (vect_analyze_data_ref_access): Handle the 'nested_in_vect_loop' case.
2109         Don't fail on zero step in the outer-loop for loads.
2110         (vect_analyze_data_refs): Call split_constant_offset to calculate
2111         base, offset and init relative to the outer-loop.
2112
2113         * tree-vect-transform.c (vect_create_data_ref_ptr): Replace the unused
2114         BSI function argument with a new function argument - at_loop.
2115         Simplify the condition that determines STEP. Takes additional argument
2116         INV_P. Support outer-loop vectorization (handle the
2117         nested_in_vect_loop case), including zero step in the outer-loop. Call
2118         vect_create_addr_base_for_vector_ref with additional argument.
2119         (vect_create_addr_base_for_vector_ref): Takes additional argument LOOP.
2120         Updated function documentation. Handle the 'nested_in_vect_loop' case.
2121         Fixed and simplified calculation of step.
2122         (vectorizable_store): Call vect_create_data_ref_ptr with loop instead
2123         of bsi, and with additional argument. Call bump_vector_ptr with
2124         additional argument. Fix typos. Handle the 'nested_in_vect_loop' case.
2125         (vect_setup_realignment): Takes additional arguments INIT_ADDR and
2126         DR_ALIGNMENT_SUPPORT. Returns another value AT_LOOP. Handle the case
2127         when the realignment setup needs to take place inside the loop.
2128         Support the dr_explicit_realign scheme. Allow generating the optimized
2129         realignment scheme for outer-loop vectorization. Added documentation.
2130         (vectorizable_load): Support the dr_explicit_realign scheme. Handle
2131         the 'nested_in_vect_loop' case, including loads that are invariant in
2132         the outer-loop and the realignment schemes. Handle the case when the
2133         realignment setup needs to take place inside the loop. Call
2134         vect_setup_realignment with additional arguments.  Call
2135         vect_create_data_ref_ptr with additional argument and with loop instead
2136         of bsi. Fix 80-column overflow. Fix typos. Rename PHI_STMT to PHI.
2137         (vect_gen_niters_for_prolog_loop): Call
2138         vect_create_addr_base_for_vector_ref with additional arguments.
2139         (vect_create_cond_for_align_checks): Likewise.
2140         (bump_vector_ptr): Updated to support the new dr_explicit_realign
2141         scheme: takes additional argument bump; argument ptr_incr is now
2142         optional; updated documentation.
2143         (vect_init_vector): Takes additional argument (bsi). Use it, if
2144         available, to insert the vector initialization.
2145         (get_initial_def_for_induction): Pass additional argument in call to
2146         vect_init_vector.
2147         (vect_get_vec_def_for_operand): Likewise.
2148         (vect_setup_realignment): Likewise.
2149         (vectorizable_load): Likewise.
2150
2151 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
2152
2153         * tree-vectorizer.h (vect_is_simple_reduction): Takes a loop_vec_info
2154         as argument instead of struct loop.
2155         (nested_in_vect_loop_p): New function.
2156         (vect_relevant): Add enum values vect_used_in_outer_by_reduction and
2157         vect_used_in_outer.
2158         (is_loop_header_bb_p): New. Used to differentiate loop-header phis
2159         from other phis in the loop.
2160         (destroy_loop_vec_info): Add additional argument to declaration.
2161
2162         * tree-vectorizer.c (supportable_widening_operation): Also check if
2163         nested_in_vect_loop_p (don't allow changing the order in this case).
2164         (vect_is_simple_reduction): Takes a loop_vec_info as argument instead
2165         of struct loop. Call nested_in_vect_loop_p and don't require
2166         flag_unsafe_math_optimizations if it returns true.
2167         (new_stmt_vec_info): When setting def_type for phis differentiate 
2168         loop-header phis from other phis.
2169         (bb_in_loop_p): New function.
2170         (new_loop_vec_info): Inner-loop phis already have a stmt_vinfo, so
2171         just update their loop_vinfo.  Order of BB traversal now matters -
2172         call dfs_enumerate_from with bb_in_loop_p.
2173         (destroy_loop_vec_info): Takes additional argument to control whether
2174         stmt_vinfo of the loop stmts should be destroyed as well.
2175         (vect_is_simple_reduction): Allow the "non-reduction" use of a
2176         reduction stmt to be defines by a non loop-header phi.
2177         (vectorize_loops): Call destroy_loop_vec_info with additional argument.
2178
2179         * tree-vect-transform.c (vectorizable_reduction): Call
2180         nested_in_vect_loop_p. Check for multitypes in the inner-loop.
2181         (vectorizable_call): Likewise.
2182         (vectorizable_conversion): Likewise.
2183         (vectorizable_operation): Likewise.
2184         (vectorizable_type_promotion): Likewise.
2185         (vectorizable_type_demotion): Likewise.
2186         (vectorizable_store): Likewise.
2187         (vectorizable_live_operation): Likewise.
2188         (vectorizable_reduction): Likewise. Also pass loop_info to
2189         vect_is_simple_reduction instead of loop.
2190         (vect_init_vector): Call nested_in_vect_loop_p.
2191         (get_initial_def_for_reduction): Likewise.
2192         (vect_create_epilog_for_reduction): Likewise.
2193         (vect_init_vector): Check which loop to work with, in case there's an
2194         inner-loop.
2195         (get_initial_def_for_inducion): Extend to handle outer-loop
2196         vectorization. Fix indentation.
2197         (vect_get_vec_def_for_operand): Support phis in the case vect_loop_def.
2198         In the case vect_induction_def get the vector def from the induction
2199         phi node, instead of calling get_initial_def_for_inducion.
2200         (get_initial_def_for_reduction): Extend to handle outer-loop 
2201         vectorization.
2202         (vect_create_epilog_for_reduction): Extend to handle outer-loop
2203         vectorization.
2204         (vect_transform_loop): Change assert to just skip this case.  Add a
2205         dump printout.
2206         (vect_finish_stmt_generation): Add a couple asserts.
2207
2208         (vect_estimate_min_profitable_iters): Multiply
2209         cost of inner-loop stmts (in outer-loop vectorization) by estimated
2210         inner-loop bound.
2211         (vect_model_reduction_cost): Don't add reduction epilogue cost in case
2212         this is an inner-loop reduction in outer-loop vectorization.
2213
2214         * tree-vect-analyze.c (vect_analyze_scalar_cycles_1): New function.
2215         Same code as what used to be vect_analyze_scalar_cycles, only with
2216         additional argument loop, and loop_info passed to
2217         vect_is_simple_reduction instead of loop.
2218         (vect_analyze_scalar_cycles): Code factored out into
2219         vect_analyze_scalar_cycles_1. Call it for each relevant loop-nest.
2220         Updated documentation.
2221         (analyze_operations): Check for inner-loop loop-closed exit-phis during
2222         outer-loop vectorization that are live or not used in the outerloop,
2223         cause this requires special handling.
2224         (vect_enhance_data_refs_alignment): Don't consider versioning for
2225         nested-loops.
2226         (vect_analyze_data_refs): Check that there are no datarefs in the
2227         inner-loop.
2228         (vect_mark_stmts_to_be_vectorized): Also consider vect_used_in_outer
2229         and vect_used_in_outer_by_reduction cases.
2230         (process_use): Also consider the case of outer-loop stmt defining an
2231         inner-loop stmt and vice versa.
2232         (vect_analyze_loop_1): New function.
2233         (vect_analyze_loop_form): Extend, to allow a restricted form of nested
2234         loops.  Call vect_analyze_loop_1.
2235         (vect_analyze_loop): Skip (inner-)loops within outer-loops that have
2236         been vectorized.  Call destroy_loop_vec_info with additional argument.
2237
2238         * tree-vect-patterns.c (vect_recog_widen_sum_pattern): Don't allow
2239         in the inner-loop when doing outer-loop vectorization. Add
2240         documentation and printout.
2241         (vect_recog_dot_prod_pattern): Likewise. Also add check for
2242         GIMPLE_MODIFY_STMT (in case we encounter a phi in the loop).
2243
2244 2007-08-18  Andrew Pinski  <pinskia@gmail.com>
2245
2246         * tree-affine.h (print_aff): New prototype.
2247         (debug_aff): Likewise.
2248         * tree-affine.c (print_aff): New function.
2249         (debug_aff): Likewise.
2250
2251 2007-08-18  Paul Brook  <paul@codesourcery.com>
2252             Joseph Myers  <joseph@codesourcery.com>
2253
2254         * common.opt (-fdebug-prefix-map=): New option.
2255         * opts.c: Include debug.h.
2256         (common_handle_option): Handle -fdebug-prefix-map.
2257         * final.c: Include ggc.h.
2258         (struct debug_prefix_map, debug_prefix_maps, add_debug_prefix_map,
2259         remap_debug_filename): New.
2260         * Makefile.in (final.o, opts.o): Update dependencies.
2261         * debug.h (remap_debug_filename, add_debug_prefix_map): Declare.
2262         * configure.ac: Check for assembler --debug-prefix-map support.
2263         * configure, config.in: Regenerate.
2264         * gcc.c (ASM_MAP): Define conditional on HAVE_AS_DEBUG_PREFIX_MAP.
2265         (ASM_DEBUG_SPEC): Include ASM_MAP.
2266         * doc/install.texi (--with-debug-prefix-map): Document.
2267         * doc/invoke.texi (-fdebug-prefix-map): Document.
2268         * dbxout.c (dbxout_init, dbxout_start_source_file,
2269         dbxout_source_file): Call remap_debug_filename.
2270         * dwarf2out.c (add_comp_dir_attribute, maybe_emit_file,
2271         dwarf2out_start_source_file, dwarf2out_finish): Call
2272         remap_debug_filename.
2273         (file_table_relative_p): Do not check d->emitted_number.
2274         * toplev.c (output_file_directive): Call remap_debug_filename.
2275         * vmsdbgout.c (write_srccorr): Call remap_debug_filename.
2276         * xcoffout.c (xcoffout_source_file): Call remap_debug_filename.
2277
2278 2007-08-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2279
2280         * loop-invariant.c (find_invariants_to_move): Add missing macro
2281         argument.
2282
2283 2007-08-17  Tom Tromey  <tromey@redhat.com>
2284
2285         * tree.h (struct tree_label_decl): Removed old "java" fields.
2286
2287 2007-08-17  Richard Sandiford  <richard@codesourcery.com>
2288             Nigel Stephens  <nigel@mips.com>
2289
2290         * config/mips/sde.h (DRIVER_SELF_SPECS): Add commas.
2291         Treat -mno-data-in-code and -mcode-xonly as aliases for
2292         -mcode-readable=no and -mcode-readable=pcrel respectively.
2293         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Add -mcode-xonly.
2294         (MULTILIB_OPTIONS): Add -mcode-readable=no multilibs.
2295         (MULTILIB_DIRNAMES): Update accordingly.
2296
2297 2007-08-17  H.J. Lu  <hongjiu.lu@intel.com>
2298
2299         * Makefile.in (version.o): Depend on $(REVISION) only if
2300         REVISION_s is defined.
2301
2302 2007-08-17  Sa Liu  <saliu@de.ibm.com>
2303             Ulrich Weigand  <uweigand@de.ibm.com>
2304
2305         PR middle-end/32970
2306         * tree.c (reconstruct_complex_type): For a pointer to a vector,
2307         use build_qualified_type to retain qualifiers of the base type.
2308
2309 2007-08-17  Chen Liqin  <liqin@sunnorth.com.cn>
2310
2311         * config/score/score.md : Update pattern tablejump.
2312         * config/score/score.c : Update score_initialize_trampoline 
2313         function.
2314         * config/score/score.h (TRAMPOLINE_TEMPLATE): Added macro.
2315         (TRAMPOLINE_INSNS, TRAMPOLINE_SIZE) Update macro.
2316         * doc/contrib.texi: Add my entry.
2317
2318 2007-08-16  H.J. Lu  <hongjiu.lu@intel.com>
2319
2320         * Makefile.in (REVISION): New.
2321         (REVISION_c): New.
2322         (REVISION_s): New.
2323         (version.o): Also depend on $(REVISION). Add
2324         -DREVISION=$(REVISION_s).
2325
2326         * version.c (version_string): Add REVISION.
2327
2328 2007-08-16  Seongbae Park <seongbae.park@gmail.com>
2329
2330         * tree-eh.c (lower_try_finally_onedest): Reset the locus
2331         of GOTO that's relocated to a different block.
2332
2333 2007-08-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2334
2335         * c-common.c (const_strip_array_types): New.
2336         * c-common.h (lang_missing_noreturn_ok_p): Delete.
2337         (const_strip_array_types): New.
2338         * c-objc-common.c (c_disregard_inline_limits,
2339         c_warn_unused_global_decl): Constify.
2340         * c-tree.h (c_disregard_inline_limits, c_warn_unused_global_decl,
2341         c_vla_type_p, c_incomplete_type_error): Likewise.
2342         * c-typeck.c (c_incomplete_type_error, c_vla_type_p): Likewise.
2343         * hooks.c (hook_bool_const_tree_false): New.
2344         * hooks.h (hook_bool_const_tree_false): Likewise.
2345         * langhooks-def.h (lhd_warn_unused_global_decl,
2346         lhd_incomplete_type_error, lhd_expr_size,
2347         lhd_tree_inlining_disregard_inline_limits,
2348         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
2349         LANG_HOOKS_GENERIC_TYPE_P, LANG_HOOKS_TYPE_MAX_SIZE): Constify.
2350         * langhooks.c (lhd_warn_unused_global_decl,
2351         lhd_incomplete_type_error,
2352         lhd_tree_inlining_disregard_inline_limits,
2353         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
2354         lhd_expr_size): Likewise.
2355         * langhooks.h (lang_hooks_for_tree_inlining,
2356         lang_hooks_for_tree_dump, lang_hooks_for_types,
2357         lang_hooks_for_decls, lang_hooks): Likewise.
2358         * pointer-set.c (pointer_set_t, pointer_set_create,
2359         pointer_set_contains, insert_aux, pointer_set_insert,
2360         pointer_set_traverse, pointer_map_t, pointer_map_create,
2361         pointer_map_contains, pointer_map_insert, pointer_map_traverse):
2362         Likewise.
2363         * pointer-set.h (pointer_set_contains, pointer_set_insert,
2364         pointer_set_traverse, pointer_map_contains, pointer_map_insert,
2365         pointer_map_traverse): Likewise.
2366         * predict.c (assert_is_empty): Likewise.
2367         * tree-affine.c (free_name_expansion): Likewise.
2368         * tree-cfg.c (edge_to_cases_cleanup): Likewise.
2369         * tree.c (size_in_bytes, max_int_size_in_bytes): Likewise.
2370         * tree.h (size_in_bytes, max_int_size_in_bytes): Likewise.
2371
2372 2007-08-16  Victor Kaplansky <victork@il.ibm.com>
2373
2374         * tree-vectorizer.c (new_loop_vec_info): Initialize new 
2375         field.
2376         (destroy_loop_vec_info): Add call to VEC_free.
2377         * tree-vectorizer.h (may_alias_ddrs): Define.
2378         (LOOP_VINFO_MAY_ALIAS_DDRS): Define.
2379         * tree-vect-analyze.c (vect_analyze_data_ref_dependence):
2380         Change reporting to dump.
2381         (vect_is_duplicate_ddr): New.
2382         (vect_mark_for_runtime_alias_test): New.
2383         (vect_analyze_data_ref_dependences) Add call to
2384         vect_mark_for_runtime_alias_test.
2385         (vect_enhance_data_refs_alignment): Define local variable
2386         vect_versioning_for_alias_required, don't perform
2387         peeling for alignment if versioning for alias is
2388         required.
2389         (vect_enhance_data_refs_alignment): Use
2390         PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS instead of
2391         PARAM_VECT_MAX_VERSION_CHECKS.
2392         * tree-vect-transform.c
2393         (vect_create_cond_for_alias_checks): New.
2394         (vect_transform_loop): Add call to
2395         vect_create_cond_for_alias_checks.
2396         (vect_vfa_segment_size): New.
2397         * params.def (PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS):
2398         Rename.
2399         (PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS): Define.
2400         * gcc/doc/invoke.texi
2401         (vect-max-version-for-alignment-checks): Document.
2402         (vect-max-version-for-alias-checks): Document.
2403         (vect-max-version-checks): Remove.
2404      
2405 2007-08-16  Uros Bizjak  <ubizjak@gmail.com>
2406
2407         * config/i386/i386.md (*rep_movdi_rex64): Emit "rep" prefix on
2408         the same line as the instruction for all asm dialects.
2409         (*rep_movsi): Ditto.
2410         (*rep_movsi_rex64): Ditto.
2411         (*rep_movqi): Ditto.
2412         (*rep_movqi_rex64): Ditto.
2413         (*rep_stosdi_rex64): Ditto.
2414         (*rep_stossi): Ditto.
2415         (*rep_stossi_rex64): Ditto.
2416         (*rep_stosqi): Ditto.
2417         (*rep_stosqi_rex64): Ditto.
2418         (*cmpstrnqi_nz_1): Ditto.
2419         (*cmpstrnqi_nz_rex_1): Ditto.
2420         (*cmpstrnqi_1): Ditto.
2421         (*cmpstrnqi_rex_1): Ditto.
2422         (*strlenqi_1): Ditto.
2423         (*strlenqi_rex_1): Ditto.
2424         * config/i386/sync.md (*sync_compare_and_swap<mode>): Emit "lock"
2425         prefix on the same line as the instruction for all asm dialects.
2426         (sync_double_compare_and_swap<mode>): Ditto.
2427         (*sync_double_compare_and_swapdi_pic): Ditto.
2428         (*sync_compare_and_swap_cc<mode>): Ditto.
2429         (sync_double_compare_and_swap_cc<mode>): Ditto.
2430         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
2431         (sync_old_add<mode>): Ditto.
2432         (sync_add<mode>): Ditto.
2433         (sync_sub<mode>): Ditto.
2434         (sync_ior<mode>): Ditto.
2435         (sync_and<mode>): Ditto.
2436         (sync_xor<mode>): Ditto.
2437
2438 2007-08-16  Richard Sandiford  <richard@codesourcery.com>
2439
2440         PR middle-end/32897
2441         * reload.c (find_reloads): Check that the memory returned by
2442         find_reloads_toplev was not the result of forcing a constant
2443         to memory.
2444         (find_reloads_toplev): Always use simplify_gen_subreg to get
2445         the subreg of a constant.  If the result is also a constant,
2446         but not a legitimate one, force it into the constant pool
2447         and reload its address.
2448
2449 2007-08-15  David Edelsohn  <edelsohn@gnu.org>
2450
2451         * config/rs6000/rs6000.c (rs6000_rtx_costs): Add CLZ, CTZ, and
2452         POPCOUNT.
2453
2454 2007-08-15  Daniel Jacobowitz  <dan@codesourcery.com>
2455
2456         * config/rs6000/rs6000.c (rs6000_file_start): Output a .gnu_attribute
2457         directive for the current vector ABI.
2458
2459 2007-08-15  Steve Ellcey  <sje@cup.hp.com>
2460
2461         PR target/32963
2462         * caller-save.c (reg_save_code): Set invalide status on restore code.
2463         
2464 2007-08-15  Diego Novillo  <dnovillo@google.com>
2465
2466         * tree-ssa-alias.c (compute_memory_partitions): Use
2467         alias_bitmap_obstack to allocate bitmaps.
2468         (reset_alias_info): Factor out of init_alias_info.
2469         Mark all name tags not associated to an SSA name for renaming.
2470         (init_alias_info): Call it.
2471         (create_name_tags): Tidy.  Add comments.
2472         (dump_points_to_info_for): Do not call get_mem_sym_stats_for.
2473
2474 2007-08-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
2475
2476         * config/mips/mips.c (vr4130_swap_insns_p): Use new interface to
2477         scheduler dependencies.
2478
2479 2007-08-15  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2480
2481         * config/i386/i386.md (subsi3_carry_zext): Remove "m" constraint for
2482         "register_operand".
2483         (*iorsi_1_zext): Likewise.
2484         (*iorsi_1_zext_imm): Likewise.
2485         * config/i386/sse.md: (*sse4_1_extractps): Use "nonimmediate_operand"
2486         with "rm"/"xm" constraint.
2487         (sse2_vmsqrtv2df2): Likewise.
2488
2489 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
2490
2491         PR middle-end/33074
2492         * emit-rtl.c (try_split): Use INSN_LIST instead of EXPR_LIST for
2493         REG_LIBCALL note.
2494
2495 2007-08-14  Daniel Berlin  <dberlin@dberlin.org>
2496
2497         * tree-pass.h (PROP_pta): Removed.
2498         (TODO_rebuild_alias): New.
2499         (pass_may_alias): Removed.
2500         * tree-ssa-ccp.c (execute_fold_all_builtins): Only rebuild
2501         aliasing if we changed something.
2502         * tree-ssa-alias.c (compute_may_aliases): Make non-static.  Update
2503         SSA internally.
2504         (pass_may_alias): Removed.
2505         (create_structure_vars): Return TODO_rebuild_alias.
2506         * tree-ssa-pre.c (do_pre): Return TODO_rebuild_alias.
2507         * tree-sra.c (tree_sra): Only rebuild aliasing if something
2508         changed.
2509         (tree_sra_early): We never affect aliasing right now.
2510         * tree-flow.h (compute_may_aliases): New prototype.
2511         * passes.c: Remove pass_may_alias from the passes.
2512         (execute_function_todo): Support TODO_rebuild_alias.    
2513
2514 2007-08-14  Kai Tietz  <kai.tietz@onevision.com>
2515
2516         * i386.c: (legitimize_address): Move dllimported variable check
2517         infront of legitimizing pic address of CONST symbols.
2518
2519 2007-08-14  Steve Ellcey  <sje@cup.hp.com>
2520
2521         PR tree-optimization/32941
2522         * tree-eh.c (struct leh_tf_state): Add goto_queue_map field.
2523         (goto_queue_cmp): Remove.
2524         (find_goto_replacement): Change search method.
2525         (maybe_record_in_goto_queue): Add assert.
2526         (lower_try_finally): Remove qsort call, add pointer_map_destroy call.
2527         * Makefile.in (tree-eh.o): Add pointer-set.h dependency.
2528
2529 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2530
2531         * alias.c (component_uses_parent_alias_set): Constify.
2532         * alias.h (component_uses_parent_alias_set): Likewise.
2533         * cfgrtl.c (print_rtl_with_bb): Likewise.
2534         * double-int.c (tree_to_double_int, double_int_fits_to_tree_p,
2535         mpz_get_double_int): Likewise.
2536         * double-int.h (double_int_fits_to_tree_p, tree_to_double_int,
2537         mpz_get_double_int): Likewise.
2538         * expr.c (is_aligning_offset, undefined_operand_subword_p,
2539         mostly_zeros_p, all_zeros_p, safe_from_p, is_aligning_offset):
2540         Likewise.
2541         * expr.h (safe_from_p): Likewise.
2542         * gimple-low.c (try_catch_may_fallthru, block_may_fallthru):
2543         Likewise.
2544         * gimplify.c (should_carry_locus_p, zero_sized_field_decl,
2545         zero_sized_type, goa_lhs_expr_p): Likewise.
2546         * omp-low.c (is_variable_sized, use_pointer_for_field): Likewise.
2547         * rtl.h (print_rtl_with_bb): Likewise.
2548         * sched-vis.c (print_exp, print_value, print_pattern): Likewise.
2549         * tree-cfg.c (const_first_stmt, const_last_stmt): New.
2550         * tree-flow-inline.h (bb_stmt_list): Constify.
2551         (cbsi_start, cbsi_last, cbsi_end_p, cbsi_next, cbsi_prev,
2552         cbsi_stmt): New.
2553         * tree-flow.h (const_block_stmt_iterator, cbsi_start, cbsi_last,
2554         const_first_stmt, const_last_stmt): New.
2555         (block_may_fallthru, empty_block_p): Constify.
2556         * tree-iterator.c (EXPR_FIRST_BODY, EXPR_LAST_BODY,
2557         EXPR_ONLY_BODY): New.
2558         (expr_first, expr_last, expr_only): Use macro for body.
2559         (const_expr_first, const_expr_last, const_expr_only): New.
2560         * tree-iterator.h (const_tree_stmt_iterator, ctsi_start,
2561         ctsi_last, ctsi_end_p, ctsi_one_before_end_p, ctsi_next,
2562         ctsi_prev, ctsi_stmt): New.
2563         * tree-scalar-evolution.c (get_loop_exit_condition): Constify.
2564         * tree-scalar-evolution.h (get_loop_exit_condition): Likewise.
2565         * tree-ssa-loop-niter.c (loop_only_exit_p,
2566         derive_constant_upper_bound): Likewise.
2567         * tree-ssa-phiopt.c (empty_block_p): Likewise.
2568         * tree-ssa-threadupdate.c (redirection_block_p): Likewise.
2569         * tree-vectorizer.c (slpeel_can_duplicate_loop_p): Likewise.
2570         * tree-vectorizer.h (slpeel_can_duplicate_loop_p): Likewise.
2571         * tree-vrp.c (vrp_bitmap_equal_p): Likewise.
2572         * tree.c (get_type_static_bounds): Likewise.
2573         * tree.h (const_expr_first, const_expr_last, const_expr_only): New.
2574         (get_type_static_bounds): Constify.
2575
2576 2007-08-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2577
2578         PR target/30315
2579         * config/i386/i386.h (CANONICALIZE_COMPARISON): New.
2580         * config/i386/i386.md (plusminus)(addsub)(SWI): New.
2581         (*<addsub><mode>3_cc_overflow): New.
2582         (*add<mode>3_cconly_overflow): New.
2583         (*sub<mode>3_cconly_overflow): New.
2584         (*<addsub>si3_zext_cc_overflow): New.
2585         * config/i386/predicates.md (fcmov_comparison_operator): Accept
2586         CCCmode for LTU, GTU, LEU and GEU.
2587         (ix86_comparison_operator): Likewise.
2588         (ix86_carry_flag_operator): Carry flag is set if LTU or GTU in CCCmode.
2589         * config/i386/i386.c (put_condition_code): Support CCCmode.
2590         (ix86_cc_mode): Use CCCmode when testing for overflow of PLUS
2591         or MINUS expressions.
2592
2593 2007-08-14  Andrew Pinski  <pinskia@gmail.com>
2594
2595         PR c/30428
2596         * c-typeck.c (build_binary_op): Disallow vector float types with
2597         BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.
2598
2599 2007-08-14  Maxim Kuvyrkov  <maxim@codesourcery.com>
2600
2601         * sched-int.h (struct _dep): Rename field 'kind' to 'type'.
2602         (DEP_KIND): Rename to DEP_TYPE.  Update all uses.
2603         (dep_def): New typedef.
2604         (init_dep_1, sd_debug_dep): Declare functions.
2605         (DEP_LINK_KIND): Rename to DEP_LINK_TYPE.
2606         (debug_dep_links): Remove.
2607         (struct _deps_list): New field 'n_links'.
2608         (DEPS_LIST_N_LINKS): New macro.
2609         (FOR_EACH_DEP_LINK): Remove.
2610         (create_deps_list, free_deps_list, delete_deps_list): Remove
2611         declaration.
2612         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
2613         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
2614         (copy_deps_list_change_con, move_dep_link): Ditto.
2615         (struct haifa_insn_data): Split field 'back_deps' into 'hard_back_deps'
2616         and 'spec_back_deps'.  New field 'resolved_forw_deps'.  Remove field
2617         'dep_count'.
2618         (INSN_BACK_DEPS): Remove.
2619         (INSN_HARD_BACK_DEPS, INSN_SPEC_BACK_DEPS, INSN_RESOLVED_FORW_DEPS):
2620         New macros.
2621         (INSN_DEP_COUNT): Remove.
2622         (enum DEPS_ADJUST_RESULT): Add new constant DEP_NODEP.  Fix comments.
2623         (spec_info, haifa_recovery_block_was_added_during_scheduling_p):
2624         Declare global variables.
2625         (deps_pools_are_empty_p, sched_free_deps): Declare functions.
2626         (add_forw_dep, compute_forward_dependences): Remove declarations.
2627         (add_or_update_back_dep, add_or_update_back_forw_dep): Ditto.
2628         (add_back_forw_dep, delete_back_forw_dep): Ditto.
2629         (debug_ds, sched_insn_is_legitimate_for_speculation_p): Declare
2630         functions.
2631         (SD_LIST_NONE, SD_LIST_HARD_BACK, SD_LIST_SPEC_BACK, SD_LIST_FORW):
2632         New constants.
2633         (SD_LIST_RES_BACK, SD_LIST_RES_FORW, SD_LIST_BACK): Ditto.
2634         (sd_list_types_def): New typedef.
2635         (sd_next_list): Declare function.
2636         (struct _sd_iterator): New type.
2637         (sd_iterator_def): New typedef.
2638         (sd_iterator_start, sd_iterator_cond, sd_iterator_next): New inline
2639         functions.
2640         (FOR_EACH_DEP): New cycle wrapper.
2641         (sd_lists_size, sd_lists_empty_p, sd_init_insn, sd_finish_insn):
2642         Declare functions.
2643         (sd_find_dep_between, sd_add_dep, sd_add_or_update_dep): Ditto.
2644         (sd_resolve_dep, sd_copy_back_deps, sd_delete_dep, sd_debug_lists):
2645         Ditto.
2646
2647         * sched-deps.c (init_dep_1): Make global.
2648         (DUMP_DEP_PRO, DUMP_DEP_CON, DUMP_DEP_STATUS, DUMP_DEP_ALL): New
2649         constants.
2650         (dump_dep): New static function.
2651         (dump_dep_flags): New static variable.
2652         (sd_debug_dep): New function.
2653         (add_to_deps_list, remove_from_deps_list): Update 'n_links' field of
2654         the list.
2655         (move_dep_link): Use remove_from_deps_list (), instead of
2656         detach_dep_link ().
2657         (dep_links_consistent_p, dump_dep_links, debug_dep_links): Remove.
2658         (dep_link_is_detached_p): New static function.
2659         (deps_obstack, dl_obstack, dn_obstack): Remove.  Use dn_pool, dl_pool
2660         instead.
2661         (dn_pool, dl_pool): New alloc_pools.
2662         (dn_pool_diff, dl_pool_diff): New static variables.
2663         (create_dep_node, delete_dep_node): New static function.
2664         (create_deps_list): Make it static.  Use alloc_pool 'dl_pool'.
2665         (deps_list_empty_p): Make it static.  Use 'n_links' field.
2666         (deps_pools_are_empty_p): New static function.
2667         (alloc_deps_list, delete_deps_list): Remove.
2668         (dump_deps_list, debug_deps_list, add_back_dep_to_deps_list): Remove.
2669         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
2670         (copy_deps_list_change_con): Remove.  Use sd_copy_back_deps () instead.
2671         (forward_dependency_cache): Remove.
2672         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Remove
2673         'back' from the names.  Change signature to use dep_t instead of
2674         equivalent quad.
2675         (add_back_dep): Ditto.  Make global.
2676         (check_dep_status): Rename to check_dep ().
2677         (sd_next_list, sd_lists_size, sd_lists_empty_p, sd_init_insn):
2678         New functions.
2679         (sd_finish_insn): Ditto.
2680         (sd_find_dep_between_no_cache): New static function.
2681         (sd_find_dep_between): New function.
2682         (ask_dependency_caches, set_dependency_caches): New static functions.
2683         (update_dependency_caches, change_spec_dep_to_hard, update_dep): Ditto.
2684         (add_or_update_dep_1): Separate pieces of functionality into
2685         ask_dependency_caches (), update_dependency_caches (),
2686         change_spec_dep_to_hard (), update_dep ().
2687         (get_back_and_forw_lists): New static function.
2688         (sd_add_dep): Separate setting of dependency caches into
2689         set_dependency_caches ().
2690         (sd_add_or_update_dep, sd_resolve_dep, sd_copy_back_deps):
2691         New functions.
2692         (sd_delete_dep): Ditto.
2693         (DUMP_LISTS_SIZE, DUMP_LISTS_DEPS, DUMP_LISTS_ALL): New constants.
2694         (dump_lists): New static function.
2695         (sd_debug_lists): New debug function.
2696         (delete_all_dependences, fixup_sched_groups): Update to use
2697         sd_* infrastructure.
2698         (sched_analyze_2): Create data-speculative dependency only if
2699         data-speculation is enabled.
2700         (sched_analyze_insn): If insn cannot be speculative, make all its
2701         dependencies non-speculative.
2702         (sched_analyze): Use sd_init_insn ().
2703         (add_forw_dep, compute_forward_dependencies): Remove.
2704         (delete_dep_nodes_in_back_deps): New static function.
2705         (sched_free_deps): New function.
2706         (init_dependency_caches): Init alloc_pools.
2707         (extend_depedency_caches): Update after removing of
2708         forward_dependency_cache.
2709         (free_dependency_caches): Ditto.  Free alloc_pools.
2710         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Remove.
2711         (delete_forw_dep, add_or_update_back_dep, add_or_update_back_forw_dep):
2712         Ditto.
2713         (add_back_forw_dep, delete_back_forw_dep): Ditto.
2714         (add_dependence): Use init_dep ().
2715         (get_dep_weak_1): New static function.
2716         (get_dep_weak): Move logic to get_dep_weak_1 ().
2717         (dump_ds): New static function moved from haifa-sched.c:
2718         debug_spec_status ().
2719         (debug_ds): New debug function.
2720         (check_dep_status): Rename to check_dep ().  Update to check whole
2721         dependencies.
2722
2723         * haifa-sched.c (spec_info): Make global.
2724         (added_recovery_block_p): Rename to
2725         'haifa_recovery_block_was_added_during_current_schedule_block_p'.
2726         (haifa_recovery_block_was_added_during_scheduling_p): New variable.
2727         (dep_cost, priority, rank_for_schedule, schedule_insn): Update
2728         to use new interfaces.
2729         (ok_for_early_queue_removal): Ditto.
2730         (schedule_block): Initialize logical uids of insns emitted by the
2731         target.
2732         (sched_init): Initialize new variable.
2733         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
2734         interfaces.
2735         (extend_global): Initialize insn data.
2736         (init_h_i_d): Remove code that is now handled in sd_init_insn ().
2737         (process_insn_forw_deps_be_in_spec): Change signature.  Update to use
2738         new interfaces.
2739         (add_to_speculative_block): Update to use new interfaces.
2740         (create_recovery_block): Set new variables.
2741         (create_check_block_twin, fix_recovery_deps): Update to use new
2742         interfaces.
2743         (sched_insn_is_legitimate_for_speculation_p): New function.
2744         (speculate_insn): Move checking logic to
2745         sched_insn_is_legitimate_for_speculation_p ().
2746         (sched_remove_insn): Finalize sched-deps information of instruction.
2747         (clear_priorities, add_jump_dependencies): Update to use new
2748         interfaces.
2749         (debug_spec_status): Rename to dump_ds () and move to sched-deps.c.
2750         
2751         * sched-rgn.c (set_spec_fed, find_conditional_protection): Update
2752         to use new interfaces.
2753         (is_conditionally_protected, is_pfree, is_prisky) Ditto.
2754         (new_ready): Try to use control speculation only if it is available.
2755         (add_branch_dependences): Update to use new interfaces.
2756         (compute_block_backward_dependences): Rename to
2757         compute_block_dependences ().  Call
2758         targetm.sched.dependencies_evaluation_hook ().
2759         (free_block_dependencies): New static function.
2760         (debug_dependencies): Update to use new interfaces.
2761         (schedule_region): Remove separate computation of forward dependencies.
2762         Move call of targetm.sched.dependencies_evaluation_hook () to
2763         compute_block_dependences ().  Free dependencies at the end of
2764         scheduling the region.
2765
2766         * sched-ebb.c (earliest_block_with_similiar_load): Update to use
2767         new interfaces.
2768         (add_deps_for_risky_insns): Ditto.
2769         (schedule_ebb): Remove separate computation of forward dependencies.
2770         Free dependencies at the end of scheduling the ebb.
2771
2772         * ddg.c (create_ddg_dependence): Update to use new interfaces.
2773         (build_intra_loop_deps): Ditto.  Remove separate computation of
2774         forward dependencies.  Free sched-deps dependencies.
2775
2776         * config/ia64/ia64.c (ia64_dependencies_evaluation_hook): Update
2777         to use new interfaces.
2778         (ia64_dfa_new_cycle, ia64_gen_check): Ditto.
2779
2780         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Update to use
2781         new interfaces.
2782         (is_costly_group): Ditto.
2783
2784 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2785
2786         * alias.c (rtx_equal_for_memref_p): Constify.
2787         * basic-block.h (const_edge, const_basic_block): New.
2788         (reg_set_to_hard_reg_set, dfs_enumerate_from, single_succ_p,
2789         single_pred_p, single_succ_edge, single_pred_edge, single_succ,
2790         single_pred, maybe_hot_bb_p, probably_cold_bb_p,
2791         probably_never_executed_bb_p, edge_probability_reliable_p,
2792         br_prob_note_reliable_p, forwarder_block_p, flow_nodes_print,
2793         inside_basic_block_p, control_flow_insn_p, dominated_by_p):
2794         Likewise.
2795         * bb-reorder.c (better_edge_p, push_to_next_round_p): Likewise.
2796         * bt-load.c (basic_block_freq, insn_sets_btr_p, can_move_up):
2797         Likewise.
2798         * cfganal.c (flow_active_insn_p, forwarder_block_p,
2799         flow_nodes_print, dfs_enumerate_from): Likewise.
2800         * cfgbuild.c (count_basic_blocks, inside_basic_block_p,
2801         control_flow_insn_p, count_basic_blocks): Likewise.
2802         * cfgloop.c (flow_bb_inside_loop_p, glb_enum_p,
2803         get_loop_body_with_size, loop_exit_edge_p): Likewise.
2804         * cfgloop.h (flow_bb_inside_loop_p, num_loop_insns,
2805         average_num_loop_insns, loop_exit_edge_p,
2806         just_once_each_iteration_p, can_duplicate_loop_p): Likewise.
2807         * cfgloopanal.c (just_once_each_iteration_p, num_loop_insns,
2808         average_num_loop_insns, seq_cost): Likewise.
2809         * cfgloopmanip.c (rpe_enum_p, can_duplicate_loop_p): Likewise.
2810         * dominance.c (dominated_by_p): Likewise.
2811         * emit-rtl.c (validate_subreg): Likewise.
2812         * except.c (can_throw_internal, can_throw_external): Likewise.
2813         * except.h (can_throw_internal, can_throw_external): Likewise.
2814         * gcse.c (gcse_constant_p, oprs_unchanged_p, oprs_anticipatable_p,
2815         oprs_available_p, hash_expr, expr_equiv_p, oprs_not_set_p,
2816         compute_transp, load_killed_in_block_p, reg_killed_on_edge,
2817         simple_mem, store_ops_ok, load_kills_store, find_loads,
2818         store_killed_in_insn, store_killed_after, store_killed_before,
2819         gcse_mem_operand, implicit_set_cond_p, store_killed_in_pat):
2820         Likewise.
2821         * ifcvt.c (count_bb_insns, cheap_bb_rtx_cost_p, noce_operand_ok,
2822         noce_mem_write_may_trap_or_fault_p): Likewise.
2823         * pointer-set.c (pointer_set_contains, pointer_map_contains):
2824         Likewise.
2825         * pointer-set.h (pointer_set_contains, pointer_map_contains):
2826         Likewise.
2827         * predict.c (can_predict_insn_p, maybe_hot_bb_p,
2828         probably_cold_bb_p, probably_never_executed_bb_p,
2829         edge_probability_reliable_p, br_prob_note_reliable_p,
2830         can_predict_insn_p): Likewise.
2831         * regclass.c (reg_set_to_hard_reg_set): Likewise.
2832         * resource.c (return_insn_p): Likewise.
2833         * rtl.h (reg_set_between_p, reg_set_p, validate_subreg):
2834         Likewise.
2835         * rtlanal.c (reg_set_between_p, reg_set_p): Likewise.
2836         * tracer.c (count_insns, ignore_bb_p, better_p): Likewise.
2837         * tree-cfg.c (verify_gimple_unary_expr, verify_gimple_binary_expr,
2838         verify_gimple_modify_stmt): Likewise.
2839         * tree-chrec.c (is_not_constant_evolution,
2840         is_multivariate_chrec_rec, is_multivariate_chrec,
2841         chrec_contains_symbols, chrec_contains_undetermined,
2842         tree_contains_chrecs, evolution_function_is_affine_multivariate_p,
2843         evolution_function_is_univariate_p, avoid_arithmetics_in_type_p,
2844         eq_evolutions_p, scev_direction): Likewise.
2845         * tree-chrec.h (automatically_generated_chrec_p, tree_is_chrec,
2846         eq_evolutions_p, is_multivariate_chrec, chrec_contains_symbols,
2847         chrec_contains_symbols_defined_in_loop,
2848         chrec_contains_undetermined, tree_contains_chrecs,
2849         evolution_function_is_affine_multivariate_p,
2850         evolution_function_is_univariate_p, chrec_zerop,
2851         evolution_function_is_constant_p, evolution_function_is_affine_p,
2852         evolution_function_is_affine_or_constant_p,
2853         tree_does_not_contain_chrecs, chrec_type): Likewise.
2854         * tree-data-ref.c (tree_fold_divides_p,
2855         object_address_invariant_in_loop_p, dr_may_alias_p,
2856         ziv_subscript_p, siv_subscript_p, gcd_of_steps_may_divide_p,
2857         same_access_functions, constant_access_functions,
2858         access_functions_are_affine_or_constant_p, find_vertex_for_stmt):
2859         Likewise.
2860         * tree-flow.h (scev_direction): Likewise.
2861         * tree-gimple.c (is_gimple_stmt): Likewise.
2862         * tree-outof-ssa.c (identical_copies_p, identical_stmt_lists_p):
2863         Likewise.
2864         * tree-pretty-print.c (op_prio): Likewise.
2865         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop,
2866         analyzable_condition, backedge_phi_arg_p): Likewise.
2867         * tree-scalar-evolution.h (get_chrec_loop): Likewise.
2868         * tree-ssa-operands.c (get_name_decl, operand_build_cmp): Likewise.
2869         * tree-ssa-threadupdate.c (dbds_continue_enumeration_p):
2870         Likewise.
2871
2872 2007-08-13  Dan Hipschman  <dsh@google.com>
2873
2874         PR c/32953
2875         * c-format.c (check_format_arg): Move check for zero-length
2876         format strings below the check for unterminated strings.
2877
2878 2007-08-13  Andrew Pinski  <pinskia@gmail.com>
2879
2880         PR C/30427
2881         * c-typeck.c (build_unary_op <case BIT_NOT_EXPR>): Reject vector float
2882         types.
2883
2884 2007-08-13  Nick Clifton  <nickc@redhat.com>
2885
2886         * config/arm/arm_neon.h: Revert GPLv3 patch to this file.
2887
2888 2007-08-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2889
2890         PR fortran/32860
2891         * c-format.c (gcc_gfc_length_specs): New array.
2892         (gcc_gfc_char_table): Add unsigned specifier, and references to
2893         the l length modifier.
2894         (format_types_orig): Use the new gcc_gfc_length_specs.
2895
2896 2007-08-12  Sa Liu  <saliu@de.ibm.com>
2897
2898         * emit-rtl.c (try_split): Relink the insns with REG_LIBCALL note
2899         and with REG_RETVAL note after split.
2900
2901 2007-08-11  David Daney  <ddaney@avtrex.com>
2902
2903         * config/mips/mips.c (mips_sched_reorder):  Mark cycle parameter
2904         as ATTRIBUTE_UNUSED.
2905
2906 2007-08-11  David Edelsohn  <edelsohn@gnu.org>
2907             Segher Boessenkool  <segher@kernel.crashing.org>
2908
2909         * config/rs6000/rs6000.h (CC1_CPU_SPEC): Define as empty string if
2910         HAVE_LOCAL_CPU_DETECT not defined.
2911
2912 2007-08-11  Jan Hubicka  <jh@suse.cz>
2913
2914         * cgraphunit.c (record_cdtor_fn): Declare all cdtors always inlined.
2915         (cgraph_process_new_functions): Honor previous value of
2916         disregard_inline_limits.
2917         * ipa-inline.c (compute_inline_parameters): Likewise.
2918
2919 2007-08-11  Ian Lance Taylor  <iant@google.com>
2920
2921         * alias.h (alias_set_type): Define new type.
2922         (ALIAS_SET_MEMORY_BARRIER): Use it.
2923         * rtl.h: Include alias.h.
2924         (struct mem_attrs): Use alias_set_type.
2925         * tree.h: Include alias.h
2926         (struct tree_type): Use alias_set_type.
2927         (struct tree_struct_field_tag): Likewise.
2928         (struct tree_decl_common): Likewise.
2929         * alias.c (struct alias_set_entry): Use alias_set_type.
2930         (get_alias_set_entry, alias_set_subset_of): Likewise.
2931         (alias_sets_conflict_p): Likewise.
2932         (alias_sets_must_conflict_p): Likewise.
2933         (objects_must_conflict_p): Likewise.
2934         (get_alias_set, new_alias_set): Likewise.
2935         (record_alias_subset, record_component_aliases): Likewise.
2936         (varargs_set, frame_set): Change to alias_set_type.
2937         (get_varargs_alias_set): Use alias_set_type.
2938         (get_frame_alias_set): Likewise.
2939         * builtins.c (setjmp_alias_set): Change to alias_set_type.
2940         * dse.c (struct store_info): Use alias_set_type.
2941         (struct read_info, struct clear_alias_mode_holder): Likewise.
2942         (clear_alias_set_lookup, canon_address): Likewise.
2943         (record_store, check_mem_read_rtx): Likewise.
2944         (dse_record_singleton_alias_set): Likewise.
2945         (dse_invalidate_singleton_alias_set): Likewise.
2946         * emit-rtl.c (get_mem_attrs): Likewise.
2947         (set_mem_attributes_minus_bitpos): Likewise.
2948         (set_mem_alias_set): Likewise.
2949         * expr.c (store_constructor_field, store_field): Likewise.
2950         * gimplify.c (struct gimplify_init_ctor_preeval_data): Likewise.
2951         * langhooks.c (lhd_get_alias_set): Likewise.
2952         * langhooks-def.h (lhd_get_alias_set): Likewise.
2953         * reload1.c (alter_reg): Likewise.
2954         * tree-flow.h (struct fieldoff): Likewise.
2955         * tree-ssa-alias.c (struct alias_map_d): Likewise.
2956         (may_alias_p, get_smt_for, create_sft): Likewise.
2957         * tree-ssa-alias-warnings.c (nonstandard_alias_types_p): Likewise.
2958         * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
2959         (merge_smts_into): Likewise.
2960         * varasm.c (const_alias_set): Likewise.
2961         * c-common.c (strict_aliasing_warning): Likewise.
2962         (c_common_get_alias_set): Likewise.
2963         * dse.h (dse_record_singleton_alias_set): Update declaration.
2964         (dse_invalidate_singleton_alias_set): Likewise.
2965         * emit-rtl.h (set_mem_alias_set): Likewise.
2966         * c-common.h (c_common_get_alias_set): Likewise.
2967         * print-rtl.c (print_rtx): Cast MEM_ALIAS_SET when printing it.
2968         * print-tree.c (print_node): Likewise.
2969         * config/alpha/alpha.c (alpha_sr_alias_set): Change to
2970         alias_set_type.
2971         (alpha_setup_incoming_varargs): Use alias_set_type.
2972         * config/i386/i386.c (setup_incoming_varargs_64): Use
2973         alias_set_type.
2974         (setup_incoming_varargs_ms_64): Likewise.
2975         (ix86_GOT_alias_set): Likewise.
2976         * config/mn10300/mn10300.c (mn10300_builtin_saveregs): Likewise.
2977         * config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
2978         (set): Change to alias_set_type.
2979         (get_TOC_alias_set): Use alias_set_type.
2980         * config/rs6000/rs6000-protos.h (get_TOC_alias_set): Update
2981         declaration.
2982         * config/sh/sh.c (sh_builtin_saveregs): Use alias_set_type.
2983         * config/sparc/sparc.c (sparc_sr_alias_set): Change to
2984         alias_set_type.
2985         (struct_value_alias_set): Likewise.
2986         * Makefile.in (GTFILES): Add $(srcdir)/alias.h.
2987
2988 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
2989
2990         * config/vxworks-dummy.h (TARGET_VXWORKS): Define.
2991         * config/vxworks.h (TARGET_VXWORKS): Override.
2992         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Don't define
2993         "mips" if TARGET_VXWORKS.
2994
2995 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
2996
2997         * calls.c (avoid_likely_spilled_reg): New function.
2998         (expand_call): Use it.
2999
3000 2007-08-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3001
3002         * c-typeck.c (build_c_cast): Add OPT_Wcast_qual to warnings.
3003
3004 2007-08-10  Adam Nemet  <anemet@caviumnetworks.com>
3005
3006         * config/mips/predicates.md (const_call_insn_operand): Invoke
3007         SYMBOL_REF_LONG_CALL_P only on SYMBOL_REFs.
3008
3009 2007-08-10  David Edelsohn  <edelsohn@gnu.org>
3010
3011         PR target/33042
3012         * config/rs6000/driver-rs6000.c: Include link.h.
3013         Use ElfW instead of wordsize-specif typedef.
3014
3015 2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3016
3017         * system.h (CONST_CAST): New.
3018         * c-decl.c (c_make_fname_decl): Use it.
3019         * c-lex.c (cb_ident, lex_string): Likewise.
3020         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
3021         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
3022         give_switch, set_multilib_dir): Likewise.
3023         * gengtype-parse.c (string_seq, typedef_name): Likewise.
3024         * passes.c (execute_one_pass): Likewise.
3025         * prefix.c (update_path): Likewise.
3026         * pretty-print.c (pp_base_destroy_prefix): Likewise.
3027         * tree.c (build_string): Likewise.
3028
3029 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
3030
3031         * tree-flow-inline.h (is_exec_stmt): Remove.
3032         (is_label_stmt): Remove.
3033         * tree-flow.h: Remove prototypes for is_exec_stmt, get_filename, and
3034         is_label_stmt.
3035
3036 2007-08-10  Andreas Krebbel  <krebbel1@de.ibm.com>
3037
3038         * lower-subreg.c (resolve_shift_zext): Don't adjust
3039         src_reg_num for wordmode operands.
3040
3041 2007-08-10  Sandra Loosemore  <sandra@codesourcery.com>
3042             David Ung  <davidu@mips.com>
3043
3044         * config/mips/mips.c (TARGET_SCHED_INIT): Define.
3045         (TARGET_SCHED_REORDER2): Define.
3046         (mips_maybe_swap_ready): New.
3047         (mips_last_74k_agen_insn): New.
3048         (mips_74k_agen_init): New.
3049         (mips_74k_agen_reorder): New function to group loads and stores
3050         in the ready queue.
3051         (mips_sched_init): New.  
3052         (mips_sched_reorder): Don't do initialization here.  Call
3053         mips_74k_agen_reorder.
3054         (mips_variable_issue): Call mips_74k_agen_init.
3055
3056 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
3057
3058         * tree-flow-inline.h (get_filename): Remove.
3059
3060 2007-08-10  Richard Sandiford  <richard@codesourcery.com>
3061
3062         * config/mips/mips-protos.h (mips_address_insns): Add a boolean
3063         argument.
3064         (mips_fetch_insns): Delete in favor of...
3065         (mips_load_store_insns): ...this new function.
3066         * config/mips/mips.c (mips_address_insns): Add a boolean argument
3067         to say whether multiword moves _might_ be split.
3068         (mips_fetch_insns): Delete in favor of...
3069         (mips_load_store_insns): ...this new function.
3070         (mips_rtx_costs): Update the call to mips_address_insns.
3071         (mips_address_cost): Likewise.
3072         * config/mips/mips.md (length): Use mips_load_store_insns instead
3073         of mips_fetch_insns.
3074         * config/mips/constraints.md (R): Use mips_address_insns rather
3075         than mips_fetch_insns.  Assume that the move never needs to be split.
3076
3077 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
3078
3079         * config/mips/mips.opt (mhard-float, msoft-float):  Make these
3080         control TARGET_HARD_FLOAT_ABI and TARGET_SOFT_FLOAT_ABI, rather
3081         than TARGET_HARD_FLOAT and TARGET_SOFT_FLOAT.  
3082         * config/mips/mips.h (mips16_hard_float): Delete.
3083         (TARGET_HARD_FLOAT_ABI, TARGET_SOFT_FLOAT_ABI):  Delete these
3084         definitions, and replace with....
3085         (TARGET_HARD_FLOAT, TARGET_SOFT_FLOAT): Define.
3086         * config/mips/mips.c (mips16_hard_float): Delete.  Replace
3087         all references with (TARGET_MIPS16 && TARGET_HARD_FLOAT_ABI).
3088         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Update comments.
3089         (override_options):  Replace MASK_SOFT_FLOAT references with
3090         MASK_SOFT_FLOAT_ABI.  Delete twiddling with MASK_SOFT_FLOAT
3091         and mips16_hard_float when TARGET_MIPS16.
3092         
3093 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3094
3095         PR c/32796
3096         * c-typeck.c (build_binary_op): Check for non pointer types before
3097         calling int_fits_type_p.
3098
3099 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3100
3101         PR middle-end/32813
3102         * fold-const.c (omit_one_operand): Return only the ommitted expression
3103         if the result is an empty statement.
3104         (pedantic_omit_one_operand): Likewise.
3105
3106 2007-08-09  Daniel Berlin  <dberlin@dberlin.org>
3107
3108         * c-typeck.c (readonly_error): Improve error for assignment.
3109         
3110         * c-pretty-print.c (pp_c_additive_expression): Handle pointer-plus
3111         expression. 
3112         (pp_c_expression): Ditto.
3113
3114 2007-08-09  Simon Baldwin  <simonb@google.com>
3115
3116         * simplify-rtx.c (simplify_binary_operation_1): Removed erroneous
3117         break that was preventing simplify_associative_operation() for xor.
3118
3119 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
3120             Nigel Stephens  <nigel@mips.com>
3121
3122         * doc/tm.texi (CLZ_DEFINED_VALUE_AT_ZERO, CTZ_DEFINED_VALUE_AT_ZERO):
3123         Document change in interpretation of value from boolean to
3124         tri-state integer.
3125         * optabs.c (expand_ffs, expand_ctz): New functions to compute
3126         ffs and ctz using clz.
3127         (expand_unop):  Call them.
3128         * config/rs6000/rs6000.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix its
3129         result value.
3130         (CTZ_DEFINED_VALUE_AT_ZERO): Likewise.
3131         * config/mips/mips.h (CLZ_DEFINED_VALUE_AT_ZERO): Likewise, to
3132         enable the new ffs expansion on this target.
3133
3134 2007-08-09  Jan Hubicka  <jh@suse.cz>
3135
3136         * optabs.c (expand_widen_pattern_expr): Use optabs accestors.
3137         (expand_ternary_op): Likewise.
3138         (expand_vec_shift_expr): Likewise.
3139         (expand_binop_directly): Likewise.
3140         (expand_binop): Likewise.
3141         (sign_expand_binop): Likewise.
3142         (expand_twoval_unop): Likewise.
3143         (expand_twoval_binop): Likewise.
3144         (expand_twoval_binop_libfunc): Likewise.
3145         (widen_clz): Likewise.
3146         (widen_bswap): Likewise.
3147         (expand_parity): Likewise.
3148         (expand_unop): Likewise.
3149         (expand_abs_nojump): Likewise.
3150         (expand_copysign): Likewise.
3151         (emit_no_conflict_block): Likewise.
3152         (emit_libcall_block): Likewise.
3153         (can_compare_p): Likewise.
3154         (prepare_cmp_insn): Likewise.
3155         (emit_cmp_and_jump_insn_1): Likewise.
3156         (prepare_float_lib_cmp): Likewise.
3157         (emit_conditional_add): Likewise.
3158         (gen_add2_insn): Likewise.
3159         (have_add2_insn): Likewise.
3160         (gen_sub2_insn): Likewise.
3161         (have_sub2_insn): Likewise.
3162         (can_extend_p): Likewise.
3163         (can_fix_p): Likewise.
3164         (can_float_p): Likewise.
3165         (expand_float): Likewise.
3166         (expand_fix): Likewise.
3167         (expand_sfix_optab): Likewise.
3168         (new_optab): Likewise.
3169         (new_convert_optab): Likewise.
3170         (init_libfuncs): Likewise.
3171         (init_interclass_conv_libfuncs): Likewise.
3172         (init_intraclass_conv_libfuncs): Likewise.
3173         (set_conv_libfunc): Likewise.
3174         (init_optabs): Likewise.
3175         (debug_optab_libfuncs): Likewise.
3176         (gen_cond_trap): Likewise.
3177         * optabs.h (optab_handler, convert_optab_hanlder): New.
3178         * genopinit.c: Update optabs generation table.
3179         * reload.c (find_reloads_address_1): Use optabs accestors.
3180         * builtins.c (expand_builtin_mathfn): Likewise.
3181         (expand_builtin_mathfn_2): Likewise.
3182         (expand_builtin_mathfn_3): Likewise.
3183         (expand_builtin_interclass_mathfn): Likewise.
3184         (expand_builtin_sincos): Likewise.
3185         (expand_builtin_cexpi): Likewise.
3186         (expand_builtin_powi): Likewise.
3187         (expand_builtin_strlen): Likewise.
3188         * dojump.c (do_jump): Likewise.
3189         * expr.c (convert_move): Likewise.
3190         (move_by_pieces): Likewise.
3191         (move_by_pieces_ninsns): Likewise.
3192         (can_store_by_pieces): Likewise.
3193         (store_by_pieces_1): Likewise.
3194         (emit_move_via_integer): Likewise.
3195         (emit_move_complex): Likewise.
3196         (emit_move_ccmode): Likewise.
3197         (emit_move_insn_1): Likewise.
3198         (emit_single_push_insn): Likewise.
3199         (store_constructor): Likewise.
3200         (expand_expr_real_1): Likewise.
3201         (do_store_flag): Likewise.
3202         * ada/misc.c (gnat_compute_largest_alignment): Likewise.
3203         (enumerate_modes): Likewise.
3204         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
3205         (supportable_widening_operation): Likewise.
3206         (supportable_narrowing_operation): Likewise.
3207         * expmed.c (store_bit_field_1): Likewise.
3208         (extract_bit_field_1): Likewise.
3209         (expand_mult_highpart_optab): Likewise.
3210         (expand_smod_pow2): Likewise.
3211         (expand_divmod): Likewise.
3212         (emit_store_flag): Likewise.
3213         * tree-vect-patterns.c
3214         (vect_pattern_recog_1): Likewise.
3215         * tree-ssa-loop-prefetch.c
3216         (nontemporal_store_p): Likewise.
3217         * tree-vect-transform.c (vect_model_reduction_cost): Likewise.
3218         (vect_create_epilog_for_reduction): Likewise.
3219         (vectorizable_reduction): Likewise.
3220         (vectorizable_operation): Likewise.
3221         (vect_strided_store_supported): Likewise.
3222         (vectorizable_store): Likewise.
3223         (vect_strided_load_supported): Likewise.
3224         (vectorizable_load): Likewise.
3225         * combine.c (simplify_comparison): Likewise.
3226         * tree-vect-generic.c
3227         (type_for_widest_vector_mode): Likewise.
3228         (expand_vector_operations_1): Likewise.
3229         * config/spu/spu.c (spu_expand_mov): Likewise.
3230         (spu_emit_vector_compare): Likewise.
3231         * config/rs6000/rs6000.c
3232         (rs6000_emit_vector_compare): Likewise.
3233         * stmt.c (add_case_node): Likewise.
3234         * reload1.c (gen_reload):
3235
3236 2007-08-09  Michael Matz  <matz@suse.de>
3237
3238         * tree.h (fixed_zerop): Declare as taking a const_tree.
3239         * tree.c (fixed_zerop): Take a const_tree.
3240
3241 2007-08-09  Ira Rosen  <irar@il.ibm.com>
3242
3243         * tree-vect-transform.c (vectorizable_store): Remove call to
3244         copy_virtual_operands() and call mark_symbols_for_renaming() for
3245         the created vector store.
3246         (vect_setup_realignment): Don't call copy_virtual_operands() and
3247         update_vuses_to_preheader(). 
3248         (vectorizable_load): Don't call copy_virtual_operands(). 
3249         (update_vuses_to_preheader): Remove.
3250
3251 2007-08-08  Chao-ying Fu  <fu@mips.com>
3252
3253         * tree.def (FIXED_POINT_TYPE): New type.
3254         (FIXED_CST): New constant.
3255         (FIXED_CONVERT_EXPR): New expr.
3256         * doc/c-tree.texi (Types): Document FIXED_POINT_TYPE.
3257         (Expressions): Document FIXED_CST and FIXED_CONVERT_EXPR.
3258         * tree.h (struct tree_base): Add saturating_flag.
3259         Remove one bit of spare for saturating_flag.
3260         (NUMERICAL_TYPE_CHECK): Support FIXED_POINT_TYPE.
3261         (NON_SAT_FIXED_POINT_TYPE_P, SAT_FIXED_POINT_TYPE_P,
3262         FIXED_POINT_TYPE_P): Define.
3263         (TYPE_SATURATING): Define.
3264         (TREE_FIXED_CST_PTR, TREE_FIXED_CST): Define.
3265         (struct tree_fixed_cst): New.
3266         (TYPE_IBIT, TYPE_FBIT): Define.
3267         (tree_node): Add fixed_cst.
3268         (enum tree_index): Add new enumeration values of
3269         TI_SAT_SFRACT_TYPE, TI_SAT_FRACT_TYPE, TI_SAT_LFRACT_TYPE,
3270         TI_SAT_LLFRACT_TYPE, TI_SAT_USFRACT_TYPE, TI_SAT_UFRACT_TYPE,
3271         TI_SAT_ULFRACT_TYPE, TI_SAT_ULLFRACT_TYPE, TI_SFRACT_TYPE,
3272         TI_FRACT_TYPE, TI_LFRACT_TYPE, TI_LLFRACT_TYPE, TI_USFRACT_TYPE,
3273         TI_UFRACT_TYPE, TI_ULFRACT_TYPE, TI_ULLFRACT_TYPE,
3274         TI_SAT_SACCUM_TYPE, TI_SAT_ACCUM_TYPE, TI_SAT_LACCUM_TYPE,
3275         TI_SAT_LLACCUM_TYPE, TI_SAT_USACCUM_TYPE, TI_SAT_UACCUM_TYPE,
3276         TI_SAT_ULACCUM_TYPE, TI_SAT_ULLACCUM_TYPE, TI_SACCUM_TYPE,
3277         TI_ACCUM_TYPE, TI_LACCUM_TYPE, TI_LLACCUM_TYPE, TI_USACCUM_TYPE,
3278         TI_UACCUM_TYPE, TI_ULACCUM_TYPE, TI_ULLACCUM_TYPE,
3279         TI_QQ_TYPE, TI_HQ_TYPE,_TYPE, TI_SQ_TYPE, TI_DQ_TYPE, TI_TQ_TYPE,
3280         TI_UQQ_TYPE, TI_UHQ_TYPE, TI_USQ_TYPE, TI_UDQ_TYPE, TI_UTQ_TYPE,
3281         TI_SAT_QQ_TYPE, TI_SAT_HQ_TYPE, TI_SAT_SQ_TYPE, TI_SAT_DQ_TYPE,
3282         TI_SAT_TQ_TYPE, TI_SAT_UQQ_TYPE, TI_SAT_UHQ_TYPE, TI_SAT_USQ_TYPE,
3283         TI_SAT_UDQ_TYPE, TI_SAT_UTQ_TYPE, TI_HA_TYPE, TI_SA_TYPE, TI_DA_TYPE,
3284         TI_TA_TYPE, TI_UHA_TYPE, TI_USA_TYPE, TI_UDA_TYPE, TI_UTA_TYPE,
3285         TI_SAT_HA_TYPE, TI_SAT_SA_TYPE, TI_SAT_DA_TYPE, TI_SAT_TA_TYPE,
3286         TI_SAT_UHA_TYPE, TI_SAT_USA_TYPE, TI_SAT_UDA_TYPE, TI_SAT_UTA_TYPE.
3287         (sat_short_fract_type_node, sat_fract_type_node,
3288         sat_long_fract_type_node, sat_long_long_fract_type_node,
3289         sat_unsigned_short_fract_type_node, sat_unsigned_fract_type_node,
3290         sat_unsigned_long_fract_type_node,
3291         sat_unsigned_long_long_fract_type_node, short_fract_type_node,
3292         fract_type_node, long_fract_type_node, long_long_fract_type_node,
3293         unsigned_short_fract_type_node, unsigned_fract_type_node,
3294         unsigned_long_fract_type_node, unsigned_long_long_fract_type_node,
3295         sat_short_accum_type_node, sat_accum_type_node,
3296         sat_long_accum_type_node, sat_long_long_accum_type_node,
3297         sat_unsigned_short_accum_type_node, sat_unsigned_accum_type_node,
3298         sat_unsigned_long_accum_type_node,
3299         sat_unsigned_long_long_accum_type_node, short_accum_type_node,
3300         accum_type_node, long_accum_type_node, long_long_accum_type_node,
3301         unsigned_short_accum_type_node, unsigned_accum_type_node,
3302         unsigned_long_accum_type_node, unsigned_long_long_accum_type_node,
3303         qq_type_node, hq_type_node, sq_type_node, dq_type_node, tq_type_node,
3304         uqq_type_node, uhq_type_node, usq_type_node, udq_type_node,
3305         utq_type_node, sat_qq_type_node, sat_hq_type_node, sat_sq_type_node,
3306         sat_dq_type_node, sat_tq_type_node, sat_uqq_type_node,
3307         sat_uhq_type_node, sat_usq_type_node, sat_udq_type_node,
3308         sat_utq_type_node, ha_type_node, sa_type_node, da_type_node,
3309         ta_type_node, uha_type_node, usa_type_node, uda_type_node,
3310         uta_type_node, sat_ha_type_node, sat_sa_type_node, sat_da_type_node,
3311         sat_ta_type_node, sat_uha_type_node, sat_usa_type_node,
3312         sat_uda_type_node, sat_uta_type_node): New macro.
3313         (make_fract_type, make_accum_type): Declare.
3314         (make_signed_fract_type, make_unsigned_fract_type,
3315         make_sat_signed_fract_type, make_sat_unsigned_fract_type,
3316         make_signed_accum_type, make_unsigned_accum_type,
3317         make_sat_signed_accum_type, make_sat_unsigned_accum_type,
3318         make_or_reuse_signed_fract_type, make_or_reuse_unsigned_fract_type,
3319         make_or_reuse_sat_signed_fract_type,
3320         make_or_reuse_sat_unsigned_fract_type, make_or_reuse_signed_accum_type,
3321         make_or_reuse_unsigned_accum_type, make_or_reuse_sat_signed_accum_type,
3322         make_or_reuse_sat_unsigned_accum_type): New macro.
3323         (fixed_zerop): Declare.
3324         * defaults.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
3325         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
3326         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
3327         LONG_LONG_ACCUM_TYPE_SIZE): Define.
3328         * treestruct.def: Add TS_FIXED_CST.
3329         * Makefile.in (c-pretty-print.o): Add dependence on fixed-value.h.
3330         (tree.o): Likewise.
3331         (tree-dump.o): Likewise.
3332         (print-tree.o): Likewise.
3333         (tree-pretty-print.o): Likewise.
3334         (fold-const.o): Likewise.
3335         * tree-complex.c (some_nonzerop): Handle FIXED_CST.
3336         * tree-gimple.c (is_gimple_formal_tmp_rhs): Handle FIXED_CST.
3337         (is_gimple_min_invariant): Handle FIXED_CST.
3338         * stor-layout.c (int_mode_for_mode): Handle MODE_FRACT, MODE_UFRACT,
3339         MODE_ACCUM, MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
3340         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
3341         (layout_type): Handle FIXED_POINT_TYPE.
3342         (make_fract_type, make_accum_type): New functions.
3343         * tree-browser.c (browse_tree): Handle FIXED_POINT_TYPE.
3344         * tree-dump.c (fixed-value.h): New include.
3345         (dump_fixed): New function.
3346         (dequeue_and_dump): Handle FIXED_POINT_TYPE and FIXED_CST.
3347         * tree-inline.c (remap_type_1): Handle FIXED_POINT_TYPE.
3348         (estimate_num_insns_1): Handle FIXED_CST and FIXED_CONVERT_EXPR.
3349         * tree-pretty-print.c (fixed-value.h): New include.
3350         (dump_generic_node): Handle FIXED_POINT_TYPE, FIXED_CST, and
3351         FIXED_CONVERT_EXPR.
3352         * tree-scalar-evolution.c (get_scalar_evolution): Handle FIXED_CST.
3353         * tree-ssa-loop-im.c (for_each_index): Handle FIXED_CST.
3354         * tree-ssa-pre.c (poolify_tree): Handle FIXED_CST.
3355         * tree-ssa-reassoc.c (break_up_subtract_bb): We can do reassociation
3356         for non-saturating fixed-point types.
3357         (reassociate_bb): Likewise.
3358         * emit-rtl.c (fixed-value.h): New include.
3359         (fconst0, fconst1): New array.
3360         (init_emit_once): Initialize fconst0 and fconst1 for fixed-point modes.
3361         * tree-vect-generic.c expand_vector_operation): Support
3362         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, and
3363         MODE_VECTOR_UACCUM.
3364         (type_for_widest_vector_mode): Add one parameter for the 
3365         saturating flag.
3366         Check scalar FRACT, UFRACT, ACCUM, and UACCUM mode to select their
3367         vector mode.
3368         Pass the satp parameter to type_for_mode for fixed-point types.
3369         (expand_vector_operations_1): Pass the saturating flag to
3370         type_for_widest_vector_mode.
3371         Support MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
3372         and MODE_VECTOR_UACCUM.
3373         * tree-vect-transform.c (vect_is_simple_cond): Support FIXED_CST.
3374         (vectorizable_condition): Likewise.
3375         * tree.c (fixed-value.h): New include.
3376         (tree_code_size): Support FIXED_CST.
3377         (build_fixed): New function.
3378         (build_one_cst): Support FIXED_POINT_TYPE for accum types.
3379         (fixed_zerop): New function.
3380         (tree_node_structure): Support FIXED_CST.
3381         (type_contains_placeholder_1): Support FIXED_POINT_TYPE.
3382         (build_type_attribute_qual_variant): Handle FIXED_POINT_TYPE.
3383         (type_hash_eq): Handle FIXED_POINT_TYPE.
3384         (simple_cst_equal): Support FIXED_CST.
3385         (iterative_hash_expr): Handle FIXED_CST.
3386         (get_unwidened): Make sure type is not FIXED_POINT_TYPE.
3387         (get_narrower): Likewise.
3388         (variably_modified_type_p): Handle FIXED_POINT_TYPE.
3389         (make_or_reuse_fract_type, make_or_reuse_accum_type): New functions.
3390         (build_common_tree_nodes_2): Use MAKE_FIXED_TYPE_NODE_FAMILY and
3391         MAKE_FIXED_MODE_NODE macros to initialize fixed-point type
3392         nodes.
3393         (build_vector_type_for_mode): Handle MODE_VECTOR_FRACT,
3394         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
3395         (initializer_zerop): Support FIXED_CST.
3396         (walk_tree): Handle FIXED_CST and FIXED_POINT_TYPE.
3397         * dwarf2out.c (base_type_die): Use DW_ATE_signed_fixed or
3398         DW_ATE_unsigned_fixed to describe FIXED_POINT_TYPE.
3399         (is_base_type): Handle FIXED_POINT_TYPE.
3400         (add_type_attribute): Handle FIXED_POINT_TYPE.
3401         (gen_type_die_with_usage): Handle FIXED_POINT_TYPE.
3402         * print-tree.c (fixed-value.h): New include.
3403         (print_node_brief): Support FIXED_CST.
3404         (print_node): Support FIXED_POINT_TYPE and FIXED_CST.
3405         * c-pretty-print.c (fixed-value.h): New include.
3406         (pp_c_type_specifier): Handle FIXED_POINT_TYPE.  Need to pass
3407         TYPE_SATURATING to c_common_type_for_mode for fixed-point modes.
3408         (pp_c_direct_abstract_declarator): Handle FIXED_POINT_TYPE.
3409         Support fixed-point types for inner items in VECTOR_TYPE.
3410         (pp_c_direct_declarator): Likewise.
3411         (pp_c_declarator): Likewise.
3412         (pp_c_fixed_constant): New function.
3413         (pp_c_constant): Handle FIXED_CST.
3414         (pp_c_primary_expression): Likewise.
3415         (pp_c_expression): Likewise.
3416         * fold-const.c (fixed-value.h): New include.
3417         (negate_expr_p): Return true for FIXED_CST.
3418         (fold_negate_expr): Support FIXED_CST.
3419         (split_tree): Support FIXED_CST.
3420         (const_binop): Support FIXED_CST.
3421         (fold_convert_const_int_from_fixed): New function to convert from
3422         fixed to int.
3423         (fold_convert_const_real_from_fixed): New function to convert from
3424         fixed to real.
3425         (fold_convert_const_fixed_from_fixed): New function to convert from
3426         fixed to another fixed.
3427         (fold_convert_const_fixed_from_int): New function to convert from
3428         int to fixed.
3429         (fold_convert_const_fixed_from_real): New function to convert from
3430         real to fixed.
3431         (fold_convert_const): Support conversions from fixed to int, from
3432         fixed to real, from fixed to fixed, from int to fixed, and from real
3433         to fixed.
3434         (fold_convert): Support FIXED_CST and FIXED_POINT_TYPE.
3435         (operand_equal_p): Support FIXED_CST.
3436         (make_range): For fixed-point modes, we need to pass the
3437         saturating flag as the 2nd parameter.
3438         (tree_swap_operands_p): Handle FIXED_CST.
3439         (fold_plusminus_mult_expr): For fract modes, we cannot generate
3440         constant 1.
3441         (fold_unary): Support FIXED_CONVERT_EXPR.
3442         (fold_binary): Handle FIXED_CST.
3443         Make sure the type is not saturating, before associating operations.
3444         Ex: A + B + C, A * B * C, (A1 * C1) +/- (A2 * C2).
3445         (tree_expr_nonnegative_warnv_p): Handle FIXED_CST.
3446         (fold_negate_const): Support FIXED_CST.
3447         (fold_relational_const): Support FIXED_CST.
3448         * gimplify.c (omp_firstprivatize_type_sizes): Handle FIXED_POINT_TYPE.
3449         (gimplify_expr): Handle FIXED_CST.
3450         (gimplify_type_sizes): Handle FIXED_POINT_TYPE.
3451         * ipa-prop.c (ipa_callsite_compute_param): Support FIXED_CST.
3452         * ipa-type-escape.c (type_to_consider): Handle FIXED_POINT_TYPE.
3453         * doc/tm.texi (Type Layout): Document SHORT_FRACT_TYPE_SIZE,
3454         FRACT_TYPE_SIZE, LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
3455         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
3456         LONG_LONG_ACCUM_TYPE_SIZE.
3457         * dbxout.c (dbxout_type): Handle FIXED_POINT_TYPE.
3458         * c-aux-info.c (gen_type): Handle FIXED_POINT_TYPE.
3459         * tree-sra.c (is_sra_scalar_type): Support FIXED_POINT_TYPE.
3460         * expmed.c (extract_bit_field): Support MODE_FRACT, MODE_UFRACT,
3461         MODE_ACCUM, and MODE_UACCUM.
3462         * tree-vectorizer.c (vect_is_simple_reduction): Check for saturating
3463         fixed-point types to disable reduction.
3464         * explow.c (promote_mode): Support FIXED_POINT_TYPE.
3465
3466 2007-08-08  David Edelsohn  <edelsohn@gnu.org>
3467
3468         * config/rs6000/x-rs6000: New file.
3469         * config/rs6000/darwin.h (CC1_SPEC): Add cc1_cpu.
3470         * config/rs6000/rs6000.h (EXTRA_SPECS): Add cc1_cpu.
3471         (EXTRA_SPEC_FUNCTIONS): Define.
3472         (HAVE_LOCAL_CPU_DETECT): Define.
3473         (CC1_CPU_SPEC): Define.
3474         * config/rs6000/driver-rs6000.c: New file.
3475         * config/rs6000/aix.h (CC1_SPEC): Define.
3476         * config/rs6000/sysv4.h (CC1_SPEC): Add cc1_cpu.
3477         * config.host: Add x-rs6000 to host_xmake_file if host and target
3478         are rs6000 or powerpc.
3479
3480 2007-08-08  Paolo Bonzini <paolo.bonzini@lu.unisi.ch>
3481
3482         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Use +=.
3483
3484 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
3485             Sandra Loosemore  <sandra@codesourcery.com>
3486             Chao-ying Fu  <fu@mips.com>
3487             Nigel Stephens  <nigel@mips.com>
3488             David Ung  <davidu@mips.com>
3489
3490         * doc/invoke.texi (-mcode-readable): Document.
3491         * config/mips/mips.opt (mcode-readable): New option.
3492         * config/mips/mips-protos.h (SYMBOL_32_HIGH): New symbol type.
3493         * config/mips/mips.h (mips_code_readable_setting): New enum.
3494         (mips_code_readable): Declare.
3495         (TARGET_MIPS16_TEXT_LOADS, TARGET_MIPS16_PCREL_LOADS): New macros.
3496         (TARGET_MIPS16_SHORT_JUMP_TABLES): New macro.
3497         (JUMP_TABLES_IN_TEXT_SECTION): Use it.
3498         (CASE_VECTOR_MODE, CASE_VECTOR_PC_RELATIVE): Likewise.  Remove
3499         boiler-plate comments.
3500         (ASM_OUTPUT_ADDR_DIFF_ELT): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
3501         * config/mips/mips.c (mips_code_readable): New variable.
3502         (mips_classify_symbol): Only return SYMBOL_PC_RELATIVE for
3503         MIPS16 labels if TARGET_MIPS16_SHORT_JUMP_TABLES.  Use both the
3504         context and -mcode-readable setting to restrict the use of
3505         SYMBOL_PC_RELATIVE for MIPS16 constant pool references.
3506         Only return TARGET_FORCE_TO_MEM if PC-relative loads are allowed.
3507         (mips_symbolic_constant_p): Handle SYMBOL_32_HIGH.
3508         (mips_blocks_for_constant_p): Only return false for
3509         TARGET_MIPS16_PCREL_LOADS.
3510         (mips_symbol_insns_1): Treat HIGHs as 2 extended instructions
3511         for MIPS16.  Handle SYMBOL_32_HIGH.
3512         (mips_const_insns): Allow HIGHs for MIPS16 too.
3513         (mips_unspec_address_offset): New function, split out from...
3514         (mips_unspec_address): ...here.
3515         (mips_output_move): Handle MIPS16 HIGH moves.  Use "li" to load
3516         16-bit symbolic constants.  Assert approropiate conditions for
3517         using the "la" and "dla" macros.
3518         (mips_handle_option): Handle -mcode-readable=.
3519         (override_options): Use %hi/%lo relocations for TARGET_MIPS16 too.
3520         Set up mips_lo_relocs[SYMBOL_32_HIGH].
3521         (mips_strip_unspec_address): New function, split out from...
3522         (print_operand_reloc): ...here.
3523         (print_operand): Pass constants through mips_strip_unspec_address.
3524         (print_operand_address): Likewise.
3525         (mips_output_mi_thunk): Remove guard of mips16_lay_out_constants.
3526         (mips_select_rtx_section): Remove MIPS16 handling.
3527         (mips16_gp_pseudo_reg): Check currently_expanding_to_rtl.
3528         (mips16_rewrite_pool_refs): Wrap the labels in an address UNSPEC.
3529         (mips16_lay_out_constants): Do nothing unless
3530         TARGET_MIPS16_PCREL_LOADS.
3531         (mips_avoid_hazards): Remove guard of mips16_lay_out_constants.
3532         * config/mips/mips.md: Split HIGHs for MIPS16.
3533         (tablejump): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
3534
3535 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
3536
3537         * config/mips/mips-protos.h (mips_emit_move): Declare.
3538         * config/mips/mips.c (mips_emit_move): New function.
3539         (mips_force_temporary): Use mips_emit_move instead of emit_move_insn.
3540         (mips_legitimize_const_move): Likewise.
3541         (mips_legitimize_move): Likewise.
3542         (mips_split_64bit_move): Likewise.
3543         (mips_restore_gp): Likewise.
3544         (mips_load_call_address): Likewise.
3545         (mips_emit_fcc_reload): Likewise.
3546         (mips_set_return_address): Likewise.
3547         (mips_block_move_straight): Likewise.
3548         (mips_block_move_loop): Likewise.
3549         (mips_setup_incoming_varargs): Likewise.
3550         (mips_save_reg): Likewise.
3551         (mips_expand_prologue): Likewise.
3552         (mips_restore_reg): Likewise.
3553         (mips_expand_epilogue): Likewise.
3554         (mips_output_mi_thunk): Likewise.
3555         (build_mips16_call_stub): Likewise.
3556         (mips_builtin_branch_and_move): Likewise.
3557         * config/mips/mips.h (INITIALIZE_TRAMPOLINE): Likewise.
3558         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
3559         (fixuns_truncdfdi2): Likewise.
3560         (fixuns_truncsfsi2): Likewise.
3561         (fixuns_truncsfdi2): Likewise.
3562         (loadgp_absolute): Likewise.
3563         (builtin_setjmp_setup): Likewise.
3564         (builtin_longjmp): Likewise.
3565         (untyped_call): Likewise.
3566
3567 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
3568
3569         * config/mips/mips-protos.h (mips_split_symbol): Add a mode and
3570         an "rtx *" argument.  Return a bool.
3571         * config/mips/mips.c (mips_split_symbol): Accept arbitrary source
3572         values and return true if they can be split.  Take the same kind of
3573         mode argument as mips_symbol_insns.  Add a "lo_sum_out" parameter
3574         and store the lo_sum there if nonnull.  Use the symbol type to
3575         determine whether a $gp or HIGH is needed.
3576         (mips_legitimize_address): Update call to mips_split_symbol and
3577         simplify accordingly.
3578         (mips_legitimize_const_move): Likewise.
3579         * config/mips/mips.md: In the combine define_split,
3580         check mips_split_symbol instead of splittable_symbolic_operand.
3581         Update use of mips_split_symbol in the generator code.
3582         * config/mips/predicates.md (splittable_symbolic_operand): Delete.
3583
3584 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
3585
3586         * config/mips/mips.c (mips_symbolic_address_p): Delete.
3587         (mips_symbol_insns_1): New function, split out from...
3588         (mips_symbol_insns): ...here.  Take a mode argument.  Treat loads
3589         and stores separately from load addresses.
3590         (mips_classify_address): Replace uses of mips_symbolic_address_p
3591         with uses of mips_symbol_insns.
3592         (mips_address_insns): Update calls to mips_symbol_insns.
3593         (mips_const_insns): Likewise.
3594         (mips_legitimize_address): Likewise.
3595
3596 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
3597
3598         * config/mips/mips-protos.h (SYMBOL_FORCE_TO_MEM): New symbol type.
3599         * config/mips/mips.c (mips_classify_symbol): Skip TARGET_ABICALLS
3600         block for locally-binding symbols if TARGET_ABSOLUTE_ABICALLS.
3601         Return SYMBOL_FORCE_TO_MEM instead of SYMBOL_ABSOLUTE for
3602         non-call contexts if TARGET_MIPS16.
3603         (mips_symbolic_constant_p): Handle SYMBOL_FORCE_TO_MEM.
3604         (mips_symbolic_address_p): Likewise.  Remove special TARGET_MIPS16
3605         code for SYMBOL_ABSOLUTE.
3606         (mips_symbol_insns): Likewise.
3607
3608 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
3609
3610         * config/mips/mips-protos.h (mips_symbol_context): New enumeration.
3611         * config/mips/mips.c (mips_classify_symbol): Take a context argument.
3612         (mips_symbolic_constant_p): Likewise.  Update the call to
3613         mips_classify_symbol.
3614         (mips_classify_address): Update the calls to mips_symbolic_constant_p.
3615         (mips_const_insns): Likewise.  Update the call to mips_classify_symbol.
3616         (mips_legitimize_address): Update the call to mips_symbolic_constant_p.
3617         (print_operand_reloc): Add a context argument.  Update the call to
3618         mips_symbolic_constant_p.
3619         (print_operand): Update the calls to print_operand_reloc.
3620         (print_operand_address): Use print_operand_reloc rather than
3621         print_operand.
3622         (mips_rewrite_small_data_p): Add a context argument.  Update the call
3623         to mips_symbolic_constant_p.
3624         (mips_small_data_pattern_1): Make DATA the containing mem.
3625         Update the call to mips_rewrite_small_data_p.
3626         (mips_rewrite_small_data_1): Likewise.
3627         (mips_use_anchors_for_symbol_p): Update the call to
3628         mips_symbolic_constant_p.
3629         * config/mips/predicates.md (const_call_insn_operand): Likewise.
3630         (splittable_symbolic_operand): Likewise.
3631         (move_operand): Likewise.
3632         (absolute_symbolic_operand): Likewise.
3633         (got_disp_operand): Likewise.
3634         (got_page_ofst_operand): Likewise.
3635
3636 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
3637
3638         * config/mips/mips-protos.h (SYMBOL_GENERAL): Rename to...
3639         (SYMBOL_ABSOLUTE): ...this.
3640         (SYMBOL_SMALL_DATA): Rename to...
3641         (SYMBOL_GP_RELATIVE): ...this.
3642         (SYMBOL_CONSTANT_POOL): Rename to...
3643         (SYMBOL_PC_RELATIVE): ...this.
3644         * config/mips/mips.c (mips_classify_symbol, mips_symbolic_constant_p)
3645         (mips_symbolic_address_p, mips_symbol_insns, override_options)
3646         (mips_rewrite_small_data_p, mips_use_anchors_for_symbol_p): Update
3647         after above changes.
3648         * config/mips/predicates.md (const_call_insn_operand): Likewise.
3649         (general_symbolic_operand): Rename to...
3650         (absolute_symbolic_operand): ...this.
3651         * config/mips/mips.md: Update after above changes.
3652
3653 2007-08-08  Vladimir Yanovsky  <yanov@il.ibm.com>
3654             Revital Eres  <eres@il.ibm.com>
3655
3656         * ddg.c (print_ddg): Add dump information.
3657         * modulo-sched.c (print_node_sched_params): Add parameter and
3658         verbosity.
3659         (calculate_maxii): Remove function.
3660         (undo_generate_reg_moves): Likewise.
3661         (undo_permute_partial_schedule): Likewise.
3662         (kernel_number_of_cycles): Likewise.
3663         (MAXII_FACTOR): New definition to calculate the upper bound of II.
3664         (sms_schedule): Use it.  Remove profitability checks.
3665         (sms_schedule_by_order): Fix order of nodes within the cycle.
3666
3667 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
3668
3669         * config/i386/gnu.h (STARTFILE_SPEC): Use gcrt0.o in profile mode, add
3670         -profile option, add pie support.
3671         (ENDFILE_SPEC): New spec.
3672         * config/gnu.h (LIB_SPEC): Add -profile option.
3673
3674 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
3675
3676         * config/i386/gnu.h (CPP_SPEC): Add -pthread option.
3677         * config/gnu.h (LIB_SPEC): Likewise.
3678
3679 2007-08-07  Yaz Saito  <saito@google.com>
3680             Ian Lance Taylor  <iant@google.com>
3681
3682         * common.opt (finstrument-functions-exclude-function-list): New
3683         option.
3684         (finstrument-functions-exclude-file-list): New option.
3685         * opts.c (char_p): Define and DEF_VEC.
3686         (flag_instrument_functions_exclude_functions): New static
3687         variable.
3688         (flag_instrument_functions_exclude_files): New static variable.
3689         (add_instrument_functions_exclude_list): New static function.
3690         (flag_instrument_functions_exclude_p): New function.
3691         (common_handle_option): Handle new options.
3692         * flags.h (flag_instrument_functions_exclude_p): Declare.
3693         * gimplify.c (gimplify_function_tree): Call
3694         flag_instrument_functions_exclude_p.
3695         * doc/invoke.texi (Option Summary): Mention new options.
3696         (Code Gen Options): Document new options.
3697
3698 2007-08-07  Ian Lance Taylor  <iant@google.com>
3699
3700         PR rtl-optimization/32776
3701         * lower-subreg.c (resolve_clobber): Call resolve_reg_notes.
3702         (resolve_use): Likewise.
3703         (decompose_multiword_subregs): Remove "changed" local variable.
3704
3705 2007-08-07  Carlos O'Donell  <carlos@codesourcery.com>
3706
3707         * configure.ac: Define HAVE_GNU_AS if $gas_flag is yes.
3708         * configure: Regenerate.
3709         * config.in: Regenerate.
3710         * gcc.c [HAVE_GNU_AS]: Add "%{v} %{w:-W} %{I*} " to asm_options
3711         spec string.
3712
3713 2007-08-07  Ian Lance Taylor  <iant@google.com>
3714
3715         * lower-subreg.c (resolve_clobber): If the clobber has a LIBCALL
3716         note, just delete the insn.
3717
3718 2007-08-07  Andreas Schwab  <schwab@suse.de>
3719
3720         PR bootstrap/32973
3721         * gengtype-lex.l: Ignore backslash/newline pair while scanning a
3722         struct definition.
3723
3724 2007-08-07  Andreas Krebbel  <krebbel1@de.ibm.com>
3725
3726         * lower-subreg.c (resolve_subreg_use): Remove assertion.
3727         (find_decomposable_shift_zext, resolve_shift_zext): New functions.
3728         (decompose_multiword_subregs): Use the functions above to decompose
3729         multiword shifts and zero-extends.
3730
3731 2007-08-07  Rask Ingemann Lambertsen  <rask@sygehus.dk>
3732
3733         * doc/sourcebuild.texi (Test Directives): Fix "compile" and
3734         "assemble" descriptions which were swapped.
3735
3736 2007-08-06  Chao-ying Fu  <fu@mips.com>
3737
3738         * fixed-value.h: New file.
3739         * fixed-value.c: New file.
3740         * Makefile.in (OBJS-common): Add fixed-value.o.
3741         (fixed-value.o): New rule.
3742         (GTFILES): Add fixed-value.h.
3743         * double-int.c (double_int_scmp): We should use unsigned HOST_WIDE_INT
3744         to compare a.low and b.low.
3745         * gengtype.c (main): Handle FIXED_VALUE_TYPE type as scalar typedef.
3746
3747 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
3748             Daniel Jacobowitz  <dan@codesourcery.com>
3749
3750         PR target/31868
3751         * config.gcc (x86_64-*-freebsd*): Add i386/t-crtstuff to
3752         tmake_file.
3753         (x86_64-*-netbsd*): Likewise.
3754         (x86_64-*-linux*): Likewise.
3755         (x86_64-*-kfreebsd*-gnu): Likewise.
3756         (x86_64-*-knetbsd*-gnu): Likewise.
3757         (i[34567]86-*-solaris2.1[0-9]*): Likewise.
3758
3759         * config/i386/t-linux64 (CRTSTUFF_T_CFLAGS): Removed.
3760
3761         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Update comments.
3762         Add -fno-asynchronous-unwind-tables.
3763
3764         * config/t-freebsd (CRTSTUFF_T_CFLAGS_S): Add $(CRTSTUFF_T_CFLAGS).
3765         * config/t-libc-ok (CRTSTUFF_T_CFLAGS_S): Likewise.
3766         * config/t-lynx (CRTSTUFF_T_CFLAGS_S): Likewise.
3767         * config/t-netbsd (CRTSTUFF_T_CFLAGS_S): Likewise.
3768         * config/t-svr4 (CRTSTUFF_T_CFLAGS_S): Likewise.
3769
3770 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
3771
3772         * config/ia64/ia64.c (ia64_c_mode_for_suffix): New.
3773         (TARGET_C_MODE_FOR_SUFFIX): New.
3774
3775 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
3776
3777         * config/ia64/div.md (m2subrf4_cond): Change 'g' to 'G'.
3778
3779 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
3780
3781         * config/ia64/ia64.h (MODES_TIEABLE_P): Fix typo.
3782
3783 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
3784
3785         * config/i386/i386.md: Check TARGET_ macros and optimize_size
3786         before checking function returns in conditional expressions.
3787
3788 2007-08-06  Alfred Minarik  <a.minarik@aon.at>
3789
3790         PR pch/13676
3791         * doc/invoke.texi: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
3792
3793 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3794
3795         PR middle-end/32988
3796         * tree.c (build2_stat): Instead of checking for INTEGER_TYPE, check
3797         for INTEGRAL_TYPE_P.
3798
3799 2008-08-05  Paolo Bonzini  <bonzini@gnu.org>
3800
3801         * configure.ac: Remove --enable-checking=df from default settings.
3802         * tree-pass.h (TODO_df_verify): New.  Shift TODO_mark_first_instance.
3803         * df-core.c (df_finish_pass) [ENABLE_CHECKING]: Schedule verification
3804         if the parameter is true.
3805         (df_analyze) [!ENABLE_DF_CHECKING]: Also do verification if the
3806         DF_VERIFY_SCHEDULED flag is true.
3807         * df.h (enum df_changeable_flags): Add DF_VERIFY_SCHEDULED.
3808         (df_finish_pass): Adjust prototype.
3809         * passes.c (execute_todo): Schedule verification if TODO_df_verify is
3810         true.
3811
3812         * see.c (pass_see): Add TODO_df_verify.
3813         * loop-init.c (pass_rtl_move_loop_invariants): Add TODO_df_verify.
3814         * global.c (rest_of_handle_global_alloc): Schedule verification
3815         after the pass.
3816         * local-alloc.c (rest_of_handle_local_alloc): Schedule verification
3817         before the pass.
3818         * function.c (pass_thread_prologue_and_epilogue): Add TODO_df_verify.
3819         * gcse.c (rest_of_handle_gcse): Adjust call to df_finish_pass.
3820         * loop-iv.c (iv_analysis_done): Schedule verification after the pass.
3821
3822         * config/sh/sh.c (sh_output_mi_thunk): Remove dead code.
3823         * config/ia64/ia64.c (ia64_reorg): Adjust call to df_finish_pass.
3824         * config/bfin/bfin.c (bfin_reorg): Adjust call to df_finish_pass.
3825
3826 2007-08-05  Vladimir Yanovsky  <yanov@il.ibm.com>
3827             Revital Eres <eres@il.ibm.com>
3828
3829         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Document new
3830         flag.
3831         * ddg.c (create_ddg_dependence): Rename to...
3832         (create_ddg_dep_from_intra_loop_link): This.  Do not check
3833         for interloop edges.  Do not create anti dependence edge when
3834         a true dependence edge exists in the opposite direction and
3835         -fmodulo-sched-allow-regmoves is set.
3836         (build_intra_loop_deps): Call create_ddg_dep_from_intra_loop_link.
3837         (add_cross_iteration_register_deps): Create anti dependence edge
3838         when -fno-modulo-sched-allow-regmoves is set.
3839         * common.opt (-fmodulo-sched-allow-regmoves): New flag.
3840
3841 2007-08-04  Richard Sandiford  <richard@codesourcery.com>
3842
3843         * config/arm/arm.md (movsi): Add braces.
3844
3845 2007-08-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3846
3847         PR middle-end/32780
3848         * fold-const.c (fold_binary <case MINUS_EXPR>): Fix the type of
3849         operands for the folding of "A - (A & B)" into "~B & A"; cast them
3850         to type.
3851
3852 2007-08-03  Zdenek Dvorak  <ook@ucw.cz>
3853
3854         * tree-ssa-threadupdate.c (thread_through_all_blocks): Use loops'
3855         state accessor functions.
3856         * cfgloopmanip.c (remove_path, create_preheaders,
3857         force_single_succ_latches, fix_loop_structure): Ditto.
3858         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
3859         tree_duplicate_loop_to_header_edge): Ditto.
3860         * cfgloopanal.c (mark_irreducible_loops): Ditto.
3861         * loop-init.c (loop_optimizer_init, loop_optimizer_finalize):
3862         Ditto.
3863         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures,
3864         cleanup_tree_cfg): Ditto.
3865         * tree-cfg.c (tree_merge_blocks): Ditto.
3866         * cfgloop.c (rescan_loop_exit, record_loop_exits,
3867         release_recorded_exits, get_loop_exit_edges, verify_loop_structure,
3868         loop_preheader_edge, single_exit): Ditto.
3869         (flow_loops_find): Do not clear loops->state.
3870         * cfgloop.h (loops_state_satisfies_p, loops_state_set,
3871         loops_state_clear): New functions.
3872
3873 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3874
3875         PR middle-end/32399
3876         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
3877         when adding to the base and convert ELT to sizetype instead of type.
3878
3879 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3880
3881         PR middle-end/32304
3882         * ipa-reference.c (has_proper_scope_for_analysis): Return false when
3883         the decl's type has TYPE_NEEDS_CONSTRUCTING set.
3884
3885 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3886
3887         PR middle-end/32935
3888         * fold-convert.c (fold_negate_expr <NOP_EXPR>): Convert back to the
3889          correct type the negate expression.
3890
3891 2007-08-03  Jan Hubicka  <jh@suse.cz>
3892
3893         * i386.c (setup_incoming_varargs_64): Tolerate 64bit preferred
3894         stack boundary.
3895
3896 2007-08-03  David Edelsohn  <edelsohn@gnu.org>
3897
3898         * config/rs6000/rs6000.c (struct processor_cost): Change
3899         l1_cache_lines to l1_cache_size.  Add l2_cache_size.
3900         (*_cost): Convert l1 cache information to kilobytes.  Add l2 cache
3901         information.
3902         (rios1_costs, rios2_cost): Correct cache line size.
3903         (rs6000_override_options): Set l2-cache-size parameter.
3904
3905 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3906             Diego Novillo  <dnovillo@google.com>
3907
3908         PR 31521
3909         * tree-vrp.c (simplify_div_or_mod_using_ranges): Also simplify
3910         if the range includes 0.
3911
3912 2007-08-03  Ben Elliston  <bje@au.ibm.com>
3913
3914         * config/spu/spu.md (dftsv, dftsv_celledp): Attach the appropriate
3915         mode to unspec expressions to silence a warning from the generator
3916         programs.
3917         
3918 2007-08-02  Steve Ellcey  <sje@cup.hp.com>
3919
3920         * config/ia64/constraints.md ("U"): Make constraint vector only.
3921
3922 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
3923
3924         PR middle-end/25446
3925         * c-objc-common.c (c_cannot_inline_tree_fn): Check for an
3926         always_inline attribute on the function decl.
3927
3928 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
3929
3930         PR middle-end/25445
3931         * varasm.c (default_binds_local_p_1): Consult flag_whole_program
3932         if we are compiling with -fPIC.
3933
3934 2007-08-02  Sandra Loosemore  <sandra@codesourcery.com>
3935             Nigel Stephens  <nigel@mips.com>
3936
3937         * longlong.h [__mips__] (count_leading_zeros, COUNT_LEADING_ZEROS_0):
3938         Define for MIPS32 and MIPS64.
3939
3940 2007-08-02  Nick Clifton  <nickc@redhat.com>
3941
3942         * config/host-hpux.c: Change copyright header to refer to version
3943         3 of the GNU General Public License and to point readers at the
3944         COPYING3 file and the FSF's license web page.
3945         * config/alpha/predicates.md, config/alpha/vms-ld.c,
3946         config/alpha/linux.h, config/alpha/alpha.opt,
3947         config/alpha/linux-elf.h, config/alpha/vms.h, config/alpha/elf.h,
3948         config/alpha/vms-unwind.h, config/alpha/ev4.md,
3949         config/alpha/ev6.md, config/alpha/alpha.c, config/alpha/vms-cc.c,
3950         config/alpha/alpha.h, config/alpha/sync.md,
3951         config/alpha/openbsd.h, config/alpha/alpha.md,
3952         config/alpha/alpha-modes.def, config/alpha/ev5.md,
3953         config/alpha/alpha-protos.h, config/alpha/freebsd.h,
3954         config/alpha/osf5.h, config/alpha/netbsd.h, config/alpha/vms64.h,
3955         config/alpha/constraints.md, config/alpha/osf.h,
3956         config/alpha/xm-vms.h, config/alpha/unicosmk.h, config/linux.h,
3957         config/frv/predicates.md, config/frv/frv.h, config/frv/linux.h,
3958         config/frv/frv.md, config/frv/frv.opt, config/frv/frv-modes.def,
3959         config/frv/frv-asm.h, config/frv/frv-protos.h,
3960         config/frv/frv-abi.h, config/frv/frv.c, config/s390/tpf.h,
3961         config/s390/s390.c, config/s390/predicates.md, config/s390/s390.h,
3962         config/s390/linux.h, config/s390/tpf.md, config/s390/tpf.opt,
3963         config/s390/2064.md, config/s390/2084.md, config/s390/s390.md,
3964         config/s390/s390.opt, config/s390/s390-modes.def,
3965         config/s390/fixdfdi.h, config/s390/constraints.md,
3966         config/s390/s390-protos.h, config/s390/s390x.h, config/elfos.h,
3967         config/dbxcoff.h, config/m32c/predicates.md, config/m32c/cond.md,
3968         config/m32c/m32c.c, config/m32c/minmax.md, config/m32c/blkmov.md,
3969         config/m32c/m32c-pragma.c, config/m32c/m32c.h,
3970         config/m32c/prologue.md, config/m32c/m32c.abi,
3971         config/m32c/muldiv.md, config/m32c/bitops.md, config/m32c/mov.md,
3972         config/m32c/addsub.md, config/m32c/m32c.md, config/m32c/m32c.opt,
3973         config/m32c/t-m32c, config/m32c/m32c-modes.def,
3974         config/m32c/jump.md, config/m32c/shift.md,
3975         config/m32c/m32c-protos.h, config/libgloss.h,
3976         config/spu/spu-protos.h, config/spu/predicates.md,
3977         config/spu/spu-builtins.h, config/spu/spu.c,
3978         config/spu/spu-builtins.def, config/spu/spu-builtins.md,
3979         config/spu/spu.h, config/spu/spu-elf.h, config/spu/constraints.md,
3980         config/spu/spu.md, config/spu/spu-c.c, config/spu/spu.opt,
3981         config/spu/spu-modes.def, config/spu/t-spu-elf, config/interix.h,
3982         config/sparc/hypersparc.md, config/sparc/predicates.md,
3983         config/sparc/linux.h, config/sparc/sp64-elf.h,
3984         config/sparc/supersparc.md, config/sparc/cypress.md,
3985         config/sparc/openbsd1-64.h, config/sparc/openbsd64.h,
3986         config/sparc/niagara.md, config/sparc/sparc.md,
3987         config/sparc/long-double-switch.opt, config/sparc/ultra3.md,
3988         config/sparc/sparc.opt, config/sparc/sync.md,
3989         config/sparc/sp-elf.h, config/sparc/sparc-protos.h,
3990         config/sparc/ultra1_2.md, config/sparc/biarch64.h,
3991         config/sparc/sparc.c, config/sparc/little-endian.opt,
3992         config/sparc/sysv4-only.h, config/sparc/sparc.h,
3993         config/sparc/linux64.h, config/sparc/freebsd.h,
3994         config/sparc/sol2.h, config/sparc/rtemself.h,
3995         config/sparc/netbsd-elf.h, config/sparc/vxworks.h,
3996         config/sparc/sparc-modes.def, config/sparc/sparclet.md,
3997         config/sparc/sysv4.h, config/vx-common.h, config/netbsd-aout.h,
3998         config/flat.h, config/m32r/m32r.md, config/m32r/predicates.md,
3999         config/m32r/little.h, config/m32r/m32r.c, config/m32r/m32r.opt,
4000         config/m32r/linux.h, config/m32r/constraints.md,
4001         config/m32r/m32r.h, config/m32r/m32r-protos.h, config/vxworks.opt,
4002         config/darwin-c.c, config/darwin.opt, config/i386/i386.h,
4003         config/i386/cygming.h, config/i386/linux.h, config/i386/cygwin.h,
4004         config/i386/i386.md, config/i386/netware-crt0.c,
4005         config/i386/sco5.h, config/i386/mmx.md, config/i386/vx-common.h,
4006         config/i386/kaos-i386.h, config/i386/winnt-stubs.c,
4007         config/i386/netbsd64.h, config/i386/djgpp.h, config/i386/gas.h,
4008         config/i386/sol2.h, config/i386/constraints.md,
4009         config/i386/netware-libgcc.c, config/i386/sysv5.h,
4010         config/i386/predicates.md, config/i386/geode.md,
4011         config/i386/x86-64.h, config/i386/kfreebsd-gnu.h,
4012         config/i386/freebsd64.h, config/i386/vxworksae.h,
4013         config/i386/pentium.md, config/i386/lynx.h, config/i386/i386elf.h,
4014         config/i386/rtemself.h, config/i386/netbsd-elf.h,
4015         config/i386/ppro.md, config/i386/k6.md, config/i386/netware.c,
4016         config/i386/netware.h, config/i386/i386-modes.def,
4017         config/i386/sysv4-cpp.h, config/i386/i386-interix.h,
4018         config/i386/cygwin1.c, config/i386/djgpp.opt, config/i386/uwin.h,
4019         config/i386/unix.h, config/i386/ptx4-i.h, config/i386/xm-djgpp.h,
4020         config/i386/att.h, config/i386/winnt.c, config/i386/beos-elf.h,
4021         config/i386/sol2-10.h, config/i386/darwin64.h, config/i386/sse.md,
4022         config/i386/i386.opt, config/i386/bsd.h, config/i386/cygming.opt,
4023         config/i386/xm-mingw32.h, config/i386/linux64.h,
4024         config/i386/openbsdelf.h, config/i386/xm-cygwin.h,
4025         config/i386/sco5.opt, config/i386/darwin.h, config/i386/mingw32.h,
4026         config/i386/winnt-cxx.c, config/i386/i386-interix3.h,
4027         config/i386/nwld.c, config/i386/nwld.h, config/i386/host-cygwin.c,
4028         config/i386/cygwin2.c, config/i386/i386-protos.h,
4029         config/i386/sync.md, config/i386/openbsd.h,
4030         config/i386/host-mingw32.c, config/i386/i386-aout.h,
4031         config/i386/nto.h, config/i386/biarch64.h,
4032         config/i386/i386-coff.h, config/i386/freebsd.h,
4033         config/i386/driver-i386.c, config/i386/knetbsd-gnu.h,
4034         config/i386/host-i386-darwin.c, config/i386/vxworks.h,
4035         config/i386/crtdll.h, config/i386/i386.c, config/i386/sysv4.h,
4036         config/darwin-protos.h, config/linux.opt, config/sol2.c,
4037         config/sol2.h, config/sh/symbian.c, config/sh/sh-protos.h,
4038         config/sh/linux.h, config/sh/elf.h, config/sh/superh.h,
4039         config/sh/sh4.md, config/sh/coff.h, config/sh/newlib.h,
4040         config/sh/embed-elf.h, config/sh/symbian-pre.h, config/sh/rtems.h,
4041         config/sh/kaos-sh.h, config/sh/sh4a.md, config/sh/constraints.md,
4042         config/sh/sh64.h, config/sh/sh.opt, config/sh/symbian-post.h,
4043         config/sh/sh-c.c, config/sh/predicates.md, config/sh/sh.c,
4044         config/sh/sh.h, config/sh/shmedia.md, config/sh/sh-modes.def,
4045         config/sh/little.h, config/sh/sh1.md, config/sh/sh4-300.md,
4046         config/sh/superh64.h, config/sh/rtemself.h,
4047         config/sh/netbsd-elf.h, config/sh/sh.md, config/sh/vxworks.h,
4048         config/usegas.h, config/svr3.h, config/pdp11/pdp11-protos.h,
4049         config/pdp11/2bsd.h, config/pdp11/pdp11.md, config/pdp11/pdp11.c,
4050         config/pdp11/pdp11.opt, config/pdp11/pdp11-modes.def,
4051         config/pdp11/pdp11.h, config/avr/rtems.h, config/avr/avr-protos.h,
4052         config/avr/predicates.md, config/avr/constraints.md,
4053         config/avr/avr.md, config/avr/avr.c, config/avr/avr.opt,
4054         config/avr/avr.h, config/sol2-protos.h, config/dbxelf.h,
4055         config/lynx.opt, config/crx/crx.h, config/crx/crx-protos.h,
4056         config/crx/crx.md, config/crx/crx.c, config/crx/crx.opt,
4057         config/c4x/c4x-c.c, config/c4x/c4x.c, config/c4x/c4x.opt,
4058         config/c4x/c4x-modes.def, config/c4x/rtems.h,
4059         config/c4x/predicates.md, config/c4x/c4x.h,
4060         config/c4x/c4x-protos.h, config/c4x/c4x.md, config/kfreebsd-gnu.h,
4061         config/xtensa/predicates.md, config/xtensa/xtensa.c,
4062         config/xtensa/linux.h, config/xtensa/xtensa.h,
4063         config/xtensa/elf.h, config/xtensa/xtensa.md,
4064         config/xtensa/xtensa.opt, config/xtensa/constraints.md,
4065         config/xtensa/xtensa-protos.h, config/dbx.h,
4066         config/stormy16/predicates.md, config/stormy16/stormy16.md,
4067         config/stormy16/stormy16.c, config/stormy16/stormy16.opt,
4068         config/stormy16/stormy16.h, config/stormy16/stormy16-protos.h,
4069         config/host-solaris.c, config/fr30/fr30.h,
4070         config/fr30/predicates.md, config/fr30/fr30-protos.h,
4071         config/fr30/fr30.md, config/fr30/fr30.c, config/fr30/fr30.opt,
4072         config/vxworksae.h, config/sol2-c.c, config/lynx.h,
4073         config/m68hc11/m68hc11-protos.h, config/m68hc11/predicates.md,
4074         config/m68hc11/m68hc11.md, config/m68hc11/m68hc11.c,
4075         config/m68hc11/m68hc11.opt, config/m68hc11/m68hc11.h,
4076         config/m68hc11/m68hc12.h, config/openbsd-oldgas.h,
4077         config/host-linux.c, config/interix3.h, config/cris/cris.c,
4078         config/cris/predicates.md, config/cris/linux.h,
4079         config/cris/cris.h, config/cris/aout.h, config/cris/cris.md,
4080         config/cris/linux.opt, config/cris/cris.opt, config/cris/elf.opt,
4081         config/cris/aout.opt, config/cris/cris-protos.h,
4082         config/vxworks-dummy.h, config/netbsd.h, config/netbsd-elf.h,
4083         config/iq2000/iq2000.h, config/iq2000/predicates.md,
4084         config/iq2000/iq2000-protos.h, config/iq2000/iq2000.md,
4085         config/iq2000/iq2000.c, config/iq2000/iq2000.opt,
4086         config/host-darwin.c, config/mt/mt.md, config/mt/mt.c,
4087         config/mt/mt.opt, config/mt/t-mt, config/mt/mt.h,
4088         config/mt/mt-protos.h, config/svr4.h, config/host-darwin.h,
4089         config/chorus.h, config/mn10300/mn10300.c,
4090         config/mn10300/mn10300.opt, config/mn10300/predicates.md,
4091         config/mn10300/mn10300.h, config/mn10300/linux.h,
4092         config/mn10300/constraints.md, config/mn10300/mn10300-protos.h,
4093         config/mn10300/mn10300.md, config/ia64/predicates.md,
4094         config/ia64/itanium1.md, config/ia64/unwind-ia64.h,
4095         config/ia64/ia64-c.c, config/ia64/sync.md, config/ia64/ia64.c,
4096         config/ia64/itanium2.md, config/ia64/ia64.h, config/ia64/vect.md,
4097         config/ia64/freebsd.h, config/ia64/ia64.md,
4098         config/ia64/ia64-modes.def, config/ia64/constraints.md,
4099         config/ia64/hpux.h, config/ia64/ia64-protos.h, config/windiss.h,
4100         config/gofast.h, config/rtems.h, config/sol2-10.h,
4101         config/m68k/predicates.md, config/m68k/m68k.md,
4102         config/m68k/linux.h, config/m68k/m68k-modes.def,
4103         config/m68k/print-sysroot-suffix.sh, config/m68k/m68k-protos.h,
4104         config/m68k/coff.h, config/m68k/m68k-none.h, config/m68k/ieee.opt,
4105         config/m68k/openbsd.h, config/m68k/m68k-aout.h,
4106         config/m68k/m68k.opt, config/m68k/m68020-elf.h,
4107         config/m68k/m68kelf.h, config/m68k/m68k-devices.def,
4108         config/m68k/uclinux-oldabi.h, config/m68k/m68k.c,
4109         config/m68k/constraints.md, config/m68k/rtemself.h,
4110         config/m68k/netbsd-elf.h, config/m68k/m68k.h,
4111         config/m68k/uclinux.h, config/rs6000/power4.md,
4112         config/rs6000/host-darwin.c, config/rs6000/6xx.md,
4113         config/rs6000/linux.h, config/rs6000/eabi.h,
4114         config/rs6000/aix41.opt, config/rs6000/xcoff.h,
4115         config/rs6000/secureplt.h, config/rs6000/linuxspe.h,
4116         config/rs6000/eabialtivec.h, config/rs6000/8540.md,
4117         config/rs6000/darwin8.h, config/rs6000/kaos-ppc.h,
4118         config/rs6000/windiss.h, config/rs6000/603.md,
4119         config/rs6000/aix41.h, config/rs6000/cell.md,
4120         config/rs6000/mpc.md, config/rs6000/aix43.h, config/rs6000/beos.h,
4121         config/rs6000/gnu.h, config/rs6000/rtems.h, config/rs6000/aix.opt,
4122         config/rs6000/darwin.md, config/rs6000/darwin64.h,
4123         config/rs6000/default64.h, config/rs6000/7xx.md,
4124         config/rs6000/darwin.opt, config/rs6000/spe.md,
4125         config/rs6000/rs6000.opt, config/rs6000/rs6000-c.c,
4126         config/rs6000/rios2.md, config/rs6000/linuxaltivec.h,
4127         config/rs6000/7450.md, config/rs6000/linux64.h,
4128         config/rs6000/constraints.md, config/rs6000/440.md,
4129         config/rs6000/darwin.h, config/rs6000/host-ppc64-darwin.c,
4130         config/rs6000/rs6000.c, config/rs6000/aix52.h,
4131         config/rs6000/rs6000.h, config/rs6000/power6.md,
4132         config/rs6000/predicates.md, config/rs6000/altivec.md,
4133         config/rs6000/aix64.opt, config/rs6000/rios1.md,
4134         config/rs6000/rs6000-modes.def, config/rs6000/rs64.md,
4135         config/rs6000/eabisim.h, config/rs6000/sysv4le.h,
4136         config/rs6000/darwin7.h, config/rs6000/dfp.md,
4137         config/rs6000/linux64.opt, config/rs6000/sync.md,
4138         config/rs6000/vxworksae.h, config/rs6000/power5.md,
4139         config/rs6000/lynx.h, config/rs6000/biarch64.h,
4140         config/rs6000/rs6000.md, config/rs6000/sysv4.opt,
4141         config/rs6000/eabispe.h, config/rs6000/e500.h,
4142         config/rs6000/freebsd.h, config/rs6000/rs6000-protos.h,
4143         config/rs6000/netbsd.h, config/rs6000/e500-double.h,
4144         config/rs6000/aix.h, config/rs6000/vxworks.h,
4145         config/rs6000/40x.md, config/rs6000/aix51.h,
4146         config/rs6000/sysv4.h, config/arc/arc-protos.h, config/arc/arc.md,
4147         config/arc/arc.c, config/arc/arc.opt, config/arc/arc-modes.def,
4148         config/arc/arc.h, config/mcore/mcore-elf.h,
4149         config/mcore/mcore-protos.h, config/mcore/predicates.md,
4150         config/mcore/mcore.md, config/mcore/mcore.c,
4151         config/mcore/mcore.opt, config/mcore/mcore.h,
4152         config/mcore/mcore-pe.h, config/darwin.c, config/freebsd-nthr.h,
4153         config/score/predicates.md, config/score/score-version.h,
4154         config/score/score-protos.h, config/score/misc.md,
4155         config/score/elf.h, config/score/score.c, config/score/mac.md,
4156         config/score/score7.md, config/score/score.h,
4157         config/score/score-conv.h, config/score/score-mdaux.c,
4158         config/score/score.md, config/score/score.opt,
4159         config/score/score-modes.def, config/score/score-mdaux.h,
4160         config/score/mul-div.S, config/arm/uclinux-elf.h,
4161         config/arm/semi.h, config/arm/ecos-elf.h, config/arm/arm1020e.md,
4162         config/arm/symbian.h, config/arm/linux-elf.h,
4163         config/arm/arm1026ejs.md, config/arm/arm1136jfs.md,
4164         config/arm/elf.h, config/arm/aout.h, config/arm/arm.c,
4165         config/arm/thumb2.md, config/arm/vec-common.md, config/arm/coff.h,
4166         config/arm/strongarm-pe.h, config/arm/arm.h,
4167         config/arm/cortex-a8-neon.md, config/arm/semiaof.h,
4168         config/arm/cortex-a8.md, config/arm/uclinux-eabi.h,
4169         config/arm/arm-modes.def, config/arm/linux-eabi.h,
4170         config/arm/rtems-elf.h, config/arm/neon-schedgen.ml,
4171         config/arm/arm-cores.def, config/arm/arm-protos.h,
4172         config/arm/vfp.md, config/arm/aof.h, config/arm/linux-gas.h,
4173         config/arm/wince-pe.h, config/arm/neon.md,
4174         config/arm/constraints.md, config/arm/neon.ml,
4175         config/arm/xscale-elf.h, config/arm/strongarm-coff.h,
4176         config/arm/arm.opt, config/arm/arm926ejs.md,
4177         config/arm/predicates.md, config/arm/iwmmxt.md,
4178         config/arm/arm_neon.h, config/arm/unknown-elf.h,
4179         config/arm/kaos-arm.h, config/arm/bpabi.h, config/arm/pe.opt,
4180         config/arm/neon-testgen.ml, config/arm/arm.md,
4181         config/arm/xscale-coff.h, config/arm/pe.c,
4182         config/arm/arm-generic.md, config/arm/pe.h,
4183         config/arm/kaos-strongarm.h, config/arm/freebsd.h,
4184         config/arm/neon-docgen.ml, config/arm/netbsd.h, config/arm/fpa.md,
4185         config/arm/strongarm-elf.h, config/arm/cirrus.md,
4186         config/arm/netbsd-elf.h, config/arm/vxworks.h,
4187         config/arm/neon-gen.ml, config/kaos.h, config/darwin-driver.c,
4188         config/pa/predicates.md, config/pa/pa64-hpux.h,
4189         config/pa/pa-hpux.opt, config/pa/som.h, config/pa/pa-hpux1010.opt,
4190         config/pa/pa-hpux1111.opt, config/pa/pa-pro-end.h,
4191         config/pa/elf.h, config/pa/fptr.c, config/pa/pa64-linux.h,
4192         config/pa/pa.md, config/pa/pa.opt, config/pa/pa-hpux.h,
4193         config/pa/pa-hpux10.h, config/pa/pa-hpux11.h,
4194         config/pa/pa-hpux1010.h, config/pa/pa-protos.h,
4195         config/pa/pa-osf.h, config/pa/pa-hpux1111.h, config/pa/pa-64.h,
4196         config/pa/milli64.S, config/pa/pa.c, config/pa/pa-linux.h,
4197         config/pa/pa.h, config/pa/pa32-linux.h, config/pa/pa64-hpux.opt,
4198         config/pa/pa64-regs.h, config/pa/pa-modes.def,
4199         config/pa/constraints.md, config/darwin9.h, config/mips/4100.md,
4200         config/mips/linux.h, config/mips/elfoabi.h, config/mips/elf.h,
4201         config/mips/sdb.h, config/mips/windiss.h, config/mips/rtems.h,
4202         config/mips/3000.md, config/mips/iris5.h, config/mips/5000.md,
4203         config/mips/7000.md, config/mips/9000.md, config/mips/4600.md,
4204         config/mips/linux64.h, config/mips/elforion.h,
4205         config/mips/constraints.md, config/mips/generic.md,
4206         config/mips/predicates.md, config/mips/4300.md,
4207         config/mips/mips-ps-3d.md, config/mips/iris.h, config/mips/24k.md,
4208         config/mips/mips.md, config/mips/mips.opt, config/mips/4k.md,
4209         config/mips/5k.md, config/mips/vr4120-div.S,
4210         config/mips/openbsd.h, config/mips/iris6.h, config/mips/4000.md,
4211         config/mips/mips-protos.h, config/mips/6000.md,
4212         config/mips/mips.c, config/mips/mips.h, config/mips/r3900.h,
4213         config/mips/74k.md, config/mips/netbsd.h, config/mips/vxworks.h,
4214         config/mips/mips-modes.def, config/mips/vr.h,
4215         config/soft-fp/t-softfp, config/openbsd.h, config/ptx4.h,
4216         config/freebsd-spec.h, config/vax/vax.c, config/vax/openbsd.h,
4217         config/vax/vax.h, config/vax/elf.h, config/vax/vax.md,
4218         config/vax/bsd.h, config/vax/vax.opt, config/vax/vax-modes.def,
4219         config/vax/openbsd1.h, config/vax/netbsd.h,
4220         config/vax/vax-protos.h, config/vax/netbsd-elf.h,
4221         config/vax/vaxv.h, config/vax/ultrix.h, config/freebsd.h,
4222         config/h8300/rtems.h, config/h8300/predicates.md,
4223         config/h8300/h8300.c, config/h8300/h8300.h, config/h8300/elf.h,
4224         config/h8300/h8300.md, config/h8300/h8300.opt,
4225         config/h8300/coff.h, config/h8300/h8300-protos.h,
4226         config/v850/v850.md, config/v850/predicates.md,
4227         config/v850/v850-c.c, config/v850/v850.c, config/v850/v850.opt,
4228         config/v850/v850.h, config/v850/v850-protos.h, config/vxworks.c,
4229         config/knetbsd-gnu.h, config/sol2-6.h, config/vxworks.h,
4230         config/mmix/mmix.h, config/mmix/predicates.md,
4231         config/mmix/mmix-protos.h, config/mmix/mmix.md,
4232         config/mmix/mmix.c, config/mmix/mmix.opt,
4233         config/mmix/mmix-modes.def, config/bfin/bfin.opt,
4234         config/bfin/rtems.h, config/bfin/bfin-modes.def,
4235         config/bfin/predicates.md, config/bfin/bfin-protos.h,
4236         config/bfin/bfin.c, config/bfin/bfin.h, config/bfin/bfin.md:
4237         Likewise.
4238
4239 2007-08-02  Richard Sandiford  <richard@codesourcery.com>
4240
4241         * emit-rtl.c (reset_used_decls): Rename to...
4242         (set_used_decls): ...this.  Set the used flag rather than clearing it.
4243         (unshare_all_rtl_again): Update accordingly.  Set flags on argument
4244         DECL_RTLs rather than resetting them.
4245
4246 2007-08-02  Andreas Krebbel  <krebbel1@de.ibm.com>
4247
4248         * config/s390/s390.md ("*xordi3_cconly"): Change xr to xg.
4249
4250 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
4251
4252         * reload.c (find_reloads_address_part):  Pass correct MEMREFLOC
4253         argument to find_reloads_address.
4254
4255 2007-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
4256
4257         PR tree-optimization/32919
4258         * tree-ssa-sccvn.c (visit_phi): Do not visit abnormal PHIs.
4259         * tree-ssa-coalesce.c (ssa_conflicts_dump): New.
4260         (coalesce_ssa_name): Call it.
4261
4262 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
4263             David Ung  <davidu@mips.com>
4264
4265         * config/mips/mips16.S (__mips16_unordsf2, __mips16_floatunsisf): New.
4266         (__mips16_unorddf2, __mips16_floatunsidf): New.
4267         * config/mips/mips.c (mips_init_libfuncs): Add optab entries for
4268         above functions.
4269         * config/mips/t-libgcc-mips16 (LIB1ASMFUNCS): Add new functions.
4270
4271 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
4272
4273         * tree-pretty-print.c (dump_generic_node): Dump OMP_SECTIONS_SWITCH.
4274         Display new operands of OMP_SECTIONS and OMP_CONTINUE.
4275         * tree.h (OMP_SECTIONS_CONTROL): New macro.
4276         (OMP_DIRECTIVE_P): Add OMP_SECTIONS_SWITCH.
4277         * omp-low.c (get_ws_args_for, determine_parallel_type,
4278         expand_omp_for_generic, expand_omp_for_static_nochunk,
4279         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
4280         Work with more precise CFG.
4281         (build_omp_regions_1): Handle OMP_SECTIONS_SWITCH.
4282         (lower_omp_sections): Emit OMP_SECTIONS_SWITCH.  Add arguments to
4283         OMP_CONTINUE.
4284         * tree-gimple.c (is_gimple_stmt): Handle OMP_SECTIONS_SWITCH.
4285         * gimple-low.c (lower_stmt): Ditto.
4286         * tree-inline.c (estimate_num_insns_1): Ditto.
4287         * tree.def (OMP_SECTIONS, OMP_CONTINUE): Added new operands.
4288         (OMP_SECTIONS_SWITCH): New.
4289         * tree-cfgcleanup.c (cleanup_omp_return): New.
4290         (cleanup_tree_cfg_bb): Call cleanup_omp_return.
4291         * tree-cfg.c (make_edges): Create back edges for OMP_CONTINUE
4292         and exit edge for OMP_FOR.  Handle OMP_SECTIONS_SWITCH.
4293         (tree_redirect_edge_and_branch): Handle omp constructs.
4294
4295         * fortran/trans-openmp.c (gfc_trans_omp_sections): Build OMP_SECTIONS
4296         with three arguments.
4297
4298 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
4299
4300         * tree-cfg.c (tree_merge_blocks): Preserve loop exit phi nodes only
4301         in loop closed ssa.
4302
4303 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
4304
4305         * tree-ssa-threadupdate.c (thread_through_all_blocks): Record that
4306         the loop structures may need fixing.
4307         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures):
4308         New functions.
4309         (cleanup_tree_cfg_loop): Removed.
4310         (cleanup_tree_cfg): If loops need fixing, call repair_loop_structures.
4311         * tree-predcom.c (tree_predictive_commoning): Return TODO_cleanup_cfg
4312         instead of running cleanup_tree_cfg_loop.
4313         * cfgloop.h (LOOPS_NEED_FIXUP): New constant.
4314         * tree-flow.h (cleanup_tree_cfg_loop): Declaration removed.
4315         (tree_predictive_commoning): Declaration changed.
4316         * passes.c (execute_function_todo): Do not use cleanup_tree_cfg_loop.
4317
4318 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
4319
4320         * doc/invoke.texi (l1-cache-size): Update documentation.
4321         (l2-cache-size): Document.
4322         * params.h (L2_CACHE_SIZE): New macro.
4323         * tree-ssa-loop-prefetch.c (L1_CACHE_SIZE_BYTES): Reflect
4324         that L1_CACHE_SIZE is in kB now.
4325         (L2_CACHE_SIZE_BYTES): New macro.
4326         (tree_ssa_prefetch_arrays): Show size in kB.
4327         * config/i386/i386.h (struct processor_costs): Add l1_cache_size
4328         and l2_cache_size fields.
4329         * config/i386/driver-i386.c (describe_cache): Detect cache size
4330         in kB.
4331         * config/i386/i386.c (size_cost, i386_cost, i486_cost,pentium_cost,
4332         pentiumpro_cost, geode_cost, k6_cost, athlon_cost, k8_cost,
4333         amdfam10_cost, pentium4_cost, nocona_cost, core2_cost,
4334         generic64_cost, generic32_cost): Add l1_cache_size and l2_cache_size.
4335         (override_options): Set l1-cache-size and l2-cache-size to default
4336         values if not specified otherwise.
4337         * params.def (PARAM_L1_CACHE_SIZE): Change to set in kB.
4338         (PARAM_L2_CACHE_SIZE): New.
4339
4340 2007-08-01  Nigel Stephens  <nigel@mips.com>
4341             David Ung  <davidu@mips.com>
4342             Thiemo Seufer  <ths@mips.com>
4343             Chris Dearman  <chris@mips.com>
4344             Richard Sandiford  <richard@codesourcery.com>
4345
4346         * config.gcc (mips*-sde-elf*): New stanza.
4347         (mipsisa32-*-elf*, mipsisa32el-*-elf*, mipsisa32r2-*-elf*)
4348         (mipsisa32r2el-*-elf*, mipsisa64-*-elf*, mipsisa64el-*-elf*)
4349         (mipsisa64sb1-*-elf*, mipsisa64sb1el-*-elf*, mips-*-elf*)
4350         (mipsel-*-elf*, mips64-*-elf*, mips64el-*-elf*, mips64orion-*-elf*)
4351         (mips64orionel-*-elf*, mips*-*-rtems*, mips-wrs-windiss)
4352         (mipstx39-*-elf*, mipstx39el-*-elf*): Add mips/t-libgcc-mips16
4353         to tmake_file.
4354         * config/mips/sde.h: New file.
4355         * config/mips/t-libgcc-mips16: Likewise.
4356         * config/mips/t-sde: Likewise.
4357         * config/mips/linux.h (TARGET_OS_CPP_BUILTINS): Remove settings
4358         of _ABIN32, _ABI64, _ABIO32, _MIPS_SIM, _MIPS_SZLONG, _MIPS_SZPTR,
4359         _MIPS_FPSET and _MIPS_SZINT.
4360         * config/mips/iris.h (TARGET_OS_CPP_BUILTINS): Likewise.
4361         * config/mips/elfoabi.h (DRIVER_SELF_SPECS): Remove separate
4362         insertion of a default -mips option.  Use MIPS_32BIT_OPTION_SPEC.
4363         * config/mips/t-isa3264 (LIB1ASMSRC, LIB1ASMFUNCS): Delete.
4364         * config/mips/t-r3900 (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
4365         * config/mips/t-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
4366         * config/mips/mips.h (TARGET_CPU_CPP_BUITINS): Define _ABIO32,
4367         _ABIN32, _ABI64, _ABIO64, _MIPS_SIM, _MIPS_SZINT, _MIPS_SZLONG,
4368         _MIPS_SZPTR and _MIPS_FPSET.
4369         (MIPS_ISA_LEVEL_SPEC): Inject the default -mips option if no
4370         architecture is specified.
4371         (MIPS_32BIT_OPTION_SPEC): New macro.
4372
4373 2007-07-31  Dan Hipschman  <dsh@google.com>
4374
4375         * gcc.c (end_going_arg): New function.
4376         (do_spec_2): Use it.
4377         (do_spec_1): Use it.
4378
4379 2007-07-31  H.J. Lu  <hongjiu.lu@intel.com>
4380
4381         * ddg.c (add_cross_iteration_register_deps): Declare bb_info
4382         only if ENABLE_CHECKING is defined.
4383
4384 2007-07-31  Kenneth Zadeck <zadeck@naturalbridge.com>
4385
4386         * df.h (DF_RU, DF_RU_BB_INFO, df_ru_bb_info, df_ru,
4387         df_ru_add_problem, df_ru_get_bb_info): Removed.
4388         (DF_RD, DF_UREC, DF_CHAIN, DF_NOTE): Renumbered.
4389         * df-problems.c (df_ru_problem_data, df_ru_set_bb_info,
4390         df_ru_free_bb_info, df_ru_alloc,
4391         df_ru_bb_local_compute_process_def,
4392         df_ru_bb_local_compute_process_use, df_ru_bb_local_compute,
4393         df_ru_local_compute, df_ru_init_solution, df_ru_confluence_n,
4394         df_ru_transfer_function, df_ru_free, df_ru_start_dump,
4395         df_ru_top_dump, df_ru_bottom_dump, df_problem problem_RU,
4396         df_ru_add_problem): Removed.
4397
4398 2007-07-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4399
4400         PR target/32847
4401         * pa.md (casesi32): Use match_scratch.  Revise insn condition.
4402         (casesi32p, casesi64p): Likewise.
4403         (casesi): Adjust for above.
4404
4405 2007-07-31  Richard Sandiford  <richard@codesourcery.com>
4406
4407         * mode-switching.c (create_pre_exit): Don't search past calls.
4408
4409 2007-07-31  Sandra Loosemore  <sandra@codesourcery.com>
4410
4411         * config/mips/mips.h (ISA_HAS_SYNCI):  Add !TARGET_MIPS16 test.
4412
4413 2007-07-31  Revital Eres  <eres@il.ibm.com>
4414
4415         * ddg.c (add_deps_for_def): Rename to...
4416         (add_cross_iteration_register_deps): This.  Change implementation
4417         to use only reaching def and def-use chains to construct the
4418         inter loop dependencies.
4419         (add_deps_for_use): Remove function.
4420         (build_inter_loop_deps): Call add_cross_iteration_register_deps
4421         function to build the inter loop dependencies.
4422         * modulo-sched.c (sms_schedule): Build only
4423         reaching def and def-use chains for the propose of the ddg
4424         construction.
4425
4426 2007-07-31  Julian Brown  <julian@codesourcery.com>
4427
4428         * config/arm/neon.md (vec_set<mode>_internal, vec_setv2di_internal):
4429         New define_insns. Use correct RTL.
4430         (vec_set<mode>): Write as expander.
4431
4432 2007-07-31  Razya Ladelsky  <razya@il.ibm.com>
4433
4434         * matrix-reorg.c (analyze_matrix_allocation_site): Avoid referring 
4435         to an unallocated space.
4436
4437 2007-07-30  Jan Sjodin  <jan.sjodin@amd.com>
4438
4439         * tree-data-ref.c
4440         (split_constant_offset): Enable split_constant_offset to extract
4441         constants from other statements.
4442         * tree-vect-transform.c
4443         (vect_create_addr_base_for_vector_ref): Generate data_ref_base
4444         to a temp var. Force base_offset to be simple.
4445
4446 2007-07-30  Seongbae Park <seongbae.park@gmail.com>
4447
4448         * df-scan.c (df_scan_verify): Remove artificial limit on
4449         the number of blocks for verification.
4450         * df-problems.c (df_lr_bb_local_compute, df_simulate_find_defs,
4451         df_simulate_defs): Avoid unnecessary insn checking for defs.
4452
4453 2007-07-29  Mark Mitchell  <mark@codesourcery.com>
4454
4455         * config/m68k/lb1sf68.asm (FUNC): New macro.
4456         (__mulsi3): Use it.
4457         (__udivsi3): Likewise.
4458         (__divsi3): Likewise.
4459         (__umodsi3): Likewise.
4460         (__modsi3): Likewise.
4461         (__subdf3): Likewise.
4462         (__adddf3): Likewise.
4463         (__muldf3): Likewise.
4464         (__divdf3): Likewise.
4465         (__negdf2): Likewise.
4466         (__cmpdf2): Likewise.
4467         (__subsf3): Likewise.
4468         (__addsf3): Likewise.
4469         (__mulsf3): Likewise.
4470         (__divsf3): Likewise.
4471         (__negsf2): Likewise.
4472         (__cmpsf2): Likewise.
4473         (__eqdf2): Likewise.
4474         (__nedf2): Likewise.
4475         (__gtdf2): Likewise.
4476         (__gedf2): Likewise.
4477         (__ltdf2): Likewise.
4478         (__ledf2): Likewise.
4479         (__eqsf2): Likewise.
4480         (__nesf2): Likewise.
4481         (__gtsf2): Likewise.
4482         (__gesf2): Likewise.
4483         (__ltsf2): Likewise.
4484         (__lesf2): Likewise.
4485
4486 2007-07-30  Ollie Wild  <aaw@google.com>
4487
4488         * c-ppoutput.c (print_lines_directives_only): New function.
4489         (scan_translation_unit_directives_only): New function.
4490         (preprocess_file): Add call to scan_translation_unit_directives_only.
4491         * c-opts.c (c_common_handle_option): Add OPT_fdirectives_only.
4492         (sanitize_cpp_opts): Add default flag_dump_macros setting for
4493         -fdirectives-only.  Add errors for -fdirectives-only conflict with
4494         -Wunused-macros and -traditional.
4495         (finish_options): Add builtin macro initialization for
4496         -fdirectives-only + -fpreprocessed.
4497         * c.opt (fdirectives-only): New.
4498         * doc/cppopts.texi (fdirectives-only): New.
4499
4500 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4501
4502         * alias.c (record_set, memory_modified_1): Constify.
4503         * bt-load.c (note_btr_set): Likewise.
4504         * caller-save.c (mark_set_regs, add_stored_regs): Likewise.
4505         * combine.c (set_nonzero_bits_and_sign_copies,
4506         expand_field_assignment, record_dead_and_set_regs_1,
4507         use_crosses_set_p, reg_dead_at_p_1, can_combine_p,
4508         likely_spilled_retval_1): Likewise.
4509         * config/frv/frv.c (frv_registers_update_1, frv_io_check_address,
4510         frv_io_handle_set): Likewise.
4511         * config/mips/mips.c (mips_sim_record_set,
4512         vr4130_true_reg_dependence_p_1): Likewise.
4513         * config/mt/mt.c (insn_dependent_p_1): Likewise.
4514         * config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
4515         * config/sh/sh.c (flow_dependent_p_1): Likewise.
4516         * cselib.c (cselib_invalidate_rtx_note_stores): Likewise.
4517         * dce.c (mark_nonreg_stores_1, mark_nonreg_stores_2): Likewise.
4518         * ddg.c (mark_mem_store): Likewise.
4519         * df-problems.c (df_urec_mark_reg_change): Likewise.
4520         * function.c (update_epilogue_consts): Likewise.
4521         * gcse.c (record_set_info, record_last_set_info,
4522         mems_conflict_for_gcse_p, canon_list_insert, reg_set_info,
4523         reg_clear_last_set): Likewise.
4524         * global.c (mark_reg_store, mark_reg_clobber, reg_becomes_live):
4525         Likewise.
4526         * jump.c (reversed_comparison_code_parts): Likewise.
4527         * local-alloc.c (validate_equiv_mem_from_store, no_equiv,
4528         reg_is_set): Likewise.
4529         * loop-iv.c (mark_altered): Likewise.
4530         * mode-switching.c (reg_becomes_live): Likewise.
4531         * optabs.c (no_conflict_move_test): Likewise.
4532         * postreload-gcse.c (record_last_set_info, find_mem_conflicts):
4533         Likewise.
4534         * postreload.c (reload_combine_note_store, move2add_note_store):
4535         Likewise.
4536         * regmove.c (flags_set_1): Likewise.
4537         * regrename.c (note_sets, kill_clobbered_value, kill_set_value):
4538         Likewise.
4539         * reload1.c (mark_not_eliminable, forget_old_reloads_1):
4540         Likewise. 
4541         * resource.c (update_live_status): Likewise.
4542         * rtl.h (set_of, note_stores): Likewise.
4543         * rtlanal.c (set_of_1, parms_set, struct set_of_data, set_of,
4544         note_stores, parms_set): Likewise.
4545         * sched-rgn.c (sets_likely_spilled_1): Likewise.
4546         * stack-ptr-mod.c (notice_stack_pointer_modification_1):
4547         Likewise. 
4548         * var-tracking.c (count_stores, add_stores): Likewise.
4549
4550 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4551
4552         * alias.c (mems_in_disjoint_alias_sets_p,
4553         fixed_scalar_and_varying_struct_p, aliases_everything_p,
4554         nonoverlapping_component_refs_p, nonoverlapping_memrefs_p,
4555         write_dependence_p, mems_in_disjoint_alias_sets_p,
4556         read_dependence, true_dependence, canon_true_dependence,
4557         anti_dependence, output_dependence): Constify.
4558         * combine.c (extended_count): Likewise.
4559         * cse.c (cse_rtx_varies_p, hash_rtx, exp_equiv_p): Likewise.
4560         * cselib.c (get_value_hash, references_value_p,
4561         cselib_reg_set_mode, cselib_rtx_varies_p): Likewise.
4562         * cselib.h (cselib_reg_set_mode, references_value_p): Likewise.
4563         * emit-rtl.c (mem_expr_equal_p, active_insn_p): Likewise.
4564         * function.c (contains, prologue_epilogue_contains,
4565         sibcall_epilogue_contains): Likewise. 
4566         * jump.c (simplejump_p, condjump_p, condjump_in_parallel_p,
4567         pc_set, any_uncondjump_p, any_condjump_p, onlyjump_p,
4568         only_sets_cc0_p, sets_cc0_p, rtx_renumbered_equal_p, true_regnum,
4569         reg_or_subregno): Likewise.
4570         * recog.c (asm_noperands): Likewise.
4571         * reload1.c (function_invariant_p): Likewise.
4572         * rtl.h (mem_expr_equal_p, active_insn_p, rtx_varies_p,
4573         rtx_addr_varies_p, asm_noperands, exp_equiv_p, hash_rtx,
4574         condjump_p, any_condjump_p, any_uncondjump_p, pc_set,
4575         simplejump_p, onlyjump_p, only_sets_cc0_p, sets_cc0_p,
4576         true_regnum, reg_or_subregno, condjump_in_parallel_p,
4577         extended_count, prologue_epilogue_contains,
4578         sibcall_epilogue_contains, function_invariant_p, true_dependence,
4579         canon_true_dependence, read_dependence, anti_dependence,
4580         output_dependence): Likewise.
4581         * rtlanal.c (rtx_varies_p, rtx_addr_varies_p): Likewise.
4582
4583 2007-07-30  Julian Brown  <julian@codesourcery.com>
4584
4585         * config/arm/neon.md (V_ext): New mode attribute.
4586         (neon_vget_lane<mode>): Replace with define_expand.
4587         (neon_vget_lane<mode>_sext_internal)
4588         (neon_vget_lane<mode>_zext_internal): New define_insns for double
4589         and quad precision vectors.
4590         (neon_vget_lanedi): Add bounds check. Remove dead comment.
4591         * config/arm/neon.ml (get_lane): Make 32-bit get-lane intrinsics
4592         have typeless 32-bit result.
4593
4594 2007-07-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4595
4596         PR tree-opt/32527
4597         * tree-affine.h (aff_tree): The type of rest is sizetype for types
4598         of pointers.
4599         * tree-affine.c (aff_combination_scale): If type is a pointer type,
4600         use sizetype for rest.
4601         (aff_combination_add_elt): Likewise. Don't specialize pointer types.
4602         (aff_combination_convert): Don't convert rest for pointer types.
4603
4604 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
4605
4606         * Makefile.in (tree-ssa-alias.o): Add alloc-pool.h
4607
4608         * tree-ssa-alias.c: Add alloc-pool.h.
4609         (init_alias_info): Free alias_bitmap_obstack.
4610         (delete_alias_info): Call delete_mem_ref_stats.
4611         (get_mem_sym_stats_for): Use alloc_pool.
4612         (init_mem_ref_stats): Do not delete mem_ref_stats here.
4613         (delete_mem_sym_stats): Removed.
4614         
4615 2007-07-29  Sebastian Pop  <sebpop@gmail.com>
4616
4617         * tree-data-ref.c (add_multivariate_self_dist): Parametric access
4618         functions cannot be represented as classical distance vectors.
4619
4620 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4621
4622         * attribs.c (hash_attr, eq_attr, init_attributes): Constify.
4623         * builtins.c (validate_arg, builtin_mathfn_code,
4624         validate_arglist): Likewise.
4625         * calls.c (call_expr_flags): Likewise.
4626         * combine.c (reg_nonzero_bits_for_combine,
4627         reg_num_sign_bit_copies_for_combine, get_last_value,
4628         reg_truncated_to_mode): Likewise.
4629         * emit-rtl.c (subreg_lowpart_p): Likewise.
4630         * expr.c (highest_pow2_factor_for_target,
4631         categorize_ctor_elements_1, categorize_ctor_elements,
4632         count_type_elements, contains_packed_reference,
4633         highest_pow2_factor, highest_pow2_factor_for_target): Likewise.
4634         * fold-const.c (may_negate_without_overflow_p, int_const_binop,
4635         fold_convertible_p, operand_equal_p, tree_swap_operands_p,
4636         native_encode_int, native_encode_real, native_encode_complex,
4637         native_encode_vector, native_encode_expr, native_interpret_int,
4638         native_interpret_real, native_interpret_complex,
4639         native_interpret_vector, native_interpret_expr): Likewise.
4640         * function.c (use_register_for_decl): Likewise.
4641         * gimplify.c (get_name): Likewise.
4642         * langhooks-def.h (lhd_return_null_const_tree): New.
4643         (LANG_HOOKS_GET_CALLEE_FNDECL): Use it.
4644         * langhooks.c (lhd_return_null_const_tree): New.
4645         * langhooks.h (lang_get_callee_fndecl): Constify.
4646         * output.h (constructor_static_from_elts_p): Likewise.
4647         * rtl-factoring.c (gen_symbol_ref_rtx_for_label): Likewise.
4648         * rtl.h (nonzero_bits, num_sign_bit_copies, truncated_to_mode,
4649         subreg_lowpart_p, noop_move_p, struct rtl_hooks): Likewise.
4650         * rtlanal.c (cached_nonzero_bits, nonzero_bits1,
4651         cached_num_sign_bit_copies, num_sign_bit_copies1, noop_move_p,
4652         nonzero_bits, num_sign_bit_copies, truncated_to_mode): Likewise.
4653         * rtlhooks-def.h (reg_nonzero_bits_general,
4654         reg_num_sign_bit_copies_general, reg_truncated_to_mode_general):
4655         Likewise. 
4656         * rtlhooks.c (reg_num_sign_bit_copies_general,
4657         reg_nonzero_bits_general, reg_truncated_to_mode_general):
4658         Likewise. 
4659         * stmt.c (warn_if_unused_value, is_body_block): Likewise.
4660         * stor-layout.c (mode_for_size_tree): Likewise.
4661         * tree-ssa-loop-im.c (memref_eq): Likewise.
4662         * tree-ssa-loop-ivopts.c (tree_int_cst_sign_bit): Likewise.
4663         * tree.c (contains_placeholder_p, type_list_equal,
4664         simple_cst_equal, get_callee_fndecl, operand_equal_for_phi_arg_p):
4665         Likewise. 
4666         * tree.h (tree_int_cst_sign_bit, may_negate_without_overflow_p,
4667         mode_for_size_tree, categorize_ctor_elements, count_type_elements,
4668         contains_placeholder_p, contains_packed_reference,
4669         get_callee_fndecl, operand_equal_for_phi_arg_p,
4670         warn_if_unused_value, is_body_block, native_encode_expr,
4671         native_interpret_expr, fold_convertible_p, operand_equal_p,
4672         int_const_binop, tree_swap_operands_p, builtin_mathfn_code,
4673         validate_arglist, simple_cst_equal, type_list_equal,
4674         use_register_for_decl, call_expr_flags, get_name,
4675         highest_pow2_factor): Likewise.
4676         (const_call_expr_arg_iterator_d,
4677         init_const_call_expr_arg_iterator, next_const_call_expr_arg,
4678         first_const_call_expr_arg, more_const_call_expr_args_p,
4679         FOR_EACH_CONST_CALL_EXPR_ARG): New.
4680         * varasm.c (constructor_static_from_elts_p): Constify.
4681
4682 2007-07-28  Kazu Hirata  <kazu@codesourcery.com>
4683
4684         * cfglayout.c, config/arm/arm.c, config/arm/cortex-a8.md,
4685         config/arm/neon-schedgen.ml, config/arm/neon.ml,
4686         config/arm/vec-common.md, config/ia64/div.md, cselib.c,
4687         df-core.c, df.h, dominance.c, optabs.c, opts.c, reg-stack.c,
4688         regstat.c, target.h, tree-ssa-live.c, tree-ssa-pre.c,
4689         tree-vect-transform.c, tree.def: Fix comment typos.  Follow
4690         spelling conventions.
4691         * doc/invoke.texi: Follow spelling conventions.
4692
4693 2007-07-29  Vladimir Yanovsky  <yanov@il.ibm.com>
4694             Revital Eres  <eres@il.ibm.com>
4695
4696         * modulo-sched.c (sms_schedule): Avoid loops which includes
4697         auto-increment instructions.
4698
4699 2007-07-28  Richard Guenther  <rguenther@suse.de>
4700
4701         PR middle-end/32920
4702         * fold-const.c (fold_cond_expr_with_comparison): Convert
4703         operand zero of MIN/MAX_EXPR to correct type.
4704
4705 2007-07-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4706
4707         * calls.c (special_function_p, setjmp_call_p, alloca_call_p,
4708         flags_from_decl_or_type): Constify.
4709         * gcc.c (do_spec_1): Likewise.
4710         * print-tree.c (dump_addr, print_node_brief): Likewise.
4711         * tree-cfg.c (stmt_starts_bb_p, is_ctrl_stmt, computed_goto_p,
4712         simple_goto_p, tree_can_make_abnormal_goto, stmt_starts_bb_p,
4713         tree_purge_all_dead_eh_edges): Likewise.
4714         * tree-flow.h (is_ctrl_stmt, computed_goto_p, simple_goto_p,
4715         tree_can_make_abnormal_goto, tree_purge_all_dead_eh_edges):
4716         Likewise. 
4717         * tree.c (expr_location, expr_has_location, expr_locus,
4718         expr_filename, expr_lineno, get_inner_array_type,
4719         fields_compatible_p): Likewise.
4720         * tree.h (get_inner_array_type, fields_compatible_p,
4721         expr_location, expr_has_location, expr_locus, expr_filename,
4722         expr_lineno, dump_addr, print_node_brief, flags_from_decl_or_type,
4723         setjmp_call_p, alloca_call_p): Likewise.
4724
4725 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
4726
4727         * timevar.def: Add TV_CALL_CLOBBER, TV_FLOW_SENSITIVE,
4728         TV_FLOW_INSENSITIVE.
4729
4730         * tree-ssa-alias.c (compute_call_clobbered): Push/pop
4731         TV_CALL_CLOBBER.
4732         (compute_flow_sensitive_aliasing): Ditto for TV_FLOW_SENSITIVE.
4733         (compute_flow_insensitive_aliasing): Ditto for
4734         TV_FLOW_INSENSITIVE.    
4735
4736 2007-07-27  Jan Hubicka  <jh@suse.cz>
4737
4738         * config/i386/i386.c (register_move_cost): Remove accidentally
4739         comitted #if 0 block.
4740
4741         * attribs.c: Include hashtab.h
4742         (attribute_hash): New.
4743         (substring): New structure.
4744         (extract_attribute_substring, substring_hash, hash_attr, eq_attr):
4745         New function.
4746         (init_attributes): Initialize attribute hash.
4747         (decl_attributes): Use attribute hash.
4748         * Makefile.in (attribs.c): Depend on hashtab.h.
4749
4750 2007-07-27  Steve Ellcey  <sje@cup.hp.com>
4751
4752         * config/ia64/vect.md (vec_initv2si): Remove bad BIG_ENDIAN test.
4753
4754 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
4755
4756         * doc/invoke.texi (mdsp, mdspr2): Document the __mips_dsp,
4757         __mips_dspr2 and __mips_dsp_rev macros.
4758         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dsp_rev.
4759
4760 2007-07-27  Douglas Gregor  <doug.gregor@gmail.com>
4761         
4762        * c-common.h (enum rid): Add RID_DECLTYPE, update RID_LAST_CXX0X.
4763
4764 2007-07-26  Kenneth Zadeck <zadeck@naturalbridge.com>
4765
4766         PR middle-end/32749
4767         
4768         * df-problems.c (df_create_unused_note): Removed do_not_gen parm
4769         and the updating of the live and do_not_gen sets.
4770         (df_note_bb_compute): Added updating of live and do_not_gen sets
4771         for regular defs so that the case of clobber inside conditional
4772         call is processed correctly.
4773         
4774 2007-07-27  Zdenek Dvorak  <dvorakz@suse.cz>
4775
4776         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Generate the
4777         operands with compatible type.
4778
4779 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
4780
4781         * expr.h (store_bit_field): Don't return a value.
4782         * expmed.c (check_predicate_volatile_ok): New function.
4783         (store_bit_field_1): New function, extracted from store_bit_field.
4784         Take a fallback_p argument and return true if the operation succeeded.
4785         Only use store_fixed_bit_field if fallback_p.  Don't recompute
4786         mode_for_extraction; use op_mode instead.  Try forcing memories
4787         into registers if the insv expander fails.
4788         (store_bit_field): Use store_bit_field_1 with fallback_p true.
4789         Don't return a value.
4790         (convert_extracted_bit_field): New function, extracted from
4791         store_bit_field.
4792         (extract_bit_field_1): Likewise.  Take a fallback_p argument
4793         and return NULL if the operation succeeded.  Only use
4794         extract_fixed_bit_field if fallback_p.  Only calculate one
4795         extraction mode.  Combine code for extv and extzv.  Try forcing
4796         memories into registers if the ext(z)v expander fails.
4797         (extract_bit_field): Use extract_bit_field_1 with fallback_p true.
4798
4799 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
4800
4801         * df.h (df_mw_hardreg): Turn df_ref_type and df_ref_flags
4802         into bitfields.
4803         (df_ref): Likewise.  Put regno with other integer fields.
4804
4805 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
4806
4807         * df.h (df_mw_hardreg): Remove "loc" field.
4808         * df-scan.c (df_ref_record): Don't set it.  Remove redundant
4809         local variable.
4810         * df-problems.c (df_whole_mw_reg_unused_p): New function,
4811         split out from df_set_unused_notes_for_mw.  Return false for
4812         partial references.  Assert that mw_reg is a REG when returning true.
4813         (df_set_unused_notes_for_mw): Use it.  Use mw_reg instead of *loc.
4814         (df_whole_mw_reg_dead_p): New function, split out from
4815         df_set_dead_notes_for_mw.  Return false for partial references.
4816         Assert that mw_reg is a REG when returning true.
4817         (df_set_dead_notes_for_mw): Use it.  Use mw_reg instead of *loc.
4818         Remove redundant bitmap check.
4819
4820 2007-07-26  H.J. Lu  <hongjiu.lu@intel.com>
4821
4822         * config/ia64/t-ia64 ($(T)crtbegin.o): Removed.
4823         ($(T)crtend.o): Likwise.
4824         ($(T)crtbeginS.o): Likwise.
4825         ($(T)crtendS.o): Likwise.
4826         ($(T)crtfastmath.o): Likwise.
4827
4828 2007-07-26  Zdenek Dvorak  <dvorakz@suse.cz>
4829
4830         * dominance.c (dom_computed, n_bbs_in_dom_tree): Removed.
4831         * function.h (dom_computed, n_bbs_in_dom_tree): New macros.
4832         * basic-block.h (struct control_flow_graph): Added x_dom_computed
4833         and x_n_bbs_in_dom_tree fields.
4834
4835 2007-07-26  Steve Ellcey  <sje@cup.hp.com>
4836
4837         PR tree-optimization/32087
4838         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop):
4839         Do not call scale_bbs_frequencies_int with prob of zero.
4840
4841 2007-07-26  Julian Brown  <julian@codesourcery.com>
4842
4843         * config/arm/arm-protos.h (neon_lane_bounds, neon_const_bounds)
4844         (neon_element_bits): Add prototypes.
4845         * config/arm/arm.c (bounds_check, neon_lane_bounds)
4846         (neon_const_bounds, neon_element_bits): New functions.
4847         * config/arm/neon.md (neon_vget_lane<mode>, neon_vget_lanedi)
4848         (neon_vget_lanev2di, neon_vset_lane<mode>, neon_vset_lanedi)
4849         (neon_vset_lanev2di, neon_vdup_lane<mode>, neon_vdup_lanedi)
4850         (neon_vdup_lanev2di, neon_vcvt_n<mode>, neon_vmul_lane<mode>)
4851         (neon_vmull_lane<mode>, neon_vqdmull_lane<mode>)
4852         (neon_vqdmulh_lane<mode>, neon_vmla_lane<mode>)
4853         (neon_vmlal_lane<mode>, neon_vqdmlal_lane<mode>)
4854         (neon_vmls_lane<mode>, neon_vmlsl_lane<mode>)
4855         (neon_vqdmlsl_lane<mode>, neon_vext<mode>, neon_vshr_n<mode>)
4856         (neon_vshrn_n<mode>, neon_vqshrn_n<mode>, neon_vqshrun_n<mode>)
4857         (neon_vshl_n<mode>, neon_vshl_n<mode>, neon_vqshl_n<mode>)
4858         (neon_vqshlu_n<mode>, neon_vshll_n<mode>, neon_vsra_n<mode>)
4859         (neon_vsri_n<mode>, neon_vsli_n<mode>): Add bounds checks.
4860
4861 2007-07-26  Nathan Froyd  <froydnj@codesourcery.com>
4862
4863         * config/vxworks.h (VXWORKS_LINK_SPEC): Fix typo.
4864         (HAVE_AS_GNU_ATTRIBUTE): Undefine.
4865
4866 2007-07-26  Mark Shinwell  <shinwell@codesourcery.com>
4867             Julian Brown  <julian@codesourcery.com>
4868
4869         * config/arm/arm.c (arm_mac_accumulator_is_mul_result): New.
4870         * config/arm/arm-protos.h (arm_mac_accumulator_is_mul_result): New.
4871         * config/arm/cortex-a8.md: New.
4872         * config/arm/cortex-a8-neon.md: New.
4873         * config/arm/neon-schedgen.ml: New.
4874         * config/arm/neon.md (vqh_mnem): New.
4875         (neon_type): New.
4876         (Is_float_mode): New.
4877         (Scalar_mul_8_16): New.
4878         (Is_d_reg): New.
4879         (V_mode_nunits): New.
4880         (All instruction patterns): Annotate with neon_type attribute
4881         values.
4882         * config/arm/arm.md: Include cortex-a8.md.
4883         (insn): Add smmla, umaal, smlald, smlsld, clz, mrs, msr and xtab
4884         values.
4885         Annotate instruction patterns accordingly.
4886         (generic_sched): Do not use generic scheduling for Cortex-A8.
4887         (generic_vfp): Do not use generic VFP scheduling for Cortex-A8.
4888
4889 2007-07-26  Daniel Jacobowitz  <dan@codesourcery.com>
4890
4891         * fold-const.c (fold_read_from_constant_string): Use
4892         build_int_cst_type.
4893         * tree-ssa-ccp.c (fold_const_aggregate_ref): Likewise.
4894
4895 2007-07-26  Nick Clifton  <nickc@redhat.com>
4896
4897         * tree-ssa-operands.h: Change copyright header to refer to version
4898         3 of the GNU General Public License and to point readers at the
4899         COPYING3 file and the FSF's license web page.
4900         * tree-vrp.c, regrename.c, attribs.c, loop-unswitch.c,
4901         sched-ebb.c, fwprop.c, tree-loop-linear.c, dwarf2asm.c,
4902         tree-into-ssa.c, dwarf2asm.h, tree-ssa-loop-im.c, sbitmap.c,
4903         targhooks.c, tree-dump.c, tree-complex.c, sbitmap.h, targhooks.h,
4904         tree-dump.h, regstat.c, see.c, machmode.h, hooks.c, cgraphbuild.c,
4905         hooks.h, genrecog.c, tree-ssa-threadupdate.c, gen-protos.c,
4906         flags.h, rtlhooks.c, gencheck.c, tree-ssa-loop-niter.c,
4907         opts-common.c, dbgcnt.def, tree-pretty-print.c, tracer.c,
4908         gengtype.c, mkconfig.sh, gengtype.h, tree-ssa-loop-unswitch.c,
4909         cgraph.c, c-lex.c, cgraph.h, libfuncs.h, cfgloopmanip.c,
4910         rtl-error.c, optabs.c, postreload-gcse.c, tree-ssa-loop-manip.c,
4911         optabs.h, genmddeps.c, defaults.h, postreload.c, value-prof.c,
4912         tree-ssa-loop-ch.c, tree-tailcall.c, gengenrtl.c, value-prof.h,
4913         genopinit.c, tree.c, tree.h, reload.c, tree-pass.h, ipa-cp.c,
4914         reload.h, bitmap.c, bitmap.h, tree-scalar-evolution.c,
4915         c-config-lang.in, tree-scalar-evolution.h, target.h, cppspec.c,
4916         rtlanal.c, ddg.c, lambda-mat.c, mips-tdump.c, ddg.h,
4917         tree-phinodes.c, mips-tfile.c, pointer-set.c, pointer-set.h,
4918         diagnostic.c, final.c, diagnostic.h, builtins.c, genoutput.c,
4919         gcc.c, lists.c, tree-ssa-alias-warnings.c, gcc.h, cfghooks.c,
4920         input.h, gensupport.c, fold-const.c, cfghooks.h, insn-notes.def,
4921         gensupport.h, builtin-attrs.def, sync-builtins.def, params.c,
4922         cfgloopanal.c, params.h, graphds.c, omp-low.c, tree-ssa-dse.c,
4923         graphds.h, gcov.c, cfg.c, genextract.c, ipa-reference.c,
4924         genautomata.c, tree-ssa-uncprop.c, auto-inc-dec.c, toplev.c,
4925         tree-gimple.c, ipa-reference.h, vmsdbgout.c, errors.c, toplev.h,
4926         reorg.c, tree-gimple.h, tree-chrec.c, pretty-print.c, errors.h,
4927         real.c, tree-chrec.h, pretty-print.h, debug.c, real.h, genemit.c,
4928         omega.c, c-cppbuiltin.c, genmultilib, debug.h, omega.h,
4929         tree-ssa-sccvn.c, genconfig.c, tree-ssa-sccvn.h, cgraphunit.c,
4930         regs.h, df-scan.c, vec.c, hosthooks-def.h, vec.h,
4931         tree-ssa-copyrename.c, scan.c, builtin-types.def, tree-ssa-ccp.c,
4932         scan.h, mode-classes.def, haifa-sched.c, dominance.c, dojump.c,
4933         double-int.c, gcov-io.c, dbxout.c, builtins.def, double-int.h,
4934         dbxout.h, tree-ssa-loop-ivopts.c, df-core.c, mode-switching.c,
4935         gengtype-lex.l, tree-nomudflap.c, modulo-sched.c, c-objc-common.c,
4936         hosthooks.h, c-objc-common.h, caller-save.c, graph.c,
4937         ipa-pure-const.c, graph.h, c-format.c, cse.c, fix-header.c,
4938         c-format.h, web.c, tree-stdarg.c, genpeep.c, tree-stdarg.h,
4939         tree-ssa-math-opts.c, xcoffout.c, tree-ssa-dom.c, tree-nrv.c,
4940         xcoffout.h, tree-ssa-propagate.c, ipa-utils.c,
4941         tree-ssa-propagate.h, tree-ssa-alias.c, loop-init.c, ipa-utils.h,
4942         gimple-low.c, rtl.def, c-tree.h, tree-ssa-sink.c, ipa-inline.c,
4943         mkmap-symver.awk, machmode.def, c-pch.c, cfganal.c, global.c,
4944         alloc-pool.c, c-semantics.c, alloc-pool.h, jump.c, ifcvt.c,
4945         dwarf2out.c, expr.c, cfgbuild.c, tree-browser.c, dwarf2out.h,
4946         expr.h, longlong.h, opts.c, gcov-iov.c, opts.h, dwarf2.h,
4947         genattrtab.c, genconditions.c, genattr.c, optc-gen.awk,
4948         timevar.def, tree-ssa-loop-ivcanon.c, hard-reg-set.h, predict.c,
4949         tree-ssa-loop.c, host-default.c, predict.h, recog.c, dbgcnt.c,
4950         recog.h, dbgcnt.h, c-aux-info.c, tree-ssa-address.c, timevar.c,
4951         dse.c, lcm.c, tree-ssa-ifcombine.c, timevar.h, dse.h,
4952         matrix-reorg.c, tree-vn.c, treestruct.def, fp-test.c, c-decl.c,
4953         tree-eh.c, c-errors.c, c-pretty-print.c, regmove.c,
4954         lambda-trans.c, c-pretty-print.h, et-forest.c, et-forest.h,
4955         ebitmap.c, configure.ac, local-alloc.c, function.c, langhooks.c,
4956         ebitmap.h, cppdefault.c, tree-vectorizer.c, function.h,
4957         langhooks.h, print-rtl.c, cppdefault.h, df.h, tree-vectorizer.h,
4958         sdbout.c, stor-layout.c, sdbout.h, rtlhooks-def.h, read-rtl.c,
4959         gcse.c, ipa-type-escape.c, vmsdbg.h, alias.c, gengtype-parse.c,
4960         ipa-type-escape.h, domwalk.c, alias.h, tree-if-conv.c, profile.c,
4961         init-regs.c, domwalk.h, ipa.c, gccbug.in, tree-data-ref.c,
4962         loop-unroll.c, tree-data-ref.h, tree-flow-inline.h, tree-affine.c,
4963         mkmap-flat.awk, tree-affine.h, tree-vect-analyze.c, c.opt, ggc.h,
4964         opt-gather.awk, c-typeck.c, gimplify.c, coretypes.h, exec-tool.in,
4965         insn-addr.h, tree-ssa-phiopt.c, c-pragma.c, c-pragma.h, calls.c,
4966         tree-ssa-coalesce.c, genmodes.c, loop-doloop.c, predict.def,
4967         dwarf.h, tree.def, rtl-factoring.c, lower-subreg.c, expmed.c,
4968         bt-load.c, ggc-common.c, genflags.c, tree-dfa.c, except.c,
4969         coverage.c, except.h, emit-rtl.c, cfgexpand.c, coverage.h,
4970         stringpool.c, cselib.c, emit-rtl.h, tree-cfgcleanup.c, c-opts.c,
4971         cselib.h, cfgcleanup.c, simplify-rtx.c, tree-ssa-pre.c, explow.c,
4972         tree-ssa-live.c, tree-sra.c, tree-ssa-live.h, tree-predcom.c,
4973         loop-invariant.c, genpreds.c, protoize.c, opth-gen.awk, c-dump.c,
4974         lambda.h, loop-iv.c, tree-mudflap.c, ipa-prop.c, print-tree.c,
4975         tree-mudflap.h, tree-ssa-copy.c, ipa-prop.h, cfglayout.c,
4976         tree-ssa-forwprop.c, c-convert.c, cfglayout.h, common.opt,
4977         ggc-zone.c, ggc-page.c, c-omp.c, tree-ssa-dce.c, gencodes.c,
4978         varasm.c, tree-vect-patterns.c, libada-mk.in, tree-ssa-ter.c,
4979         sched-deps.c, tree-nested.c, c-ppoutput.c, tree-ssa.c,
4980         target-def.h, tree-ssa-loop-prefetch.c, lambda-code.c,
4981         omp-builtins.def, rtl.c, regclass.c, stab.def, intl.c, rtl.h,
4982         intl.h, tree-inline.c, conditions.h, tree-inline.h, integrate.c,
4983         sched-int.h, tree-iterator.c, integrate.h, tree-iterator.h,
4984         genchecksum.c, tree-optimize.c, output.h, tree-vect-transform.c,
4985         tree-object-size.c, combine.c, tree-outof-ssa.c, addresses.h,
4986         bb-reorder.c, stack-ptr-mod.c, resource.c, var-tracking.c,
4987         cfgloop.c, system.h, resource.h, ggc-none.c, tree-profile.c,
4988         cfgloop.h, c-gimplify.c, c-common.c, opt-functions.awk,
4989         tree-vect-generic.c, tree-flow.h, df-problems.c, scan-decls.c,
4990         c-common.h, config.gcc, reg-stack.c, tlink.c, main.c, stub-objc.c,
4991         fixproto, config.host, Makefile.in, gccspec.c, sched-rgn.c,
4992         vecprim.h, basic-block.h, tree-ssa-structalias.c,
4993         tree-ssa-structalias.h, c-common.def, sched-vis.c, tree-cfg.c,
4994         passes.c, genconstants.c, c-incpath.c, c-incpath.h,
4995         struct-equiv.c, c-parser.c, tree-ssa-reassoc.c, varray.c, sreal.c,
4996         varray.h, dfp.c, sreal.h, combine-stack-adj.c, dfp.h,
4997         reg-notes.def, cfgrtl.c, config.build, varpool.c, gengtype-yacc.y,
4998         stmt.c, dce.c, tree-browser.def, prefix.c, statistics.h,
4999         params.def, dce.h, c-lang.c, gcov-dump.c, prefix.h,
5000         tree-ssanames.c, collect2.c, collect2.h, tree-ssa-threadedge.c,
5001         convert.c, convert.h, langhooks-def.h, reload1.c,
5002         tree-ssa-operands.c: Likewise.
5003
5004 2007-07-26  Jan Hubicka  <jh@suse.cz>
5005
5006         * tree-ssa-live.c: Include debug.h and flags.h.
5007         (mark_scope_block_unused): New function.
5008         (remove_unused_scope_block_p): New function.
5009         (remove_unused_locals): Remove unused blocks too.
5010
5011 2007-07-25  Ian Lance Taylor  <iant@google.com>
5012
5013         * combine.c (combine_max_regno): Remove.  Remove all uses.
5014         (struct reg_stat_struct): Rename from struct reg_stat.
5015         (reg_stat_type): Define, and declare VECs.
5016         (reg_stat): Change from pointer to VEC.  Change all uses.
5017         (combine_split_insns): New static function.
5018         (try_combine, find_split_point): Call it instead of split_insns.
5019
5020 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
5021
5022         * cfghooks.c (split_block): Fix the information about loop latch.
5023
5024 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
5025
5026         * cfgloopmanip.c (fix_loop_structure): Call force_single_succ_latches.
5027
5028 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
5029
5030         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
5031         Scan the new edge for loop exit info.
5032
5033 2007-07-25  Andreas Tobler  <a.tobler@schweiz.org>
5034
5035         * config/darwin.c: Include debug.h.
5036
5037 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
5038
5039         PR target/32218
5040         * tree-vect-patterns.c (vect_pattern_recog_1): Check for valid type.
5041
5042 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
5043
5044         * config/ia64/ia64.h (HARD_REGNO_NREGS): Handle RFmode.
5045         (HARD_REGNO_MODE_OK): Ditto.
5046         (MODES_TIEABLE_P): Ditto.
5047         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
5048         (CLASS_MAX_NREGS): Ditto.
5049         * config/ia64/ia64.c (ia64_print_operand_address): Add R format.
5050         * config/ia64/ia64.md (divsf3_internal_thr): Removed.
5051         (divdf3_internal_thr): Removed.
5052         * config/ia64/div.md: New file.
5053         * config/ia64/constraints.md: Add H constraint.
5054
5055 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5056
5057         * sbitmap.c (sbitmap_verify_popcount, sbitmap_alloc_with_popcount,
5058         sbitmap_copy, sbitmap_copy_n, sbitmap_equal, sbitmap_empty_p,
5059         sbitmap_union_of_diff_cg, sbitmap_union_of_diff, sbitmap_not,
5060         sbitmap_difference, sbitmap_any_common_bits, sbitmap_a_and_b_cg,
5061         sbitmap_a_and_b, sbitmap_a_xor_b_cg, sbitmap_a_xor_b,
5062         sbitmap_a_or_b_cg, sbitmap_a_or_b, sbitmap_a_subset_b_p,
5063         sbitmap_a_or_b_and_c_cg, sbitmap_a_or_b_and_c,
5064         sbitmap_a_and_b_or_c_cg, sbitmap_a_and_b_or_c,
5065         sbitmap_first_set_bit, sbitmap_last_set_bit, dump_sbitmap,
5066         dump_sbitmap_file, debug_sbitmap, popcount_table,
5067         sbitmap_popcount): Constify.
5068         * sbitmap.h (const_sbitmap, const_sbitmap_ptr): New.
5069         (sbitmap_iterator, sbitmap_iter_init, dump_sbitmap,
5070         dump_sbitmap_file, sbitmap_copy, sbitmap_copy_n, sbitmap_equal,
5071         sbitmap_empty_p, sbitmap_union_of_diff, sbitmap_union_of_diff_cg,
5072         sbitmap_difference, sbitmap_not, sbitmap_a_or_b_and_c,
5073         sbitmap_a_or_b_and_c_cg, sbitmap_a_and_b_or_c,
5074         sbitmap_a_and_b_or_c_cg, sbitmap_any_common_bits, sbitmap_a_and_b,
5075         sbitmap_a_and_b_cg, sbitmap_a_or_b, sbitmap_a_or_b_cg,
5076         sbitmap_a_xor_b, sbitmap_a_xor_b_cg, sbitmap_a_subset_b_p,
5077         sbitmap_first_set_bit, sbitmap_last_set_bit, debug_sbitmap,
5078         sbitmap_popcount, sbitmap_verify_popcount): Constify.
5079
5080 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5081
5082         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_element_zerop,
5083         bitmap_copy, bitmap_clear_bit, popcount_table, bitmap_count_bits,
5084         bitmap_first_set_bit, bitmap_and, bitmap_and_into,
5085         bitmap_elt_copy, bitmap_and_compl, bitmap_and_compl_into,
5086         bitmap_compl_and_into, bitmap_elt_ior, bitmap_ior,
5087         bitmap_ior_into, bitmap_xor, bitmap_xor_into, bitmap_equal_p,
5088         bitmap_intersect_p, bitmap_intersect_compl_p,
5089         bitmap_ior_and_compl, bitmap_ior_and_compl_into,
5090         debug_bitmap_file, debug_bitmap, bitmap_print, bitmap_hash):
5091         Constify.
5092         * bitmap.h (bitmap_copy, bitmap_equal_p, bitmap_intersect_p,
5093         bitmap_intersect_compl_p, bitmap_count_bits, bitmap_and,
5094         bitmap_and_into, bitmap_and_compl, bitmap_and_compl_into,
5095         bitmap_compl_and_into, bitmap_ior, bitmap_ior_into, bitmap_xor,
5096         bitmap_xor_into, bitmap_ior_and_compl, bitmap_ior_and_compl_into,
5097         debug_bitmap, debug_bitmap_file, bitmap_print,
5098         bitmap_first_set_bit, bitmap_hash, bmp_iter_set_init,
5099         bmp_iter_and_init, bmp_iter_and_compl_init): Likewise.
5100
5101 2007-07-25  Daniel Berlin  <dberlin@dberlin.org>
5102
5103         * config/darwin.c (darwin_override_options): Additional fix for
5104         debug info formats that don't support var tracking.
5105
5106 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5107
5108         * cselib.c (entry_and_rtx_equal_p): Constify.
5109         * gengtype.c (output_mangled_typename, write_types, write_local):
5110         Likewise.
5111         * gengtype.h (const_type_p): New.
5112         * see.c (eq_descriptor_extension, hash_descriptor_extension):
5113         Constify.
5114         * tlink.c (scan_linker_output): De-constify.
5115         * tree-ssa-loop-im.c (memref_eq): Constify.
5116         * tree-ssa-structalias.c (const_shared_bitmap_info_t): New.
5117         (shared_bitmap_hash, shared_bitmap_eq): Constify.
5118
5119 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5120
5121         * c-common.c (fname_as_string, c_type_hash): Constify.
5122         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
5123         * cgraph.c (edge_hash, edge_eq): Likewise.
5124         * dwarf2out.c (decl_die_table_eq, decl_loc_table_eq): Likewise.
5125         * emit-rtl.c (mem_attrs_htab_eq, reg_attrs_htab_hash,
5126         reg_attrs_htab_eq): Likewise.
5127         * except.c (t2r_eq, t2r_hash, ttypes_filter_eq, ehl_hash, ehl_eq):
5128         Likewise.
5129         * genautomata.c (const_reserv_sets_t, const_unit_decl_t,
5130         const_decl_t, const_state_t, const_automata_list_el_t): New.
5131         (first_out_arc, DECL_UNIT, DECL_BYPASS, DECL_AUTOMATON, DECL_EXCL,
5132         DECL_PRESENCE, DECL_ABSENCE, DECL_RESERV, DECL_INSN_RESERV,
5133         automaton_decl_hash, automaton_decl_eq_p, insn_decl_hash,
5134         insn_decl_eq_p, decl_hash, decl_eq_p, alt_state_cmp,
5135         reserv_sets_cmp, reserv_sets_eq, state_hash, state_eq_p,
5136         automata_list_hash, automata_list_eq_p, compare_states_for_equiv,
5137         compare_max_occ_cycle_nums, out_state_arcs_num,
5138         compare_transition_els_num, units_cmp, state_reservs_cmp):
5139         Constify.
5140         * genmodes.c (cmp_modes): Likewise.
5141         * ggc-common.c (saving_htab_hash, saving_htab_eq): Likewise.
5142         * gimplify.c (compare_case_labels): Likewise.
5143         * ipa-type-escape.c (get_name_of_type, type_brand_s): Likewise.
5144         * loop-unroll.c (si_info_hash, ve_info_hash): Likewise.
5145         * matrix-reorg.c (mtt_info_hash): Likewise.
5146         * postreload-gcse.c (hash_expr_for_htab, expr_equiv_p): Likewise.
5147         * rtl-factoring.c (const_p_hash_bucket, const_p_hash_elem): New.
5148         (htab_hash_bucket, htab_hash_elem): Constify.
5149         * tree-browser.c (TB_parent_eq): Likewise.
5150         * tree-scalar-evolution.c (hash_scev_info): Likewise.
5151         * tree-ssa-alias.c (sort_tags_by_id): Likewise.
5152         * tree-ssa-coalesce.c (const_coalesce_pair_p): New.
5153         (coalesce_pair_map_hash, coalesce_pair_map_eq, compare_pairs):
5154         Constify.
5155         * tree-ssa-dom.c (avail_expr_hash, avail_expr_eq): Likewise.
5156         * tree-ssa-pre.c (const_expr_pred_trans_t): New.
5157         (expr_pred_trans_hash, expr_pred_trans_eq): Constify.
5158         * tree-ssa-sccvn.c (const_vn_binary_op_t, const_vn_unary_op_t,
5159         const_vn_phi_t, const_vn_reference_op_t, const_vn_reference_t):
5160         New.
5161         (vn_reference_op_eq, vn_reference_hash, vn_reference_eq,
5162         vn_unary_op_hash, vn_unary_op_eq, vn_binary_op_hash,
5163         vn_binary_op_eq, vn_phi_hash, vn_phi_eq): Constify.
5164         * tree-ssa-threadupdate.c (redirection_data_hash,
5165         redirection_data_eq): Likewise. 
5166         * tree-ssa-uncprop.c (equiv_hash, equiv_eq): Likewise.
5167         * tree-ssa.c (var_ann_eq): Likewise.
5168         * tree-vrp.c (compare_case_labels): Likewise.
5169         * tree.c (int_cst_hash_hash, int_cst_hash_eq,
5170         tree_map_base_marked_p, type_hash_marked_p, tree_check_failed,
5171         tree_not_check_failed, tree_class_check_failed,
5172         tree_range_check_failed, tree_not_class_check_failed,
5173         omp_clause_check_failed, omp_clause_range_check_failed,
5174         tree_contains_struct_check_failed, tree_operand_check_failed):
5175         Likewise. 
5176         * tree.h (tree_contains_struct_check_failed, tree_check_failed,
5177         tree_not_check_failed, tree_class_check_failed,
5178         tree_range_check_failed, tree_not_class_check_failed,
5179         tree_operand_check_failed, omp_clause_operand_check_failed,
5180         tree_operand_length): Likewise. 
5181         * var-tracking.c (const_variable): New.
5182         (variable_htab_hash, variable_htab_eq): Constify.
5183         * varasm.c (const_desc_hash): Likewise.
5184
5185 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5186
5187         * expr.c (handled_component_p): Constify.
5188         * fold-const.c (fit_double_type): Likewise.
5189         * real.h (real_value_from_int_cst): Likewise.
5190         * tree-flow-inline.h (gimple_in_ssa_p,
5191         gimple_aliases_computed_p, gimple_addressable_vars,
5192         gimple_call_clobbered_vars, gimple_referenced_vars,
5193         gimple_global_var, gimple_nonlocal_all, gimple_var_anns,
5194         end_htab_p, end_referenced_vars_p, var_ann, function_ann,
5195         may_aliases, end_readonly_imm_use_p, has_zero_uses,
5196         has_single_use, single_imm_use, num_imm_uses, is_exec_stmt,
5197         is_label_stmt, is_global_var, phi_ssa_name_p,
5198         factoring_name_p, is_call_clobbered, tree_common_ann,
5199         op_iter_done, end_imm_use_stmt_p, end_imm_use_on_stmt_p,
5200         unmodifiable_var_p, array_ref_contains_indirect_ref,
5201         ref_contains_array_ref, lookup_subvars_for_var,
5202         var_can_have_subvars, overlap_subvar, gimple_ssa_operands,
5203         gimple_mem_ref_stats): Likewise.
5204         * tree-flow.h (tree_common_ann, var_ann, function_ann,
5205         may_aliases, is_exec_stmt, is_label_stmt,
5206         ref_contains_array_ref, array_ref_contains_indirect_ref,
5207         var_can_have_subvars, overlap_subvar, is_call_clobbered,
5208         unmodifiable_var_p): Likewise.
5209         * tree-gimple.c (is_gimple_min_invariant): Likewise.
5210         * tree-gimple.h (is_gimple_min_invariant): Likewise. 
5211         * tree.c (type_hash_list, attribute_hash_list, tree_size,
5212         cst_and_fits_in_hwi, real_value_from_int_cst,
5213         build_real_from_int_cst, integer_zerop, integer_onep,
5214         integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2,
5215         tree_floor_log2, real_zerop, real_onep, real_twop,
5216         real_minus_onep, really_constant_p, purpose_member, chain_member,
5217         list_length, fields_length, int_size_in_bytes, bit_position,
5218         int_bit_position, byte_position, int_byte_position, expr_align,
5219         array_type_nelts, tree_node_structure,
5220         type_contains_placeholder_1, iterative_hash_pointer,
5221         is_attribute_with_length_p, is_attribute_p, check_qualified_type,
5222         tree_map_base_eq, type_hash_list, type_hash_eq,
5223         attribute_hash_list, type_num_arguments, tree_int_cst_equal,
5224         tree_int_cst_lt, tree_int_cst_compare, host_integerp,
5225         tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
5226         simple_cst_list_equal, compare_tree_int, iterative_hash_expr,
5227         int_fits_type_p, get_containing_scope, decl_function_context,
5228         decl_type_context, omp_clause_operand_check_failed,
5229         initializer_zerop, int_cst_value, num_ending_zeros): Likewise.
5230         * tree.h (omp_clause_operand_check_failed, tree_size,
5231         build_real_from_int_cst, array_type_nelts, purpose_member,
5232         tree_int_cst_equal, tree_int_cst_lt, tree_int_cst_compare,
5233         host_integerp, tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
5234         is_attribute_p, check_qualified_type, expr_align,
5235         int_size_in_bytes, bit_position, int_bit_position, byte_position,
5236         int_byte_position, list_length, fields_length, initializer_zerop,
5237         integer_zerop, integer_onep, integer_all_onesp, integer_pow2p,
5238         integer_nonzerop, cst_and_fits_in_hwi, num_ending_zeros,
5239         tree_node_structure, handled_component_p, get_containing_scope,
5240         decl_function_context, decl_type_context, real_zerop,
5241         type_num_arguments, fit_double_type, really_constant_p,
5242         int_fits_type_p, tree_log2, tree_floor_log2, iterative_hash_expr,
5243         compare_tree_int, chain_member, simple_cst_list_equal, real_onep,
5244         real_twop, real_minus_onep, int_cst_value): Likewise.
5245
5246 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5247
5248         * cfglayout.c (insn_scope, insn_line): Constify.
5249         * emit-rtl.c (const_int_htab_hash, const_int_htab_eq,
5250         const_double_htab_hash, const_double_htab_eq,
5251         mem_attrs_htab_hash): Likewise.
5252         * loop-iv.c (biv_eq): Likewise.
5253         * print-rtl.c (print_rtx, print_decl_name, print_mem_expr,
5254         print_inline_rtx, debug_rtx, debug_rtx_list, debug_rtx_range,
5255         debug_rtx_find, print_rtl, print_rtl_single, print_simple_rtl):
5256         Likewise. 
5257         * rtl-error.c (location_for_asm, diagnostic_for_asm,
5258         error_for_asm, warning_for_asm, _fatal_insn,
5259         _fatal_insn_not_found): Likewise. 
5260         * rtl.c (rtx_size, shared_const_p, shallow_copy_rtx_stat,
5261         rtx_equal_p, rtl_check_failed_bounds, rtl_check_failed_type1,
5262         rtl_check_failed_type2, rtl_check_failed_code1,
5263         rtl_check_failed_code2, rtl_check_failed_code_mode,
5264         rtvec_check_failed_bounds, rtl_check_failed_flag): Likewise.
5265         * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
5266         rtl_check_failed_type2, rtl_check_failed_code1,
5267         rtl_check_failed_code2, rtl_check_failed_code_mode,
5268         rtvec_check_failed_bounds, rtl_check_failed_flag, LABEL_KIND,
5269         SET_LABEL_KIND, rhs_regno, subreg_lsb, subreg_regno, subreg_nregs,
5270         shared_const_p, rtx_size, shallow_copy_rtx_stat, rtx_equal_p,
5271         get_pool_mode, insn_line, insn_file, simplify_replace_rtx,
5272         mode_signbit_p, rtx_addr_can_trap_p, nonzero_address_p,
5273         rtx_unstable_p, get_integer_term, get_related_value,
5274         offset_within_block_p, reg_mentioned_p, count_occurrences,
5275         reg_referenced_p, reg_used_between_p, no_labels_between_p,
5276         single_set_2, multiple_sets, set_noop_p, refers_to_regno_p,
5277         reg_overlap_mentioned_p, dead_or_set_p, dead_or_set_regno_p,
5278         find_reg_note, find_regno_note, find_reg_equal_equiv_note,
5279         find_constant_src, find_reg_fusage, find_regno_fusage,
5280         pure_call_p, remove_note, side_effects_p, volatile_refs_p,
5281         volatile_insn_p, may_trap_p, may_trap_after_code_motion_p,
5282         may_trap_or_fault_p, inequality_comparisons_p, tablejump_p,
5283         computed_jump_p, auto_inc_p, in_expr_list_p,
5284         remove_node_from_expr_list, loc_mentioned_in_p,
5285         label_is_jump_target_p, reversed_comparison_code_parts,
5286         debug_rtx, debug_rtx_list, debug_rtx_range, debug_rtx_find,
5287         print_mem_expr, print_rtl, print_simple_rtl, print_rtl_single,
5288         print_inline_rtx): Likewise.
5289         * rtlanal.c (covers_regno_p, covers_regno_no_parallel_p,
5290         computed_jump_p_1, nonzero_bits1, rtx_unstable_p,
5291         rtx_addr_can_trap_p_1, rtx_addr_can_trap_p, nonzero_address_p,
5292         get_integer_term, get_related_value, offset_within_block_p,
5293         count_occurrences, reg_mentioned_p, no_labels_between_p,
5294         reg_used_between_p, reg_referenced_p, single_set_2,
5295         multiple_sets, set_noop_p, refers_to_regno_p,
5296         reg_overlap_mentioned_p, dead_or_set_p,
5297         covers_regno_no_parallel_p, covers_regno_p,
5298         dead_or_set_regno_p, find_reg_note, find_regno_note,
5299         find_reg_equal_equiv_note, find_constant_src, find_reg_fusage,
5300         find_regno_fusage, pure_call_p, remove_note, in_expr_list_p,
5301         remove_node_from_expr_list, volatile_insn_p, volatile_refs_p,
5302         side_effects_p, may_trap_p_1, may_trap_p,
5303         may_trap_after_code_motion_p, may_trap_or_fault_p,
5304         inequality_comparisons_p, tablejump_p, computed_jump_p_1,
5305         computed_jump_p, auto_inc_p, loc_mentioned_in_p, subreg_lsb,
5306         subreg_regno, subreg_nregs, label_is_jump_target_p): Likewise.
5307         * simplify-rtx.c (neg_const_int, plus_minus_operand_p,
5308         mode_signbit_p, simplify_replace_rtx, plus_minus_operand_p):
5309         Likewise. 
5310         * toplev.h (_fatal_insn_not_found, _fatal_insn, error_for_asm,
5311         warning_for_asm): Likewise.
5312         * tree.h (print_rtl): Likewise.
5313         * varasm.c (get_pool_mode): Likewise.
5314
5315 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5316
5317         * c-lex.c (c_lex_with_flags, lex_string): Constify.
5318         * c-ppoutput.c (print_line, pp_dir_change): Likewise.
5319         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
5320         * cfg.c (bb_copy_original_hash, bb_copy_original_eq): Likewise.
5321         * cfgloop.c (loop_exit_hash, loop_exit_eq): Likewise.
5322         * ddg.c (compare_sccs): Likewise.
5323         * df-scan.c (df_ref_compare, df_mw_compare): Likewise.
5324         * dfp.c (decimal_real_from_string, decimal_to_decnumber,
5325         decimal_to_binary, decimal_do_compare, decimal_real_to_decimal,
5326         decimal_do_fix_trunc, decimal_real_to_integer,
5327         decimal_real_to_integer2, decimal_real_maxval): Likewise.
5328         * dse.c (const_group_info_t): New.
5329         (invariant_group_base_eq, invariant_group_base_hash): Constify.
5330         * dwarf2out.c (const_dw_die_ref): New.
5331         (decl_die_table_hash, decl_die_table_eq, file_info_cmp): Constify.
5332         * tree-browser.c (TB_parent_eq): Likewise.
5333         * unwind-dw2-fde.c (__register_frame_info_bases,
5334         __deregister_frame_info_bases, fde_unencoded_compare, fde_split,
5335         add_fdes, linear_search_fdes, binary_search_unencoded_fdes):
5336         Likewise.
5337         * unwind-dw2-fde.h (get_cie, next_fde): Likewise.
5338         * unwind-dw2.c (uw_frame_state_for): Likewise.
5339         * value-prof.c (histogram_hash, histogram_eq): Likewise.
5340         * value-prof.h (const_histogram_value): New.
5341
5342 2007-07-25  Richard Sandiford  <richard@codesourcery.com>
5343
5344         * config/mips/mips.c (machine_function): Add
5345         initialized_mips16_gp_pseudo_p.
5346         (mips16_gp_pseudo_reg): Do not emit the initialization of
5347         mips16_gp_pseudo_rtx when being called from the gimple cost-
5348         calculation routines; emit it on the first use outside those
5349         routines.
5350
5351 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5352
5353         * coretypes.h (const_bitmap, const_rtx, const_rtvec, const_tree):
5354         New.
5355         
5356         * rtl.h (RTL_CHECK1, RTL_CHECK2, RTL_CHECKC1, RTL_CHECKC2,
5357         RTVEC_ELT, XWINT, XCWINT, XCMWINT, XCNMPRV, BLOCK_SYMBOL_CHECK,
5358         RTL_FLAG_CHECK1, RTL_FLAG_CHECK2, RTL_FLAG_CHECK3,
5359         RTL_FLAG_CHECK4, RTL_FLAG_CHECK5, RTL_FLAG_CHECK6,
5360         RTL_FLAG_CHECK7, RTL_FLAG_CHECK8, LABEL_KIND, SET_LABEL_KIND):
5361         Preserve const-ness of parameters through use of __typeof(),
5362         also constify and tidy.
5363         
5364         * tree.h (TREE_CHECK, TREE_NOT_CHECK, TREE_CHECK2,
5365         TREE_NOT_CHECK2, TREE_CHECK3, TREE_NOT_CHECK3, TREE_CHECK4,
5366         NON_TREE_CHECK4, TREE_CHECK5, TREE_NOT_CHECK5,
5367         CONTAINS_STRUCT_CHECK, TREE_CLASS_CHECK, TREE_RANGE_CHECK,
5368         OMP_CLAUSE_SUBCODE_CHECK, OMP_CLAUSE_RANGE_CHECK, EXPR_CHECK,
5369         GIMPLE_STMT_CHECK, NON_TYPE_CHECK, TREE_VEC_ELT_CHECK,
5370         PHI_NODE_ELT_CHECK, OMP_CLAUSE_ELT_CHECK, TREE_OPERAND_CHECK,
5371         TREE_OPERAND_CHECK_CODE, GIMPLE_STMT_OPERAND_CHECK,
5372         TREE_RTL_OPERAND_CHECK, TREE_CHAIN, TREE_TYPE): Likewise.
5373
5374 2007-07-25  Julian Brown  <julian@codesourcery.com>
5375             Mark Shinwell  <shinwell@codesourcery.com>
5376
5377         * config/alpha/alpha.c (alpha_mangle_fundamental_type): Rename to...
5378         (alpha_mangle_type): This.
5379         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
5380         (TARGET_MANGLE_TYPE): Define this instead.
5381         * config/arm/arm-protos.h (arm_mangle_type): Add prototype.
5382         * config/arm/arm.c (TARGET_MANGLE_TYPE): Define target hook.
5383         (arm_init_neon_builtins): Fix comment.
5384         (arm_mangle_map_entry): New.
5385         (arm_mangle_map): New.
5386         (arm_mangle_type): New.
5387         * config/i386/i386.c (ix86_mangle_fundamental_type): Rename to...
5388         (ix86_mangle_type): This. Use TYPE_MAIN_VARIANT and restrict
5389         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
5390         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
5391         (TARGET_MANGLE_TYPE): Define this instead.
5392         * config/ia64/ia64.c (ia64_mangle_fundamental_type): Rename to...
5393         (ia64_mangle_type): This. Use TYPE_MAIN_VARIANT  and restrict
5394         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
5395         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
5396         (TARGET_MANGLE_TYPE): Define this instead.
5397         * config/rs6000/rs6000.c (rs6000_mangle_fundamental_type): Rename
5398         to...
5399         (rs6000_mangle_type): This. Use TYPE_MAIN_VARIANT.
5400         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
5401         (TARGET_MANGLE_TYPE): Define this instead.
5402         * config/s390/s390.c (s390_mangle_fundamental_type): Rename to...
5403         (s390_mangle_type): This.
5404         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
5405         (TARGET_MANGLE_TYPE): Define this instead.
5406         * config/sparc/sparc.c (sparc_mangle_fundamental_type): Rename to...
5407         (sparc_mangle_type): This.
5408         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
5409         (TARGET_MANGLE_TYPE): Define this instead.
5410         * cp/mangle.c (write_type): Call mangle_type target hook on all
5411         types before mangling.  Use original type, not main variant, as
5412         argument.
5413         * target-def.h (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename hook to...
5414         (TARGET_MANGLE_TYPE): This.
5415         * target.h (gcc_target): Rename mangle_fundamental_type to
5416         mangle_type.
5417         * doc/tm.texi (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename section to...
5418         (TARGET_MANGLE_TYPE): This. Note slightly different semantics.
5419
5420 2007-07-25  Julian Brown  <julian@codesourcery.com>
5421             Paul Brook  <paul@codesourcery.com>
5422             Joseph Myers  <joseph@codesourcery.com>
5423             Mark Shinwell  <shinwell@codesourcery.com>
5424
5425         * Makefile.in (TEXI_GCC_FILES): Add arm-neon-intrinsics.texi.
5426         * config.gcc (arm*-*-*): Add arm_neon.h to extra headers.
5427         (with_fpu): Allow --with-fpu=neon.
5428         * config/arm/aof.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
5429         * config/arm/aout.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
5430         * config/arm/arm-modes.def (EI, OI, CI, XI): New modes.
5431         * config/arm/arm-protos.h (neon_immediate_valid_for_move)
5432         (neon_immediate_valid_for_logic, neon_output_logic_immediate)
5433         (neon_pairwise_reduce, neon_expand_vector_init, neon_reinterpret)
5434         (neon_emit_pair_result_insn, neon_disambiguate_copy)
5435         (neon_vector_mem_operand, neon_struct_mem_operand, output_move_quad)
5436         (output_move_neon): Add prototypes.
5437         * config/arm/arm.c (FL_NEON): New flag for NEON processor capability.
5438         (all_fpus): Add FPUTYPE_NEON.
5439         (fp_model_for_fpu): Add NEON field.
5440         (arm_return_in_memory): Return vectors <= 16 bytes in ARM registers.
5441         (arm_arg_partial_bytes): Allow NEON vectors to be passed partially
5442         in registers.
5443         (arm_legitimate_address_p): Don't support fancy addressing for NEON
5444         structure moves.
5445         (thumb2_legitimate_address_p): Likewise.
5446         (neon_valid_immediate): Recognize and prepare constants suitable for
5447         NEON instructions.
5448         (neon_immediate_valid_for_move): New function. Recognize and prepare
5449         immediates for NEON move instructions.
5450         (neon_immediate_valid_for_logic): New function. Recognize and
5451         prepare immediates for NEON logic instructions.
5452         (neon_output_logic_immediate): New function. Create asm string
5453         suitable for outputting immediate logic instructions.
5454         (neon_pairwise_reduce): New function. Implement reduction using
5455         pairwise operations.
5456         (neon_expand_vector_init): New function. Expand a (possibly
5457         non-constant) vector initialization.
5458         (neon_vector_mem_operand): New function. Memory operands supported
5459         for quad-word loads/stores to/from ARM or NEON registers. Don't
5460         allow base+offset addressing for core regs.
5461         (neon_struct_mem_operand): New function. Valid mems for NEON
5462         structure moves.
5463         (coproc_secondary_reload_class): Enable NEON registers to be loaded
5464         from neon_vector_mem_operand addresses without a secondary register.
5465         (add_minipool_forward_ref): Handle >8-byte minipool entries.
5466         (add_minipool_backward_ref): Likewise.
5467         (dump_minipool): Likewise.
5468         (push_minipool_fix): Likewise.
5469         (output_move_quad): New function. Output quad-word moves, loads and
5470         stores using ARM registers.
5471         (output_move_vfp): Add support for vectors in VFP (NEON) D
5472         registers.
5473         (output_move_neon): Output a NEON load/store to/from a quadword
5474         register.
5475         (arm_print_operand): Implement new codes:
5476         - 'c' for unadorned integers (without a # sign).
5477         - 'J', 'K' for reg+2/reg+3, reg+3/reg+2 in little/big-endian
5478         mode.
5479         - 'e', 'f' for the low and high D parts of a NEON Q register.
5480         - 'q' outputs a NEON Q register.
5481         - 'h' outputs ranges of D registers for VLDM/VSTM etc.
5482         - 'T' prints NEON opcode features from a coded bitmask.
5483         - 'F' is similar to T, but signed/unsigned codes both print as
5484         'i'.
5485         - 't' is similar to T, but 'u' is printed instead of 'p'.
5486         - 'O' prints 'r' if NEON instruction should perform rounding (as
5487         specified by bitmask), else prints nothing.
5488         - '#' is a punctuation character to stop operand numbers from
5489         running together with following digits in the assembler
5490         strings for instructions (when using mode attributes).
5491         (arm_assemble_integer): Handle extra NEON vector modes. Permute
5492         constant vectors in big-endian mode, where necessary.
5493         (arm_hard_regno_mode_ok): Allow vectors in VFP/NEON registers.
5494         Handle EI, OI, CI, XI modes.
5495         (ashlv4hi3, ashlv2si3, lshrv4hi3, lshrv2si3, ashrv4hi3)
5496         (ashrv2si3): Rename IWMMXT2_BUILTINs to...
5497         (ashlv4hi3_iwmmxt, ashlv2si3_iwmmxt, lshrv4hi3_iwmmxt)
5498         (lshrv2si3_iwmmxt, ashrv4hi3_iwmmxt, ashrv2si3_iwmmxt): New names.
5499         (neon_builtin_type_bits): Add enumeration, one bit for each vector
5500         type.
5501         (v8qi_UP, v4hi_UP, v2si_UP, v2sf_UP, di_UP, v16qi_UP, v8hi_UP)
5502         (v4si_UP, v4sf_UP, v2di_UP, ti_UP, ei_UP, oi_UP, UP): Define macros
5503         to turn v8qi, etc. into bits defined above.
5504         (neon_itype): New enumeration. Classifications of NEON builtins.
5505         (neon_builtin_datum): Define struct. Contains information about
5506         a single builtin (with multiple modes).
5507         (CF): Define helper macro for...
5508         (VAR1...VAR10): Define builtins with a type, name and 1-10 different
5509         modes.
5510         (neon_builtin_data): New array. Define information about builtins
5511         for use during initialization/expansion.
5512         (arm_init_neon_builtins): New function.
5513         (arm_init_builtins): Call arm_init_neon_builtins if TARGET_NEON is
5514         true.
5515         (neon_builtin_compare): New function.
5516         (locate_neon_builtin_icode): New function. Find an insn code for a
5517         builtin given a function code for that builtin. Also return type of
5518         builtin (NEON_BINOP, NEON_UNOP etc.).
5519         (builtin_arg): New enumeration. Types of arguments for builtins.
5520         (arm_expand_neon_args): New function. Expand a generic NEON builtin.
5521         Takes a variable argument list of builtin_arg types, terminated by
5522         NEON_ARG_STOP.
5523         (arm_expand_neon_builtin): New function. Expand a NEON builtin.
5524         (neon_reinterpret): New function. Expand NEON reinterpret intrinsic.
5525         (neon_emit_pair_result_insn): New function. Support returning pairs
5526         of vectors via a pointer.
5527         (neon_disambiguate_copy): New function. Set up operands for a
5528         multi-word copy such that registers do not get clobbered.
5529         (arm_expand_builtin): Call arm_expand_neon_builtin if fcode >=
5530         ARM_BUILTIN_NEON_BASE.
5531         (arm_file_start): Set float-abi attribute for NEON.
5532         (arm_vector_mode_supported_p): Enable NEON vector modes.
5533         (arm_mangle_map_entry): New.
5534         (arm_mangle_map): New.
5535         (arm_mangle_vector_type): New.
5536         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_NEON__
5537         when appropriate.
5538         (TARGET_NEON): New macro. Target supports NEON.
5539         (fputype): Add FPUTYPE_NEON.
5540         (UNITS_PER_SIMD_WORD): Define. Allow quad-word registers to be used
5541         for vectorization based on command-line arg.
5542         (NEON_REGNO_OK_FOR_NREGS): Define.
5543         (VALID_NEON_DREG_MODE, VALID_NEON_QREG_MODE)
5544         (VALID_NEON_STRUCT_MODE): Define.
5545         (PRINT_OPERAND_PUNCT_VALID_P): '#' is valid punctuation.
5546         (arm_builtins): Add ARM_BUILTIN_NEON_BASE.
5547         * config/arm/arm.md (VUNSPEC_POOL_16): Insert constant for unspec.
5548         (consttable_16): Add pattern for outputting 16-byte minipool
5549         entries.
5550         (movv2si, movv4hi, movv8qi): Remove blank expanders (redefined in
5551         vec-common.md).
5552         (vec-common.md, neon.md): Include md files.
5553         * config/arm/arm.opt (mvectorize-with-neon-quad): Add option.
5554         * config/arm/constraints.md (constraint "Dn", "Dl", "DL"): Define.
5555         (memory_constraint "Ut", "Un", "Us"): Define.
5556         * config/arm/iwmmxt.md (VMMX, VSHFT): New mode macros.
5557         (MMX_char): New mode attribute.
5558         (addv8qi3, addv4hi3, addv2si3): Remove. Replace with...
5559         (*add<mode>3_iwmmxt): New insn pattern.
5560         (subv8qi3, subv4hi3, subv2si3): Remove. Replace with...
5561         (*sub<mode>3_iwmmxt): New insn pattern.
5562         (mulv4hi3): Rename to...
5563         (*mulv4hi3_iwmmxt): This.
5564         (smaxv8qi3, smaxv4hi3, smaxv2si3, umaxv8qi3, umaxv4hi3)
5565         (umaxv2si3, sminv8qi3, sminv4hi3, sminv2si3, uminv8qi3)
5566         (uminv4hi3, uminv2si3): Remove. Replace with...
5567         (*smax<mode>3_iwmmxt, *umax<mode>3_iwmmxt, *smin<mode>3_iwmmxt)
5568         (*umin<mode>3_iwmmxt): These.
5569         (ashrv4hi3, ashrv2si3, ashrdi3_iwmmxt): Replace with...
5570         (ashr<mode>3_iwmmxt): This new pattern.
5571         (lshrv4hi3, lshrv2si3, lshrdi3_iwmmxt): Replace with...
5572         (lshr<mode>3_iwmmxt): This new pattern.
5573         (ashlv4hi3, ashlv2si3, ashldi3_iwmmxt): Replace with...
5574         (ashl<mode>3_iwmmxt): This new pattern.
5575         * config/arm/neon-docgen.ml: New file. Generate documentation for
5576         intrinsics.
5577         * config/arm/neon-gen.ml: New file. Generate arm_neon.h header.
5578         * config/arm/arm_neon.h: New (autogenerated).
5579         * config/arm/neon-testgen.ml: New file. Generate NEON tests
5580         automatically.
5581         * config/arm/neon.md: New file. Define NEON instructions.
5582         * config/arm/neon.ml: New file. Abstract description of NEON
5583         instructions, used to generate arm_neon.h header, documentation and
5584         tests.
5585         * config/arm/t-arm (MD_INCLUDES): Add vec-common.md, neon.md.
5586         * vec-common.md: New file. Shared parts for iWMMXt and NEON vector
5587         support.
5588         * doc/extend.texi (ARM Built-in Functions): Rename and remove
5589         extraneous comma.
5590         (ARM NEON Intrinsics): New subsection.
5591         * doc/arm-neon-intrinsics.texi: New (autogenerated).
5592
5593 2007-07-25  Danny Smith   <dannysmith@users.sourceforge.net>
5594
5595         * config/i386/i386-protos.h (i386_pe_asm_file_end): Remove
5596         prototype.
5597
5598 2007-07-24  Jan Hubicka  <jh@suse.cz>
5599
5600         * regclass.c (move_table): New type.
5601         (move_cost, may_move_in_cost, may_move_out_cost): Use it.
5602         (init_move_cost): Break out from ...
5603         (init_reg_sets_1): ... here; simplify computation of
5604         have_regs-of_mode and contains_reg_of_mode.
5605         (record_reg_classes): Unswitch internal loops.
5606         (copy_cost): Trigger lazy initialization of move cost
5607         (record_address_regs): Likewise.
5608
5609 2007-07-24  Daniel Berlin  <dberlin@dberlin.org>
5610
5611         * config/darwin.c (darwin_override_options): Don't force on
5612         flag_var_tracking_uninit when no debug info is requested.
5613
5614 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
5615
5616         * cfgloop.c (init_loops_structure): New function.
5617         (flow_loops_find): Create root of the loop tree unconditionally.
5618
5619 2007-07-24  Daniel Jacobowitz  <dan@codesourcery.com>
5620
5621         * tree-ssa-ccp.c (fold_const_aggregate_ref): Use fold_convert.
5622
5623 2007-07-24  Jan Hubicka  <jh@suse.cz>
5624
5625         * caller-save.c: Include ggc.h, gt-caller-save.h
5626         (reg_save_code, reg_restore_code): Rename to ...
5627         (cached_reg_save_code, cached_reg_restore_code): ... those.
5628         (savepat, restpat, test_reg, test_mem, saveinsn, restinsn): New.
5629         (reg_save_code, reg_restore_code): New functions.
5630         (init_caller_save): Do not intialize
5631         reg_save_code/reg_restore_code tables.
5632         * Makefile.in: (gt-caller-save.h): New.
5633
5634 2007-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
5635
5636         * tree-ssa-ifcombine.c (ifcombine_ifandif): Use a ONE operand
5637         with the mode of the original operand instead of
5638         integer_one_node.
5639
5640 2007-07-23  Jan Hubicka  <jH@suse.cz>
5641
5642         * i386.c (ix86_secondary_memory_needed): Break out to...
5643         (inline_secondary_memory_needed): ... here.
5644         (ix86_memory_move_cost): Break out to ...
5645         (inline_memory_move_cost): ... here; add support for IN value of 2 for
5646         maximum of input and output; fix handling of Q_REGS on 64bit.
5647         (ix86_secondary_memory_needed): Microoptimize.
5648
5649 2007-07-23  Sebastian Pop  <sebpop@gmail.com>
5650
5651         * tree-data-ref.c (find_vertex_for_stmt, create_rdg_edge_for_ddr,
5652         create_rdg_edges_for_scalar, create_rdg_edges, create_rdg_vertices,
5653         stmts_from_loop, known_dependences_p, build_rdg): New.
5654         * tree-data-ref.h: Depends on graphds.h.
5655         (rdg_vertex, RDGV_STMT, rdg_dep_type, rdg_edge, RDGE_TYPE): New.
5656         (build_rdg): Declared.
5657         * Makefile.in (TREE_DATA_REF_H): Depends on graphds.h.
5658
5659 2007-07-23  Daniel Berlin  <dberlin@dberlin.org>
5660
5661         * tree-ssa-propagate.c (valid_gimple_expression_p): Match up with
5662         ccp_min_invariant.
5663
5664 2007-07-23  Peter Bergner  <bergner@vnet.ibm.com>
5665             Jakub Jelinek  <jakub@redhat.com>
5666
5667         PR middle-end/PR28690
5668         * optabs.c (expand_binop): (emit_cmp_and_jump_insns): Allow
5669         EQ compares.
5670         * rtlanal.c (commutative_operand_precedence): Prefer both REG_POINTER
5671         and MEM_POINTER operands over REG and MEM operands.
5672         (swap_commutative_operands_p): Change return value to bool.
5673         * rtl.h: Update the corresponding prototype.
5674         * tree-ssa-address.c (gen_addr_rtx): Use simplify_gen_binary
5675         instead of gen_rtx_PLUS.
5676         * simplify-rtx.c (simplify_plus_minus_op_data_cmp): Change return
5677         value to bool.  Change function arguments to rtx's and update code
5678         to match.
5679         (simplify_plus_minus): Update the simplify_plus_minus_op_data_cmp
5680         calls to match the new declaration.
5681         * simplify-rtx.c (simplify_associative_operation): Don't
5682         reorder simplify_binary_operation arguments.
5683
5684 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
5685
5686         * config/mips/mips.c (override_options): Use mips_costs to derive
5687         the default branch cost.
5688         * config/mips/mips.h (BRANCH_COST): Use mips_branch_cost rather
5689         than mips_costs.
5690         * config/mips/mips.opt (mbranch-cost=): New option.
5691         * doc/invoke.texi (-mbranch-cost): Document new MIPS option.
5692
5693 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
5694
5695         * config/mips/mips.h (GR_REG_CLASS_P, COP_REG_CLASS_P): Delete.
5696         (SECONDARY_MEMORY_NEEDED): Delete commented-out definition.
5697         * config/mips/mips.c (mips_register_move_cost): Use reg_class_subset_p
5698         instead of GR_REG_CLASS_P and COP_REG_CLASS_P.
5699
5700 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
5701
5702         * config/mips/constraints.md (ks): New constraint.
5703         * config/mips/mips.md (*add<mode>3_sp1, *add<mode>3_sp2): Fold into...
5704         (*add<mode>3_mips16): ...here.
5705
5706 2007-07-21  Uros Bizjak  <ubizjak@gmail.com>
5707
5708         * optabs.h (enum optab_index): Add new OTI_signbit.
5709         (signbit_optab): Define corresponding macro.
5710         (enum insn_code signbit_optab[]): Remove array.
5711         * optabs.c (init_optabs): Initialize signbit_optab using init_optab.
5712         (expand_copysign_absneg): If back end provides signbit insn, use it
5713         instead of bit operations on floating point argument.
5714         * builtins.c (enum insn_code signbit_optab[]): Remove array.
5715         (expand_builtin_signbit): Check signbit_optab->handlers[].insn_code
5716         for availability of signbit insn.
5717
5718         * config/i386/i386.md (signbit<mode>2): New insn pattern to implement
5719         signbitf, signbit and signbitl built-ins as inline x87 intrinsics when
5720         SSE mode is not active.
5721         (isinf<mode>2): Disable for mfpmath=sse,387.
5722
5723 2007-07-22  Ben Elliston  <bje@au.ibm.com>
5724
5725         * regclass.c (invalid_mode_change_p): Attach ATTRIBUTE_UNUSED to
5726         `class' parameter.
5727         * struct-equiv.c (note_local_live): Likewise for `y_regno'.
5728
5729 2007-07-20  Richard Guenther  <rguenther@suse.de>
5730
5731         * tree-cfg.c (verify_expr): COND_EXPRs can have any
5732         integral typed condition.
5733         * tree-ssa.c (useless_type_conversion_p): Do not preserve
5734         booleanness.  Only preserve conversions from a non-base
5735         type to a base type, not in general between types with
5736         different TYPE_MIN_VALUE or TYPE_MAX_VALUE.
5737         * tree.def (COND_EXPR): Document that the condition
5738         can be of any integral type.
5739
5740 2007-07-20  Nigel Stephens  <nigel@mips.com>
5741             Richard Sandiford  <richard@codesourcery.com>
5742
5743         * config/mips/mips.h (mips_dwarf_regno): Declare.
5744         (DBX_REGISTER_NUMBER): Remove redundant brackets.
5745         (HI_REGNUM, LO_REGNUM): Define in an endian-dependent way.
5746         (AC1HI_REGNUM, AC1LO_REGNUM, AC2HI_REGNUM, AC2LO_REGNUM)
5747         (AC3HI_REGNUM, AC3LO_REGNUM, ACC_HI_REG_P): Delete.
5748         (reg_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
5749         (REG_CLASS_NAMES): Update accordingly.
5750         * config/mips/mips.c (mips_dwarf_regno): New array.
5751         (mips_regno_to_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
5752         (mips_subword): Remove special handling for accumulator registers.
5753         (override_options): Initiailize mips_dwarf_regno.  Remove use
5754         of ACC_HI_REG_P.
5755         (mips_swap_registers): New function.
5756         (mips_conditional_register_usage): Swap accumulator registers
5757         around if TARGET_LITTLE_ENDIAN.
5758         (mips_cannot_change_mode_class): Remove special treatment of ACC_REGS.
5759         * config/mips/constraints.md (h, l): Use the endianness to choose
5760         between MD0_REG and MD1_REG.
5761         * config/mips/mips.md (*mfhilo_<mode>_macc): Use a fixed-string,
5762         alternative-dependent template.
5763
5764 2007-07-20  Richard Sandiford  <richard@codesourcery.com>
5765
5766         * config/arm/arm.md (movsi): Use can_create_pseudo_p instead of
5767         no_new_pseudos.
5768
5769 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
5770
5771         * function.c (thread_prologue_and_epilogue_insns): Fix exit
5772         predecessor fallthru flags.
5773
5774 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
5775
5776         * tree-ssa-loop-niter.c (assert_loop_rolls_lt): Convert the operands
5777         of compare to the same type.
5778         * cfgloopmanip.c (add_loop): Update information about loop exits.
5779         (loop_version): Remove the innermost loop requirement.
5780         * tree-ssa-loop-manip.c (determine_exit_conditions): Convert bounds
5781         to sizetype for pointers.
5782
5783 2007-07-18  H.J. Lu  <hongjiu.lu@intel.com>
5784
5785         * Makefile.in (D32PBIT_FUNCS): Add _sd_to_tf and _tf_to_sd.
5786         (D64PBIT_FUNCS): Add _dd_to_tf and _tf_to_dd.
5787         (D128PBIT_FUNCS): Add _td_to_tf and _tf_to_td.
5788
5789         * config/dfp-bit.c: Empty for TFmode conversions.
5790
5791 2007-07-18  Caroline Tice  <ctice@apple.com>
5792         
5793         * var-tracking.c (find_src_status):  Check for  COND_EXEC insns
5794         and handle them correctly; check that src is not NULL before
5795         trying to use it.
5796         (find_src_set_src): Likewise.
5797         
5798 2007-07-18  Bob Wilson  <bob.wilson@acm.org>
5799         
5800         * config/xtensa/xtensa.c (xtensa_expand_mask_and_shift): New.
5801         (struct alignment_context, init_alignment_context): New.
5802         (xtensa_expand_compare_and_swap, xtensa_expand_atomic): New.
5803         * config/xtensa/xtensa.h (XCHAL_HAVE_RELEASE_SYNC): Add default.
5804         (XCHAL_HAVE_S32C1I): Likewise.
5805         (TARGET_RELEASE_SYNC, TARGET_S32C1I): New.
5806         * config/xtensa/xtensa.md (UNSPECV_MEMW): New constant.
5807         (UNSPECV_S32RI, UNSPECV_S32C1I): Likewise.
5808         (ATOMIC, HQI): New macros.
5809         (memory_barrier, *memory_barrier): New.
5810         (sync_lock_releasesi): New.
5811         (sync_compare_and_swapsi, sync_compare_and_swap<mode>): New.
5812         (sync_lock_test_and_set<mode>): New.
5813         (sync_<atomic><mode>): New.
5814         (sync_old_<atomic><mode>, sync_new_<atomic><mode>): New.
5815         * config/xtensa/xtensa-protos.h (xtensa_expand_compare_and_swap): New.
5816         (xtensa_expand_atomic): New.
5817         
5818 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5819
5820         PR target/30652
5821
5822         * builtins.c (expand_builtin_interclass_mathfn): Provide a generic
5823         transformation for builtin ISNORMAL.
5824         (expand_builtin): Handle BUILT_IN_ISNORMAL.
5825         * builtins.def (BUILT_IN_ISNORMAL): New.
5826         * doc/extend.texi: Document isnormal.
5827
5828 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5829
5830         PR target/30652
5831
5832         * builtins.c (expand_builtin_interclass_mathfn): Allow for missing
5833         optabs infrastructure.  Provide generic implementation for
5834         FINITE/ISFINITE.
5835         (expand_builtin): Handle FINITE/ISFINITE.
5836         (fold_builtin_classify): Make ISFINITE canonical instead of FINITE.
5837         (fold_builtin_1): Likewise.
5838
5839         * builtins.def (BUILT_IN_ISFINITE): New.
5840
5841         * doc/extend.texi: Document isfinite.
5842
5843 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5844
5845         PR target/30652
5846         PR middle-end/20558
5847
5848         * builtins.c (expand_builtin_interclass_mathfn): Provide a
5849         generic fallback for isinf.
5850         * c-cppbuiltin.c (builtin_define_float_constants): Move FP max
5851         calculation code ...
5852         * real.c (get_max_float): ... to here.
5853         * real.h (get_max_float): New.
5854
5855 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5856
5857         PR middle-end/32668
5858
5859         * builtin-attrs.def (ATTR_TYPEGENERIC,
5860         ATTR_CONST_NOTHROW_TYPEGENERIC): New.
5861
5862         * builtins.def (BUILT_IN_ISINF, BUILT_IN_ISNAN,
5863         BUILT_IN_ISGREATER, BUILT_IN_ISGREATEREQUAL, BUILT_IN_ISLESS,
5864         BUILT_IN_ISLESSEQUAL, BUILT_IN_ISLESSGREATER,
5865         BUILT_IN_ISUNORDERED): Use ATTR_CONST_NOTHROW_TYPEGENERIC.
5866
5867         * c-common.c (handle_type_generic_attribute): New.
5868         (c_common_attribute_table): Add "type generic".
5869
5870         * c-typeck.c (convert_arguments): Handle "type generic" functions.
5871
5872 2007-07-18  Daniel Berlin  <dberlin@dberlin.org>
5873
5874         * tree-ssa-sccvn.c (try_to_simplify): Use valid_gimple_expression
5875         * tree-ssa-propagate (valid_gimple_expression): Handle ADDR_EXPR
5876         properly.
5877
5878 2007-07-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
5879
5880         PR target/32808
5881         * config/cris/cris.c (cris_print_index): Don't use XEXP before
5882         checking that the operand is an expression.
5883
5884 2007-07-19  Christoph von Wittich  <Christoph_vW@reactos.org>
5885             Danny Smith  <dannysmith@users.sourceforge.net>
5886
5887         PR/other 30335
5888         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Put
5889         file mapping object in local namespace if Windows version later
5890         than NT4
5891
5892 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
5893
5894         * config/arm/arm-protos.h (arm_cannot_force_const_mem): Declare.
5895         * config/arm/arm.c (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to
5896         arm_cannot_force_const_mem.
5897         (arm_cannot_force_const_mem): New function.
5898         * config/arm/arm.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): New macro.
5899         (LEGITIMATE_CONSTANT_P): Test arm_cannot_force_const_mem instead
5900         of arm_tls_referenced_p.
5901         * config/arm/arm.md (movsi): Split out-of-section constants when
5902         ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P.
5903         * config/arm/vxworks.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
5904
5905 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
5906
5907         * config/mips/mips.md (clear_cache): Treat the size argument as Pmode.
5908
5909 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
5910
5911         * config/mips/mips.md (*extendqihi2): Convert the destination
5912         to SImode.
5913
5914 2007-07-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5915
5916         * config/pa/fptr.c: Update license header.
5917         * config/pa/milli64.S: Likewise.
5918
5919 2007-07-17  Nick Clifton  <nickc@redhat.com>
5920
5921         * COPYING_v3: New file.  Contains version 3 of the GNU General
5922         Public License.
5923         * COPYING.LIB_v3: New file.  Contains version 3 of the GNU
5924         Lesser General Public License.
5925         * doc/include/gpl_v3.texi: New file.  Contains version 3 of
5926         the GNU General Public License.
5927
5928 2007-07-17  Zdenek Dvorak  <dvorakz@suse.cz>
5929
5930         PR rtl-optimization/32773
5931         * cfglayout.c (force_one_exit_fallthru): New function.
5932         (cfg_layout_finalize): Use it.
5933
5934 2007-07-16  Richard Guenther  <rguenther@suse.de>
5935             Uros Bizjak  <ubizjak@gmail.com>
5936
5937         * tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond"
5938         before forcing it to gimple operand.
5939
5940 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
5941             David Ung  <davidu@mips.com>
5942
5943         * config/mips/mips.h (TUNE_24K): Define.
5944         (TUNE_MACC_CHAINS): Add TUNE_24K.
5945         * config/mips/mips.md: (*mul_acc_si, *mul_sub_si): Change type to
5946         imadd.
5947         * config/mips/74k.md (r74k_int_mult): Split madd/msub to ..
5948         (r74k_int_madd): .. this new reservation.
5949         (define_bypass): Fixed bypasses for r74k_int_madd to use
5950         mips_linked_madd_p.
5951         * config/mips/24k.md (define_bypass): Define new
5952         r24k_int_mul3->r24k_int_madd bypass using mips_linked_madd_p.
5953
5954 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
5955             Nigel Stephens  <nigel@mips.com>
5956
5957         * config/mips/mips.md:  Include 20kc.md.
5958         * config/mips/20kc.md: New file.
5959         * config/mips/mips.c (mips_rtx_cost_data): Fill in 20Kc costs.
5960         (mips_adjust_cost): Tweak for 20Kc.
5961         (mips_issue_rate): Likewise.
5962         * config/mips/mips.h (TUNE_20KC): Define.
5963
5964 2007-07-16  David Edelsohn  <edelsohn@gnu.og>
5965
5966         * config/rs6000/rs6000.c (struct processor_cost): Add
5967         cache_line_size, l1_cache_lines, and simultaneous_prefetches
5968         fields.
5969         (*_cost): Add cache information.
5970         (rs6000_override_options): Set cache parameters.
5971
5972 2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
5973
5974         PR bootstrap/3456
5975         * config.gcc (mips-sgi-irix[56]*): Enable pthread support.
5976         * doc/install.texi (mips-sgi-irix6): pthread support works now.
5977
5978 2007-07-16  Paul Brook  <paul@codesourcery.com>
5979
5980         PR target/32753
5981         * config/arm/cirrus.md (cirrus_arm_movsi_insn): Remove dead insn.
5982         (cirrus_thumb2_movsi_insn): Ditto.
5983
5984 2007-07-15  Geoffrey Keating  <geoffk@apple.com>
5985
5986         * config/rs6000/darwin-fallback.c (interpret_libc): Change
5987         CR2_REGNO to R_CR2.
5988
5989 2007-07-15  Andrew Haley  <aph@redhat.com>
5990
5991         * unwind-sjlj.c (_Unwind_GetIPInfo): Check for context->fc != NULL
5992         before looking in the context.
5993
5994 2007-07-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5995
5996         PR middle-end/32398
5997         PR middle-end/32769
5998         * pa-protos.h (pa_eh_return_handler_rtx): Declare.
5999         * pa.c (pa_extra_live_on_entry, rp_saved): Declare.
6000         (TARGET_EXTRA_LIVE_ON_ENTRY): Define.
6001         (pa_output_function_prologue): Use rp_saved and
6002         current_function_is_leaf to generate .CALLINFO statement.
6003         (hppa_expand_prologue): Set rp_saved.
6004         (hppa_expand_epilogue): Use rp_saved.
6005         (pa_extra_live_on_entry, pa_eh_return_handler_rtx): New functions.
6006         * pa.h (EH_RETURN_HANDLER_RTX): Use pa_eh_return_handler_rtx.
6007
6008 2007-07-14  Dirk Mueller  <dmueller@suse.de>
6009
6010         * omega.c (coalesce): Fix memory leak on early exit.
6011         * matrix-reorg.c (check_allocation_function): Likewise.
6012         * tree-vect-transform.c (vect_get_new_vect_var): free result
6013         of concat().
6014         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
6015         pass pointer to edge vector
6016         (partition_hot_cold_basic_blocks): Fix memory leak.
6017         * collect2.c (prefix_from_string): Free temporary storage.
6018         * reload1.c (fixup_abnormal_edges): Free sbitmap.
6019
6020 2007-07-14  Kaz Kojima  <kkojima@gcc.gnu.org>
6021
6022         * config/sh/sh.h (DO_GLOBAL_CTORS_BODY): Add void to prototype.
6023         (DO_GLOBAL_DTORS_BODY): Likewise.
6024
6025 2007-07-14  Sandra Loosemore  <sandra@codesourcery.com>
6026             Nigel Stephens  <nigel@mips.com>
6027
6028         * config/mips/mips.c (mips_classify_symbol): Don't return
6029         SYMBOL_SMALL_DATA for constant pool addresses if
6030         TARGET_EMBEDDED_DATA is true.
6031
6032 2007-07-14  Uros Bizjak  <ubizjak@gmail.com>
6033
6034         * config/i386/i386.c (init_mmx_sse_builtins): Define all builtins
6035         except __builtin_ia32_emms, __builtin_ia32_ldmxcsr,
6036         __builtin_ia32_stmxcsr, __builtin_ia32_maskmovq, __builtin_ia32_loadups,
6037         __builtin_ia32_storeups, __builtin_ia32_loadhps, __builtin_ia32_loadlps,
6038         __builtin_ia32_storehps, __builtin_ia32_storelps,
6039         __builtin_ia32_movntps, __builtin_ia32_movntq, __builtin_ia32_sfence,
6040         __builtin_ia32_femms, __builtin_ia32_maskmovdqu, __builtin_ia32_loadupd,
6041         __builtin_ia32_storeupd, __builtin_ia32_loadhpd, __builtin_ia32_loadlpd,
6042         __builtin_ia32_movnti, __builtin_ia32_movntpd, __builtin_ia32_movntdq,
6043         __builtin_ia32_clflush, __builtin_ia32_lfence, __builtin_ia32_mfence,
6044         __builtin_ia32_loaddqu, __builtin_ia32_storedqu, __builtin_ia32_monitor,
6045         __builtin_ia32_mwait, __builtin_ia32_lddqu, __builtin_ia32_movntdqa,
6046         __builtin_ia32_movntsd and __builtin_ia32_movntss as const builtins
6047         using def_builtin_const.
6048
6049 2007-07-14  Eric Botcazou  <ebotcazou@adacore.com>
6050
6051         PR tree-optimization/32705
6052         * tree-ssa-sccvn.c (set_ssa_val_to): Accept VN_TOP as value number.
6053         (simplify_binary_expression): Use SSA_VAL consistently.
6054
6055 2007-07-13  David Edelsohn  <edelsohn@gnu.org>
6056
6057         * config/rs6000/spe.md (SPE_ACC_REGNO): Delete definition.
6058         (SPEFSCR_REGNO): Delete definition.
6059         * config/rs6000/rs6000.c: LINK_REGISTER_REGNUM -> LR_REGNO.
6060         COUNT_REGISTER_REGNUM -> CTR_REGNO.
6061         * config/rs6000/rs6000.h: Do not define *_REGNO.
6062         LINK_REGISTER_REGNUM -> LR_REGNO.
6063         COUNT_REGISTER_REGNUM -> CTR_REGNO.
6064         * config/rs6000/predicates.md: LINK_REGISTER_REGNUM ->  LR_REGNO.
6065         COUNT_REGISTER_REGNUM -> CTR_REGNO.
6066         * config/rs6000/linux-unwind.h: Define R_LR, R_CR2, R_VR0,
6067         R_VRSAVE, R_VSCR. Use them.
6068         * config/rs6000/darwin-fallback.c: Define R_LR, R_CTR, R_CR2,
6069         R_XER, R_VR0, R_VRSAVE, R_VSCR, R_SPEFSCR.  Use them.
6070         * config/rs6000/rs6000.md: Define REGNO constants.  Use them.
6071         * config/rs6000/aix.h: Define R_LR.  Use it.
6072         
6073 2007-07-13  Caroline Tice  <ctice@apple.com>
6074         
6075         * toplev.c (process_options): Turn flag_var_tracking_uninit off when
6076         flag_var_tracking is explicitly turned off (i.e. when variable
6077         tracking is not feasible); otherwise, turn flag_var_tracking on when
6078         flag_var_tracking_uninit is on.
6079         * rtl.def (VAR_LOCATION): Add a new integer subfield to VAR_LOCATION
6080         note definitions, to allow recording of initialization status in the
6081         notes.
6082         * dwarf2out.c (dwarf_stack_op_name): Add case for DW_OP_GNU_uninit.
6083         (add_var_loc_to_decl): Add comparison of NOTE_VAR_LOCATION_STATUS to
6084         determine if two note locations are equal.
6085         (output_loc_list): Don't output list entries whose start & end labels
6086         are the same.
6087         (reg_loc_descriptor): Add parameter for initialization status; pass it
6088         to other loc descriptor functions.
6089         (one_reg_loc_descriptor): Add parameter for initialization status;
6090         check its value and add DW_OP_GNU_uninit to returned loc descr if
6091         appropriate.
6092         (multiple_reg_loc_descriptor): Add parameter for initialization
6093         status;
6094         pass init status argument to other loc descriptor functions; check
6095         value of intialization parameter and add DW_OP_GNU_uninit to returned
6096         loc descr if appropriate.
6097         (based_loc_descr): Add parameter for initialization status; add new
6098         variable for return value; check value of initialization parameter and
6099         add DW_OP_GNU_uninit to returned loc descr if appropriate.
6100         (concatn_mem_loc_descriptor): Add parameter for initialization status;
6101         pass init status argument to other loc descriptor functions; check
6102         value of intialization parameter and add DW_OP_GNU_uninit to returned
6103         loc descr if appropriate.
6104         (mem_loc_descriptor): Likewise.
6105         (concat_loc_descriptor): Likewise.
6106         (concatn_loc_descriptor): Likewise.
6107         (loc_descriptor): Add parameter for initialization status; pass it as
6108         argument to other loc descriptor function calls.
6109         (loc_descriptor_from_tree_1): Add appropriate initialization status
6110         to loc descriptor function calls.
6111         (add_location_or_const_value_attribute): Get initialization status
6112         from VAR_LOCATION note; add initialization status to loc descriptor
6113         function calls.
6114         * dwarf2.h (enum dwarf_location_atom): New op, DW_OP_GNU_uninit.
6115         * print-rtl.c (print_rtx): When printing a VAR_LOCATION note, if
6116         status is uninitialized, add "[uninint]" to output.
6117         * common.opt (fvar-tracking-uninit): New option, similar to
6118         fvar-tracking, to turn on tracking of uninitialized variables; creates
6119         a new global flag, flag_var_tracking_uninit.
6120         * rtl.h (NOTE_VAR_LOCATION_STATUS): New macro for accessing new field.
6121         (enum var_init_status): New type, for var initialization status field.
6122         * var-tracking.c (struct location_chain_def): Two new fields, init,
6123         for initialization status, and set_src for the assignment value expr.
6124         (unshare_variable): New parameter for initialization status;
6125         initialize new init and set_src fields.
6126         (var_reg_set): New parameters for initialization status and value;
6127         pass them to set_variable_part.
6128         (var_mem_set): Likewise.
6129         (get_init_value): New function.
6130         (var_reg_delete_and_set): New initialization status & value
6131         parameters; add call to get_init_value if status is unknown; pass new
6132         parameters to clobber_variable_part and var_reg_set.
6133         (var_mem_delete_and_set): Likewise.
6134         (var_reg_delete): Pass null set_src value to clobber_variable_part.
6135         (var_mem_delete): Likewise.
6136         (variable_union): Pass status to unshare_variable; initialize new init
6137         and set_src fields. If flag_var_tracking_uninit is not set, force
6138         status to initialized.
6139         (add_stores): Store insn, rather than NEXT_INSN(insn), so it can be
6140         used later to get the set_src value.
6141         (find_src_status): New function.
6142         (find_src_set_src): New function.
6143         (compute_bb_dataflow): Pass init status to calls to var_reg_set,
6144         var_mem_set, var_reg_delete_and_set and var_mem_delete_and_set; for
6145         MO_SET, get set_src value and pass it to var_reg_delete_and_set
6146         and var_mem_delete_and_set.
6147         (dump_variable): Print out "[uninit]" if appropriate.
6148         (set_variable_part): Add new initialization and set_src parameters;
6149         pass status to unshare_variable; set node->init and node- >set_src
6150         fields and modify slot in hash table appropriately; save the init and
6151         set_src values if appropriate and assign to the new node.
6152         (clobber_variable_part): New set_src parameter; if two nodes have
6153         same variable and same location but different set_src (assignment)
6154         values, clobber old node.
6155         (delete_variable_part): Pass init status to unshare_variable.
6156         (emit_note_insn_var_location): Add initialized var; assign var's init
6157         status to new 'initialized'; pass new init status field to calls to
6158         gen_rtx_VAR_LOCATION. If flag_var_tracking_uninit is not set, force
6159         status to initialized.
6160         (emit_notes_in_bb): Pass initialization status to calls to
6161         var_reg_set, var_mem_set, var_reg_delete_and_set and
6162         var_mem_delete_and_set; for MO_SET, get set_src value and pass it to
6163         var_reg_delete_and_set and var_mem_delete_and_set; call
6164         emit_notes_for_changes on NEXT_INSN(insn) rather than on insn, to
6165         make up for change in add_stores.
6166         (vt_add_function_parameters): Add status to calls to
6167         set_variable_part.
6168         * config/darwin.c (darwin_override_options): Turn on uninitialized
6169         tracking automatically, if var_tracking is on and the system is
6170         10.5 or higher.
6171         
6172 2007-07-13  Sa Liu  <saliu@de.ibm.com>
6173
6174         * config.gcc: Add options for arch and tune on SPU.
6175         * config/spu/predicates.md: Add constant operands 0 and 1.
6176         * config/spu/spu-builtins.def: Add builtins for double precision 
6177         floating point comparison: si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, 
6178         si_dftsv, spu_cmpeq_13, spu_cmpabseq_1, spu_cmpgt_13, spu_cmpabsgt_1,
6179         spu_testsv.
6180         * config/spu/spu-c.c: Define __SPU_EDP__ when builtins invoked with 
6181         a CELLEDP target.
6182         * config/spu/spu-protos.h: Add new function prototypes. 
6183         * config/spu/spu.c (spu_override_options): Check options -march and
6184         -mtune.
6185         (spu_comp_icode): Add comparison code for DFmode and vector mode.
6186         (spu_emit_branch_or_set): Use the new code for DFmode and vector 
6187         mode comparison.
6188         (spu_const_from_int): New.  Create a vector constant from 4 ints.
6189         (get_vec_cmp_insn): New.  Get insn index of vector compare instruction.
6190         (spu_emit_vector_compare): New.  Emit vector compare.
6191         (spu_emit_vector_cond_expr): New.  Emit vector conditional expression.
6192         * config/spu/spu.h: Add options -march and -mtune.  Define processor
6193         types PROCESSOR_CELL and PROCESSOR_CELLEDP.  Define macro
6194         CANONICALIZE_COMPARISON.
6195         * config/spu/spu.md: Add new insns for double precision compare
6196         and double precision vector compare.  Add vcond and smax/smin patterns
6197         to enable DFmode vector conditional expression.
6198         * config/spu/spu.opt: Add options -march and -mtune.
6199         * config/spu/spu_internals.h: Add builtins for CELLEDP target:
6200         si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, si_dftsv.  Add builtin for
6201         both CELL and CELLEDP targets: spu_testsv.
6202         * config/spu/spu_intrinsics.h: Add flag mnemonics for test special 
6203         values.
6204
6205 2007-07-13  Richard Guenther  <rguenther@suse.de>
6206
6207         PR tree-optimization/32721
6208         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Preserve
6209         TREE_THIS_VOLATILE on the folded reference.
6210         * tree-ssa-operands.c (get_expr_operands): Set has_volatile_ops
6211         if the array reference has TREE_THIS_VOLATILE set.
6212
6213 2007-07-13  H.J. Lu  <hongjiu.lu@intel.com>
6214
6215         PR other/32188
6216         * doc/libgcc.texi: Update DFP intrinsics for DPD and BID.
6217
6218 2007-07-13  Andreas Schwab  <schwab@suse.de>
6219
6220         * gengtype-lex.l: Allow declarations to be indented.
6221
6222 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
6223
6224         * ginclude/tgmath.h: New.
6225         * config.gcc: Use GCC's tgmath.h on non-glibc systems.
6226         * doc/sourcebuild.texi (Headers): Document use_gcc_tgmath.
6227         * configure.ac (STMP_FIXPROTO): Honor use_gcc_tgmath.
6228         * configure: Regenerate.
6229
6230 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
6231
6232         * config/sh/linux-unwind.h (sh_fallback_frame_state): Use
6233         correct index when setting register save state for xd
6234         registers.
6235
6236 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
6237
6238         * config/sh/sh.c (mark_use): Remove.
6239
6240 2007-07-12  Paul Brook  <paul@codesourcery.com>
6241
6242         * config/arm/arm.c (thumb1_compute_save_reg_mask): Make sure scratch
6243         reg does not overlap return value.
6244
6245 2007-07-12  Daniel Berlin  <dberlin@dberlin.org>
6246
6247         * tree-ssa-pre.c (get_expression_vuses): Move out side-effect.
6248         (set_expression_vuses): Ditto.
6249         (init_pre): Initialize expression_vuses.
6250
6251 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
6252
6253         * config/i386/sse.md (storentdf, storentsf): New.
6254
6255 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
6256
6257         * builtins.c (get_pointer_alignment): Honor DECL_ALIGN on a
6258         FUNCTION_DECL.
6259         * tree.c (build_decl_stat): Move code from here...
6260         (make_node_stat): ... to here.  Don't uselessly clear DECL_USER_ALIGN.
6261         (expr_align): Honor DECL_ALIGN on a FUNCTION_DECL.  Add comment
6262         about using DECL_ALIGN of LABEL_DECL and CONST_DECL.
6263         * tree.h (DECL_USER_ALIGN): Fix misplaced comment.
6264         * varasm.c (assemble_start_function): Use DECL_ALIGN instead of
6265         FUNCTION_BOUNDARY.
6266
6267 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
6268             Devang Patel  <dpatel@apple.com>
6269
6270         PR tree-optimization/25413
6271         * targhooks.c (default_builtin_vector_alignment_reachable): New.
6272         * targhooks.h (default_builtin_vector_alignment_reachable): New.
6273         * tree.h (contains_packed_reference): New.
6274         * expr.c (contains_packed_reference): New.
6275         * tree-vect-analyze.c (vector_alignment_reachable_p): New.
6276         (vect_enhance_data_refs_alignment): Call
6277         vector_alignment_reachable_p.
6278         * target.h (vector_alignment_reachable): New builtin.
6279         * target-def.h (TARGET_VECTOR_ALIGNMENT_REACHABLE): New.
6280         * config/rs6000/rs6000.c (rs6000_vector_alignment_reachable): New.
6281         (TARGET_VECTOR_ALIGNMENT_REACHABLE): Define.
6282
6283 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
6284
6285         * target.h (builtin_vectorization_cost): Add new target builtin.
6286         * target-def.h (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): New.
6287         * tree-vectorizer.h (TARG_SCALAR_STMT_COST): New.
6288         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST): New.
6289         * tree-vect-analyze.c (vect_analyze_slp_instance): Initisliaze
6290         uninitialized variables.
6291         * tree-vect-transform.c (cost_for_stmt): New function.
6292         (vect_estimate_min_profitable_iters): Call cost_for_stmt instead of
6293         using cost 1 for all scalar stmts. Be less conservative when
6294         estimating the number of prologue/epulogue iterations. Call
6295         targetm.vectorize.builtin_vectorization_cost. Return
6296         min_profitable_iters-1.
6297         (vect_model_reduction_cost): Use TARG_SCALAR_TO_VEC_COST for
6298         initialization cost instead of TARG_VEC_STMT_COST. Use
6299         TARG_VEC_TO_SCALAR_COST instead of TARG_VEC_STMT_COST for reduction
6300         epilogue code. Fix epilogue cost computation.
6301         * config/spu/spu.c (spu_builtin_vectorization_cost): New.
6302         (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): Implement.
6303         * config/spu/spu.h (TARG_COND_BRANCH_COST, TARG_SCALAR_STMT_COST):
6304         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST, TARG_VEC_STMT_COST):
6305         (TARG_VEC_TO_SCALAR_COST, TARG_SCALAR_TO_VEC, TARG_VEC_LOAD_COST):
6306         (TARG_VEC_UNALIGNED_LOAD_COST, TARG_VEC_STORE_COST): Define.
6307
6308 2007-07-12  Richard Guenther  <rguenther@suse.de>
6309
6310         * gimplify.c (gimplify_conversion): Make sure that the result
6311         from maybe_fold_offset_to_reference is trivially convertible
6312         to the desired type before doing the simplification.
6313         (gimplify_expr): Likewise.
6314         * fold-const.c (fold_binary): Use the correct types for
6315         building the simplified expression.
6316
6317 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
6318
6319         PR rtl-optimization/32729
6320         * cfghooks.c (can_duplicate_block_p): Do not forbid duplicating blocks
6321         that fallthru to exit.
6322
6323 2007-07-12  Kaz Kojima  <kkojima@gcc.gnu.org>
6324
6325         * config/sh/sh.md (symGOTOFF2reg): Add missing parenthesis.
6326         (symDTPOFF2reg): Likewise.
6327
6328 2007-07-11  Daniel Berlin  <dberlin@dberlin.org>
6329
6330         PR tree-optimization/32663
6331         
6332         * tree.h (VALUE_HANDLE_VUSES): Remove.
6333         (struct tree_value_handle): Remove vuses.
6334
6335         * tree-vn.c (create_value_handle_for_expr): Don't set
6336         VALUE_HANDLE_VUSES. 
6337
6338         * tree-ssa-pre.c (expression_vuses): New.
6339         (alloc_expression_id): Set up expression_vuses.
6340         (get_expression_vuses): New.
6341         (set_expression_vuses): Ditto.
6342         (clear_expression_ids): Modify for expression_vuses.
6343         (phi_translate_1): Ditto.
6344         (phi_translate_set): Ditto.
6345         (value_dies_in_block_x): Ditto
6346         (valid_in_sets): Ditto.
6347         (add_to_sets): Ditto.
6348         (find_existing_value_expr): Ditto.
6349         (create_value_handle_for_expr): Ditto.
6350         (make_values_for_stmt): Ditto.
6351         (vuse_equiv): Remove.
6352
6353 2007-07-11  Alexandre Oliva  <aoliva@redhat.com>
6354
6355         * Makefile.in (mostlyclean): Remove object files.
6356
6357 2007-07-11  Kenneth Zadeck <zadeck@naturalbridge.com>
6358
6359         * toplev.c (no_new_pseudos): Deleted.
6360         * rtl.h (no_new_pseudos): Deleted.
6361         * tree-pass.h (pass_no_new_pseudos): Deleted. 
6362         * passes.c (pass_no_new_pseudos): Deleted.
6363         * final.c (rest_of_clean_state): Removed no_new_pseudos.
6364         (rest_of_no_new_pseudos, pass_no_new_pseudos): Deleted.
6365         * struct-equiv.c (rtx_equiv_p): Replaced no_new_pseudos with 
6366         reload_completed.
6367         * cfgcleanup.c (try_crossjump_to_edge): Ditto. 
6368         * rtlhooks.c (gen_lowpart_general): Ditto.
6369         * optabs.c (prepare_operand): Ditto.
6370         * mode-switching.c (rest_of_handle_mode_switching): Deleted set of
6371         no_new_pseudos.
6372         * modulo-sched.c (rest_of_handle_sms): Ditto.
6373         * see.c (rest_of_handle_see): Ditto.
6374         * ifcvt.c (if_convert): Ditto.
6375         (gate_handle_if_after_combine): Replaced no_new_pseudos with 
6376         reload_completed.
6377         * init-regs.c (gate_initialize_regs): Deleted set of
6378         no_new_pseudos.
6379         * lower-subreg.c (decompose_multiword_subregs): Ditto. 
6380         * bb-reorder.c (rest_of_handle_partition_blocks): Ditto.
6381         * doc/md.texi: Changed no_new_pseudos to can_create_pseudo_p.
6382         
6383 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
6384
6385         PR target/32661
6386         * config/i386/sse.md (*sse2_storeq_rex64): Handle 64bit mem->reg moves.
6387         (*vec_extractv2di_1_sse2): Disable for TARGET_64BIT.
6388         (*vec_extractv2di_1_rex64): New insn pattern.
6389
6390 2007-07-11  David Daney  <ddaney@avtrex.com>
6391
6392         * config/mips/linux-unwind.h (mips_fallback_frame_state): Rewrite
6393         return address calculation.  Substitute DWARF_ALT_FRAME_RETURN_COLUMN
6394         for SIGNAL_UNWIND_RETURN_COLUMN.
6395         * config/mips/mips.h (SIGNAL_UNWIND_RETURN_COLUMN): Remove.
6396         (DWARF_FRAME_REGNUM): Rewrite.
6397         (DWARF_ALT_FRAME_RETURN_COLUMN) Define.
6398
6399 2007-07-11  Nick Clifton  <nickc@redhat.com>
6400
6401         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Revert previous
6402         delta and use gen_int_mode in place of GET_INT instead.
6403
6404 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
6405
6406         * reg-stack.c (struct tree_opt_pass pass_stack_regs): Nullify name
6407         and letter field.
6408
6409 2007-07-11  Douglas Gregor  <doug.gregor@gmail.com>
6410
6411         * params.def (PARAM_VERIFY_CANONICAL_TYPES): Remove.
6412         (PARAM_USE_CANONICAL_TYPES): New; decides whether to use canonical 
6413         types or not.
6414         * params.h (VERIFY_CANONICAL_TYPES): Remove.
6415         (USE_CANONICAL_TYPES): New.
6416         * doc/invoke.texi (verify-canonical-types): Remove.
6417         (use-canonical-types): Add.
6418
6419 2007-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
6420
6421         * config/spu/spu.c (spu_optimization_options): Remove setting of
6422         parameter PARAM_MAX_COMPLETELY_PEEL_TIMES.
6423         (spu_override_options): Move it here.
6424
6425 2007-07-11  Richard Sandiford  <richard@codesourcery.com>
6426
6427         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Handle -m4ksc and -m4ksd.
6428         * config/mips/mips.c (mips_cpu_info_table): Mention
6429         MIPS_ISA_LEVEL_SPEC in the comment.
6430
6431 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
6432
6433         PR tree-optimization/32713
6434         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle REAL_CST.
6435
6436 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
6437
6438         PR middle-end/30482
6439         * c-opts.c (c_common_post_options): Do not change flag_complex_method
6440         conditional to flag_isoc99.
6441         (c_common_init_options): Do it here, unconditionally.
6442
6443 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
6444
6445         PR tree-optimization/32589
6446         * doc/tree-ssa.texi (Rough GIMPLE Grammar): Add missing rule.
6447         * tree-gimple.c (is_gimple_min_invariant): Clarify head comment.
6448         * tree-ssa-propagate.c (valid_gimple_expression_p): New
6449         predicate, extracted from...
6450         (set_rhs): ...here.  Call it for the expression on entry.
6451         * tree-ssa-propagate.h (valid_gimple_expression_p): Declare.
6452         * tree-ssa-sccvn.c: Include tree-ssa-propagate.h.
6453         (simplify_binary_expression): Use valid_gimple_expression_p
6454         to validate the simplification.
6455         * Makefile.in (tree-ssa-sccvn.o): Depends on tree-ssa-propagate.h.
6456
6457 2007-07-11  Danny Smith  <dannysmith@users.sourceforge.net>
6458
6459         * config/i386/cygming.h (PREFERRED_DEBUGGING_TYPE): Define to
6460         DWARF2_DEBUG on 32 bit target too.
6461         (DWARF2_UNWIND_INFO): Reorganize 64-bit vs 32-bit definition. 
6462
6463 2007-07-11  Nick Clifton  <nickc@redhat.com>
6464
6465         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Provide alternative
6466         version for 64-bit hosts.
6467
6468 2007-07-10  David Daney  <ddaney@avtrex.com>
6469
6470         * config/mips/mips.h (ISA_HAS_SYNCI): New target capability
6471         predicate.
6472         (INITIALIZE_TRAMPOLINE): Emit clear_cache insn instead of  library
6473         call.
6474         * config/mips/mips.c (mips_expand_synci_loop): New function.
6475         * config/mips/mips.md (UNSPEC_CLEAR_HAZARD): New constant.
6476         (UNSPEC_RDHWR): Same.
6477         (UNSPEC_SYNCI): Same.
6478         (UNSPEC_SYNC): Same.
6479         (clear_cache): New expand.
6480         (sync): New insn.
6481         (synci): Same.
6482         (rdhwr): Same.
6483         (clear_hazard): Same.
6484         * config/mips/mips-protos.h (mips_expand_synci_loop): Declare
6485         function.
6486         * testsuite/gcc.target/mips/clear-cache-1.c: New test.
6487         * testsuite/gcc.target/mips/clear-cache-2.c: New test.
6488
6489 2007-07-10  Ian Lance Taylor  <iant@google.com>
6490
6491         * emit-rtl.c (gen_reg_rtx): Check can_create_pseudo_p rather than
6492         no_new_pseudos.
6493
6494 2007-07-10  David Daney  <ddaney@avtrex.com>
6495
6496         * builtins.def (BUILT_IN_CLEAR_CACHE): New builtin.
6497         * builtins.c (expand_builtin___clear_cache): New function.
6498         (expand_builtin): Call expand_builtin___clear_cache for
6499         BUILT_IN_CLEAR_CACHE case.
6500         * doc/extend.texi (__builtin___clear_cache): Document new builtin.
6501         * doc/md.texi (clear_cache): Document new instruction pattern.
6502         * testsuite/gcc.dg/builtins-64.c: New test.
6503
6504 2007-07-11  Hans-Peter Nilsson  <hp@axis.com>
6505
6506         * config/cris/cris.md ("movsi"): Fix typo in last change.
6507
6508 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
6509
6510         PR 32617
6511         * c-common.c (c_alignof_expr): Look at DECL_ALIGN of
6512         FUNCTION_DECLs.
6513         (handle_aligned_attribute): Allow use on FUNCTION_DECLs.
6514         * varasm.c (assemble_start_function): Honor DECL_ALIGN
6515         for FUNCTION_DECLs.  Don't use align_functions_log if
6516         DECL_USER_ALIGN.
6517         * print-tree.c (print_node): Print DECL_ALIGN and DECL_USER_ALIGN
6518         even for FUNCTION_DECLs.
6519         * c-decl.c (merge_decls): Propagate DECL_ALIGN even for
6520         FUNCTION_DECLs.
6521         * tree.h (DECL_ALIGN): Update for new location of 'align'.
6522         (DECL_FUNCTION_CODE): Update for new location and name of
6523         'function_code'.
6524         (DECL_OFFSET_ALIGN): Update for new location of 'off_align'.
6525         (struct tree_decl_common): Move 'align' and 'off_align' out
6526         of union, ensure they're still on a 32-bit boundary.  Remove
6527         other fields in union 'u1'.
6528         (struct tree_function_decl): Add field 'function_code' replacing
6529         'u1.f' in tree_decl_common.
6530         * tree.c (build_decl_stat): Set initial value of DECL_ALIGN.
6531         * doc/extend.texi (Function Attributes): Add 'aligned' attribute.
6532         (Variable Attributes): Cross-reference 'aligned' attribute
6533         to Function Attributes.
6534         * flags.h (force_align_functions_log): Delete.
6535         * toplev.c (force_align_functions_log): Delete.
6536
6537 2007-07-10  Uros Bizjak  <ubizjak@gmail.com>
6538
6539         PR target/32708
6540         * config/i386/sse.md (vec_concatv2di): Disable for TARGET_64BIT.
6541         (*vec_concatv2di_rex): New insn pattern.
6542
6543 2007-07-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
6544
6545         PR target/32538
6546         * config/mips/iris6.h (LIBGCC_SPEC): Add libm.
6547
6548 2007-07-10  Ian Lance Taylor  <iant@google.com>
6549
6550         Replace no_new_pseudos in backends.
6551         * rtl.h (can_create_pseudo_p): Define.
6552         * config/darwin.c (machopic_indirect_data_reference): Use
6553         can_create_pseudo_p () instead of no_new_pseudos.
6554         (machopic_indirect_data_reference): Likewise.
6555         (machopic_legitimize_pic_address): Likewise.
6556         * config/alpha/alpha.c (alpha_legitimize_address): Likewise.
6557         (alpha_emit_set_const_1): Likewise.
6558         (alpha_emit_set_const): Likewise.
6559         (alpha_emit_conditional_move): Likewise.
6560         (alpha_split_conditional_move): Likewise.
6561         * config/alpha/alpha.md (various splitters): Likewise.
6562         (movti): Likewise.
6563         * config/arm/arm.c (legitimize_pic_address): Likewise.
6564         (arm_load_pic_register): Likewise.
6565         * config/arm/arm.md (addsi3, subsi3, andsi3, iorsi3): Likewise.
6566         (movdi, movsi, movhi, movqi, movsf, movdf): Likewise.
6567         * config/bfin/bfin.c (legitimize_pic_address): Likewise.
6568         * config/cris/cris.c (cris_expand_pic_call_address): Likewise.
6569         * config/cris/cris.md (movsi): Likewise.
6570         * config/frv/frv.md (symGOT2reg_hilo): Likewise.
6571         (symGOTOFF2reg_hilo): Likewise.
6572         (symGPREL2reg, symGPREL2reg_hilo): Likewise.
6573         * config/h8300/h8300.md (insv, extzv): Likewise.
6574         * config/i386/i386.c (ix86_expand_move): Likewise.
6575         (ix86_expand_vector_move): Likewise.
6576         (ix86_prepare_fp_compare_args): Likewise.
6577         (ix86_expand_carry_flag_compare): Likewise.
6578         * config/i386/i386.md (tls_dynamic_gnu2_32): Likewise.
6579         (tls_dynamic_gnu2_combine_32): Likewise.
6580         (tls_dynamic_gnu2_64, tls_dynamic_gnu2_combine_64): Likewise.
6581         * config/ia64/ia64.c (ia64_expand_move): Likewise.
6582         (ia64_expand_movxf_movrf): Likewise.
6583         * config/m32c/m32c.c (m32c_prepare_move): Likewise.
6584         (m32c_split_move): Likewise.
6585         (m32c_expand_insv): Likewise.
6586         * config/m68k/m68k.md (movsi): Likewise.
6587         * config/mips/mips.c (mips_force_temporary): Likewise.
6588         (mips_split_symbol): Likewise.
6589         (mips_move_integer): Likewise.
6590         (mips_legitimize_const_move): Likewise.
6591         * config/mn10300/mn10300.md (movsi): Likewise.
6592         * config/pa/pa.c (emit_move_sequence): Likewise.
6593         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
6594         (rs6000_got_register): Likewise.
6595         (create_TOC_reference): Likewise.
6596         (rs6000_machopic_legitimize_pic_address): Likewise.
6597         * config/rs6000/rs6000.md (add<mode>3): Likewise.
6598         (various splitters): Likewise.
6599         (iorsi3, xorsi3, iordi3, xordi3): Likewise.
6600         (movsi_got): Likewise.
6601         * config/s390/s390.c (emit_symbolic_move): Likewise.
6602         * config/s390/s390.md (movhi, movqi): Likewise.
6603         (load_multiple, store_multiple): Likewise.
6604         * config/score/score.c (score_force_temporary): Likewise.
6605         * config/sh/sh.c (prepare_move_operands): Likewise.
6606         (prepare_cbranch_operands): Likewise.
6607         (emit_fpu_switch): Likewise.
6608         (fpscr_set_from_mem): Likewise.
6609         * config/sh/sh.md (movdicc, movsicc, movsicc_umin): Likewise.
6610         (adddi3, subsi3): Likewise.
6611         (various splitters): Likewise.
6612         (divsi_inv_fp_combine): Likewise.
6613         (symGOT_load, symGOTOFF2reg, symDTPOFF2reg): Likewise.
6614         (seq, slt, sle, sgt, sge, sgtu, sltu, sleu, sgeu): Likewise.
6615         (sne): Likewise.
6616         * config/sh/predicates.md (xor_operand): Likewise.
6617         * config/sparc/sparc.c (legitimize_tls_address): Likewise.
6618         * config/sparc/sparc.md (movsi_pic_label_ref): Likewise.
6619         (movdi_pic_label_ref): Likewise.
6620         * config/spu/spu.c (spu_split_immediate): Likewise.
6621         * config/alpha/alpha.md (various splitters): Remove test
6622         !no_new_pseudos || reload_completed.
6623         * config/ia64/ia64.c (ia64_output_mi_thunk): Don't set
6624         no_new_pseudos.
6625         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
6626         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
6627         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
6628         * config/score/score.c (th_output_mi_thunk): Likewise.
6629         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
6630         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
6631
6632 2007-07-10  Kaz Kojima  <kkojima@gcc.gnu.org>
6633
6634         PR rtl-optimization/32664
6635         * mode-switching.c (create_pre_exit): Skip barrier insns.
6636
6637 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
6638
6639         * tree-scalar-evolution.c (scev_const_prop): Add arguments to
6640         force_gimple_operand_bsi.
6641         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr,
6642         rewrite_use_compare): Ditto.
6643         * tree-ssa-address.c (gimplify_mem_ref_parts, create_mem_ref):
6644         Ditto.
6645         * tree-ssa-ifcombine.c (ifcombine_ifandif): Ditto.
6646         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
6647         * lambda-code.c (replace_uses_equiv_to_x_with_y): Ditto.
6648         * tree-profile.c (prepare_instrumented_value,
6649         tree_gen_interval_profiler, tree_gen_pow2_profiler,
6650         tree_gen_one_value_profiler, tree_gen_ic_profiler,
6651         tree_gen_ic_func_profiler, tree_gen_average_profiler,
6652         tree_gen_ior_profiler): Ditto.
6653         * tree-ssa-reassoc.c (negate_value): Ditto.
6654         * matrix-reorg.c (transform_access_sites, transform_allocation_sites):
6655         Use force_gimple_operand_bsi.
6656         * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Ditto.
6657         * tree-if-conv.c (add_to_dst_predicate_list,
6658         find_phi_replacement_condition): Ditto.
6659         * gimplify.c (force_gimple_operand_bsi): Add before and m arguments.
6660         Call mark_symbols_for_renaming for new statements.
6661         * tree-flow.h (force_gimple_operand_bsi): Declaration changed.
6662
6663 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
6664
6665         * cfghooks.c (remove_edge): New function.
6666         (redirect_edge_and_branch, remove_branch, merge_blocks): Updated
6667         loop exit rescans.
6668         * cfghooks.h (remove_edge): Declare.
6669         * cfg.c (remove_edge): Renamed to remove_edge_raw.
6670         * basic-block.h (remove_edge): Declaration changed to remove_edge_raw.
6671
6672 2007-07-09  Wolfgang Gellerich  <gellerich@de.ibm.com>
6673
6674         * optabs.h: Added declaration for signbit_optab.  
6675         * optabs.c: (init_optabs): Added initialization for signbit_optab.
6676         * genoptinit.c (optabs): Added entry for signbit insns.  
6677         * builtins.c (expand_builtin_signbit): Added code to use a signbit
6678         insn, if available.  
6679         * config/s390/s390.h (S390_TDC_SIGNBIT_SET): New constant.  
6680         * config/s390/s390.md (signbit<mode>2): New expander.  
6681
6682 2007-07-09  Richard Guenther  <rguenther@suse.de>
6683
6684         PR middle-end/32698
6685         * fold-const.c (fold_plusminus_mult_expr): Move constant
6686         arguments second to allow decomposing.
6687
6688 2007-07-09  Alexandre Oliva  <aoliva@oliva.athome.lsd.ic.unicamp.br>
6689
6690         Revert:
6691         2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
6692         PR debug/23551
6693         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
6694         Disregard DECL_FROM_INLINE.
6695
6696 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
6697
6698         PR target/27855
6699         * doc/invoke.texi: Add ftree-reassoc flag.
6700         * common.opt (ftree-reassoc): New flag.
6701         * tree-ssa-reassoc.c (gate_tree_ssa_reassoc): New static function.
6702         (struct tree_opt_pass pass_reassoc): Use gate_tree_ssa_reassoc.
6703
6704 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
6705
6706         PR tree-optimization/32681
6707         * tree-if-conv.c (find_phi_replacement_condition): Use the condition
6708         saved in second_edge->aux when first_bb is a loop header.
6709
6710 2007-07-09  Jan HUbicka  <jh@suse.cz>
6711
6712         * cse.c (cse_insn): Avoid invalid sharing on trial replacement.
6713
6714 2007-07-09  Richard Guenther  <rguenther@suse.de>
6715
6716         * c-decl.c (start_function): Do not promote return type.
6717
6718 2007-07-08  Daniel Franke  <franke.daniel@gmail.com>
6719
6720         * function.c (do_warn_unused_parameter): Do not warn if
6721         TREE_NO_WARNING is set.
6722
6723 2007-07-08  Andreas Schwab  <schwab@suse.de>
6724
6725         * doc/invoke.texi (DEC Alpha/VMS Options): Fix typo.
6726
6727 2007-07-08  Sandra Loosemore  <sandra@codesourcery.com>
6728
6729         Revert this patch:
6730         2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
6731
6732         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
6733         apply to assembly language, too.
6734         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
6735
6736 2007-07-07  Daniel Berlin  <dberlin@dberlin.org>
6737
6738         Revert (note the sccvn portions are *not* reverted)
6739         2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
6740
6741         Fix PR tree-optimization/23488
6742
6743         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
6744         handles.
6745         * tree-flow-inline.h (get_value_handle): Ditto.
6746         * tree-ssa-pre.c (decl_vh_map): New.
6747         (decl_node_pool): New.
6748         (can_value_number_operation): Support DECL_P.
6749         (can_PRE_operation): Ditto.
6750         (create_expression_by_pieces): Ditto.
6751         (find_existing_value_expr): Modify to differnetiate between
6752         addressing and top level.
6753         (create_value_handle_for_expr): Handle DECL's.
6754         (poolify_tree): Ditto.
6755         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
6756         (make_values_for_stmt): Handle DECL's properly.
6757         (init_pre): Reorg to not init useless things during FRE.
6758         (fini_pre): Ditto.
6759         * tree-flow.h: Include pointer-set.h.
6760         (decl_vh_map): Declare.
6761         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
6762
6763 2007-07-07 Eric Weddington  <eweddington@cso.atmel.com>
6764
6765         * config/avr/constraints.md (define_memory_constraint "Q"): Fix
6766         the constraint description.
6767         * doc/md.texi: Update documentation of AVR constraints.
6768
6769 2007-07-07  Kazu Hirata  <kazu@codesourcery.com>
6770
6771         * auto-inc-dec.c, config/arm/arm.c,
6772         config/m32r/constraints.md, config/mips/mips.md,
6773         config/rs6000/rs6000.c, cselib.c, dce.c, df-core.c,
6774         df-problems.c, df-scan.c, df.h, dse.c, gimplify.c,
6775         tree-if-conv.c, tree-ssa-sccvn.c, tree-ssa.c: Fix comment
6776         typos.  Follow spelling conventions.
6777         * doc/invoke.texi, doc/rtl.texi: Fix typos.
6778
6779         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
6780         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
6781
6782         * tree-ssa-operands.c (realloc_vop, realloc_vdef,
6783         realloc_vuse): Remove.
6784         * tree-ssa-operands.h: Remove the prototype for realloc_vdef
6785         and realloc_vuse.
6786
6787 2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
6788
6789         Fix PR tree-optimization/23488
6790
6791         * tree-ssa-sccvn.c (expr_has_constants): Handle tcc_declaration.
6792         (try_to_simplify): Ditto.
6793         (visit_use): Ditto.
6794         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
6795         handles.
6796         * tree-flow-inline.h (get_value_handle): Ditto.
6797         * tree-ssa-pre.c (decl_vh_map): New.
6798         (decl_node_pool): New.
6799         (can_value_number_operation): Support DECL_P.
6800         (can_PRE_operation): Ditto.
6801         (create_expression_by_pieces): Ditto.
6802         (find_existing_value_expr): Modify to differnetiate between
6803         addressing and top level.
6804         (create_value_handle_for_expr): Handle DECL's.
6805         (poolify_tree): Ditto.
6806         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
6807         (make_values_for_stmt): Handle DECL's properly.
6808         (init_pre): Reorg to not init useless things during FRE.
6809         (fini_pre): Ditto.
6810         * tree-flow.h: Include pointer-set.h.
6811         (decl_vh_map): Declare.
6812         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
6813                 
6814 2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
6815
6816         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
6817         apply to assembly language, too.
6818         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
6819
6820 2007-07-06  Ian Lance Taylor  <iant@google.com>
6821             Zack Weinberg  <zackw@panix.com>
6822
6823         PR middle-end/32441
6824         * builtins.c (std_expand_builtin_va_start): Don't use make_tree.
6825
6826 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
6827
6828         * config/sh/sh.md (*prefetch_i4): Disable for TARGET_VXWORKS_RTP.
6829         (prefetch): Likewise if "pref" would be used.
6830
6831 2007-07-06  Josh Conner  <jconner@apple.com>
6832
6833         PR middle-end/32602
6834         PR middle-end/32603
6835         * calls.c (store_one_arg): Handle arguments which are partially
6836         on the stack when detecting argument overlap.
6837
6838 2007-07-06  Bernd Schmidt  <bernd.schmidt@analog.com>
6839
6840         * reload1.c (choose_reload_regs): Set reload_spill_index for regs
6841         chosen during find_reloads.
6842
6843 2007-07-06  Richard Guenther  <rguenther@suse.de>
6844
6845         * gimplify.c (gimplify_call_expr): Prefer DECL_ARGUMENTS over
6846         TYPE_ARG_TYPES for verification of argument types.  Use
6847         DECL_ARG_TYPE instead of the PARM_DECL type.  Take excess
6848         parameters as variable arguments.
6849
6850 2007-07-06  Andreas Krebbel  <krebbel1@de.ibm.com>
6851
6852         * libgcc2.h (word_type): Type definition removed.
6853         (cmp_return_type, shift_count_type): Type definitions added.
6854         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
6855         replaced with shift_count_type.
6856         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
6857         cmp_return_type.
6858         * libgcc2.c (__udivmoddi4, __moddi3): Type of local variable c
6859         changed from word_type to Wtype.
6860         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
6861         replaced with shift_count_type.
6862         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
6863         cmp_return_type.
6864         * c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return
6865         and libgcc_shift_count attribute added.
6866         * target-def.h (TARGET_LIBGCC_CMP_RETURN_MODE,
6867         TARGET_LIBGCC_SHIFT_COUNT_MODE): New target hooks defined.
6868         (TARGET_INITIALIZER): New target hooks added.
6869         * targhooks.c (default_libgcc_cmp_return_mode,
6870         default_libgcc_shift_count_mode): Default implementations for the new
6871         target hooks added.
6872         * targhooks.h (default_libgcc_cmp_return_mode,
6873         default_libgcc_shift_count_mode): Function prototypes added.
6874         * target.h (struct gcc_target): Fields for the new target hooks added.
6875         * optabs.c (expand_binop): Use shift_count_mode when expanding shift
6876         as library call.
6877         (prepare_cmp_insn): Use cmp_return_mode when expanding comparison as
6878         library call.
6879
6880         * doc/tm.texi (TARGET_LIBGCC_CMP_RETURN_MODE,
6881         TARGET_LIBGCC_SHIFT_COUNT_MODE): Documentation added.
6882
6883         * config/s390/s390.c (s390_libgcc_cmp_return_mode,
6884         s390_libgcc_shift_count_mode): Functions added.
6885         (TARGET_LIBGCC_CMP_RETURN_MODE, TARGET_LIBGCC_SHIFT_COUNT_MODE):
6886         Target hooks defined.
6887
6888 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
6889
6890         * config/mips/mips.c (compute_frame_size): Restore the original
6891         gp_sp_offset for !GENERATE_MIPS16E_SAVE_RESTORE and remove the
6892         fp_size term from the GENERATE_MIPS16E_SAVE_RESTORE calculation.
6893         Document why the difference is needed.
6894
6895 2007-07-06  Richard Guenther  <rguenther@suse.de>
6896
6897         * c-common.c (boolean_increment): Use correctly typed
6898         constant.
6899
6900 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
6901
6902         * config/mips/mips.c (mips16e_save_restore_pattern_p): Check that
6903         the topmost argument register is not also included in the save mask.
6904         (mips16e_collect_argument_save_p): Take a pointer to the argument
6905         register, rather than a pointer to the number of arguments.
6906         (mips16e_collect_argument_saves): Only include argument saves
6907         that aren't in the register mask.
6908
6909 2007-07-06  Uros Bizjak  <ubizjak@gmail.com>
6910
6911         PR rtl-optimization/32450
6912         * function.c (thread_prologue_and_epilogue_insns): Emit blockage insn
6913         to ensure that instructions are not moved into the prologue when
6914         profiling is on.  Remove unused prologue_end variable.
6915         (expand_function_end): Emit blockage insn instead of ASM_INPUT rtx
6916         as a scheduling barrier.
6917
6918 2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
6919
6920         PR debug/23551
6921         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
6922         Disregard DECL_FROM_INLINE.
6923
6924 2007-07-05  Adam Nemet  <anemet@caviumnetworks.com>
6925
6926         * rtlanal.c (num_sign_bit_copies1): Improve cases of ANDing or
6927         IORing with a constant.
6928
6929 2007-07-05  Seongbae Park  <seongbae.park@gmail.com>
6930
6931         PR rtl-optimization/32475
6932         * df-scan.c (df_def_record_1): Add a use of the stack pointer
6933         for every definition of the stack pointer.
6934
6935 2007-07-05  Richard Earnshaw  <rearnsha@arm.com>
6936
6937         * arm.c (vfp3_const_double_index): Copy signed results of
6938         REAL_VALUE_TO_INT into unsigned vars.
6939
6940 2007-07-05  Richard Guenther  <rguenther@suse.de>
6941
6942         PR middle-end/32639
6943         * alias.c (get_alias_set): Tread METHOD_TYPE the same as
6944         FUNCTION_TYPE.
6945         * tree-ssa.c (useless_type_conversion_p): Check canonical
6946         types early.
6947
6948 2007-07-05 Anatoly Sokolov <aesok@post.ru>
6949
6950         * config/avr/avr.md (zero_extendqihi2, zero_extendqisi2, 
6951         zero_extendhisi2): Change to define_insn_and_split. 
6952         (zero_extendqidi2, zero_extendhidi2, zero_extendsidi2): New.
6953
6954 2007-07-05  Paolo Bonzini  <bonzini@gnu.org>
6955
6956         * function.c (match_asm_constraints_1, rest_of_match_asm_constraints,
6957         pass_match_asm_constraints): New.
6958         * passes.c (init_optimization_passes): Add new pass.
6959         * stmt.c (expand_asm_operands): Set cfun->has_asm_statement.
6960         * function.h (struct function): Add has_asm_statement bit.
6961         (current_function_has_asm_statement): New.
6962         * tree-pass.h (pass_match_asm_constraints): New.
6963
6964 2007-07-05  Richard Sandiford  <rsandifo@nildram.co.uk>
6965
6966         * config/mips/mips.c (mips_file_start): Avoid declaration
6967         after code.
6968
6969 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
6970
6971         * optabs.c (expand_binop_directly): Fix signed/unsigned comparison.
6972
6973 2007-07-05  Uros Bizjak  <ubizjak@gmail.com>
6974
6975         * rtl.def (NOTE): Change print format string to print
6976         operand 5 as a note insn name.
6977
6978 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
6979             David Ung  <davidu@mips.com>
6980
6981         * config/mips/mips.c (mips_cpu_info): Add 4ksc and 4ksd processors.
6982         * doc/invoke.texi: (MIPS Options): Document them.
6983
6984 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
6985             David Ung  <davidu@mips.com>
6986
6987         Add support for SmartMIPS ASE.
6988
6989         * optabs.c (expand_binop_directly): New, broken out from...
6990         (expand_binop): Here.  Make it try rotating in the other
6991         direction even when the second operand isn't constant.
6992         * config/mips/mips.md (*lwxs): New.
6993         * config/mips/mips.opt (msmartmips): New.
6994         * config/mips/mips.c (mips_lwxs_address_p): New.
6995         (mips_rtx_costs): Make it recognize scaled indexed addressing.
6996         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
6997         __mips_smartmips when compiling for TARGET_SMARTMIPS.
6998         (ISA_HAS_ROR): Define for TARGET_SMARTMIPS.
6999         (ISA_HAS_LWXS): New.
7000         (ASM_SPEC): Add -msmartmips/-mno-smartmips.
7001         * doc/invoke.texi (MIPS Options): Document -msmartmips/-mno-smartmips.
7002         * testsuite/gcc.target/mips/smartmips-lwxs.c: New test case.
7003         * testsuite/gcc.target/mips/smartmips-ror-1.c: New test case.
7004         * testsuite/gcc.target/mips/smartmips-ror-2.c: New test case.
7005         * testsuite/gcc.target/mips/smartmips-ror-3.c: New test case.
7006         * testsuite/gcc.target/mips/smartmips-ror-4.c: New test case.
7007
7008 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
7009
7010         * tree-vectorizer.c (new_loop_vec_info): Initialize
7011         LOOP_VINFO_COST_MODEL_MIN_ITERS.
7012         * tree-vectorizer.h (_loop_vec_info): Added new filed
7013         min_profitable_iters.
7014         (LOOP_VINFO_COST_MODEL_MIN_ITERS): New access macro to above new field.
7015         (TARG_SCALAR_TO_VEC_COST): Define cost of scalar to vector operation.
7016         * tree-vect-analyze.c (vect_analyze_operations): Set
7017         LOOP_VINFO_COST_MODEL_MIN_ITERS.
7018         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Use
7019         VEC_length to determine if there are any LOOP_VINFO_MAY_MISALIGN_STMTS.
7020         Fix calculation of peel_iters_prologue. Move consideration of epilogue
7021         and prologue cost to after they are computed.
7022         (vect_model_induction_cost): Use TARG_SCALAR_TO_VEC_COST instead of
7023         TARG_VEC_STMT_COST.
7024         (vect_model_simple_cost): Takes additional argument dt. Consider cost
7025         of creating vectors from scalars according to dt.
7026         (vect_model_store_cost): Likewise.
7027         (vectorizable_call): Use dt array instead of scalar dt. Call
7028         vect_model_simple_cost with additional argument dt.
7029         (vectorizable_assignment): Likewise.
7030         (vectorizable_operation): Likewise.
7031         (vectorizable_type_demotion): Likewise.
7032         (vectorizable_type_promotion): Likewise.
7033         (vectorizable_store): Use dt array instead of scalar dt. Call
7034         vect_model_store_cost with additional argument dt.
7035         (vect_do_peeling_for_loop_bound): Don't call
7036         vect_estimate_min_profitable_iters. Instead, lookup
7037         LOOP_VINFO_COST_MODEL_MIN_ITERS. Don't always print
7038         "may not be profitable".
7039
7040 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
7041
7042         PR testsuite/32014
7043         * config/rs6000/altivec.md (UNSPEC_VUPKHS_V4SF, UNSPEC_VUPKLS_V4SF):
7044         (UNSPEC_VUPKHU_V4SF, UNSPEC_VUPKLU_V4SF): New.
7045         (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi): New patterns.
7046         (vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): New patterns. 
7047
7048 2007-07-05  Zdenek Dvorak  <dvorakz@suse.cz>
7049
7050         * config/i386/i386.c (ix86_address_cost): Do not consider more complex
7051         addressing modes cheaper.
7052
7053 2007-07-05  Alexandre Oliva  <aoliva@redhat.com>
7054
7055         * dwarf2out.c (dw_ranges_by_label_ref): New typedef.
7056         (dw_ranges_struct): Rename block_num to num.  Adjust.
7057         (dw_ranges_by_label_struct): New.
7058         (ranges_by_label, ranges_by_label_allocated,
7059         ranges_by_label_in_use): New variables.
7060         (add_ranges_num): Factored most of the code out of...
7061         (add_ranges): ... this one.  Rewrite in terms of the former.
7062         (add_ranges_by_labels): New.
7063         (output_ranges): Output by-label ranges.
7064         (dwarf2out_finish): Output range for multiple-section
7065         compile_unit.  Output standard DW_AT_low_pc in addition to
7066         unexpected DW_AT_entry_pc.
7067
7068 2007-07-04  Daniel Berlin  <dberlin@dberlin.org>
7069
7070         PR tree-optimization/32604
7071         PR tree-optimization/32606
7072
7073         * tree-ssa-pre.c (bb_bitmap_sets): Removed antic_safe_loads.
7074         (compute_antic_safe): Removed.
7075         (ANTIC_SAFE_LOADS): Ditto.
7076         (compute_antic_aux): Don't print ANTIC_SAFE_LOADS.
7077         (execute_pre): Don't call compute_antic_safe.
7078         (vuse_equiv): New function.
7079         (make_values_for_stmt): Use it
7080         * tree-ssa-sccvn.c (set_ssa_val_to): Remove assert, since it is
7081         not always true.
7082
7083 2007-07-04 Anatoly Sokolov <aesok@post.ru>
7084
7085         PR target/31331
7086         * config/avr/avr.c (avr_naked_function_p): Handle receiving a type
7087         rather than a decl. 
7088         (avr_attribute_table): Make "naked" attribute apply to function types
7089         rather than to decls.
7090         (avr_handle_fntype_attribute): New function.
7091
7092 2007-07-04  Joseph Myers  <joseph@codesourcery.com>
7093
7094         * target-def.h (TARGET_INITIALIZER): Remove trailing whitespace
7095         after \.
7096
7097 2007-07-04  David Ung  <davidu@mips.com>
7098             Joseph Myers  <joseph@codesourcery.com>
7099
7100         * config/mips/mips.md (type): Add logical, signext and move.
7101         (one_cmpl<mode>2, *and<mode>3, *and<mode>3_mips16, *ior<mode>3,
7102         *ior<mode>3_mips16, two unnamed insns after *ior<mode>3_mips16,
7103         *nor<mode>3, "Combiner patterns to optimize truncate/zero_extend
7104         combinations", *zero_extend<SHORT:mode><GPR:mode>2,
7105         *zero_extendqihi2, *extend<SHORT:mode><GPR:mode>2_mips16e,
7106         *extend<SHORT:mode><GPR:mode>2_se<SHORT:size>, *movdi_64bit,
7107         *movdi_64bit_mips16, *movsi_internal, *movsi_mips16, movcc,
7108         *movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16,
7109         *movsf_hardfloat, *movsf_softfloat, *movsf_mips16,
7110         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit,
7111         movv2sf_hardfloat_64bit): Use the new types.
7112         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16,
7113         *movdf_softfloat, *movdf_mips16): Use "multi".
7114         (extendqihi2): Replace with a define_expand.
7115         (*extendqihi2_mips16e, *extendqihi2, *extendqihi2_seb): New.
7116         Based on extend<SHORT:mode><GPR:mode>2 patterns.
7117         * config/mips/74k.md (r74k_int_logical): New reservation and
7118         bypasses.
7119         (r74k_int_arith): Remove "slt".
7120         * config/mips/24k.md, config/mips/4130.md, config/mips/4k.md,
7121         config/mips/5400.md, config/mips/5500.md, config/mips/5k.md,
7122         config/mips/7000.md, config/mips/9000.md, config/mips/generic.md,
7123         config/mips/sb1.md, config/mips/sr71k.md: Add new types to
7124         reservations for "arith".
7125
7126 2007-07-04  Richard Guenther  <rguenther@suse.de>
7127
7128         * tree-ssa.c (useless_type_conversion_p): Add handling for
7129         scalar float and vector types.  Only call the types_compatible_p
7130         langhook for aggregate types as last resort.  Follow the
7131         rules.
7132
7133 2007-07-04  Richard Guenther  <rguenther@suse.de>
7134
7135         * tree-inline.c (estimate_num_insns_1): Treat CONVERT_EXPR
7136         the same as NOP_EXPR.
7137
7138 2007-07-04  Nick Clifton  <nickc@redhat.com>
7139
7140         * target.h (struct gcc_target): Add target_help field.
7141         * target-def.h (TARGET_HELP): New.
7142         (TARGET_INITIALIZER): Use TARGET_HELP.
7143         * opts.c (command_handle_option): Invoke target_help function, if
7144         defined, when the user has specified --target-help on the command
7145         line.
7146         * doc/invoke.texi: Mention that --target-help might print
7147         additional information.
7148         * doc/tm.texi: Document TARGET_HELP hook.
7149
7150         * arm.c (TARGET_HELP): Override default definition.
7151         (arm_target_help): New - display a wrapped list of cores and
7152         architectures supported.
7153
7154 2007-07-04  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7155
7156         * config/v850/v850.c (expand_prologue): Make sure
7157         GEN_INT() argument is sign extended rather than zero extended.
7158         (expand_epilogue): Likewise.
7159         (output_move_double): Delete.
7160         * config/v850/v850-protos.h (output_move_double): Delete.
7161         * config/v850/v850.md (movdi): Delete.
7162         (*movdi_internal): Delete.
7163         (movdf): Delete.
7164         (*movdf_internal): Delete.
7165
7166 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
7167
7168         * config/sh/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Reject -mrelax
7169         unless compiling RTP PIC.
7170
7171 2007-07-04  Richard Guenther  <rguenther@suse.de>
7172
7173         PR tree-optimization/32482
7174         * tree-ssa-ifcombine.c (recognize_single_bit_test): Use the
7175         original ssa name if we didn't find a shift expression.
7176         Fix shift constant for bit zero test.
7177
7178 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
7179
7180         * config/sh/lib1funcs.asm (ic_invalidate): Align constant pool.
7181
7182 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
7183
7184         * config.gcc (arm-wrs-vxworks): Don't include svr4.h.
7185         * config/vxworks.h (PTRDIFF_TYPE, SIZE_TYPE, TARGET_POSIX_IO): Define.
7186         * config/arm/vxworks.h (ASM_SPEC): Delete.
7187         (SUBTARGET_EXTRA_ASM_SPEC): Define.
7188
7189 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
7190
7191         * tree-data-ref.h (data_dependence_relation): New flag reversed_p.
7192         (DDR_REVERSED_P): New.
7193         * tree-data-ref.c (initialize_data_dependence_relation,
7194         build_classic_dist_vector): Set DDR_REVERSED_P.
7195
7196 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
7197
7198         PR middle-end/32457
7199         * tree-data-ref.c (analyze_siv_subscript_cst_affine,
7200         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
7201         init_omega_for_ddr_1): Use non conservative number of iterations
7202         estimations.
7203         (analyze_subscript_affine_affine): Use HOST_WIDE_INT instead of int.
7204         (analyze_siv_subscript): Remove FIXME and reinitialization of 
7205         last_conflicts to chrec_dont_know.
7206         * testsuite/gfortran.dg/vect/pr32457.f90: New.
7207
7208 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
7209
7210         * tree.c (maybe_canonicalize_argtypes): Improve description.
7211
7212 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
7213
7214         * tree.c (maybe_canonicalize_argtypes): New.
7215         (build_function_type): Set canonical type.
7216         (build_method_type_directly): Ditto.
7217         (reconstruct_complex_type): Rebuild the METHOD_TYPE node
7218         properly.
7219
7220 2007-07-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7221
7222         * tree-ssa-loop-ivopts.c (strip_offset_1): Treat POINTER_PLUS_EXPR
7223         like PLUS_EXPR.
7224         (rewrite_use_nonlinear_expr): Likewise.
7225
7226 2007-07-03  Seongbae Park  <seongbae.park@gmail.com>
7227
7228         * rtl.def (UNSPEC, USE, CLOBBER): More comments.
7229
7230 2007-07-04  Ben Elliston  <bje@au.ibm.com>
7231
7232         * dwarf2out.c: Move DWARF2 abbreviation glossary closer to the top
7233         of this file.
7234
7235         * c-objc-common.c (c_types_compatible_p): Fix indentation.
7236
7237         * doc/tm.texi (Run-time Target): Capitalise "CPU".
7238         (Exception Handling): Likewise.
7239
7240 2007-07-03  Jan Hubicka  <jh@suse.cz>
7241
7242         * ifcvt.c (find_cond_trap): Avoid invalid RTL sharing.
7243
7244 2007-07-03  Eric Christopher  <echristo@apple.com>
7245
7246         * doc/cppopts.texi: Add conflicting option note to -dM.
7247         * doc/invoke.texi: Add note about possible conflicts with
7248         -E for -dCHARS and note that -dM will not produce
7249         any results if there is no machine dependent reorg.
7250         
7251 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
7252
7253         * tree.h (DECL_ALIGN): Back out previous change.
7254
7255 2007-07-03  Joseph Myers  <joseph@codesourcery.com>
7256
7257         * configure.ac: Test for .dtprelword support on MIPS.
7258         * configure, config.in: Regenerate.
7259         * config/mips/mips.c (mips_output_dwarf_dtprel): New.
7260         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
7261
7262 2007-07-03  Julian Brown  <julian@codesourcery.com>
7263
7264         * config.gcc (with_fpu): Allow --with-fpu=vfp3.
7265         * config/arm/aout.h (REGISTER_NAMES): Add D16-D31.
7266         * config/arm/aof.h (REGISTER_NAMES): Add D16-D31.
7267         * config/arm/arm.c (FL_VFPV3): New flag for VFPv3 processor
7268         capability.
7269         (all_fpus): Add FPUTYPE_VFP3.
7270         (fp_model_for_fpu): Add VFPv3 field.
7271         (arm_rtx_costs_1): Give cost to VFPv3 constants.
7272         (vfp3_const_double_index): New function. Return integer index of
7273         VFPv3 constant suitable for fconst[sd] insns, or -1 if constant
7274         isn't suitable.
7275         (vfp3_const_double_rtx): New function. True if VFPv3 is enabled
7276         and argument represents a valid RTX for a VFPv3 constant.
7277         (vfp_output_fldmd): Split fldmd with > 16 registers in the list into
7278         two instructions.
7279         (vfp_emit_fstmd): Similar, for fstmd.
7280         (arm_print_operand): Implement new code 'G' for VFPv3 floating-point
7281         constants, represented as integer indices.
7282         (arm_hard_regno_mode_ok): Use VFP_REGNO_OK_FOR_SINGLE,
7283         VFP_REGNO_OK_FOR_DOUBLE macros.
7284         (arm_regno_class): Handle VFPv3 d0-d7, low, high register split.
7285         (arm_file_start): Set float-abi attribute for VFPv3, and output
7286         correct ".fpu" assembler directive.
7287         (arm_dbx_register_numbering): Add FIXME.
7288         * config/arm/arm.h (TARGET_VFP3): New macro. Target supports VFPv3.
7289         (fputype): Add FPUTYPE_VFP3.
7290         (FIXED_REGISTERS): Add 32 registers for D16-D31.
7291         (CALL_USED_REGISTERS): Likewise.
7292         (CONDITIONAL_REGISTER_USAGE): Add note about conditional definition
7293         of LAST_VFP_REGNUM. Make D16-D31 caller-saved, if present.
7294         (LAST_VFP_REGNUM): Extend available VFP registers for VFPv3.
7295         (D7_VFP_REGNUM): New.
7296         (LAST_LO_VFP_REGNUM, FIRST_HI_VFP_REGNUM, LAST_HI_VFP_REGNUM)
7297         (VFP_REGNO_OK_FOR_SINGLE, VFP_REGNO_OK_FOR_SINGLE)
7298         (VFP_REGNO_OK_FOR_DOUBLE): Define new macros.
7299         (FIRST_PSEUDO_REGISTER): Shift up to 128 to accommodate VFPv3.
7300         (REG_ALLOC_ORDER): Adjust for VFPv3.
7301         (reg_class): Add VFP_D0_D7_REGS, VFP_LO_REGS, VFP_HI_REGS.
7302         (REG_CLASS_NAMES): Add entries corresponding to VFP_D0_D7_REGS,
7303         VFP_LO_REGS, VFP_HI_REGS.
7304         (REG_CLASS_CONTENTS): Likewise. Extend contents for VFP_REGS.
7305         (IS_VFP_CLASS): Define macro.
7306         (SECONDARY_OUTPUT_RELOAD_CLASS, SECONDARY_INPUT_RELOAD_CLASS): Use
7307         IS_VFP_CLASS.
7308         (REGISTER_MOVE_COST): Likewise.
7309         * config/arm/arm-protos.h (vfp3_const_double_rtx): Add prototype.
7310         * config/arm/vfp.md (VFPCC_REGNUM): Redefine as 127.
7311         (*arm_movsi_vfp, *thumb2_movsi_vfp, *movsfcc_vfp)
7312         (*thumb2_movsfcc_vfp, *abssf2_vfp, *negsf2_vfp, *addsf3_vfp)
7313         (*subsf3_vfp, *divsf_vfp, *mulsf_vfp, *mulsf3negsf_vfp)
7314         (*mulsf3addsf_vfp, *mulsf3subsf_vfp, *mulsf3negsfaddsf_vfp)
7315         (*extendsfdf2_vfp, *truncdfsf2_vfp, *truncsisf2_vfp)
7316         (*truncsidf2_vfp, fixuns_truncsfsi2, fixuns_truncdfsi2)
7317         (*floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2)
7318         (floatunssidf2, *sqrtsf2_vfp, *cmpsf_split_vfp)
7319         (*cmpsf_trap_split_vfp, *cmpsf_vfp, *cmpsf_trap_vfp): Use 't'
7320         where appropriate for single-word registers.
7321         (*movsf_vfp, *thumb2_movsf_vfp, *movdf_vfp, *thumb2_movdf_vfp):
7322         As above. Fix type attributes.
7323         * config/arm/constraints.md (register_contraint "t"): Define.
7324         (register_constraint "w"): Change to D0-D15, or D0-D31 for
7325         VFPv3/NEON.
7326         (register_constraint "x"): Define.
7327         (constraint "Dv"): Define.
7328
7329 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
7330
7331         * tree.h (DECL_ALIGN): Prevent use on a FUNCTION_DECL.
7332
7333 2007-07-03  Tom Tromey  <tromey@redhat.com>
7334
7335         * c-parser.c (objc_pq_context): Removed.
7336         (objc_need_raw_identifier): Likewise.
7337         (c_parser) <objc_pq_context>: New field.
7338         <objc_need_raw_identifier>: Likewise.
7339         (OBJC_NEED_RAW_IDENTIFIER): Removed.
7340         (c_lex_one_token): Update.
7341         (c_parser_objc_protocol_definition): Update.
7342         (c_parser_objc_method_definition): Update.
7343         (c_parser_objc_methodproto): Update.
7344         (c_parser_declspecs): Update.
7345
7346 2007-07-03  David Ung  <davidu@mips.com>
7347
7348         * config/mips/mips.c (mips_issue_rate): Return 4 for 74K processors.
7349
7350 2007-07-03  David Ung  <davidu@mips.com>
7351             Richard Sandiford  <richard@codesourcery.com>
7352
7353         * doc/invoke.texi: Document -march=74kf3_2.
7354         * config/mips/mips.h (PROCESSOR_74KF3_2): New processor_type.
7355         (TUNE_74K): Check for it.
7356         * config/mips/mips.c (mips_cpu_info): Add 74kf3_2.
7357         (mips_rtx_cost_data): Add an entry for PROCESSOR_74KF3_2.
7358         * config/mips/mips.md (cpu): Add 74kf3_2.
7359         * config/mips/74k.md (r74k_int_logical, r74k_int_arith, r74k_int_nop)
7360         (r74k_int_cmove, r74k_int_mult, r74k_int_mul3, r74k_int_mfhilo)
7361         (r74k_int_mthilo, r74k_int_div, r74k_int_call, r74k_int_jump)
7362         (r74k_int_load, r74k_int_store, r74k_unknown, r74k_multi): Add
7363         74kf3_2 to the CPU list.
7364         (r74kf3_2_fadd, r74kf3_2_fmove, r74kf3_2_fload, r74kf3_2_fstore)
7365         (r74kf3_2_fmul_sf, r74kf3_2_fmul_df, r74kf3_2_fdiv_sf)
7366         (r74kf3_2_fdiv_df, r74kf3_2_frsqrt_sf, r74kf3_2_frsqrt_df)
7367         (r74kf3_2_fcmp, r74kf3_2_fcvt, r74kf3_2_fxfer_to_c1)
7368         (r74kf3_2_fxfer_from_c1): New insn reservations.
7369
7370 2007-07-03  Richard Sandiford  <richard@codesourcery.com>
7371             David Ung  <davidu@mips.com>
7372
7373         * doc/invoke.texi: Replace -march=24kf with -march=24kf2_1 and
7374         -march=24kx with -march=24kf1_1.  Likewise 24ke[fx], 34k[fx]
7375         and 74k[fx].  Document aliases for the new options.
7376         * config/mips/mips.h (PROCESSOR_24KF): Rename to...
7377         (PROCESSOR_24KF2_1): ...this.
7378         (PROCESSOR_24KX): Rename to...
7379         (PROCESSOR_24KF1_1): ...this.
7380         (PROCESSOR_74KF): Rename to...
7381         (PROCESSOR_74KF2_1): ...this.
7382         (PROCESSOR_74KX): Rename to...
7383         (PROCESSOR_74KF1_1): ...this.
7384         (TUNE_74K): Update PROCESSOR_* names.
7385         * config/mips/mips.c (mips_cpu_info): Add 24kf2_1 as a synonym
7386         for 24kf.  Add 24kf1_1 and 24kfx as synonyms for 24kx.  Likewise
7387         the 24ke*, 34k* and 74k* processors.  Update PROCESSOR_* names.
7388         (mips_rtx_cost_data): Update processor names in comments.
7389         (mips_issue_rate): Update PROCESSOR_* names.
7390         * config/mips/mips.md (cpu): Rename 24kf to 24kf2_1, 24kx to
7391         24kf1_1, 74kf to 74kf2_1 and 74kx to 74kf1_1.
7392         * config/mips/24k.md: Rename FPU-related r24k_* insn reservations
7393         to r24kf2_1_*.  Rename r24kx_* insn reservations to r24kf1_1_*.
7394         Update cpu attribute names.
7395         (r24k_fpu_iss): Rename this reservation to...
7396         (r24kf2_1_fpu_iss): ...this and update all uses.
7397         (r24kx_fpu_iss): Rename this reservation to...
7398         (r24kf1_1_fpu_iss): ...this and update all uses.
7399         * config/mips/74k.md: Rename FPU-related r74kf_* insn reservations
7400         to r74kf2_1_*.  Rename r74kx_* insn reservations to r74kf1_1_*.
7401         Update cpu attribute names.
7402
7403 2007-07-01  Kaz Kojima  <kkojima@gcc.gnu.org>
7404
7405         * config/m32r/constraints.md: New file.
7406         * config/m32r/m32r.c: Include tm-constrs.h.
7407         (small_data_operand): Use satisfies_constraint_* instead of macro.
7408         (addr24_operand, gen_compare): Likewise.
7409         * config/m32r/m32r.h (REG_CLASS_FROM_LETTER): Remove.
7410         (INT8_P, UPPER16_P, UINT32_P, UINT5_P, INVERTED_SIGNED_8BIT,
7411         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
7412         EXTRA_CONSTRAINT): Likewise.
7413         * config/m32r/m32r.md: Include constraints.md.
7414         (*movsi_insn): Use satisfies_constraint_* instead of macro.
7415         (andsi3, iorsi3, xorsi3, seq_insn+1, sne): Likewise.
7416         * config/m32r/predicates.md (conditional_move_operand): Likewise.
7417         (two_insn_const_operand, int8_operand, uint16_operand,
7418         reg_or_int16_operand, reg_or_uint16_operand,
7419         reg_or_cmp_int16_operand, cmp_int16_operand,
7420         seth_add3_operand): Likewise.
7421
7422 2007-07-03  Eric Christopher  <echristo@gmail.com>
7423
7424         * libgcc2.h: Conditionally declare __bswapsi2 and
7425         __bswapdi2.
7426         
7427 2007-07-03  H.J. Lu  <hongjiu.lu@intel.com>
7428
7429         * ddg.c (check_sccs): Define only if ENABLE_CHECKING is
7430         defined.
7431
7432 2007-07-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
7433
7434         PR target/28307
7435         * gthr-posix.h [SUPPORTS_WEAK && GTHREAD_USE_WEAK]
7436         (__gthrw_pragma): Provide default definition.
7437         (__gthrw2): Use it.
7438         * gthr-posix.c (__gthrw_pragma): Define.
7439
7440 2007-07-03  Daniel Berlin  <dberlin@dberlin.org>
7441
7442         * tree-ssa-sccvn.c (set_ssa_val_to): Check for operand_equal_p
7443         before declaring inequality.
7444
7445 2007-07-03  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7446
7447         * combine.c (recog_for_combine): Log the success or failure of
7448           matching new insn patterns against the machine description in
7449           detailed dumps.
7450
7451 2007-07-03  Revital Eres  <eres@il.ibm.com>
7452
7453         * ddg.c (print_sccs): New function.
7454         (check_sccs): New function.
7455         (create_ddg_all_sccs): Use it.
7456         * ddg.h (print_sccs): Declare.
7457         * modulo-sched.c (sms_order_nodes): Call print_sccs.
7458
7459 2007-07-03  Uros Bizjak  <ubizjak@gmail.com>
7460
7461         * targhooks.h (default_mode_for_suffix): New function declaration.
7462         * targhooks.c (default_mode_for_suffix): New default target hook.
7463         * target.h (struct c): New structure in the targetm struct.
7464         (mode_for_suffix): New target hook as part of struct c.
7465         target-def.h (TARGET_C_MODE_FOR_SUFFIX): Define as
7466         default_mode_for_suffix.
7467         (TARGET_C): New define.
7468         * c-lex.c: Include "target.h".
7469         (interpret_float): Use targetm.c.mode_for_suffix to determine
7470         the mode for a given non-standard suffix.
7471         Makefile.in (c-lex.o): Depend on $(TARGET_H).
7472
7473         * config/i386/i386.c (ix86_c_mode_for_suffix): New static function.
7474         (TARGET_C_MODE_FOR_SUFFIX): Define to ix86_c_mode_for_suffix.
7475
7476         * doc/extend.texi (Floating Types): New node.  Document __float80 and
7477         __float128 types.  Document 'w', 'W', 'q' and 'Q' suffixes.
7478
7479 2007-07-03  Kaz Kojima  <kkojima@gcc.gnu.org>
7480
7481         PR target/32506
7482         * config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
7483         predicate instead of target_operand.
7484         (divsi3_i1_media, divsi3_media_2): Likewise.
7485
7486 2007-07-02  Eric Botcazou  <ebotcazou@adacore.com>
7487
7488         * tree.h (alias_sets_might_conflict_p): Rename into
7489         alias_sets_must_conflict_p.
7490         * alias.c (alias_sets_might_conflict_p): Likewise.
7491         (alias_sets_conflict_p): Use it.
7492         (objects_must_conflict_p): Likewise.
7493         * c-common.c (strict_aliasing_warning): Adjust.
7494
7495 2007-07-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7496
7497         * rtlhooks.c (gen_lowpart_if_possible): Check for
7498         invalid subreg before calling gen_lowpart_SUBREG.
7499
7500 2007-07-02  Geoffrey Keating  <geoffk@apple.com>
7501
7502         * config/darwin9.h: Add copyright notice.
7503         (LINK_COMMAND_SPEC): Add comment.
7504         (DARWIN_LIBSYSTEM_HAS_UNWIND): Define.
7505         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Conditionalise on
7506         DARWIN_LIBSYSTEM_HAS_UNWIND.
7507
7508 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
7509
7510         PR libgomp/32468
7511         * omp-low.c (check_combined_parallel): New function.
7512         (lower_omp_parallel): Call it via walk_stmts, set
7513         OMP_PARALLEL_COMBINED if appropriate.
7514         (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
7515         isn't the only statement in WS_ENTRY_BB or OMP_RETURN
7516         the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
7517         don't consider it as combined parallel.
7518
7519 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
7520
7521         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
7522         (gcc_tooldir): Likewise.
7523         * configure: Regenerate.
7524         * Makefile.in (libsubdir_to_prefix): New variable, based on the
7525         old configure.ac gcc_tooldir setting.
7526         (prefix_to_exec_prefix): New variable.
7527         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
7528         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
7529
7530 2007-07-02  Daniel Berlin  <dberlin@dberlin.org>
7531
7532         Fix PR tree-optimization/32583
7533         Fix PR tree-optimization/32584
7534         * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
7535         (phi_translate_set): Use phi_translate directly now.
7536         (make_values_for_stmt): Don't value number RHS if we already know
7537         it is constant.
7538
7539 2007-07-02  Steve Ellcey  <sje@cup.hp.com>
7540             Jim Wilson <wilson@specifix.com>
7541
7542         PR target/31684
7543         * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
7544         copy_insn.
7545
7546 2007-07-02  Sandra Loosemore  <sandra@codesourcery.com>
7547             Richard Sandiford  <richard@codesourcery.com>
7548             Nigel Stephens  <nigel@mips.com>
7549
7550         * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
7551         (mips16e_output_save_restore): Declare.
7552         (mips16e_save_restore_pattern_p): Likewise.
7553         * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
7554         * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
7555         for GENERATE_MIPS16E_SAVE_RESTORE.  Return 0x400 for TARGET_MIPS16
7556         && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
7557         (BITSET_P): New global macro, extracted from...
7558         (mips_for_each_saved_reg): ...here.
7559         (mips16e_save_restore_info): New struct.
7560         (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
7561         (mips16e_save_restore_regs): New variable.
7562         (mips_split_plus, mips16e_find_first_register): New functions.
7563         (mips16e_mask_registers): New function.
7564         (compute_frame_size): Expand the commentary before the function.
7565         Enforce the MIPS16e save and restore register range restrictions.
7566         Pad the general register save area at the low end.
7567         (mips16e_save_restore_reg, mips16e_build_save_restore)
7568         (mips16e_save_restore_pattern_p, mips16e_add_register_range)
7569         (mips16e_output_save_restore, mips16e_collect_propagate_value)
7570         (mips16e_collect_argument_save, mips16e_collect_argument_saves):
7571         New functions.
7572         (mips_expand_prologue, mips_expand_epilogue): Handle
7573         GENERATE_MIPS16E_SAVE_RESTORE.
7574         * config/mips/mips.md (*mips16e_save_restore): New pattern.
7575
7576 2007-07-02  Uros Bizjak  <ubizjak@gmail.com>
7577
7578         PR tree-optimization/31966
7579         PR tree-optimization/32533
7580         * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
7581         "basic_block" description as its third argument.  Update function
7582         calls to get destination bb from "edge" argument.  Save "cond" into
7583         aux field of the edge.  Update prototype for changed arguments.
7584         (if_convertible_loop_p): Clear aux field of incoming edges if bb
7585         contains phi node.
7586         (find_phi_replacement_condition): Operate on incoming edges, not
7587         on predecessor blocks.  If there is a condition saved in the
7588         incoming edge aux field, AND it with incoming bb predicate.
7589         Return source bb of the first edge.
7590         (clean_predicate_lists): Clean aux field of outgoing node edges.
7591         (tree_if_conversion): Do not initialize cond variable. Move
7592         variable declaration into the loop.
7593         (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
7594         initializations of new_stmt, arg0 and arg1 variables.
7595
7596 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
7597
7598         * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
7599         SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
7600
7601 2007-07-02  Richard Guenther  <rguenther@suse.de>
7602
7603         * tree-ssa.c (useless_type_conversion_p): Document
7604         future intent as defining the middle-end type system.
7605         Re-structure to call langhook last, group by type class,
7606         mark questionable parts.
7607
7608 2007-07-02  Richard Guenther  <rguenther@suse.de>
7609
7610         * tree-flow.h (types_compatible_p): Declare.
7611         * tree-ssa.c (types_compatible_p): New function.
7612         * ipa-type-escape.c (discover_unique_type): Use
7613         types_compatible_p instead of lang_hooks.types_compatible_p.
7614         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
7615         * tree-vn.c (expressions_equal_p): Likewise.
7616         * tree.c (fields_compatible_p): Likewise.
7617         * tree-ssa-dom.c (avail_expr_eq): Likewise.
7618         (cprop_operand): Use useless_type_conversion_p instead of
7619         lang_hooks.types_compatible_p.
7620         * tree-inline.c (setup_one_parameter): Likewise.
7621         (declare_return_variable): Likewise.
7622         * tree-nrv.c (tree_nrv): Likewise.
7623         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
7624         (maybe_fold_offset_to_component_ref): Likewise.
7625         (maybe_fold_offset_to_reference): Likewise.
7626         * tree-ssa-copy.c (may_propagate_copy): Likewise.
7627         (merge_alias_info): Likewise.
7628         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
7629         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
7630         * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
7631         * tree-tailcall.c (find_tail_calls): Likewise.
7632         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
7633         * gimplify.c (canonicalize_addr_expr): Likewise.
7634         (fold_indirect_ref_rhs): Likewise.
7635         (gimplify_addr_expr): Likewise.  Swap parameters to cpt_same_type.
7636         (cpt_same_type): Likewise.
7637         (check_pointer_types_r): Swap parameters to cpt_same_type
7638         where appropriate.
7639         * fold-const.c (fold_convert): Revert fix for PR15988.
7640         * tree-inline.c (setup_one_parameter): Instead fix it here by
7641         using fold_build1 instead of fold_convert and checking for
7642         error_mark_node.  Convert only if the conversion is necessary.
7643
7644 2007-07-02  Joseph Myers  <joseph@codesourcery.com>
7645
7646         * configure.ac: Check for .gnu_attribute on Power.
7647         * configure: Regenerate.
7648         * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
7649         attribute for floating-point ABI.
7650
7651 2007-07-02  Ira Rosen  <irar@il.ibm.com>
7652
7653         PR tree-optimization/32230
7654         PR tree-optimization/32477
7655         * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base 
7656         address is a constant.
7657
7658 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
7659
7660         * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
7661         (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
7662         (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
7663         stanzas.  Use the first part of the triplet to set MIPS_ISA_DEFAULT.
7664         Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
7665         64-bit targets.  Add support for *-elfoabi*.
7666         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
7667         different settings if $(tm_defines) does not select the EABI.
7668         (MULTILIB_EXCLUSIONS): Define in those circumstances.
7669         * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
7670         (MIPS_ARCH_OPTION_SPEC): Likewise.
7671         (MIPS_ISA_LEVEL_SPEC): Likewise.
7672         (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
7673         * config/mips/elfoabi.h: New file.
7674
7675 2007-07-02  Richard Guenther  <rguenther@suse.de>
7676
7677         * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
7678         (useless_type_conversion_p): ... this.
7679         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
7680         (useless_type_conversion_p): ... this.
7681         * builtins.c (fold_builtin_memory_op): Rename
7682         tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
7683         * tree-cfg.c (verify_expr): Likewise.
7684         * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
7685         * tree-ssa-ccp.c (ccp_fold): Likewise.
7686         * tree-ssa-copy.c (may_propagate_copy): Likewise.
7687         * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
7688         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
7689         * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
7690         * tree-ssa-pre.c (eliminate): Likewise.
7691         * tree-ssa.c (delete_tree_ssa): Likewise.
7692         (tree_ssa_useless_type_conversion): Likewise.
7693         * tree.c (build2_stat): Likewise.
7694
7695 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
7696
7697         Fix PR tree-optimization/32571
7698         * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
7699         simplifying them.
7700
7701 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
7702
7703         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
7704         and other expected operations explicitly, change default to
7705         gcc_unreachable. 
7706
7707 2007-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
7708
7709         * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
7710         PARALLEL.
7711         * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
7712         (tls_load_dot_plus_eight): Move the label number into the unspec.
7713         * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
7714
7715 2007-07-01  Andreas Schwab  <schwab@suse.de>
7716
7717         * dwarf2out.c (initial_return_save): Define only if used.
7718
7719 2007-07-01  Kenneth Zadeck <zadeck@naturalbridge.com>
7720
7721         Unreverting Richard's Revert of:
7722
7723         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
7724
7725         * dce.c (deletable_insn_p_1): New function, split out from...
7726         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
7727         specially, not those inside PARALLELs.  Remove BODY argument
7728         and adjust recursive call accordingly.
7729         (prescan_insns_for_dce): Update call to delete_insn_p.
7730
7731 2007-07-01  Vladimir Yanovsky  <yanov@il.ibm.com>
7732             Revital Eres  <eres@il.ibm.com>
7733
7734         * ddg.c (create_ddg_all_sccs): Fix missed
7735         initialization of scc_nodes.
7736
7737 2007-07-01  Uros Bizjak  <ubizjak@gmail.com>
7738
7739         PR middle-end/32559
7740         * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
7741         X + ~X to 1 only for INTEGRAL_TYPE_P type.
7742
7743 2007-06-30  Joseph Myers  <joseph@codesourcery.com>
7744
7745         * configure.ac: Check for .gnu_attribute on MIPS.
7746         * configure, config.in: Regenerate.
7747         * config/mips/mips.c (mips_file_start): If supported, output
7748         attribute for floating-point ABI.
7749
7750 2007-06-30  Uros Bizjak  <ubizjak@gmail.com>
7751
7752         PR target/32433
7753         * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
7754         (ffs_cmove): New expander to expand using ctz pattern.
7755         (*ffs_cmove): Remove pattern.
7756         (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
7757         (ffsdi2): Expand using ctz pattern.
7758         (*ffs_rex64): Remove pattern.
7759
7760 2007-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7761
7762         PR rtl-optimization/32296
7763         * pa.md (return): Delete pattern.
7764         (return_internal): Remove "(const_int 1)" from pattern.
7765         (epilogue): Use return_internal pattern for trivial returns.
7766         * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
7767         * pa.c (hppa_can_use_return_insn_p): Delete function.  Include "df.h".
7768
7769 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
7770
7771         * tree-ssa-pre.c (is_exception_related): New function
7772         (can_value_number_operation): Use it.
7773
7774 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
7775         
7776         Fix PR tree-optimization/32540
7777         Fix PR tree-optimization/31651
7778
7779         * tree-ssa-sccvn.c: New file.
7780
7781         * tree-ssa-sccvn.h: Ditto.
7782         
7783         * tree-vn.c: Include tree-ssa-sccvn.h
7784         (val_expr_paid_d): Removed.
7785         (value_table): Ditto.
7786         (vn_compute): Ditto.
7787         (val_expr_pair_hash): Ditto.
7788         (val_expr_pair_expr_eq): Ditto.
7789         (copy_vuses_from_stmt): Ditto.
7790         (vn_delete): Ditto.
7791         (vn_init): Ditto.
7792         (shared_vuses_from_stmt): Ditto.
7793         (print_creation_to_file): Moved up.
7794         (sort_vuses): Ditto.
7795         (sort_vuses_heap): Ditto.
7796         (set_value_handle): Make non-static.
7797         (make_value_handle): Ditto.
7798         (vn_add): Rewritten to use sccvn lookups.
7799         (vn_add_with_vuses): Ditto.
7800         (vn_lookup): Ditto (and second argument removed).
7801         (vn_lookup_with_vuses): Ditto.
7802         (vn_lookup_or_add): Ditto (and second argument removed);
7803         (vn_lookup_or_add_with_vuses): Ditto.
7804         (vn_lookup_with_stmt): New.
7805         (vn_lookup_or_add_with_stmt): Ditto.
7806         (create_value_handle_for_expr): Ditto.
7807
7808         * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
7809         (seen_during_translate): New function.
7810         (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
7811         (phi_trans_add): Ditto.
7812         (constant_expr_p): FIELD_DECL is always constant.
7813         (phi_translate_1): Renamed from phi_translate, add seen bitmap.
7814         Use constant_expr_p.
7815         Avoid infinite recursion on mutually valued expressions.
7816         Change callers of vn_lookup_or_add.
7817         (phi_translate): New function.
7818         (compute_antic_safe): Allow phi nodes.
7819         (create_component_ref_by_pieces): Update for FIELD_DECL change.
7820         (find_or_generate_expression): Rewrite slightly.
7821         (create_expression_by_pieces): Updated for vn_lookup_or_add
7822         change.
7823         Update VN_INFO for new names.
7824         (insert_into_preds_of_block): Update for new names.
7825         (add_to_exp_gen): New function.
7826         (add_to_sets): Use vn_lookup_or_add_with_stmt.
7827         (find_existing_value_expr): Rewrite to changed vn_lookup.
7828         (create_value_expr_from): Ditto, and use add_to_exp_gen.
7829         (try_look_through_load): Removed.
7830         (try_combine_conversion): Ditto.
7831         (get_sccvn_value): New function.
7832         (make_values_for_phi): Ditto.
7833         (make_values_for_stmt): Ditto.
7834         (compute_avail): Rewritten for vn_lookup_or_add changes and to use
7835         SCCVN.
7836         (init_pre): Update for SCCVN changes.
7837         (fini_pre): Ditto.
7838         (execute_pre): Ditto.
7839
7840         * tree-flow.h (make_value_handle): Declare.
7841         (set_value_handle): Ditto.
7842         (sort_vuses_heap): Ditto.
7843         (vn_lookup_or_add_with_stmt): Ditto.
7844         (vn_lookup_with_stmt): Ditto.
7845         (vn_compute): Remove.
7846         (vn_init): Ditto.
7847         (vn_delete): Ditto.
7848         (vn_lookup): Update arguments.
7849
7850         * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
7851         (tree-vn.o): Ditto.
7852         (tree-ssa-sccvn.o): New.
7853         (OBJS-common): Add tree-ssa-sccvn.o
7854         
7855 2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7856
7857         PR c/4076
7858         * c-typeck.c (build_external_ref): Don't mark as used if called
7859         from itself.
7860         * calls.c (rtx_for_function_call): Likewise.
7861         
7862 2007-06-30  Richard Sandiford  <richard@codesourcery.com>
7863
7864         Revert:
7865
7866         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
7867
7868         * dce.c (deletable_insn_p_1): New function, split out from...
7869         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
7870         specially, not those inside PARALLELs.  Remove BODY argument
7871         and adjust recursive call accordingly.
7872         (prescan_insns_for_dce): Update call to delete_insn_p.
7873
7874 2007-06-30  Rask Ingemann Lambertsen <rask@sygehus.dk>
7875
7876         * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
7877         (try_combine): Move potential calls to undo_all() so they happen
7878         before we commit to using the combined insns.
7879
7880 2006-06-30  Jan Hubicka  <jh@suse.cz>
7881
7882         * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
7883         code.
7884
7885 2006-06-30  Thomas Neumann  <tneumann@users.sourceforge.net>
7886
7887         * ipa.c (cgraph_postorder): Cast according to the coding conventions.
7888         (cgraph_remove_unreachable_nodes): Likewise.
7889         * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
7890         * ipa-inline.c (update_caller_keys): Cast according to the coding
7891         conventions.
7892         (cgraph_decide_recursive_inlining): Likewise.
7893         (cgraph_decide_inlining_of_small_function): Likewise.
7894         (try_inline): Likewise.
7895         (cgraph_decide_inlining_incrementally): Likewise.
7896         * ipa-pure-const.c (get_function_state): Likewise.
7897         (scan_function): Likewise.
7898         (analyze_function): Likewise.
7899         (static_execute): Likewise.
7900         * ipa-reference.c (scan_for_static_refs): Likewise.
7901         (merge_callee_local_info): Likewise.
7902         (analyze_function): Use type safe memory macros.
7903         (static_execute): Likewise. Cast according to the coding conventions.
7904         * ipa-type-escape.c (scan_for_regs): Cast according to the coding
7905         conventions.
7906         * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
7907         names.
7908         (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
7909         * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
7910         variable names.
7911
7912 2007-06-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7913
7914         PR middle-end/30024
7915         * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
7916         for complex modes (both int and real).
7917
7918 2007-06-29  Jan Hubicka  <jh@suse.cz>
7919
7920         * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
7921
7922 2007-06-29  Jan Hubicka  <jh@suse.cz>
7923
7924         PR middle-end/32372
7925         * cse.c (cse_insn): Avoid invalid sharing in between register note and
7926         the insn pattern.
7927
7928 2007-06-29  Anatoly Sokolov <aesok@post.ru>
7929
7930         PR target/32335
7931         * config/avr/avr.c: Include dataflow header file.
7932         (expand_prologue): Adjust for prologue insn change.
7933         * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
7934         inside a insn.
7935
7936 2007-06-29  Richard Guenther  <rguenther@suse.de>
7937
7938         PR middle-end/32493
7939         * gimplify.c (gimplify_call_expr): Ignore variable argument parts
7940         during type verification.
7941
7942 2007-06-29  Jan Hubicka  <jh@suse.cz>
7943
7944         * recog.c (validate_change_rtx_1): Unshare TO argument.
7945
7946 2007-06-29  Uros Bizjak  <ubizjak@gmail.com>
7947
7948         PR tree-optimization/24659
7949         * tree-vect-transform.c (vectorizable_call): Handle
7950         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
7951
7952         * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
7953         * config/i386/i386.c (enum ix86_builtins)
7954         [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
7955         (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
7956         description.
7957         (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
7958         const using def_builtin_const.
7959         (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
7960         input operands in the same modes as the result.
7961         (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
7962
7963 2007-06-29  Richard Sandiford  <rsandifo@nildram.co.uk>
7964
7965         * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
7966         (df_set_dead_notes_for_mw): Likewise.
7967
7968 2007-06-29  Eric Botcazou  <ebotcazou@adacore.com>
7969
7970         * c-common.c (pointer_int_sum): Do the negation in sizetype.
7971
7972 2007-06-28  DJ Delorie  <dj@redhat.com>
7973
7974         * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
7975
7976 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
7977
7978         * doc/invoke.texi (C++ Dialect Options): Document
7979         fvisibility-ms-compat.
7980         * c.opt (fvisibility-ms-compat): New.
7981
7982 2007-06-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7983
7984         PR tree-opt/32417
7985         * tree-affine.c (aff_combination_add_elt): Handle
7986         pointer addition specially.
7987
7988 2007-06-28  Jakub Jelinek  <jakub@redhat.com>
7989
7990         * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
7991         decl is non-external for AIX ABI.
7992
7993 2007-06-28  David Edelsohn  <edelsohn@gnu.org>
7994
7995         * config/rs6000/predicates.md (current_file_function_operand):
7996         Ensure the symbol is non-external for AIX ABI.
7997
7998 2007-06-28  Nick Clifton  <nickc@redhat.com>
7999
8000         * common.opt (fipa-matrix-reorg): Add Optimization attribute.
8001         (fdce, fdse, fpredictive-commoning): Likewise.
8002
8003 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
8004
8005         PR other/31400
8006         * gcc.c (process_command): Recognize the new -static-libgfortran
8007         option.
8008
8009 2007-06-27  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8010
8011         PR target/32418
8012         * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
8013         Use a call clobbered hard reg instead of a pseudo reg.
8014
8015 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
8016
8017         * config/sh/sh.md (load_gbr): Use correct operand constraint.
8018
8019 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
8020
8021         PR target/32479
8022         * config/sh/sh.md (udivsi3): Don't wrap the sequence with
8023         REG_LIBCALL and REG_RETVAL notes.
8024         (divsi3, mulsi3): Likewise.
8025         (mulhisi3): Likewise.  Use emit_libcall_block.
8026         (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
8027
8028 2007-06-27  Seongbae Park  <seongbae.park@gmail.com>
8029
8030         PR rtl-optimization/32481
8031         * combine.c (adjust_for_new_dest): Rescan the changed insn.
8032
8033 2007-06-27  Richard Sandiford  <richard@codesourcery.com>
8034
8035         * dce.c (deletable_insn_p_1): New function, split out from...
8036         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
8037         specially, not those inside PARALLELs.  Remove BODY argument
8038         and adjust recursive call accordingly.
8039         (prescan_insns_for_dce): Update call to delete_insn_p.
8040
8041 2007-06-27  Richard Guenther  <rguenther@suse.de>
8042
8043         PR middle-end/32492
8044         * tree.h (fold_convertible_p): Declare.
8045         * fold-const.c (fold_convertible_p): New function.
8046         * gimplify.c (gimplify_call_expr): Use fold_convertible_p
8047         instead of lang_hooks.types_compatible_p.
8048
8049 2007-06-26  Jan Hubicka  <jh@suse.cz>
8050
8051         * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
8052         * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
8053         early use validate_unshare_change.
8054         (reload_combine): Likewise.
8055         * recog.c (change_t): New field unshare.
8056         (validate_change_1): Rename from validate_change; add argument unshare.
8057         (validate_change): Turn into wrapper of validate_change_1; update
8058         prototype for bools.
8059         (validate_unshare_change): New.
8060         (confirm_change_group): Unshare changes if asked for; avoid unnecesary
8061         calls of df_insn_rescan.
8062         * recog.h (validate_change): Replace ints by bools.
8063         (validate_unshare_change): Declare.
8064
8065 2007-06-26  Kenneth Zadeck <zadeck@naturalbridge.com>
8066
8067         * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
8068         
8069 2007-06-26  Steve Ellcey  <sje@cup.hp.com>
8070
8071         * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
8072
8073 2007-06-25  Jan Hubicka  <jh@suse.cz>
8074
8075         * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
8076         uninlinable call.
8077         (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
8078         cgraph_decide_inlining_incrementally): Move uninlinability checks to
8079         places other call site specific checks are performed.
8080
8081 2007-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8082
8083         PR tree-opt/32421
8084         * tree-vect-transform.c (vectorizable_operation): Convert
8085         POINTER_PLUS_EXPR over to PLUS_EXPR.
8086
8087 2007-06-25  Chao-ying Fu  <fu@mips.com>
8088
8089         * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
8090         UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
8091         Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
8092         Document GET_MODE_IBIT, and GET_MODE_FBIT.
8093
8094         * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
8095         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
8096         (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
8097         SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
8098         SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
8099         ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
8100         ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
8101         SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
8102         ALL_FIXED_POINT_MODE_P): New define.
8103         (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
8104         MODE_UACCUM.
8105         (GET_MODE_IBIT, GET_MODE_FBIT): New define.
8106
8107         * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
8108         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
8109         MODE_VECTOR_UACCUM): New mode classes.
8110
8111         * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
8112         UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
8113         Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
8114         USA, UDA, and UTA.
8115
8116         * genmodes.c (struct mode_data): Add ibit and fbit fields.
8117         (blank_mode): Initialize ibit and fbit.
8118         (adj_ibit, adj_fbit): New to adjust ibit and fbit.
8119         (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
8120         MODE_UACCUM.
8121         (new_adjust): Change required_class to required_class_from and
8122         required_class_to for testing within a range.
8123         (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
8124         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
8125         MODE_VECTOR_UACCUM.
8126         (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
8127         (make_fixed_point_mode): New.
8128         (_ADD_ADJUST): Change C to C1 and C2.
8129         (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
8130         use a range for machine classes.
8131         (ADJUST_IBIT, ADJUST_FBIT): New.
8132         (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
8133         CONST_MODE_FBIT.
8134         (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
8135         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
8136         Emit adjustment for ibit and fbit.
8137         (emit_mode_ibit, emit_mode_fbit): New.
8138         (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
8139
8140 2007-06-25  Nathan Froyd  <froydnj@codesourcery.com>
8141
8142         * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
8143         as the source of the set.
8144
8145 2007-06-25  Roman Zippel <zippel@linux-m68k.org>
8146
8147         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
8148         FP_REGNO_P): Use IN_RANGE.
8149         (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
8150         (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
8151         (DATA_REG_P): Use DATA_REGNO_P.
8152         (FP_REG_P): Use FP_REGNO_P.
8153         (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
8154         * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
8155         REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
8156
8157 2007-06-24  Jan Hubicka  <jh@suse.cz>
8158
8159         PR middle-end/30563
8160         * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
8161
8162 2007-06-24  Sebastian Pop  <sebpop@gmail.com>
8163
8164         PR middle-end/32461
8165         * fold-const.c (fold_binary): Strip nops of operand 0
8166         of BIT_NOT_EXPR before calling operand_equal_p.
8167         * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
8168         * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
8169
8170 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
8171
8172         * doc/extend.texi: Document that dllimport and dllexport imply
8173         default visibility.
8174         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
8175         imported or exported declaration, including type declarations.
8176         * c-common.c (handle_visibility_attribute): Check for conflicts
8177         with dllimport/dllexport.
8178         (c_determine_visibility): Handle dllimport/dllexport as an
8179         explicit visibility atttribute.
8180
8181 2007-06-23  Richard Guenther  <rguenther@suse.de>
8182
8183         PR tree-optimization/16876
8184         PR middle-end/29478
8185         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
8186         for CALL_EXPRs.
8187         * tree-inline.c (initialize_inlined_parameters): Do not call
8188         lang_hooks.tree_inlining.convert_parm_for_inlining.
8189         * cgraphbuild.c (initialize_inline_failed): Set inline failed
8190         reason for mismatched types.
8191         * gimplify.c (gimplify_call_expr): Verify the call expression
8192         arguments match the called function type signature.  Otherwise
8193         mark the call expression to be not considered for inlining
8194         using CALL_CANNOT_INLINE_P flag.
8195         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
8196         edges call expression.
8197         (cgraph_decide_inlining_of_small_function): Likewise.
8198         (cgraph_decide_inlining): Likewise.
8199         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
8200         Remove define.
8201         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
8202         * c-typeck.c (c_convert_parm_for_inlining): Remove.
8203         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
8204         Remove declaration.
8205         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
8206         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
8207         Remove.
8208         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
8209         convert_parm_for_inlining member.
8210
8211 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
8212
8213         PR target/31152
8214         * arm.md (negscc): Match the correct operand for optimized LT0 test.
8215         Remove optimization for GT.
8216
8217 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
8218
8219         PR middle-end/32437
8220         * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
8221         is a PARALLEL.
8222         (prescan_insns_for_dce): Add extra parameter.
8223         
8224 2007-06-23  Jan Hubicka  <jh@suse.cz>
8225
8226         PR middle-end/31541
8227         * gimplify.c (mark_addressable): New function.
8228         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
8229
8230 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
8231
8232         PR middle-end/32374
8233         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
8234
8235 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
8236
8237         PR target/32413
8238         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
8239         moves between MMX/SSE registers to at least 8 units to prevent
8240         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
8241
8242 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
8243
8244         * config/i386/i386.c (override_options): Correct x86_sahf
8245         setting condition.
8246
8247 2007-06-21  David Daney  <ddaney@avtrex.com>
8248
8249         PR target/32406
8250         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
8251         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
8252         (exception_receiver): Renamed to ...
8253         (nonlocal_goto_receiver): ... this.
8254
8255 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
8256
8257         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
8258         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
8259         partial register accesses.
8260
8261 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
8262
8263         * fold-const.c (debug_fold_checksum): Move it under
8264         ENABLE_FOLD_CHECKING.
8265
8266 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
8267
8268         PR middle-end/20623
8269         * tree.h (debug_fold_checksum): Declared.
8270         * fold-const.c (build_fold_addr_expr_with_type_1): New.
8271         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
8272         build_fold_addr_expr_with_type_1.
8273         (fold_addr_expr, debug_fold_checksum): New.
8274         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
8275         (fold_unary, fold_comparison, split_address_to_core_and_offset):
8276         Use fold_addr_expr.
8277         
8278 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
8279
8280         PR tree-optimization/19590
8281         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
8282         of scev is a constant.
8283         * gcc/testsuite/gcc.dg/tree-ssa/pr19590.c: New.
8284
8285 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
8286
8287         * df-problems.c (df_note_bb_compute): Made computation of live
8288         info consistent with df_lr.
8289
8290 2007-06-21  Richard Guenther  <rguenther@suse.de>
8291
8292         PR tree-optimization/32453
8293         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
8294         for pointer anti-range.
8295
8296 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
8297
8298         * config/i386/i386.c (processor_target_table): Increase maximum
8299         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
8300         default 64bit.
8301
8302         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
8303         byte alignment if > 8 byte alignment is preferred.
8304         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
8305
8306 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
8307
8308         PR tree-optimization/31866
8309         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
8310         if ASM_EXPR's input is not a SSA_NAME.
8311
8312         PR middle-end/32362
8313         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
8314         but decl is a global var, instead return decl.
8315         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
8316         even for is_global_var decls, if they are private in some outer
8317         context.
8318
8319 2007-06-21  Richard Guenther  <rguenther@suse.de>
8320
8321         PR tree-optimization/32451
8322         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
8323
8324 2007-06-21  Christian Bruel  <christian.bruel@st.com>
8325
8326         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
8327         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
8328         (push_regs): Changed saving order or banked registers.
8329         (sh_expand_epilogue): Likewise.
8330         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
8331         (FIRST_BANKED_REG): Likewise.
8332         (LAST_BANKED_REG): Likewise.
8333         * config/sh/sh.md (banked) New attribute.
8334         (in_delay_slot): Check banked attribute.
8335         
8336 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
8337
8338         PR tree-optimization/32075
8339         * tree-data-ref.c (subscript_dependence_tester_1, 
8340         analyze_miv_subscript, analyze_overlapping_iterations,
8341         add_distance_for_zero_overlaps, build_classic_dist_vector,
8342         subscript_dependence_tester_1, analyze_overlapping_iterations,
8343         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
8344         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
8345         to evolution_function_is_affine_multivariate_p.
8346
8347 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
8348
8349         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
8350
8351 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8352
8353         PR target/32335
8354         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
8355         for TARGET_A16.
8356         * config/m32c/prologue.md (epilogue_exitd_16): New.
8357         (epilogue_reit_16): New.
8358         (epilogue_exitd): Rename to epilogue_exitd_24.
8359         (epilogue_reit): Rename to epilogue_reit_24.
8360
8361 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
8362             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
8363
8364         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
8365         New counters.
8366         * haifa-sched.c (queue_to_ready): Don't requeue next insn
8367         if dbg_cnt (sched_insn) reaches the limit.
8368         (choose_ready): New parameter INSN_PTR and new return value.
8369         (schedule_block): Handle dbg_cnt (sched_insn). Handle
8370         the new return value from choose_ready.
8371         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
8372         (rest_of_handle_global_alloc): New global_alloc_at_func.
8373
8374 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
8375
8376         PR tree-optimization/25737
8377         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
8378         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
8379         * tree-flow.h (struct fieldoff): Add new field alias_set.
8380         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
8381         argument addressable_type.  Set alias_set of fieldoff.
8382         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
8383         (create_overlap_variables_for): Pass alias_set from fieldoff to
8384         create_sft.
8385         * alias.c (get_alias_set): Use alias_set from SFT if set.
8386
8387 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
8388
8389         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
8390         of a variable as an unsigned HOST_WIDE_INT integer.
8391
8392 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
8393
8394         PR rtl-optimization/32405
8395         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
8396
8397 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
8398
8399         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
8400
8401         PR middle-end/31959
8402         * builtins.c: Include diagnostic.h.
8403         (expand_builtin_expect): Make gcc_assert more permissive.
8404         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
8405
8406         PR inline-asm/32109
8407         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
8408         and !allows_mem.
8409
8410         PR middle-end/32285
8411         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
8412         if ACCUMULATE_OUTGOING_ARGS.
8413
8414 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8415
8416         * config/m68hc11/m68hc11.c: Include dataflow header file.
8417         (m68hc11_reorg): Port to dataflow.
8418
8419 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
8420
8421         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
8422         (struct df_problem.free_blocks_on_set_blocks): New field.
8423         (struct dataflow.optional_p): New field.
8424         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
8425         (df_live_set_all_dirty): New function.
8426         * df-scan.c (df_scan_alloc): Initialize optional_p.
8427         (problem_SCAN): Initialize free_blocks_on_set_blocks.
8428         * df-core.c (df_set_blocks): Removed use of
8429         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
8430         df_problem.free_blocks_on_set_blocks to determine which blocks are
8431         recycled.
8432         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
8433         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
8434         uses dataflow.optional_p to determine if problem should be
8435         deleted.
8436         (rest_of_handle_df_initialize): Only start live problem if 
8437         -02 or above.
8438         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
8439         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
8440         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
8441         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
8442         problem_NOTE):  Initialize free_blocks_on_set_blocks.
8443         (df_lr_bb_local_compute): Recompute luids if df_live problem is
8444         not active.
8445         (df_live_set_all_dirty, df_note_alloc): New function.
8446         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
8447         df_get_live_*.
8448         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
8449         * postreload.c (reload_combine): Ditto.
8450         * cse.c (cse_extended_basic_block): Ditto.
8451         * regmove.c (mark_flags_life_zones): Ditto.
8452         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
8453         erase_matching_seqs): Ditto.
8454         * bt-load.c (compute_defs_uses_and_gen): Ditto.
8455         * integrate (allocate_initial_values): Ditto.
8456         * combine.c (reg_dead_at_p): Ditto.
8457         * resource.c (mark_target_live_regs): Ditto.
8458         * sched-rgn.c (check_live_1, update_live_1): Ditto.
8459         * config/sh/sh.c (find_r0_life_regions): Ditto.
8460         * global.c (rest_of_handle_global_alloc): Only add back df_live
8461         for -O > 1.
8462         * local-alloc.c (rest_of_handle_local_alloc): Only remove
8463         df_live for -O > 1.
8464         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
8465         df_get_live_*.
8466         (if_convert): Make sure df_live is there at -O == 1.
8467         (pass_if_after_combine): Cleanup flags.
8468         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
8469         is there at -O == 1.
8470         
8471 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
8472
8473         * config/arm/arm.c (arm_get_frame_offsets): Set
8474         offsets->locals_base to avoid negative stack size.
8475         (thumb1_expand_prologue): Assert on negative stack size.
8476
8477 2007-06-19  Sebastian Pop  <sebpop@gmail.com>
8478
8479         PR tree-optimization/32367
8480         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
8481         of the chrec has no evolution in that loop.
8482         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
8483
8484 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
8485
8486         * config/xtensa/xtensa.c: Include "df.h".
8487         (xtensa_builtin_saveregs): Use adjust_address instead of
8488         change_address.
8489         (xtensa_va_start): Invoke make_tree with sizetype for
8490         expand_builtin_saveregs and then convert the result to a pointer.
8491         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
8492         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
8493         Subtract argument size from index value as integers and then use
8494         POINTER_PLUS_EXPR to add the result to the array address.
8495         
8496 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8497
8498         PR target/32335
8499         * config/m32c/m32c.c: Include dataflow header file.
8500         (m32c_emit_prologue): Adjust for prologue insn change.
8501         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
8502         once inside a PARALLEL. Assume frame size passed in operand 0
8503         includes space to save the fb register.
8504         (prologue_enter_24): Likewise.
8505         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
8506
8507 2007-06-19  David Daney  <ddaney@avtrex.com
8508
8509         PR target/32313
8510         * config/mips/mips.md (cprestore): Mark $gp as used.
8511
8512 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8513
8514         PR target/32369
8515         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
8516         (frv_ifcvt_modify_insn): Likewise.
8517
8518 2007-06-19  Richard Guenther  <rguenther@suse.de>
8519
8520         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
8521         only handle positive offsets that fit in a HOST_WIDE_INT.
8522
8523 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
8524
8525         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
8526         result of rsqrt insn for zero input argument to avoid NaN.
8527
8528 2007-06-19  Richard Guenther  <rguenther@suse.de>
8529
8530         PR middle-end/31950
8531         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
8532
8533 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
8534
8535         PR tree-optimization/32353
8536         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
8537
8538 2007-06-19  Nick Clifton  <nickc@redhat.com>
8539
8540         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
8541
8542 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
8543
8544         PR target/32389
8545         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
8546         * config/i386/i386.c (assign_386_stack_local): Assert that
8547         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
8548         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
8549         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
8550         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
8551
8552 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
8553
8554         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
8555
8556 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
8557
8558         PR rtl-optimization/32321
8559         * gcse.c (replace_store_insn): Update the note before
8560         calling emit_insn_after.
8561
8562 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
8563
8564         PR middle-end/32355
8565         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
8566         cse_main.
8567         * df-problems.c (df_note_bb_compute): Fix dumping info.
8568         
8569 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
8570
8571         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
8572         insn with emit_jump_insn.
8573
8574 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
8575
8576         PR tree-optimization/32383
8577         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
8578         * targhooks.h (default_builtin_reciprocal): Update prototype.
8579         * target.h (struct gcc_target): Update builtin_reciprocal.
8580         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
8581         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
8582         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
8583         when fndecl is in BUILT_IN_MD class.
8584         (execute_convert_to_rsqrt): Ditto.
8585
8586         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
8587         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
8588         Convert BUILT_IN_SQRTF code only  when md_fn is false.
8589
8590 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
8591
8592         * bt-load.c (move_btr_def): Fix the order of arguments
8593         to validate_replace_rtx.
8594
8595 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
8596
8597         * config/m68k/m68k-devices.def: Add 54450..54455.
8598
8599 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
8600
8601         PR rtl-optimization/32366
8602         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
8603         FLOAT_EXTEND]: Prevent non-scalar modes from entering
8604         significand_size.
8605
8606 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
8607
8608         PR middle-end/32349
8609         * modulo-sched (generate_reg_moves): Added rescan parameter and if
8610         this is true, rescan insn being modified.
8611         (sms_schedule): Added rescan parameter.
8612         (rest_of_handle_sms): Moved freeing of dominance info to before
8613         getting out of cfg_layout.
8614         
8615 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
8616
8617         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
8618         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
8619         appropriate.
8620
8621         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
8622         FL_CF_EMAC from the entry for isac.
8623
8624         * config/m68k/predicates.md (const_call_operand): Adjust comment.
8625         (const_sibcall_operand): New.
8626         (sibcall_operand): Use it.
8627         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
8628         (m68k_isas): ISAC does not imply FPU or EMAC.
8629         (override_options): Add ISA_C logic for symbolic jump & call.
8630
8631 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
8632
8633         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
8634         return mode from the builtin itself.
8635         (sparc_fold_builtin): Fix cast of zero constant.
8636
8637 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
8638
8639         * targhooks.c (default_builtin_reciprocal): New default target hook.
8640         * targhooks.h (default_builtin_reciprocal): Add prototype.
8641         * hooks.c (hook_tree_tree_bool_null): Remove hook.
8642         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
8643         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
8644         default_builtin_reciprocal.
8645
8646 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
8647
8648         PR middle-end/31723
8649         * hooks.c (hook_tree_tree_bool_null): New hook.
8650         * hooks.h (hook_tree_tree_bool_null): Add prototype.
8651         * tree-pass.h (pass_convert_to_rsqrt): Declare.
8652         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
8653         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
8654         and convert it to reciprocal a*rfunc(b).
8655         (execute_convert_to_rsqrt): New function.
8656         (gate_convert_to_rsqrt): New function.
8657         (pass_convert_to_rsqrt): New pass definition.
8658         * target.h (struct gcc_target): Add builtin_reciprocal.
8659         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
8660         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
8661         TARGET_BUILTIN_RECIPROCAL.
8662         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
8663
8664         * config/i386/i386.h (TARGET_RECIP): New define.
8665         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
8666         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
8667         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
8668         and not optimizing for size.
8669         (*rcpsf2_sse): New insn pattern.
8670         (*rsqrtsf2_sse): Ditto.
8671         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
8672         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
8673         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
8674         and not optimizing for size.
8675         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
8676         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
8677         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
8678         and not optimizing for size.
8679         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
8680         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
8681         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
8682         and not optimizing for size.
8683         (*sse_rsqrtv4sf2): Do not export.
8684         (sqrtv4sf2): Ditto.
8685         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
8686         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
8687         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
8688         and not optimizing for size.
8689         (sqrtv4sf2): Ditto.
8690         * config/i386/i386.opt (mrecip): New option.
8691         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
8692         (ix86_emit_swsqrtsf): Ditto.
8693         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
8694         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
8695         builtin definition.
8696         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
8697         ix86_expand_unop1_builtin.
8698         (ix86_emit_swdivsf): New function.
8699         (ix86_emit_swsqrtsf): Ditto.
8700         (ix86_builtin_reciprocal): New function.
8701         (TARGET_BUILTIN_RECIPROCAL): Use it.
8702         (ix86_vectorize_builtin_conversion): Rename from
8703         ix86_builtin_conversion.
8704         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
8705         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
8706         "i386 and x86_64 Options" section.
8707         (Intel 386 and AMD x86_64 Options): Document -mrecip.
8708
8709 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
8710             Zdenek Dvorak <dvorakz@suse.cz>
8711             Richard Guenther  <rguenther@suse.de>
8712             Kaz Kojima  <kkojima@gcc.gnu.org>
8713
8714         * tree-vrp.c (compare_values_warnv): Convert val2 to
8715         the type of val1.
8716         (extract_range_from_assert): Create
8717         POINTER_PLUS_EXPR for pointer types.
8718         (extract_range_from_binary_expr): Handle
8719         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
8720         for pointer types.
8721         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
8722         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
8723         POINTER_PLUS_EXPR as PLUS_EXPR.
8724         (number_of_iterations_lt_to_ne):
8725         For pointer types, use sizetype when
8726         creating MINUS_EXPR/PLUS_EXPRs.
8727         (assert_loop_rolls_lt): For pointer types, use sizetype when
8728         creating MINUS_EXPR/PLUS_EXPRs.
8729         (number_of_iterations_le): Likewise.
8730         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
8731         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
8732         like PLUS_EXPR and MINUS_EXPR.
8733         * tree-pretty-print.c (dump_generic_node): Handle
8734         POINTER_PLUS_EXPR.
8735         (op_prio): Likewise.
8736         (op_symbol_1): Likewise.
8737         * optabs.c (optab_for_tree_code): Likewise.
8738         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
8739         specially.
8740         * tree-tailcall.c (process_assignment): Mention
8741         POINTER_PLUS_EXPR in a TODO comment.
8742         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
8743         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
8744         not used with a pointer and an integer type.
8745         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
8746         increment using chrec_convert_rhs instead of chrec_convert.
8747         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
8748         PLUS_EXPR except for the right hand side's type will be
8749         sizetype.
8750         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
8751         (fold_used_pointer_cast): Kill.
8752         (pointer_offset_p): Kill.
8753         (fold_used_pointer): Kill.
8754         (pointer_used_p): Kill.
8755         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
8756         call fold_used_pointer.
8757         (instantiate_parameters_1): Convert the increment
8758         using chrec_convert_rhs instead of chrec_convert.
8759         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
8760         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
8761         instead of PLUS_EXPR.
8762         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
8763         PLUS_EXPR for pointers.
8764         (std_gimplify_va_arg_expr): Likewise.
8765         (fold_builtin_memory_op): Likewise.
8766         (fold_builtin_strstr): Likewise.
8767         (fold_builtin_strchr): Likewise.
8768         (fold_builtin_strrchr): Likewise.
8769         (fold_builtin_strpbrk): Likewise.
8770         (expand_builtin_memory_chk): Likewise.
8771         (fold_builtin_memory_chk): Likewise.
8772         (std_expand_builtin_va_start): Use
8773         sizetype for the call to make_tree and then convert
8774         to the pointer type.
8775         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
8776         instead of PLUS_EXPR for adding to a pointer.
8777         (std_gimplify_va_arg_expr): Use fold_build2 for
8778         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
8779         the operands to sizetype first and then cast the BIT_AND_EXPR
8780         back to the pointer type.
8781         * fold-const.c (build_range_check): Handle pointer types
8782         specially.
8783         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
8784         of PLUS_EXPR's. Make sure the offset is converted to
8785         sizetype.
8786         (try_move_mult_to_index): Strip the NOPs from the offset.
8787         Remove code argument and replace all uses with PLUS_EXPR.
8788         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
8789         specially. Don't use a pointer type for MINUS_EXPR.
8790         (fold_unary): Handle for (T1)(X op Y),
8791         only p+ as that is the only as that can be handled for
8792         binary operators now.
8793         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
8794         POINTER_PLUS_EXPR.
8795         <case PLUS_EXPR>: Add folding of PTR+INT into
8796         PTR p+ INT.
8797         Don't call try_move_mult_to_index.
8798         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
8799         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
8800         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
8801         Don't call try_move_mult_to_index.
8802         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
8803         (tree_expr_nonzero_p): Likewise.
8804         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
8805         of PLUS_EXPR for the complex expression folding.
8806         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
8807         first chrec is a pointer type, then the second should
8808         be sizetype and not the first's type.
8809         For POINTER_PLUS_EXPR, use a different right hand side type.
8810         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
8811         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
8812         different right hand side type.
8813         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
8814         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
8815         instead of PLUS_EXPR.
8816         When either operand is zero, convert the other operand.
8817         (chrec_apply): Use chrec_convert_rhs
8818         on the argument x instead of chrec_convert.
8819         (reset_evolution_in_loop): For pointer types, the new_evol
8820         should be sizetype.
8821         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
8822         different right hand side type.
8823         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
8824         (chrec_convert_rhs): New function.
8825         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
8826         different right hand side type.
8827         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
8828         * tree-chrec.h (chrec_convert_rhs): New prototype.
8829         (build_polynomial_chrec): For pointer types, the right hand
8830         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
8831         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
8832         Remove subtraction case as it is always addition now.
8833         Make sure the offset is converted to sizetype.
8834         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
8835         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
8836         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
8837         PLUS_EXPR in pointer type.
8838         Handle POINTER_PLUS_EXPR.
8839         (tree_to_aff_combination): Likewise.
8840         (force_expr_to_var_cost): Likewise.
8841         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
8842         instead of PLUS_EXPR for pointers.
8843         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
8844         instead of PLUS_EXPR of pointer types.
8845         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
8846         as PLUS_EXPR.
8847         (check_va_list_escapes): Likewise.
8848         (check_all_va_list_escapes): Likewise.
8849         * dwarf2out.c (loc_descriptor_from_tree_1):
8850         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
8851         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
8852         (string_constant): Likewise.
8853         * tree-ssa-address.c (tree_mem_ref_addr): When adding
8854         the offset to the base, use POINTER_PLUS_EXPR.
8855         (add_to_parts): Convert the index to sizetype.
8856         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
8857         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
8858         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
8859         Offset only holds something for PLUS_EXPR.
8860         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
8861         a PLUS_EXPR.
8862         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
8863         and not PLUS_EXPR.
8864         (analyze_accesses_for_modify_stmt): Likewise.
8865         Remove comment about the type being integral type as it is
8866         wrong now.
8867         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
8868         PLUS_EXPR.
8869         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
8870         and not PLUS_EXPR.
8871         Correct the type which the artimentic is done in (is now
8872         sizetype).
8873         Reindent one loop.
8874         * tree-data-ref.c (split_constant_offset): Handle
8875         POINTER_PLUS_EXPR
8876         * tree-affine.c (tree_to_aff_combination): Likewise.
8877         * c-typeck.c (build_unary_op): For pointers create the increment
8878         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
8879         for pointers.
8880         * gimplify.c (gimplify_self_mod_expr): Create a
8881         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
8882         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
8883         * tree.def (POINTER_PLUS_EXPR): New tree code.
8884         * tree-predcom.c (ref_at_iteration): If we have a pointer
8885         type do the multiplication in sizetype.
8886         * tree-mudflap.c (mf_xform_derefs_1): Create a
8887         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
8888         * tree-ssa-forwprop.c 
8889         (forward_propagate_addr_into_variable_array_index):
8890         Don't expect there to be a cast for the index as that
8891         does not exist anymore.
8892         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
8893         instead of PLUS_EXPR.
8894         Don't check for the first operand of the POINTER_PLUS_EXPR
8895         was the index as it cannot be.
8896         Call forward_propagate_addr_into_variable_array_index with
8897         the SSA_NAME instead of the statement.
8898         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
8899         (compare_constant): Likewise.
8900         (copy_constant): Likewise.
8901         (compute_reloc_for_constant): Likewise.
8902         (output_addressed_constants): Likewise.
8903         (initializer_constant_valid_p): Likewise.
8904         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
8905         Convert the MIN/MAX of the inner type to the outer
8906         type before comparing them.
8907         * tree-ssa-loop-prefetch.c (idx_analyze_ref):  Handle
8908         POINTER_PLUS_EXPR instead of PLUS_EXPR.
8909         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
8910         of PLUS_EXPR for pointers.
8911         * tree-inline.c (estimate_num_insns_1): Handle
8912         POINTER_PLUS_EXPR.
8913         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
8914         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
8915         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
8916         instead of PLUS_EXPR for the pointer increment statement.
8917         (vect_update_ivs_after_vectorizer): For pointer types, create
8918         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
8919         MULT_EXPR in sizetype.
8920         (vect_gen_niters_for_prolog_loop): Add a cast when creating
8921         byte_misalign.
8922         * tree-object-size.c (plus_expr_object_size): Handle
8923         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
8924         code which is trying to figure out which side is a pointer and 
8925         is the index.
8926         (check_for_plus_in_loops_1): Likewise.
8927         (check_for_plus_in_loops): Likewise.
8928         * c-common.c (pointer_int_sum): Create a
8929         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
8930         * tree-ssa-structalias.c (handle_ptr_arith): Handle
8931         only POINTER_PLUS_EXPR.  Removing all the extra
8932         code which is trying to figure out which side is a pointer and 
8933         is the index.
8934         * tree-cfg.c (verify_expr): Add extra checking for pointers and
8935         PLUS_EXPR and MINUS_EXPR.
8936         Also add checking to make sure the operands of POINTER_PLUS_EXPR
8937         are correct.
8938         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
8939         with make_tree, instead of a pointer type.
8940         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
8941         for pointers instead of PLUS_EXPR.
8942         (s390_gimplify_va_arg): Likewise.
8943         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
8944         instead of PLUS_EXPR when doing addition on pointer
8945         types.  Use sizetype for the second operand.
8946         (spu_gimplify_va_arg_expr): Likewise.
8947         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
8948         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
8949         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
8950         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
8951         for the pointer addition and also use size_int/sizetype
8952         for the offset.
8953         (ix86_gimplify_va_arg): Likewise.
8954         Perform BIT_AND_EXPR on sizetype arguments.
8955         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
8956         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
8957         for the pointer additions and also use size_int for the offsets.
8958         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
8959         additions and also use size_int for the offsets.  Perform
8960         BIT_AND_EXPR on sizetype arguments.
8961         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
8962         POINTER_PLUS_EXPR for pointers and create the
8963         BIT_AND_EXPR in sizetype.
8964         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
8965         instead of PLUS_EXPR for pointer addition.
8966         (rs6000_va_start): Likewise.
8967         Also use sizetype for the offset.
8968         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
8969         as PLUS_EXPR/MINUS_EXPR.
8970         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
8971         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
8972         Don't use BIT_AND_EXPR on a pointer type, convert the
8973         expression to sizetype first.
8974         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
8975         for pointers.
8976         (mips_gimplify_va_arg_expr): Likewise.
8977         Don't create BIT_AND_EXPR in a pointer type.
8978
8979 2007-06-15  Eric Christopher  <echristo@apple.com>
8980
8981         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
8982         (x86_64-*-darwin*): Ditto.
8983         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
8984         for above.
8985
8986 2007-06-15  Matthew Wilcox <matthew@wil.cx>
8987
8988         * doc/extend.texi: Document behavior of __attribute__((aligned))
8989         on typedefs.
8990
8991 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
8992
8993         * rtlanal.c (note_stores): Improve documentation.
8994
8995 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
8996
8997         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
8998         LOCAL_LABEL_PREFIX): Delete.
8999         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
9000         (bfin_internal_label): Delete.
9001
9002 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
9003
9004         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
9005         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
9006         otherwise define to LIBGCC2_TF_CEXT.
9007         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
9008         (LIBGCC_TF_CEXT): Ditto.
9009         (TF_SIZE): Ditto.
9010
9011 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
9012
9013         PR rtl-optimization/32339
9014         * df-scan.c (df_uses_record): Don't modify flags but just add to
9015         it for df_ref_record.
9016
9017 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9018
9019         * tree-mudflap.c: Fix whitespace issues.
9020
9021 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
9022
9023         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
9024
9025 2007-06-14  Eric Christopher  <echristo@apple.com>
9026
9027         * config/i386/sse.md (movdi_to_sse): Rewrite body.
9028         (movv4sf): Use gcc_unreachable instead of abort.
9029
9030 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
9031
9032         PR target/32268
9033         * config/i386/sfp-machine.h (CMPtype): New define.
9034         (mach stubs): Use CMPtype instead of int as a return type.
9035
9036 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
9037
9038         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
9039         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
9040         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
9041         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
9042         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
9043         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
9044         config/soft-fp/soft-fp.h: Update from glibc CVS.
9045
9046 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
9047
9048         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
9049
9050 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
9051
9052         PR target/32341
9053         * config/v850/v850.c: Include dataflow header file.
9054         (substitute_ep_register): Fix typo.
9055
9056 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
9057
9058         * configure.ac: Fix earlier checkin.
9059         * configure: Regenerated.
9060
9061 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
9062
9063         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
9064         * aclocal.m4: Regenerate.
9065         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
9066         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
9067         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
9068         * configure: Regenerate.
9069         * Makefile.in (LOOSE_WARN): Subst loose_warn.
9070
9071         * Makefile.in (quickstrap): Build libgcc too.
9072
9073 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
9074
9075         * configure.ac: Add --enable-checking=df.  Explicitly mention that
9076         the variables are initialized as for "release".
9077         * df-core.c: Use it.
9078         * configure: Regenerate.
9079         * config.in: Regenerate.
9080
9081 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
9082
9083         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
9084         validate_replace_rtx instead of replace_rtx.
9085         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
9086
9087 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
9088
9089         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
9090         (DWARF2_UNWIND_INFO): Override default if configured with
9091         SJLJ EH disabled.
9092         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
9093         (ENDFILE_SPEC): Add crtend.o.
9094         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
9095         (ENDFILE_SPEC): Add crtend.o.
9096         (TARGET_USE_JCR_SECTION): Define.
9097         (MD_UNWIND_SUPPORT): Define for 32-bit target.
9098
9099         * config/i386/cygming-crtbegin.c: New file.
9100         * config/i386/cygming-crtend.c: New file.
9101
9102 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
9103
9104         * config/i386/w32-unwind.h: New file.
9105
9106 2007-06-13  Eric Christopher  <echristo@apple.com>
9107
9108         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
9109         the user set a value below STACK_BOUNDARY.
9110
9111 2007-06-13  Thiemo Seufer  <ths@networkno.de>
9112
9113         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
9114         imply -lpthread for -pthread.
9115
9116 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
9117
9118         * basic-block.h: Remove the prototype for
9119         free_basic_block_vars.
9120         * cfglayout.h: Remove the prototype for
9121         insn_locators_initialize.
9122         * tree.h: Remove the prototype for emit_line_note.
9123
9124         * tree-ssa-pre.c (mergephitemp): Remove.
9125         (init_pre): Don't use mergephitemp.
9126
9127 2007-06-13  Eric Christopher  <echristo@apple.com>
9128
9129         * config/i386/i386.c (override_options): If we've specified
9130         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
9131
9132 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
9133
9134         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
9135         is defined.
9136
9137 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
9138
9139         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
9140         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
9141         (eh_store_handler): New pattern.
9142         (eh_return): Emit it instead of a plain move.
9143
9144 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
9145
9146         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
9147         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
9148         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
9149         def_builtin_const.
9150
9151 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
9152
9153         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
9154         (find_next_insn_start, find_load): New functions.
9155         (bfin_reorg): Use them to deal with the fact that parallel insns are
9156         no longer represented as a SEQUENCE.
9157
9158 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
9159
9160         * config/sparc/sparc.c (sparc_override_options): Initialize
9161         fpu mask correctly.
9162
9163 2007-06-13  Dave Korn  <dave.korn@artimi.com>
9164
9165         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
9166         df_get_live_out.
9167
9168 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
9169
9170         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
9171         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
9172         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
9173         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
9174         tree-vect-transform.c: Fix comment typos.  Follow spelling
9175         conventions.
9176
9177 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
9178
9179        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
9180        to the exit block use set.
9181        (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
9182        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
9183        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
9184
9185 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
9186
9187         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
9188         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
9189         to indicate an error.
9190         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters):
9191         New functions.
9192         (dbg_cnt_process_opt): Print an error on a bad argument.
9193         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
9194         * common.opt (-fdbg-cnt-list): New.
9195         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
9196
9197 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
9198
9199         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
9200         flag on ref-all pointers.
9201
9202 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9203
9204         PR middle-end/31579
9205         * expr.c (expand_expr_addr_expr_1): Call expand_expr
9206         for the offset with the modifier as EXPAND_INITIALIZER
9207         if the modifier is EXPAND_INITIALIZER.
9208         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
9209         a register if we had an overflow.
9210
9211 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9212
9213         * real.c (real_isfinite): New.
9214         (real_sqrt): Use it.
9215         * real.h (real_isfinite): New.
9216         * builtins.c: Use it.
9217
9218 2007-06-12  Ian Lance Taylor  <iant@google.com>
9219             Daniel Berlin  <dberlin@dberlin.org>
9220
9221         PR libstdc++/29286
9222         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
9223         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
9224         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
9225         (DECL_NO_TBAA_P): Define.
9226         (struct tree_decl_common): Add no_tbaa_flag field.
9227         * tree-ssa-structalias.c (struct variable_info): Add
9228         no_tbaa_pruning field.
9229         (new_var_info): Initialize no_tbaa_pruning field.
9230         (unify_nodes): Copy no_tbaa_pruning field.
9231         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
9232         (dump_solution_for_var): Print no_tbaa_pruning flag.
9233         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
9234         callers.
9235         (compute_tbaa_pruning): New static function.
9236         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
9237         Call compute_tbaa_pruning.
9238         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
9239         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
9240         * gimple-low.c (lower_stmt): Likewise.
9241         * tree-gimple.c (is_gimple_stmt): Likewise.
9242         * tree-ssa-operands.c (get_expr_operands): Likewise.
9243         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
9244         * tree-inline.c (estimate_num_insns_1): Likewise.
9245         (copy_result_decl_to_var): Likewise.
9246         * expr.c (expand_expr_real_1): Likewise.
9247         * tree-pretty-print.c (dump_generic_node): Likewise.
9248         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
9249         * omp-low.c (omp_copy_decl_2): Likewise.
9250         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
9251         * doc/c-tree.texi (Expression trees): Document
9252         CHANGE_DYNAMIC_TYPE_EXPR.
9253
9254 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9255
9256         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
9257         with !HONOR_NANS and !HONOR_INFINITIES.
9258         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
9259
9260 2007-06-12  Tristan Gingold  <gingold@adacore.com>
9261
9262         * gcov.c: Comments updated.
9263         (source_info): Add file_time field.
9264         (source_index): New variable.
9265         (mutiple_files): New variable.
9266         (generate_results): New function extracted from process_file.
9267         (process_file): Save and restore chain of functions, generate
9268         results and free structures only if not merging results.
9269         (release_structures): File names are now freed in create_file_names
9270         (create_file_names): Free previous file names.
9271         (find_source): File date is now read here and modifications in
9272         source files is checked here.
9273         (read_graph_file): Only reverse order of functions for the current
9274         object file.
9275         (make_gcov_file_name): Do not generate long names if input_name is
9276         NULL.
9277         (output_lines): If merging results do not display graph, data and
9278         runs informations.
9279         Checking source file modification is done in find_source.
9280
9281         * doc/gcov.texi: Append an s to sourcefile.
9282
9283 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
9284
9285         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
9286         (forced_nop): New pattern.
9287         * config/bfin/bfin.c: Include "df.h".
9288         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
9289         (bfin_discover_loop): Use df_get_live_in instead of
9290         global_live_at_start.
9291         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
9292         df_analyze when done.
9293         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
9294         the insns.  Use QImode for the final insn in a bundle.  Call
9295         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
9296         gen_nop.
9297         (reorder_var_tracking_notes): New function.
9298         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
9299         update_life_info.  Call df_analyze after scheduling and bundle
9300         generation.  Call reorder_var_tracking_notes if generating these
9301         notes.  Call df_finish_pass at the end.
9302
9303 2007-06-12  Dirk Mueller  <dmueller@suse.de>
9304
9305         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
9306         a comparison, not an assignment.
9307
9308 2007-06-12  Olivier Hainque  <hainque@adacore.com>
9309
9310         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
9311         Request walking the subtrees only, leaving the current is_lhs/val_only
9312         untouched.
9313         (convert_non_local_reference): Likewise.
9314
9315 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
9316
9317         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
9318
9319 2007-06-12  Richard Guenther  <rguenther@suse.de>
9320
9321         PR tree-optimization/15353
9322         PR tree-optimization/31657
9323         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
9324         * timevar.def: Add TV_TREE_IFCOMBINE.
9325         * tree-pass.h (pass_tree_ifcombine): Declare.
9326         * tree-ssa-ifcombine.c: New file.
9327         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
9328         * tree-flow.h (blocks_in_phiopt_order): Declare.
9329         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
9330         (tree-ssa-ifcombine.o): New dependencies.
9331
9332 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
9333
9334         PR rtl-optimization/32293
9335         * combine.c (simplify_if_then_else): Truncate return from
9336         nonzero_bits() to correct mode.
9337
9338 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
9339
9340         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
9341         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
9342
9343 2007-06-11  Diego Novillo  <dnovillo@google.com>
9344
9345         * Makefile.in (reload1.o-warn): Remove.
9346
9347 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
9348
9349         * combine.c (subst): Use reg_overlap_mentioned_p
9350         instead of comparing register numbers directly.
9351
9352 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
9353
9354         * reload1.c (mark_home_live_1): Use the mode parameter.
9355
9356 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
9357
9358         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
9359         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
9360         word "deferred".
9361         * df-core.c: Ditto.
9362
9363 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
9364
9365         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
9366
9367 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
9368
9369         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
9370         from integer registers.
9371         (FP mode splitters): Handle TFmode.
9372
9373 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
9374
9375         * tree-ssa-structalias.c (find_what_p_points_to): Return false
9376         for ref-all pointers that point-to anything.
9377
9378 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
9379
9380         * config/arm/arm.c (arm_output_dwarf_dtprel,
9381         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
9382
9383 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
9384
9385         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
9386         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
9387         to memory moves.
9388
9389 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
9390
9391         * tree.c (signed_or_unsigned_type_for): New.
9392         (unsigned_type_for): Use signed_or_unsigned_type_for.
9393         (signed_type_for): Use signed_or_unsigned_type_for.
9394         * tree.h (signed_or_unsigned_type_for): New.
9395         (get_signed_or_unsigned_type): Remove.
9396         * fold-const.c (fold_negate_expr): Use signed_type_for instead of
9397         lang_hooks.types.signed_type
9398         (size_diffop): Likewise.
9399         (all_ones_mask_p): Likewise.
9400         (build_range_check): Likewise.
9401         (fold_cond_expr_with_comparison): Likewise.
9402         (fold_cond_expr_with_comparison): Likewise.
9403         (unextend): Likewise.
9404         (extract_muldiv_1): Likewise.
9405         (fold_single_bit_test_into_sign_test): Likewise.
9406         (fold_binary): Likewise.
9407         (fold_ternary): Likewise.
9408         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
9409         instead of get_signed_or_unsigned_type.
9410         * c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
9411         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
9412         * expr.c (signed_or_unsigned_type_for): Use
9413         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
9414         * langhooks.c (get_signed_or_unsigned_type): Remove.
9415         (lhd_signed_or_unsigned_type): Remove.
9416         * langhooks.h (lang_hooks_for_types): Remove signed_type and
9417         signed_or_unsigned_type.
9418         (lhd_signed_or_unsigned_type): Remove.
9419         * expmed.c (make_tree): Use signed_type_for instead of
9420         lang_hooks.types.signed_type.
9421         * c-common.c (same_scalar_type_ignoring_signedness): Use
9422         c_common_signed_type instead of lang_hooks.types.signed_type.
9423         (c_common_unsigned_type): New.
9424         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
9425         (shorten_compare): Use c_common_unsigned_type instead of
9426         c_common_signed_or_unsigned_type.
9427         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
9428         unsigned_type_for.
9429         * convert.c (convert_to_integer): Use signed_type_for instead of
9430         lang_hooks.types.signed_type.
9431         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
9432         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
9433         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
9434         * c-format.c (check_format_types): Use c_common_unsigned_type
9435         instead of unsigned_type_for.
9436         * c-decl.c (groakdeclarator): Likewise.
9437         * c-typeck.c (convert_for_assignment): Likewise.
9438         * c-common.h (c_common_unsigned_type): New.
9439
9440 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
9441
9442         PR target/32280
9443         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
9444         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
9445
9446 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
9447
9448         PR middle-end/32279
9449         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
9450         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
9451
9452 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
9453             Sebastian Pop  <sebpop@gmail.com>
9454
9455         * lambda-code.c (remove_iv): New.
9456         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
9457
9458 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
9459
9460         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
9461         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
9462         * tree-ssa-loop-prefetch.c: Include optabs.h.
9463         (FENCE_FOLLOWING_MOVNT): New macro.
9464         (struct mem_ref): Add independent_p and storent_p fields.
9465         (record_ref): Initalize the new fields.
9466         (gather_memory_references_ref): Return true if the reference
9467         could be analysed.
9468         (gather_memory_references): Check whether all memory accesses
9469         in loop were recorded.
9470         (should_issue_prefetch_p): Return false for nontemporal stores.
9471         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
9472         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
9473         (determine_loop_nest_reuse): Detect independent memory references.
9474         (loop_prefetch_arrays): Call mark_nontemporal_stores.
9475         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
9476         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
9477         * config/i386/i386.h (x86_mfence): Declare.
9478         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
9479         * config/i386/i386.c (x86_mfence): New variable.
9480         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
9481
9482         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
9483         * optabs.c (init_optabs): Initialize storent_optab.
9484         * optabs.h (enum optab_index): Add OTI_storent.
9485         (storent_optab): Declare.
9486         * genopinit.c (optabs): Add initialization for storent_optab.
9487         * tree.h (MOVE_NONTEMPORAL): New macro.
9488         * expr.c (expand_assignment, store_expr, store_constructor_field,
9489         store_constructor, store_field, expand_expr_real_1): Propagate
9490         nontemporality of the expanded store.
9491         (emit_storent_insn): New function.
9492         * expr.h (expand_assignment, store_expr): Declaration changed.
9493         * function.c (assign_parm_setup_reg): Pass false as nontemporality
9494         to expand_assignment.
9495         * stmt.c (expand_asm_expr): Ditto.
9496         * calls.c (initialize_argument_information): Pass false as
9497         nontemporality to store_expr.
9498         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
9499         storentsi): New.
9500
9501 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
9502
9503         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
9504         parameter, use it.
9505         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
9506
9507 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
9508
9509         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
9510         and allow DECL_P here.
9511
9512 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
9513
9514         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
9515         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
9516         track of the size of the expression.
9517         * cfghooks.c (merge_blocks): Remove block from loops structure only
9518         after call of the merge_blocks hook.
9519
9520 2007-06-09  Tom Tromey  <tromey@redhat.com>
9521
9522         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
9523         (deprecated_state): Removed.
9524         (start_decl): Update.
9525         (enum deprecated_states): Moved earlier.
9526         (groktypename): Update.
9527         (push_parm_decl): Likewise.
9528         (grokfield): Likewise.
9529         (start_function): Likewise.
9530
9531 2007-06-09  Ian Lance Taylor  <iant@google.com>
9532
9533         PR tree-optimization/32169
9534         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
9535         CONVERT_EXPR, check whether min and max both converted to an
9536         overflow infinity representation.
9537
9538 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
9539
9540         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
9541         not inserted on the edge.
9542
9543 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
9544
9545         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
9546         instructions if they are supported.
9547         (__divsi3, __umodsi3, __modsi3): Likewise.
9548         (__ashldi3, __ashrdi3, __lshrdi3): New.
9549         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
9550
9551 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
9552             Tony Linthicum <tony.linthicum@amd.com>
9553
9554         * doc/invoke.texi: Add fvect-cost-model flag.
9555         * common.opt (fvect-cost-model): New flag.
9556         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
9557         cost fields in stmt_vec_info struct for STMT.
9558         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
9559         fields in stmt_vec_info struct and access functions for the same.
9560         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
9561         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
9562         load, store and vector to scalar operation.
9563         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
9564         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
9565         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
9566         (TARG_VEC_STORE_COST): Define cost of vector store.
9567         (vect_estimate_min_profitable_iters): Define new function.
9568         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
9569         check to evaluate if loop iterations are less than minimum profitable
9570         iterations determined by cost model or minimum vect loop bound defined
9571         by user, whichever is more conservative.
9572         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
9573         run-time check to evaluate if loop iterations are less than minimum
9574         profitable iterations determined by cost model or minimum vect loop
9575         bound defined by user, whichever is more conservative.
9576         (vect_estimate_min_profitable_iterations): New function to estimate
9577         mimimimum iterartions required for vector version of loop to be
9578         profitable over scalar version.
9579         (vect_model_reduction_cost): New function.
9580         (vect_model_induction_cost): New function.
9581         (vect_model_simple_cost): New function.
9582         (vect_cost_strided_group_size): New function.
9583         (vect_model_store_cost): New function.
9584         (vect_model_load_cost): New function.
9585         (vectorizable_reduction): Call vect_model_reduction_cost during
9586         analysis phase.
9587         (vectorizable_induction): Call vect_model_induction_cost during
9588         analysis phase.
9589         (vectorizable_load): Call vect_model_load_cost during analysis phase.
9590         (vectorizable_store): Call vect_model_store_cost during analysis phase.
9591         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
9592         vectorizable_promotion, vectorizable_demotion): Call
9593         vect_model_simple_cost during analysis phase.
9594
9595 2007-06-08  Simon Baldwin  <simonb@google.com>
9596
9597         * reg-stack.c (get_true_reg): Readability change.  Moved default case
9598         label into direct switch statement scope.
9599
9600 2007-06-08  Simon Baldwin  <simonb@google.com>
9601
9602         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
9603         in gcc_assert() with '==' comparison.
9604
9605 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
9606
9607         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
9608         TARGET_ABM handling of x86_popcnt variable.
9609
9610 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
9611
9612         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
9613         __builtin_copysignq and __builtin_infq built-in functions.
9614
9615 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
9616
9617         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
9618         SSE4.2 section.  Correct built-in function names in SSE4A section.
9619
9620 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
9621
9622         PR tree-optimization/32243
9623         * tree-vect-transform.c (vectorizable_type_promotion): Move check
9624         for ncopies after ratio check between nunits_out and nunits_in.
9625         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
9626
9627 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
9628
9629         PR tree-optimization/32224
9630         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
9631         vectorization upon a non GIMPLE_MODIFY_STMT.
9632
9633 2007-06-08  Christian Bruel  <christian.bruel@st.com>
9634
9635         PR target/29953
9636         * config/sh/sh.md (doloop_end): New pattern and splitter.
9637         * loop-iv.c (simple_rhs_p): Check for hardware registers.
9638
9639 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
9640
9641         PR middle-end/32209
9642         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
9643         functions.
9644         (verify_dominators): Do not change dominance tree.
9645
9646 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
9647
9648         * config/sh/constraints.md: New file.
9649         * config/sh/sh.c: Include tm-constrs.h.
9650         (reg_class_from_letter): Remove.
9651         (prepare_cbranch_operands): Use satisfies_constraint_*
9652         function instead of macro.
9653         (andcosts, broken_move, sh_secondary_reload): Likewise.
9654         * config/sh/predicates.md (trapping_target_operand): Likewise.
9655         (and_operand, arith_operand, arith_reg_or_0_operand,
9656         cmp_operand, logical_operand, target_operand,
9657         ua_address_operand, ua_offset, xor_operand): Likewise.
9658         * config/sh/sh.md: Include constraints.md.
9659         (*movsicc_t_false): Use satisfies_constraint_* function
9660         instead of macro.
9661         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
9662         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
9663         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
9664         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
9665         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
9666         (REG_CLASS_FROM_CONSTRAINT): Remove.
9667         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
9668         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
9669         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
9670         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
9671         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
9672         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
9673         function instead of macro.
9674         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
9675         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
9676         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
9677         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
9678         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
9679         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
9680         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
9681         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
9682         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
9683         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
9684         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
9685         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
9686         EXTRA_CONSTRAINT_STR): Likewise.
9687         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
9688
9689 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
9690
9691         * config/i386/darwin.h (STACK_BOUNDARY): Define.
9692
9693 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
9694
9695         PR c++/30759
9696         * c-common.h (flag_cpp0x): Replaced by...
9697         (cxx_dialect): ... this new variable specifying the C++ dialect that
9698         is used.
9699         * c-common.c (flag_cpp0x): Removed.
9700         (cxx_dialect): Defined.
9701         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
9702         cxx_dialect.
9703         * c-opts.c (c_common_post_options): Likewise.
9704         (set_std_cxx98): Set cxx_dialect to cxx98.
9705         (set_std_cxx0x): Set cxx_dialect to cxx0x.
9706
9707 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
9708             Hui-May Chang <hm.chang@apple.com>
9709
9710         * doc/invoke.texi (Darwin Options): Update documentation for
9711         -mmacosx-version-min.
9712         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
9713         * config/darwin-driver.c: New file.
9714         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
9715         * config/t-darwin (darwin-driver.o): New rule.
9716
9717         * config/darwin-c.c (version_as_macro): Ignore low digit.
9718
9719 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
9720
9721         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
9722         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
9723         (CSGNMODE): New mode macro.
9724         (CSGNVMODE): New mode attribute.
9725         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
9726         expander using CSGNMODE mode macro.  Handle TFmode.
9727         (copysign<mode>3_const): Rename from copysignsf3_const and
9728         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
9729         Handle TFmode.
9730         (copysign<mode>3_var): Rename from copysignsf3_var and
9731         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
9732         Handle TFmode.
9733         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
9734         mode macro.  Handle TFmode.
9735         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
9736         (iortf3, *iortf3): Ditto.
9737         (xortf3, *xortf3): Ditto.
9738         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
9739         TFmode and TImode masks.
9740         (ix86_expand_copysign): Expand TFmode copysign insn.
9741         (IX86_BUILTIN_INFQ): New.
9742         (IX86_BUILTIN_FABSQ): Ditto.
9743         (IX86_BUILTIN_COPYSIGNQ): Ditto.
9744         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
9745         [__builtin_fabsq]: Ditto.
9746         [__builtin_copysignq]: Ditto.
9747         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
9748         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
9749         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
9750         ix86_expand_binop_builtin().
9751
9752 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
9753
9754         * config/xtensa/lib1funcs.asm: Clean up whitespace.
9755
9756 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
9757
9758         PR target/31850
9759         * rtl.h (push_to_sequence2): New.
9760         * emit-rtl.c (push_to_sequence2): New.
9761         * function.c (assign_parm_data_all): Add new fields.
9762         (assign_parm_setup_block): Call push_to_sequence2 instead of
9763         push_to_sequence.
9764         (assign_parm_setup_reg): Ditto.
9765         (assign_parm_setup_stack): Ditto.
9766         (assign_parms_unsplit_complex): Ditto.
9767         (assign_parms): Change field name.
9768
9769 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
9770
9771         PR tree-optimization/32220
9772         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
9773         phi node is reached before defining statement.
9774
9775 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9776
9777         PR tree-opt/32231
9778         * tree-vect-transform.c (vectorizable_call): Call update_stmt
9779         after changing the right hand side of the assignment.
9780
9781 2007-06-06  Eric Christopher  <echristo@apple.com>
9782
9783         * config.gcc (i?86-*-darwin*): Remove arch parameter.
9784         (x86_64-*-darwin*): Ditto.
9785         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
9786         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
9787
9788 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
9789
9790         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
9791         coding conventions.
9792         (add_key): Likewise.
9793         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
9794         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
9795         variable names.
9796         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory
9797         macros.
9798         (add_cost_one_coalesce): Likewise.
9799         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
9800         variable names. Rename orig to orig_name for consistency.
9801         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the
9802         coding conventions.
9803         (cprop_into_successor_phis): Avoid using C++ keywords as variable
9804         names.
9805         (record_equivalences_from_stmt): Likewise.
9806         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
9807         the coding conventions.
9808         (memory_ssa_name_same): Likewise.
9809         (dse_optimize_stmt): Likewise.
9810         (dse_record_phis): Likewise.
9811         (dse_finalize_block): Likewise.
9812         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
9813         keywords as variable names.
9814         (may_move_till): Cast according to the coding conventions.
9815         (force_move_till_expr): Avoid using C++ keywords as variable names.
9816         (force_move_till): Cast according to the coding conventions.
9817         (memref_hash): Likewise.
9818         (memref_eq): Likewise.
9819         (gather_mem_refs_stmt): Likewise.
9820         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid
9821         using C++ keywords as variable names.
9822         (idx_find_step): Cast according to the coding conventions.
9823         (idx_record_use): Likewise.
9824         (find_depends): Likewise.
9825         (prepare_decl_rtl): Likewise.
9826         (mbc_entry_hash): Likewise.
9827         (mbc_entry_eq): Likewise.
9828         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
9829         (simplify_replace_tree): Avoid using C++ keywords as variable names.
9830         (idx_infer_loop_bounds): Cast according to the coding conventions.
9831         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
9832         * tree-ssa-math-opts.c (occ_new ): Likwise.
9833         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
9834         macros.
9835         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as
9836         variable names.
9837         (add_use_op): Likewise.
9838         (add_vop): Likewise.
9839         (add_vuse_op): Likewise.
9840         (add_vdef_op): Likewise.
9841         (get_expr_operands): Likewise.
9842         (push_stmt_changes): Use type safe memory macros.
9843         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
9844         keywords as variable names.
9845         (conditional_replacement): Likewise.
9846         (minmax_replacement): Likewise.
9847         (abs_replacement): Likewise.
9848         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
9849         coding conventions.
9850         (insert_fake_stores): Avoid using C++ keywords as variable names.
9851         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
9852         conventions.
9853         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
9854         (heapvar_insert): Use type safe memory macros.
9855         (new_var_info): Cast according to the coding conventions.
9856         (new_constraint): Likewise.
9857         (remove_preds_and_fake_succs): Use type safe memory macros.
9858         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
9859         conventions.
9860         (thread_single_edge): Likewise.
9861         (thread_through_loop_header): Likewise.
9862
9863 2007-06-06  Eric Christopher  <echristo@apple.com>
9864
9865         * config/i386/i386.c (override_options): Move handling
9866         of TARGET_SUBTARGET* earlier.
9867
9868 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
9869
9870         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
9871         use %n on printf.
9872
9873 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
9874
9875         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
9876         emited outside of basic block.
9877         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
9878         the created blocks.
9879         * rtl.h (delete_insn_chain): Declaration changed.
9880         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
9881         non-removed insns.
9882         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
9883         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
9884         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
9885         to delete_insn_chain.
9886         (rtl_verify_flow_info_1): Verify that the insns in header and footer
9887         do not have bb field set.
9888         (rtl_verify_flow_info): Verify that insns between basic blocks do not
9889         have bb field set.
9890         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
9891         * cfgcleanup.c (try_optimize_cfg): Ditto.
9892
9893 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
9894
9895         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
9896         (lambda_body_vector_new): Use type safe memory macros.
9897         (lambda_linear_expression_new): Likewise.
9898         (lambda_loopnest_new): Likewise.
9899         (lambda_lattice_new): Likewise.
9900         (replace_uses_equiv_to_x_with_y): Cast according to the coding
9901         conventions. Use type safe memory macros.
9902         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
9903         (lambda_body_vector_s): Likewise.
9904         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
9905         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
9906
9907 2007-06-06  Richard Guenther  <rguenther@suse.de>
9908
9909         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
9910         if we need to schedule cfg_cleanup.
9911         (tree_ssa_forward_propagate_single_use_vars): Do so.
9912
9913 2007-06-06  Ian Lance Taylor  <iant@google.com>
9914
9915         * fold-const.c (merge_ranges): If range_successor or
9916         range_predecessor fail, just return 0.
9917
9918 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
9919
9920         PR tree-optimization/32216
9921         * tree-vectorizer.c (supportable_widening_operation): Determine
9922         signedness of FIX_TRUNC_EXPR from output operand.
9923         (supportable_narrowing_operation): Ditto.
9924         * tree-vect-generic.c (expand_vector_operations_1): Determine
9925         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
9926         from input operand.
9927
9928 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
9929
9930         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
9931         (struct pta): ...from here. Change flags to unsigned to avoid
9932         excessive casting (as it is used as a bit mask).
9933         (override_options): Add casts according to the coding convenventions.
9934         (x86_64_elf_unique_section): Likewise.
9935         (examine_argument): Avoid using C++ keywords as variable names.
9936         (construct_container): Likewise.
9937         (legitimize_pic_address): Likewise.
9938         (get_dllimport_decl): Cast according to the coding conventions. Use
9939         type safe memory macros.
9940         (legitimize_address): Cast according to the coding conventions.
9941         (emit_i387_cw_initialization): Corrected the type of slot to enum
9942         ix86_stack_slot.
9943         (ix86_init_machine_status): Use type safe memory macros.
9944         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
9945         (bdesc_pcmpistr): Likewise.
9946         (bdesc_crc32): Likewise.
9947         (bdesc_sse_3arg): Likewise.
9948         (bdesc_2arg): Likewise.
9949         (bdesc_1arg): Likewise.
9950         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
9951         (ix86_expand_sse_pcmpistr): Likewise.
9952         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
9953         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
9954         int to match the langhook definition.
9955         (ix86_builtin_conversion): Change the type of code to unsigned init to
9956         match the langhook definition.
9957         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
9958         names.
9959         (ix86_preferred_output_reload_class): Likewise.
9960         (ix86_cannot_change_mode_class): Likewise.
9961         (ix86_memory_move_cost): Likewise.
9962         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
9963         avoid excessive casting later on.
9964         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
9965
9966 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
9967
9968         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
9969         as flags setting insn.
9970         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
9971
9972 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
9973
9974         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
9975         (UNSPEC_ROUND): New.
9976         ("sse4_1_round<mode>2"): New insn pattern.
9977         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
9978         SSE4.1 targets.
9979         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
9980         expander using SSEMODEF mode macro.  Expand using
9981         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
9982         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
9983         expander using SSEMODEF mode macro.  Expand using
9984         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
9985         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
9986         expander using SSEMODEF mode macro.  Expand using
9987         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
9988         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
9989         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
9990         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
9991         UNSPEC_ROUNDS.
9992
9993 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
9994             Sebastian Pop  <sebpop@gmail.com>
9995
9996         * lambda.h (build_linear_expr): New.
9997         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
9998         Use build_linear_expr, call fold and force_gimple_operand.
9999         (lambda_loopnest_to_gcc_loopnest): Check that there is
10000         something to insert.
10001         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
10002
10003 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
10004
10005         PR preprocessor/23479
10006         * doc/extend.texi: Document the 0b-prefixed binary integer
10007         constant extension.
10008
10009 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
10010
10011         PR tree-optimization/32215
10012         * tree-vectorizer.c (supportable_widening_operation): Return false
10013         for unsupported FIX_TRUNC_EXPR tree code.
10014         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
10015
10016 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
10017
10018         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
10019         register on SPE targets.  Change documentation to reflect
10020         reality.
10021         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
10022         Change FIXED_SCRATCH to 14 and document why we're keeping r14
10023         out of the register allocation pool.
10024         (rs6000_reg_live_or_pic_offset_p): New function.
10025         (rs6000_emit_prologue): Move the actual saving of LR up to free
10026         r0 for holding r11.  Split saving of SPE 64-bit registers into
10027         its own case.  Ensure that offsets will always be in-range for
10028         'evstdd' by using r11 as a scratch register to point at the start
10029         of the SPE save area.  Save r11 if necessary, as it is the static
10030         chain register.
10031         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
10032         into its own case.  Ensure that offsets will always be in-range
10033         for 'evldd' by using r11 as a scratch register to point at the
10034         start of the SPE save area.  Also adjust r11 when restoring
10035         the stack pointer to compensate for pre-loading r11.
10036
10037 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
10038
10039         * cfg.c (init_flow): Use type safe memory macros.
10040         (alloc_block): Likewise.
10041         (unchecked_make_edge): Likewise.
10042         (dump_flow_info): Avoid using C++ keywords as variable names.
10043         (copy_original_table_clear): Cast according to the coding conventions.
10044         (copy_original_table_set): Likewise.
10045         * cfgexpand (label_rtx_for_bb): Likewise.
10046         (expand_gimple_basic_block): Likewise.
10047         * cfghooks.c (dump_bb): Likewise.
10048         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
10049         variable names.
10050         (lv_add_condition_to_bb): Likewise.
10051         * cfglayout (relink_block_chain): Cast according to the coding
10052         conventions.
10053         (fixup_reorder_chain): Likewise.
10054         (fixup_fallthru_exit_predecessor): Likewise.
10055         * cfgloop.c (glb_enum_p): Likewise.
10056         (get_exit_description): Likewise.
10057         (dump_recorded_exit): Likewise.
10058         * cfgloop.h (enum loop_estimation): Move out of struct scope...
10059         (struct loop): ... from here.
10060         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
10061         conventions.
10062         * cfgrtl.c (rtl_create_basic_block): Likewise.
10063         (rtl_split_block): Likewise.
10064         (rtl_dump_bb): Likewise.
10065         (cfg_layout_split_block): Likewise.
10066         (init_rtl_bb_info): Use typesafe memory macros.
10067
10068         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
10069         * graphds.h: Updated all usages of edge to graph_edge.
10070         * graphds.c: Likewise.
10071         * cfgloopanal.c: Likewise.
10072
10073 2007-06-05  Ian Lance Taylor  <iant@google.com>
10074
10075         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
10076         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
10077         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
10078         expression.
10079         (test_for_singularity): Likewise.
10080
10081 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
10082
10083         * config/i386/constraints.md ("Y2"): Replaced by ...
10084         ("Yt"): This.
10085         * config/i386/i386.md: Likewise.
10086         * config/i386/mmx.md: Likewise.
10087         * config/i386/sse.md: Likewise.
10088
10089 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
10090
10091         * config/i386/constraints.md ("z"): Replaced by ...
10092         ("Y0"): This.
10093         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
10094         (sse4_1_blendvps): Likewise.
10095         (sse4_1_pblendvb): Likewise.
10096         (sse4_2_pcmpestr): Likewise.
10097         (sse4_2_pcmpestrm): Likewise.
10098         (sse4_2_pcmpestr_cconly): Likewise.
10099         (sse4_2_pcmpistr): Likewise.
10100         (sse4_2_pcmpistrm): Likewise.
10101         (sse4_2_pcmpistr_cconly): Likewise.
10102
10103 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
10104
10105         * matrix-reorg.c (transform_access_sites): Fix computation.
10106         (transform_allocation_sites): Same.
10107
10108 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
10109
10110         * config/i386/i386.c (override_options): Use
10111         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
10112
10113 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
10114
10115         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
10116         (nonimm_not_xmm0_operand): Ditto.
10117         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
10118         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
10119         as operand[2] predicate.  Require "z" class XMM register for
10120         operand[3].  Adjust asm template.
10121         ("sse4_1_blendvpd"): Ditto.
10122         ("sse4_1_pblendvb"): Ditto.
10123         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
10124         force op2 into xmm0 register for variable blend instructions.
10125
10126 2007-06-04  Tom Tromey  <tromey@redhat.com>
10127
10128         * c-tree.h (start_enum): Update.
10129         (build_enumerator): Likewise.
10130         * c-decl.c (enum_next_value): Removed.
10131         (enum_overflow): Likewise.
10132         (start_enum): Add c_enum_contents argument.  Don't use globals.
10133         (build_enumerator): Likewise.
10134         * c-tree.h (struct c_enum_contents): New struct.
10135
10136 2007-06-04  Tom Tromey  <tromey@redhat.com>
10137
10138         * c-common.c (c_common_get_alias_set): Fix indentation.
10139
10140 2007-06-04  Ian Lance Taylor  <iant@google.com>
10141
10142         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
10143         to overflow, reduce overflow infinity to regular infinity.
10144         (vrp_var_may_overflow): New static function.
10145         (vrp_visit_phi_node): Check vrp_var_may_overflow.
10146
10147 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
10148
10149         * stor-layout.c (layout_type): Remove duplicate code.
10150
10151 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
10152
10153         PR c/32191
10154         * c-common.c (c_define_builtins): Call targetm.init_builtins ()
10155         before build_common_builtin_nodes ().
10156
10157 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
10158
10159         PR target/31733
10160         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
10161
10162 2007-06-04  Jan Hubicka  <jh@suse.cz>
10163
10164         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
10165         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
10166         instead of _stat version.
10167
10168 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
10169
10170         PR tree-optimization/32194
10171         * tree-predcom.c (determine_offset): Check that both references have
10172         the same type.
10173
10174 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
10175
10176         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
10177         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
10178         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
10179         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
10180         Add argument to iterate_fix_dominators call.
10181         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
10182         * gcse.c (hoist_code): Change domby to vector.
10183         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
10184         Add argument to iterate_fix_dominators call.
10185         * loop-doloop.c (doloop_modify): Changed recount_dominator to
10186         recompute_dominator.
10187         * lambda-code.c (perfect_nestify): Ditto.
10188         * cfgloopanal.c: Include graphds.h.
10189         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
10190         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
10191         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
10192         add_edge call.
10193         * graphds.c: New file.
10194         * graphds.h: New file.
10195         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
10196         (get_dominated_by, get_dominated_by_region): Change return type to
10197         vector.
10198         (verify_dominators): Recompute all dominators and compare the results.
10199         (recount_dominator): Renamed to ...
10200         (recompute_dominator): ... this.  Do not check that the block is
10201         dominated by entry.
10202         (iterate_fix_dominators): Reimplemented.
10203         (prune_bbs_to_update_dominators, root_of_dom_tree,
10204         determine_dominators_for_sons): New functions.
10205         * et-forest.c (et_root): New function.
10206         * et-forest.h (et_root): Declare.
10207         * Makefile.in (graphds.o): Add.
10208         (cfgloopanal.o): Add graphds.h dependency.
10209         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
10210         * basic-block.h (get_dominated_by, get_dominated_by_region,
10211         iterate_fix_dominators): Declaration changed.
10212         (recount_dominator): Renamed to ...
10213         (recompute_dominator): ... this.
10214         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
10215         (thread_through_all_blocks): Do not free dominance info.
10216
10217 2007-06-03  Andreas Schwab  <schwab@suse.de>
10218
10219         * config/m68k/m68k.c (override_options): Don't override
10220         REAL_MODE_FORMAT.
10221         * config/m68k/m68k-modes.def (SF, DF): Define to use
10222         motorola_single_format and motorola_double_format, resp.
10223         * real.c (motorola_single_format): Renamed from
10224         coldfire_single_format.
10225         (motorola_double_format): Renamed from coldfire_double_format.
10226         (encode_ieee_extended): Generate a proper canonical NaN image
10227         respecting canonical_nan_lsbs_set.
10228         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
10229         true.
10230         * real.h: Adjust declarations.
10231
10232 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
10233
10234         PR target/32163
10235         * config/sh/sh.md (symGOT_load): Don't schedule insns when
10236         the symbol is generated with the stack protector.
10237
10238 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
10239
10240         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
10241         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
10242         "interrupt".
10243         * doc/extend.texi (interrupt): Mention m68k.
10244
10245 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
10246
10247         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
10248         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
10249         (ix86_expand_sse_pcmpestr): Do not check operands for
10250         "register_operand", when insn operand predicate is "register_operand".
10251         (ix86_expand_sse_pcmpistr): Ditto.
10252
10253 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
10254             Uros Bizjak  <ubizjak@gmail.com>
10255
10256         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
10257         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
10258         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
10259         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
10260         * config/i386/constraints.md ("z"): New register constraint
10261         for members of SSE_FIRST_REG class.
10262         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
10263         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
10264         SSE_FIRST_REG class.
10265         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
10266         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
10267         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
10268         (IX86_BUILTIN_PCMPESTRM128): Likewise.
10269         (IX86_BUILTIN_PCMPESTRA128): Likewise.
10270         (IX86_BUILTIN_PCMPESTRC128): Likewise.
10271         (IX86_BUILTIN_PCMPESTRO128): Likewise.
10272         (IX86_BUILTIN_PCMPESTRS128): Likewise.
10273         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
10274         (IX86_BUILTIN_PCMPISTRI128): Likewise.
10275         (IX86_BUILTIN_PCMPISTRM128): Likewise.
10276         (IX86_BUILTIN_PCMPISTRA128): Likewise.
10277         (IX86_BUILTIN_PCMPISTRC128): Likewise.
10278         (IX86_BUILTIN_PCMPISTRO128): Likewise.
10279         (IX86_BUILTIN_PCMPISTRS128): Likewise.
10280         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
10281         (struct builtin_description): Change "flag" field to unsigned.
10282         (bdesc_pcmpestr): New builtin description table.
10283         (bdesc_pcmpistr): Likewise.
10284         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
10285         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
10286         Initialize pcmp[ei]str[im] insns for SSE4.2.
10287         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
10288         (ix86_expand_sse_pcmpistr): Likewise.
10289         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
10290         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
10291         (UNSPEC_PCMPISTR): Likewise.
10292         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
10293         (sse4_2_pcmpestri):New isns pattern.
10294         (sse4_2_pcmpestrm): Likewise.
10295         (sse4_2_pcmpestr_cconly): Likewise.
10296         (sse4_2_pcmpistr): New insn patern and splitter.
10297         (sse4_2_pcmpistri):New isns pattern.
10298         (sse4_2_pcmpistrm): Likewise.
10299         (sse4_2_pcmpistr_cconly): Likewise.
10300         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
10301         in SSE4.2.
10302
10303 2007-06-01  David Daney  <ddaney@avtrex.com>
10304
10305         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
10306         LOADGP_ABSOLUTE and not binds_local_p.
10307
10308 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
10309
10310         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
10311
10312 2007-06-01  Ian Lance Taylor  <iant@google.com>
10313
10314         * tree-vrp.c (compare_name_with_value): Always set
10315         used_strict_overflow if we get a result from the variable itself.
10316
10317 2007-06-01  Ian Lance Taylor  <iant@google.com>
10318
10319         PR rtl-optimization/31455
10320         * lower-subreg.c (find_decomposable_subregs): Don't decompose
10321         subregs which have a cast between modes which are not tieable.
10322
10323 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
10324
10325         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
10326         breaks after return statements.
10327
10328 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
10329
10330         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
10331         only after no_new_pseudos.
10332
10333 2007-05-31  Eric Christopher  <echristo@apple.com>
10334
10335         * expr.c (convert_move): Assert that we don't have a BLKmode
10336         operand.
10337         (store_expr): Handle BLKmode moves by calling emit_block_move.
10338
10339 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
10340
10341         * c-typeck.c (build_indirect_ref): Include type in error message.
10342         (build_binary_op): Pass types to binary_op_error.
10343         * c-common.c (binary_op_error): Take two type arguments, print out
10344         types with error.
10345         * c-common.h (binary_op_error): Update prototype.
10346
10347 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
10348
10349         * config/i386/i386.c: Correct coments on -mno-sse4.
10350
10351 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
10352
10353         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
10354         (x86_64-*-*): Likewise.
10355         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
10356         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
10357         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
10358         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
10359         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
10360         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
10361         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
10362         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
10363         (OPTION_MASK_ISA_SSE4): Likewise.
10364         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
10365         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
10366         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
10367         (override_options): Support SSE4.2.
10368         (ix86_build_const_vector): Support SImode and DImode.
10369         (ix86_build_signbit_mask): Likewise.
10370         (ix86_expand_int_vcond): Support V2DImode.
10371         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
10372         (IX86_BUILTIN_CRC32HI): Likewise.
10373         (IX86_BUILTIN_CRC32SI): Likewise.
10374         (IX86_BUILTIN_CRC32DI): Likewise.
10375         (IX86_BUILTIN_PCMPGTQ): Likewise.
10376         (bdesc_crc32): Likewise.
10377         (bdesc_sse_3arg): Likewise.
10378         (ix86_expand_crc32): Likewise.
10379         (ix86_init_mmx_sse_builtins): Support SSE4.2.
10380         (ix86_expand_builtin): Likewise.
10381         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
10382         __SSE4_2__ for -msse4.2.
10383         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
10384         (CRC32MODE): Likewise.
10385         (crc32modesuffix): Likewise.
10386         (crc32modeconstraint): Likewise.
10387         (sse4_2_crc32<mode>): Likewise.
10388         (sse4_2_crc32di): Likewise.
10389         * config/i386/i386.opt (msse4.2): New for SSE4.2.
10390         (msse4): Likewise.
10391         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
10392         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
10393         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
10394         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
10395         (vcondu<mode>): Likewise.
10396         * doc/extend.texi: Document SSE4.2 built-in functions.
10397         * doc/invoke.texi: Document -msse4.2/-msse4.
10398
10399 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
10400
10401         PR tree-optimization/32160
10402         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
10403         variable as gimple reg.
10404         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
10405
10406 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
10407
10408         * gcc.c (main): Don't consider linker options when issuing the
10409         warning about a linker input file not being used.
10410
10411 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10412
10413         * tree-vrp.c (compare_names): Initialize sop.
10414
10415 2007-05-30  Dirk Mueller  <dmueller@suse.de>
10416
10417         * cgraphunit.c (cgraph_analyze_function): Remove
10418         computation of inline parameters.
10419
10420 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
10421
10422         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
10423
10424 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
10425
10426         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
10427         Add vx-common.h.  Include vxworks.h between vx-common.h and
10428         arm/vxworks.h.
10429         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
10430         redefining.
10431         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
10432         (TARGET_ASM_DESTRUCTOR): Likewise.
10433         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
10434         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
10435         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
10436         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
10437         (VXWORKS_ENDIAN_SPEC): Define.
10438         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
10439         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
10440         VXWORKS_* equivalents.
10441         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
10442         (ASM_FILE_START): Delete.
10443         (TARGET_VERSION): Reformat.
10444         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
10445         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
10446         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
10447         (FPBIT, DPBIT): Define.
10448         (fp-bit.c, dp-bit.c): New rules.
10449         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
10450         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
10451         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
10452         * config/arm/arm.h: Include vxworks-dummy.h.
10453         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
10454         Mark with ATTRIBUTE_UNUSED.
10455         (arm_override_options): Do not allow VxWorks RTP PIC to be used
10456         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
10457         make it incompatible with -msingle-pic-base.
10458         (arm_function_ok_for_sibcall): Return false for calls that might
10459         go through a VxWorks PIC PLT entry.
10460         (require_pic_register): New function, split out from...
10461         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
10462         for VxWorks RTPs.
10463         (arm_load_pic_register): Handle the VxWorks RTP initialization
10464         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
10465         (arm_emit_call_insn): New function.
10466         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
10467         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
10468         (pic_offset_arm): New pattern.
10469         (call, call_value): Use arm_emit_call_insn.
10470         (call_internal, call_value_internal): New expanders.
10471         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
10472         VxWorks unless __PIC__.
10473
10474 2007-05-30  Eric Christopher  <echristo@gmail.com>
10475
10476         * genrecog.c: Include regs.h in generated file.
10477         * genemit.c: Ditto. Fix up formatting.
10478         * config/mn10300/constraints.md: New.
10479         * config/mn10300/mn10300.md: Include.
10480         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
10481         Fix up for removed macro.
10482         * config/mn10300/predicates.md (call_address_operand):  Ditto.
10483         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
10484         (CONST_OK_FOR_I): Ditto.
10485         (CONST_OK_FOR_J): Ditto.
10486         (CONST_OK_FOR_K): Ditto.
10487         (CONST_OK_FOR_L): Ditto.
10488         (CONST_OK_FOR_M): Ditto.
10489         (CONST_OK_FOR_N): Ditto.
10490         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
10491         (OK_FOR_Q): Ditto.
10492         (OK_FOR_R): Ditto.
10493         (OK_FOR_T): Ditto.
10494         (EXTRA_CONSTRAINT): Ditto.
10495
10496 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
10497
10498         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
10499         Remove defines.
10500         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
10501         OPTION_MASK_ISA_64BIT.
10502         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
10503
10504 2007-05-30  Richard Guenther  <rguenther@suse.de>
10505
10506         PR middle-end/32152
10507         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
10508         types for comparison.
10509         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
10510         with original typed arguments.
10511         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
10512
10513 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
10514
10515         PR tree-optimization/31769
10516         * except.c (duplicate_eh_regions): Clear prev_try if
10517         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
10518
10519 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
10520
10521         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
10522         * tree-ssa-sink.c (statement_sink_location): Return basic block and
10523         bsi of the location where statements should be inserted.
10524         (sink_code_in_bb): Take bsi from statement_sink_location.
10525         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
10526         instead of bsi_start.
10527         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
10528         bsi_insert_after.
10529         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
10530         (bsi_move_before): Document inconsistency with bsi_move_after.
10531         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
10532
10533 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
10534
10535         * config/i386/i386.h (TARGET_ABM): New define.
10536         (TARGET_POPCNT): Ditto.
10537         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
10538         New temporary defines to redefine from OPTION_ISA_* defines.
10539         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
10540         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
10541         (ix86_isa_flags): New extern int declaration.
10542         (TARGET_SUBTARGET_DEFAULT): New define.
10543         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
10544         (TARGET_SUBTARGET32_DEFAULT): Ditto.
10545         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
10546         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
10547         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
10548         * config/i386/darwin.h: Change TARGET_64BIT define to
10549         OPTION_ISA_64BIT.
10550
10551         * config/i386/i386.opt (m3dnowa): Define as undocumented option
10552         using existing "ix86_isa_flags" varible.
10553         (m32, m64): Use existing "ix86_isa_flags" variable.
10554         (mmmx, m3dnow): Ditto.
10555         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
10556         (mabm): Define as non-negative option using "x86_abm" variable.
10557         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
10558
10559         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
10560         Rewrite feature test bitmap.
10561         (ix86_isa_flags): New initialized global int varible.
10562         (ix86_isa_flags_explicit): New static int variable.
10563         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
10564         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
10565         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
10566         target_flags_explicit.
10567         (override_options): Remove "target_enable" and "target_disable" fields
10568         from "struct ptt". Update processor_target_table accordingly. Remove
10569         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
10570         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
10571         "target_flags" and "ix86_isa_flags_explicit" instead of
10572         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
10573         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
10574         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
10575         to true when either of PTA_POPCNT or PTA_ABM is set in
10576         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
10577         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
10578         processor_alias_table flags entry.  Remove handling of
10579         "target_enable" and "target_disable" fields of processor_target_table.
10580         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
10581         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
10582         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
10583         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
10584         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
10585         "target_flags".
10586         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
10587
10588 2007-05-29  David Daney  <ddaney@avtrex.com>
10589
10590         PR gcc/31975
10591         * config/mips/mips.c (mips_output_mi_thunk): Emit
10592         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
10593
10594 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
10595         * config/i386/i386.c (ix86_function_regparm): Added checking of
10596         ix86_force_align_arg_pointer to determine the number of
10597         register parameters.
10598
10599 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
10600
10601         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
10602         (SET_DR_MISALIGNMENT): New.
10603         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
10604         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
10605         Use SET_DR_MISALIGNMENT.
10606         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
10607         pointer.
10608         * tree-data-ref.c (create_data_ref, compute_all_dependences,
10609         find_loop_nest): Export.
10610         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
10611         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
10612         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
10613         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
10614         New macros.
10615         (struct mem_ref): Add field reuse_distance.
10616         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
10617         Initialize reuse_distance field.
10618         (issue_prefetch_ref): Select temporality of prefetch according to
10619         reuse_distance.
10620         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
10621         self_reuse_distance, determine_loop_nest_reuse): New functions.
10622         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
10623         (tree_ssa_prefetch_arrays): Dump L2 cache size.
10624         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
10625         dependency.
10626
10627 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
10628
10629         * tree-ssa-alias.c: Add aliasing overview.
10630
10631 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
10632             Danny Smith  <dannysmith@users.sourceforge.net>
10633
10634         PR target/29498
10635         * config/i386/t-crtfm: Compile crtfastmath.o with
10636         -minline-all-stringops.
10637         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
10638         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
10639
10640 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10641
10642         * doc/md.texi: Document constraints on HP PA-RISC.
10643
10644         * pa/constraints.md: New file.
10645         * pa.md: Include constraints.md.
10646         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
10647         (integer_store_memory_operand, ldil_cint_p): New functions.
10648         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
10649         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
10650         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
10651         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
10652         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
10653
10654 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
10655
10656         PR c/31339
10657         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
10658         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
10659         case POSTDECREMENT_EXPR>): Return the error_mark_node
10660         if either the real or imaginary parts would an
10661         error_mark_node.
10662
10663 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
10664
10665         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
10666         name when we remove it from a call.
10667
10668 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
10669
10670         * targhooks.c (default_narrow_bitfield): Remove.
10671         * targhooks.h: Remove the prototype for
10672         default_narrow_bitfield.
10673
10674         * langhooks-def.h: Remove the prototype for
10675         hook_get_alias_set_0.
10676         * langhooks.c (hook_get_alias_set_0): Remove.
10677
10678         * global.c (EXECUTE_IF_CONFLICT): Remove.
10679
10680 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10681
10682         PR tree-opt/32100
10683         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
10684         return true when truth_value_p is true and the type
10685         is of signed:1.
10686
10687 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
10688
10689         * doc/install.texi (Prerequisites): We no longer require Autoconf
10690         2.13 for the top-level.
10691
10692 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
10693
10694         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
10695         memory access via x86_expand_vector_move_misalign() only for
10696         TImode values on 32-bit targets.
10697
10698 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
10699
10700         * matrix-reorg.c: New file. Implement matrix flattening and
10701         transposing optimization.
10702         * tree-pass.h: Add matrix reorg pass.
10703         * common.opt: Add fipa-mreorg flag.
10704         * Makefile.in: Add matrix-reorg.c.
10705         * passes.c: Add matrix reorg pass.
10706         * varpool.c (add_new_static_var): New function.
10707         * cgraph.h (add_new_static_var): Declare.
10708
10709 2007-05-27  Eric Christopher  <echristo@apple.com>
10710
10711         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
10712         sp_offset depending on stack size. Save r12 depending
10713         on registers we're saving later.
10714         (rs6000_emit_epilogue): Update sp_offset depending only
10715         on stack size.
10716
10717 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
10718
10719         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
10720         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
10721         * ifcvt.c (if_convert): Ditto.
10722         * tree-ssa-threadupdate.c (thread_block): Ditto.
10723         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
10724         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
10725         verify_loop_closed_ssa): Check number_of_loops instead of
10726         current_loops.
10727         * predict.c (tree_estimate_probability): Ditto.
10728         * tree-if-conv.c (main_tree_if_conversion): Ditto.
10729         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
10730         * modulo-sched.c (sms_schedule): Ditto.
10731         * tree-scalar-evolution.c (scev_const_prop): Ditto.
10732         (scev_finalize): Do not do anything if scev analysis was not
10733         initialized.
10734         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
10735         current_loops == NULL.
10736         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
10737         * loop-init.c (loop_optimizer_init): Do not free current_loops when
10738         there are no loops.
10739         (loop_optimizer_finalize): Assert that loops were analyzed.
10740         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
10741         rtl_doloop): Check number_of_loops instead of current_loops.
10742         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
10743         current_loops == NULL.
10744         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
10745         gate_tree_vectorize tree_linear_transform, check_data_deps,
10746         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
10747         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
10748         Check number_of_loops instead of current_loops.
10749         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
10750         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
10751         free loops if available.
10752         (execute_pre): Do not pass do_fre to fini_pre.
10753
10754 2007-05-27  Tobias Burnus  <burnus@net-b.de>
10755
10756         PR middle-end/32083
10757         * real.c (mpfr_from_real): Fix sign of -Inf.
10758
10759 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
10760
10761         * tree-vect-transform.c (vectorizable_conversion): Initialize
10762         tree_code variables to ERROR_MARK.
10763         (vectorizable_type_demotion): Likewise.
10764         (vectorizable_type_promotion): Likewise.
10765
10766 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
10767
10768         PR target/32065
10769         * config/i386/i386.md (movti): Handle push operands via
10770         ix86_expand_push().
10771
10772 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
10773
10774         * basic-block.h: Remove the prototype for merge_seq_blocks.
10775         * cfgcleanup.c (merge_seq_blocks): Remove.
10776
10777         * tree-flow.h: Remove the prototype for is_aliased_with.
10778         * tree-ssa-alias.c (is_aliased_with): Remove.
10779
10780 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
10781
10782         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
10783
10784         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
10785
10786         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
10787         ix86_expand_sse4_unpack if SSE4.1 is enabled.
10788         (vec_unpacks_hi_v16qi): Likewise.
10789         (vec_unpacku_lo_v16qi): Likewise.
10790         (vec_unpacks_lo_v16qi): Likewise.
10791         (vec_unpacku_hi_v8hi): Likewise.
10792         (vec_unpacks_hi_v8hi): Likewise.
10793         (vec_unpacku_lo_v8hi): Likewise.
10794         (vec_unpacks_lo_v8hi): Likewise.
10795         (vec_unpacku_hi_v4si): Likewise.
10796         (vec_unpacks_hi_v4si): Likewise.
10797         (vec_unpacku_lo_v4si): Likewise.
10798         (vec_unpacks_lo_v4si): Likewise.
10799
10800 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
10801
10802         * c-typeck.c, config/arm/arm.c, config/darwin.c,
10803         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
10804         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
10805         follow spelling conventions in various
10806         warning/error/diagnostic messages.
10807
10808         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
10809         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
10810         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
10811         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
10812         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
10813         * doc/tm.texi: Follow spelling conventions.
10814
10815 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10816
10817         PR tree-opt/32090
10818         * tree-ssa-forwprop.c
10819         (forward_propagate_addr_into_variable_array_index): Remove
10820         the lhs argument.  Use the type of def_rhs instead of lhs.
10821         (forward_propagate_addr_expr_1): Update use of
10822         forward_propagate_addr_into_variable_array_index.
10823
10824 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
10825             Nigel Stephens  <nigel@mips.com>
10826
10827         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
10828         function attributes, "far" being an alias for "long_call".
10829         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
10830         (mips_near_type_p, mips_far_type_p): New.
10831         (mips_comp_type_attributes): New function to check that attributes
10832         attached to a function type are compatible.
10833         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
10834         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
10835         to the target function of the thunk.
10836         (mips_encode_section_info): Check for "near" and "far" function
10837         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
10838
10839         * config/mips/predicates.md (const_call_insn_operand): Test only
10840         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
10841
10842         * doc/extend.texi (Function Attributes): Document MIPS "near" and
10843         "far" attributes.
10844
10845         * testsuite/gcc.target/mips/near-far-1.c:  New test case.
10846         * testsuite/gcc.target/mips/near-far-2.c:  New test case.
10847         * testsuite/gcc.target/mips/near-far-3.c:  New test case.
10848         * testsuite/gcc.target/mips/near-far-4.c:  New test case.
10849
10850 2007-05-25  Eric Christopher  <echristo@apple.com>
10851
10852         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
10853         to x86-darwin configurations.
10854         * config/i386/t-darwin: Add softfp support.
10855         * config/i386/t-darwin64: Ditto.
10856         * config/i386/sfp-machine.h: If mach then don't use
10857         aliasing, emit a stub to call.
10858
10859 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
10860
10861         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
10862         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
10863         tree-predcom.c, tree-ssa-alias-warnings.c,
10864         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
10865         comment typos.  Follow spelling conventions.
10866         * doc/cpp.texi, doc/invoke.texi: Fix typos.
10867
10868 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
10869
10870         PR target/32065
10871         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
10872         constants into memory.  Expand unaligned memory references for
10873         SSE modes via x86_expand_vector_move_misalign() function.
10874
10875 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
10876
10877         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
10878         "memory" attribute for "sseishft" type insn without operands[2].
10879
10880 2007-05-25  Dirk Mueller  <dmueller@suse.de>
10881             Marcus Meissner <meissner@suse.de>
10882
10883         * doc/extend.texi (alloc_size): New attribute.
10884         * c-common.c (handle_alloc_size_attribute): New.
10885         * tree-object-size.c (alloc_object_size): Use alloc_size
10886         attribute, if available.
10887
10888 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
10889
10890         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
10891         with MASK_SSE2.
10892         (__builtin_ia32_vec_ext_v2di): Likewise.
10893         (__builtin_ia32_vec_ext_v4si): Likewise.
10894         (__builtin_ia32_vec_ext_v8hi): Likewise.
10895         (__builtin_ia32_vec_ext_v16qi): Likewise.
10896         (__builtin_ia32_vec_set_v8hi): Likewise.
10897
10898 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
10899
10900         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
10901
10902 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
10903
10904         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
10905         (arm_is_longcall_p): Rename to...
10906         (arm_is_long_call_p): ...this.  Take a single tree argument and
10907         return a bool.
10908         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
10909         (CUMULATIVE_ARGS): Remove call_cookie.
10910         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
10911         (ENCODED_LONG_CALL_ATTR_P): Delete.
10912         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
10913         LONG_CALL_FLAG_CHAR cases.
10914         (ARM_DECLARE_FUNCTION_SIZE): Delete.
10915         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
10916         ARM_DECLARE_FUNCTION_SIZE.
10917         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
10918         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
10919         (arm_encode_call_attribute, current_file_function_operand): Delete.
10920         (arm_function_in_section_p): New function.
10921         (arm_is_longcall_p): Rename to...
10922         (arm_is_long_call_p): ...this.  Take the target function as a single
10923         argument and return a bool.  Do not rely on call cookies.  Check
10924         whether the target symbol is in the same section as the current
10925         function, not just the same compilation unit.
10926         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
10927         (arm_encode_section_info): Don't encode a call type.
10928         * config/arm/arm.md (call, call_value): Update calls to
10929         arm_is_long(_)call_p.  Simplify logic.
10930         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
10931         Update calls to arm_is_long(_)call_p.
10932
10933 2007-05-25  Richard Guenther  <rguenther@suse.de>
10934
10935         PR tree-optimization/31982
10936         * tree-ssa-forwprop.c
10937         (forward_propagate_addr_into_variable_array_index): Handle arrays
10938         with element size one.
10939
10940 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10941
10942         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
10943         (umulsi3_highpart): Likewise.
10944
10945 2007-05-24  Ian Lance Taylor  <iant@google.com>
10946
10947         PR rtl-optimization/32069
10948         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
10949         is NULL.
10950
10951 2007-05-24  Ollie Wild  <aaw@google.com>
10952
10953         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
10954         description.
10955
10956 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
10957
10958         * postreload-gcse.c (reg_changed_after_insn_p): New function.
10959         (oprs_unchanged_p): Use it to check all registers in a REG.
10960         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
10961         (reg_set_between_after_reload_p): Delete.
10962         (reg_used_between_after_reload_p): Likewise.
10963         (reg_set_or_used_since_bb_start): Likewise.
10964         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
10965         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
10966         Use reg_set_between_p instead of reg_set_between_after_reload_p.
10967         * rtlanal.c (reg_set_p): Check whether REG overlaps
10968         regs_invalidated_by_call, rather than just checking the
10969         membership of REGNO (REG).
10970
10971 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
10972
10973         * doc/passes.texi: Document predictive commoning.
10974         * doc/invoke.texi (-fpredictive-commoning): Document.
10975         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
10976         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
10977         adding indices to the generated name.
10978         (schedule_sm): Pass 0 to get_lsm_tmp_name.
10979         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
10980         * tree-pretty-print.c (op_symbol_1): Renamed to ...
10981         (op_symbol_code): ... and exported.
10982         (dump_omp_clause, op_symbol): Use op_symbol_code
10983         instead of op_symbol_1.
10984         * tree-pass.h (pass_predcom): Declare.
10985         * timevar.def (TV_PREDCOM): New timevar.
10986         * tree-ssa-loop.c (run_tree_predictive_commoning,
10987         gate_tree_predictive_commoning, pass_predcom): New.
10988         * tree-data-ref.c (find_data_references_in_loop): Find the
10989         references in dominance order.
10990         (canonicalize_base_object_address): Ensure that the result has
10991         pointer type.
10992         (dr_analyze_innermost): Export.
10993         (create_data_ref): Code to fail for references with invariant
10994         address moved ...
10995         (find_data_references_in_stmt): ... here.
10996         * tree-data-ref.h (dr_analyze_innermost): Declare.
10997         * tree-affine.c: Include tree-gimple.h and hashtab.h.
10998         (aff_combination_find_elt, name_expansion_hash,
10999         name_expansion_eq, tree_to_aff_combination_expand,
11000         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
11001         New functions.
11002         * tree-affine.h (aff_combination_constant_multiple_p,
11003         tree_to_aff_combination_expand): Declare.
11004         * tree-predcom.c: New file.
11005         * common.opt (fpredictive-commoning): New option.
11006         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
11007         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
11008         * Makefile.in (tree-predcom.o): Add.
11009         (tree-affine.o): Add TREE_GIMPLE_H dependency.
11010         * passes.c (init_optimization_passes):  Add dceloop after
11011         copy propagation in loop optimizer.  Add predictive commoning
11012         to loop optimizer passes.
11013
11014 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
11015
11016         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
11017         default hook.
11018
11019 2007-05-24  Jan Hubicka  <jh@suse.cz>
11020
11021         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
11022         statistics.
11023         (genheader): Include statistics.h.
11024
11025         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
11026         notes are gone.
11027         * print-rtl.c (flag_dump_unnumbered): Update comments.
11028         (print_rtl): Fix my previous change.
11029         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
11030         specific data.
11031
11032 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
11033
11034         PR middle-end/32018
11035         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
11036         set_loop_copy.
11037         (thread_through_all_blocks): Call initialize_original_copy_tables
11038         and free_original_copy_tables.
11039         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
11040         Use set_loop_copy.
11041         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
11042         * cfghooks.c (duplicate_block): Use get_loop_copy.
11043         * cfg.c: Include cfgloop.h.
11044         (loop_copy): New hash table.
11045         (initialize_original_copy_tables): Initialize loop_copy table.
11046         (free_original_copy_tables): Free loop_copy table.
11047         (copy_original_table_clear, copy_original_table_set,
11048         set_loop_copy, get_loop_copy): New functions.
11049         (set_bb_original, set_bb_copy): Use copy_original_table_set.
11050         * cfgloop.h (struct loop): Remove copy field.
11051         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
11052         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
11053
11054 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
11055
11056         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
11057         -msse/-msse2/-msse3.
11058
11059 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
11060
11061         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
11062         __builtin_ia32_vec_set_v2di with MASK_64BIT.
11063
11064 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
11065
11066         PR target/27067
11067         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
11068         * targhooks.h (default_mangle_decl_assembler_name): Declare
11069         default hook.
11070         * targhooks.c (default_mangle_decl_assembler_name): Define
11071         default hook.
11072         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
11073         default hook.
11074         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
11075         * langhooks.c (lhd_set_decl_assembler_name): Call
11076         targetm.mangle_decl_assembler_name for names with global scope.
11077
11078         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
11079         default.
11080         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
11081         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
11082         Declare.
11083         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
11084         New. Factored out of i386_pe_encode_section_info.
11085         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
11086         Move check for prior decoration of stdcall
11087         symbols to i386_pe_encode_section_info.
11088         (i386_pe_encode_section_info): Adjust call to
11089         gen_stdcall_or_fastcall_suffix.  Use
11090         i386_pe_maybe_mangle_decl_assembler_name, if needed.
11091         (i386_pe_mangle_decl_assembler_name): New. Wrap
11092         i386_pe_maybe_mangle_decl_assembler_name.
11093
11094 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
11095
11096         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
11097         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
11098         * langhooks.c (get_signed_or_unsigned_type): Don't check for
11099         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
11100         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
11101         TYPE_UNSIGNED.
11102
11103 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
11104             Nigel Stephens  <nigel@mips.com>
11105             Richard Sandiford  <richard@codesourcery.com>
11106
11107         Fix up MIPS16 hard float and add support for complex.
11108
11109         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
11110         (TARGET_SOFT_FLOAT_ABI): New.
11111         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
11112         __mips_soft_float to reflect the ABI in use, not whether the
11113         FPU is directly accessible (e.g., in MIPS16 mode).
11114         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
11115         (UNITS_PER_FPVALUE): Likewise.
11116
11117         * config/mips/mips.c (mips_expand_call): Remove redundant
11118         TARGET_MIPS16 check.
11119         (mips_arg_regno): New.
11120         (function_arg_advance): When setting bits in cum->fp_code for
11121         MIPS16, don't subtract 1 from cum->arg_number, since it is now
11122         zero-based.
11123         (function_arg): Use mips_arg_regno.
11124         (mips_return_mode_in_fpr_p): New.
11125         (mips16_call_stub_mode_suffix): New.
11126         (mips16_cfun_returns_in_fpr_p): New.
11127         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
11128         (mips_output_function_prologue): Test mips16_hard_float, not
11129         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
11130         (mips_expand_epilogue): Call MIPS16 helper routines to copy
11131         return value into a floating-point register.
11132         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
11133         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
11134         (mips16_fp_args): Handle MIPS32r2 ISA which supports
11135         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
11136         word of double arguments from or to the high bits of 64-bit
11137         floating point registers.
11138         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
11139         (mips16_fpret_double): New helper function.
11140         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
11141         support for complex modes.  Fill in DECL_RESULT for stubdecl.
11142         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
11143
11144         * config/mips/mips16.S
11145         (RET, ARG1, ARG2): New.
11146         (MERGE_GPRf, MERGE_GPRt): New.
11147         (DELAYt, DELAYf): New.
11148         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
11149         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
11150         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
11151         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
11152         (SFOP): Renamed to...
11153         (OPSF3): This, and macro-ified.  Updated all uses.
11154         (SFOP2): Renamed to...
11155         (OPSF2): This, and macro-ified.  Updated all uses.
11156         (SFCMP): Renamed to...
11157         (CMPSF): This, and macro-ified.  Updated all uses.
11158         (SFREVCMP): Renamed to...
11159         (REVCMPSF): This, and macro-ified.  Updated all uses.
11160         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
11161         (LDDBL1, LDDBL2, RETDBL): Deleted.
11162         (DFOP): Renamed to...
11163         (OPDF3): This, and macro-ified.  Updated all uses.
11164         (DFOP2): Renamed to...
11165         (OPDF2): This, and macro-ified.  Updated all uses.
11166         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
11167         (DFCMP): Renamed to...
11168         (CMPDF): This, and macro-ified.  Updated all uses.
11169         (DFREVCMP): Renamed to...
11170         (REVCMPDF): This, and macro-ified.  Updated all uses.
11171         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
11172         (RET_FUNCTION): New.
11173         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
11174         (__mips16_ret_sc, __mips16_ret_dc): New.
11175         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
11176         STUB_ARGS_6, STUB_ARGS_10): New.
11177         (CALL_STUB_NO_RET): New.
11178         (__mips16_call_stub_1): Macro-ified.
11179         (__mips16_call_stub_5): Macro-ified.
11180         (__mips16_call_stub_2): Macro-ified.
11181         (__mips16_call_stub_6): Macro-ified.
11182         (__mips16_call_stub_9): Macro-ified.
11183         (__mips16_call_stub_10): Macro-ified.
11184         (CALL_STUB_RET): New.
11185         (__mips16_call_stub_sf_0): Macro-ified.
11186         (__mips16_call_stub_sf_1): Macro-ified.
11187         (__mips16_call_stub_sf_5): Macro-ified.
11188         (__mips16_call_stub_sf_2): Macro-ified.
11189         (__mips16_call_stub_sf_6): Macro-ified.
11190         (__mips16_call_stub_sf_9): Macro-ified.
11191         (__mips16_call_stub_sf_10): Macro-ified.
11192         (__mips16_call_stub_df_0): Macro-ified.
11193         (__mips16_call_stub_df_1): Macro-ified.
11194         (__mips16_call_stub_df_5): Macro-ified.
11195         (__mips16_call_stub_df_2): Macro-ified.
11196         (__mips16_call_stub_df_6): Macro-ified.
11197         (__mips16_call_stub_df_9): Macro-ified.
11198         (__mips16_call_stub_df_10): Macro-ified.
11199         (__mips16_call_stub_sc_0): New.
11200         (__mips16_call_stub_sc_1): New.
11201         (__mips16_call_stub_sc_5): New.
11202         (__mips16_call_stub_sc_2): New.
11203         (__mips16_call_stub_sc_6): New.
11204         (__mips16_call_stub_sc_9): New.
11205         (__mips16_call_stub_sc_10): New.
11206         (__mips16_call_stub_dc_0): New.
11207         (__mips16_call_stub_dc_1): New.
11208         (__mips16_call_stub_dc_5): New.
11209         (__mips16_call_stub_dc_2): New.
11210         (__mips16_call_stub_dc_6): New.
11211         (__mips16_call_stub_dc_9): New.
11212         (__mips16_call_stub_dc_10): New.
11213
11214         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
11215         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
11216         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
11217
11218 2007-05-23  Ian Lance Taylor  <iant@google.com>
11219
11220         * doc/invoke.texi (Invoking GCC): Document that the order of the
11221         -l option matters.
11222
11223 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
11224
11225         PR target/30987
11226         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
11227         * config/score/predicate.md (const_pow2, const_npow2): Remove.
11228         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
11229         undef.
11230
11231         PR target/30474
11232         * config/score/score.c (score_print_operand): Make sure that only
11233         lower bits are used.
11234
11235 2007-05-22  Ian Lance Taylor  <iant@google.com>
11236
11237         * tree-vrp.c (avoid_overflow_infinity): New static function,
11238         broken out of set_value_range_to_value.
11239         (set_value_range_to_value): Call avoid_overflow_infinity.
11240         (extract_range_from_assert): Likewise.
11241
11242 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11243
11244         PR middle-end/31095
11245          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
11246         change the type before looking for a COMPOUND_EXPR.
11247
11248 2007-05-22  Ian Lance Taylor  <iant@google.com>
11249
11250         * lower-subreg.c (decompose_multiword_subregs): If we change an
11251         insn, call remove_retval_note on it.
11252
11253 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
11254
11255         * regs.h (end_hard_regno): New function.
11256         (END_HARD_REGNO, END_REGNO): New macros.
11257         (add_to_hard_reg_set): New function.
11258         (remove_from_hard_reg_set): Likewise.
11259         (in_hard_reg_set_p): Likewise.
11260         (overlaps_hard_reg_set_p): Likewise.
11261         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
11262         (note_btr_set): Use END_HARD_REGNO.
11263         * caller-save.c (setup_save_areas): Use end_hard_regno.
11264         (mark_set_regs): Use END_HARD_REGNO.
11265         (add_stored_regs): Use end_hard_regno.
11266         (mark_referenced_regs): Use add_to_hard_reg_set.
11267         * combine.c (update_table_tick): Use END_REGNO.
11268         (record_value_for_reg): Likewise.
11269         (record_dead_and_set_regs): Likewise.
11270         (get_last_value_validate): Likewise.
11271         (use_crosses_set_p): Likewise.
11272         (reg_dead_at_p_1): Likewise.
11273         (reg_dead_at_p): Likewise.
11274         (mark_used_regs_combine): Use add_to_hard_reg_set.
11275         (move_deaths): Use END_HARD_REGNO.
11276         (reg_bitfield_target_p): Use end_hard_regno.
11277         (distribute_notes): Use END_HARD_REGNO.
11278         * cse.c (mention_regs): Use END_REGNO.
11279         (insert): Use add_to_hard_reg_set.
11280         (invalidate): Use END_HARD_REGNO.
11281         (invalidate_for_call): Likewise.
11282         (exp_equiv_p): Use END_REGNO.
11283         (cse_insn): Likewise.
11284         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
11285         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
11286         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
11287         * function.c (keep_stack_depressed): Use end_hard_regno.
11288         * global.c (global_alloc): Use end_hard_regno.
11289         (global_conflicts): Use add_to_hard_reg_set instead of
11290         mark_reg_live_nc.
11291         (find_reg): Likewise.
11292         (mark_reg_store): Likewise.
11293         (mark_reg_conflicts): Likewise.
11294         (mark_reg_death): Use remove_from_hard_reg_set.
11295         (mark_reg_live_nc): Delete.
11296         (set_preference): Use end_hard_regno.
11297         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
11298         remove_from_hard_reg_set.
11299         (post_mark_life): Use add_to_hard_reg_set.
11300         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
11301         (reg_becomes_live): Use add_to_hard_reg_set.
11302         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
11303         (peep2_find_free_register): Use add_to_hard_reg_set.
11304         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
11305         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
11306         * regrename.c (note_sets): Use add_to_hard_reg_set.
11307         (clear_dead_regs): Use remove_from_hard_reg_set.
11308         (regrename_optimize): Use add_to_hard_reg_set.
11309         (find_oldest_value_reg): Use in_hard_reg_set_p.
11310         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
11311         (hard_reg_set_here_p): Use end_hard_regno.
11312         (decompose): Likewise.
11313         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
11314         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
11315         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
11316         (mark_home_live): Use end_hard_regno.
11317         (spill_hard_reg): Likewise.
11318         (clear_reload_reg_in_use): Likewise.
11319         * reorg.c (delete_prior_computation): Use END_REGNO.
11320         * resource.c (update_live_status): Use END_HARD_REGNO.
11321         (mark_referenced_resources): Use add_to_hard_reg_set.
11322         (mark_set_resources): Likewise.
11323         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
11324         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
11325         (reg_overlap_mentioned_p): Likewise.
11326         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
11327         (covers_regno_no_parallel_p): Use END_REGNO.
11328         (find_regno_note): Likewise.
11329         (find_reg_fusage): Use END_HARD_REGNO.
11330         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
11331         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
11332
11333 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
11334
11335         * mode-switching.c (reg_dies): Change type of second argument to
11336         "HARD_REG_SET *".
11337         (optimize_mode_switching): Update accordingly.
11338
11339 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
11340
11341         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
11342         in favor of...
11343         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
11344         (hard_reg_set_empty_p): ...these new functions.
11345         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
11346         GO_IF_HARD_REG_SUBSET.
11347         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
11348         instead of GO_IF_HARD_REG_EQUAL.
11349         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
11350         instead of GO_IF_HARD_REG_EQUAL.
11351         * global.c (find_reg): Use hard_reg_set_empty_p instead of
11352         GO_IF_HARD_REG_SUBSET.
11353         (modify_reg_pav): Use hard_reg_set_empty_p instead of
11354         GO_IF_HARD_REG_EQUAL.
11355         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
11356         of GO_IF_HARD_REG_SUBSET.
11357         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
11358         instead of GO_IF_HARD_REG_EQUAL.
11359         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
11360         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
11361         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
11362         of GO_IF_HARD_REG_SUBSET,
11363         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
11364         GO_IF_HARD_REG_SUBSET.
11365         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
11366         instead of GO_IF_HARD_REG_EQUAL.
11367         * config/sh/sh.c (push_regs, calc_live_regs): Use
11368         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
11369         (hard_regs_intersect_p): Delete.
11370
11371 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
11372
11373         * doc/sourcebuild.texi (Test Directives) Add dg-message.
11374
11375 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
11376             Richard Henderson  <rth@redhat.com>
11377
11378         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
11379         extra_headers.
11380         (x86_64-*-*): Likewise.
11381
11382         * i386/i386-modes.def (V2QI): New.
11383
11384         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
11385         SSE4A.
11386         (override_options): Support SSE4.1.
11387         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
11388         (IX86_BUILTIN_BLENDPS): Likewise.
11389         (IX86_BUILTIN_BLENDVPD): Likewise.
11390         (IX86_BUILTIN_BLENDVPS): Likewise.
11391         (IX86_BUILTIN_PBLENDVB128): Likewise.
11392         (IX86_BUILTIN_PBLENDW128): Likewise.
11393         (IX86_BUILTIN_DPPD): Likewise.
11394         (IX86_BUILTIN_DPPS): Likewise.
11395         (IX86_BUILTIN_INSERTPS128): Likewise.
11396         (IX86_BUILTIN_MOVNTDQA): Likewise.
11397         (IX86_BUILTIN_MPSADBW128): Likewise.
11398         (IX86_BUILTIN_PACKUSDW128): Likewise.
11399         (IX86_BUILTIN_PCMPEQQ): Likewise.
11400         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
11401         (IX86_BUILTIN_PMAXSB128): Likewise.
11402         (IX86_BUILTIN_PMAXSD128): Likewise.
11403         (IX86_BUILTIN_PMAXUD128): Likewise.
11404         (IX86_BUILTIN_PMAXUW128): Likewise.
11405         (IX86_BUILTIN_PMINSB128): Likewise.
11406         (IX86_BUILTIN_PMINSD128): Likewise.
11407         (IX86_BUILTIN_PMINUD128): Likewise.
11408         (IX86_BUILTIN_PMINUW128): Likewise.
11409         (IX86_BUILTIN_PMOVSXBW128): Likewise.
11410         (IX86_BUILTIN_PMOVSXBD128): Likewise.
11411         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
11412         (IX86_BUILTIN_PMOVSXWD128): Likewise.
11413         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
11414         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
11415         (IX86_BUILTIN_PMOVZXBW128): Likewise.
11416         (IX86_BUILTIN_PMOVZXBD128): Likewise.
11417         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
11418         (IX86_BUILTIN_PMOVZXWD128): Likewise.
11419         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
11420         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
11421         (IX86_BUILTIN_PMULDQ128): Likewise.
11422         (IX86_BUILTIN_PMULLD128): Likewise.
11423         (IX86_BUILTIN_ROUNDPD): Likewise.
11424         (IX86_BUILTIN_ROUNDPS): Likewise.
11425         (IX86_BUILTIN_ROUNDSD): Likewise.
11426         (IX86_BUILTIN_ROUNDSS): Likewise.
11427         (IX86_BUILTIN_PTESTZ): Likewise.
11428         (IX86_BUILTIN_PTESTC): Likewise.
11429         (IX86_BUILTIN_PTESTNZC): Likewise.
11430         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
11431         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
11432         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
11433         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
11434         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
11435         (bdesc_ptest): New.
11436         (bdesc_sse_3arg): Likewise.
11437         (bdesc_2arg): Likewise.
11438         (bdesc_1arg): Likewise.
11439         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
11440         with 3 args.
11441         (ix86_expand_sse_4_operands_builtin): New.
11442         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
11443         smaller than 8 bits as the 2nd arg.
11444         (ix86_expand_sse_ptest): New.
11445         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
11446         (ix86_expand_vector_set): Support SSE4.1.
11447         (ix86_expand_vector_extract): Likewise.
11448
11449         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
11450         __SSE4_1__ for -msse4.1.
11451
11452         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
11453         (UNSPEC_INSERTPS): Likewise.
11454         (UNSPEC_DP): Likewise.
11455         (UNSPEC_MOVNTDQA): Likewise.
11456         (UNSPEC_MPSADBW): Likewise.
11457         (UNSPEC_PHMINPOSUW): Likewise.
11458         (UNSPEC_PTEST): Likewise.
11459         (UNSPEC_ROUNDP): Likewise.
11460         (UNSPEC_ROUNDS): Likewise.
11461
11462         * config/i386/i386.opt (msse4.1): New for SSE4.1.
11463
11464         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
11465         (const_pow2_1_to_32768_operand): Likewise.
11466
11467         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
11468         file.
11469
11470         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
11471         SSE4.1.
11472         (sse4_1_insertps): Likewise.
11473         (*sse4_1_extractps): Likewise.
11474         (sse4_1_ptest): Likewise.
11475         (sse4_1_mulv2siv2di3): Likewise.
11476         (*sse4_1_mulv4si3): Likewise.
11477         (*sse4_1_smax<mode>3): Likewise.
11478         (*sse4_1_umax<mode>3): Likewise.
11479         (*sse4_1_smin<mode>3): Likewise.
11480         (*sse4_1_umin<mode>3): Likewise.
11481         (sse4_1_eqv2di3): Likewise.
11482         (*sse4_1_pinsrb): Likewise.
11483         (*sse4_1_pinsrd): Likewise.
11484         (*sse4_1_pinsrq): Likewise.
11485         (*sse4_1_pextrb): Likewise.
11486         (*sse4_1_pextrb_memory): Likewise.
11487         (*sse4_1_pextrw_memory): Likewise.
11488         (*sse4_1_pextrq): Likewise.
11489         (sse4_1_blendpd): Likewise.
11490         (sse4_1_blendps): Likewise.
11491         (sse4_1_blendvpd): Likewise.
11492         (sse4_1_blendvps): Likewise.
11493         (sse4_1_dppd): Likewise.
11494         (sse4_1_dpps): Likewise.
11495         (sse4_1_movntdqa): Likewise.
11496         (sse4_1_mpsadbw): Likewise.
11497         (sse4_1_packusdw): Likewise.
11498         (sse4_1_pblendvb): Likewise.
11499         (sse4_1_pblendw): Likewise.
11500         (sse4_1_phminposuw): Likewise.
11501         (sse4_1_extendv8qiv8hi2): Likewise.
11502         (*sse4_1_extendv8qiv8hi2): Likewise.
11503         (sse4_1_extendv4qiv4si2): Likewise.
11504         (*sse4_1_extendv4qiv4si2): Likewise.
11505         (sse4_1_extendv2qiv2di2): Likewise.
11506         (*sse4_1_extendv2qiv2di2): Likewise.
11507         (sse4_1_extendv4hiv4si2): Likewise.
11508         (*sse4_1_extendv4hiv4si2): Likewise.
11509         (sse4_1_extendv2hiv2di2): Likewise.
11510         (*sse4_1_extendv2hiv2di2): Likewise.
11511         (sse4_1_extendv2siv2di2): Likewise.
11512         (*sse4_1_extendv2siv2di2): Likewise.
11513         (sse4_1_zero_extendv8qiv8hi2): Likewise.
11514         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
11515         (sse4_1_zero_extendv4qiv4si2): Likewise.
11516         (*sse4_1_zero_extendv4qiv4si2): Likewise.
11517         (sse4_1_zero_extendv2qiv2di2): Likewise.
11518         (*sse4_1_zero_extendv2qiv2di2): Likewise.
11519         (sse4_1_zero_extendv4hiv4si2): Likewise.
11520         (*sse4_1_zero_extendv4hiv4si2): Likewise.
11521         (sse4_1_zero_extendv2hiv2di2): Likewise.
11522         (*sse4_1_zero_extendv2hiv2di2): Likewise.
11523         (sse4_1_zero_extendv2siv2di2): Likewise.
11524         (*sse4_1_zero_extendv2siv2di2): Likewise.
11525         (sse4_1_roundpd): Likewise.
11526         (sse4_1_roundps): Likewise.
11527         (sse4_1_roundsd): Likewise.
11528         (sse4_1_roundss): Likewise.
11529         (mulv4si3): Don't expand for SSE4.1.
11530         (smax<mode>3): Likewise.
11531         (umaxv4si3): Likewise.
11532         (uminv16qi3): Likewise.
11533         (umin<mode>3): Likewise.
11534         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
11535
11536         * doc/extend.texi: Document SSE4.1 built-in functions.
11537
11538         * doc/invoke.texi: Document -msse4.1.
11539
11540 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
11541
11542         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
11543         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
11544         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
11545         (ASM_SPEC): Add asm_pcrel_spec.
11546         (EXTRA_SPECS): Add asm_pcrel_spec.
11547
11548 2007-05-21  David Daney  <ddaney@avtrex.com>
11549
11550         * doc/install.texi (Building a cross compiler): Add requirements
11551         for Java cross compiler.
11552
11553 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11554
11555         PR middle-end/31995
11556         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
11557         Add loopno argument.  Use evolution_function_is_invariant_rec_p
11558         instead of evolution_function_is_constant_p.
11559         Update calls to evolution_function_is_affine_multivariate_p.
11560         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
11561         Add loopno argument.
11562         * tree-scalar-evolution.c (gather_chrec_stats): Call
11563         evolution_function_is_affine_multivariate_p with a loop
11564         number of 0.
11565         * tree-data-ref.c (analyze_miv_subscript): Likewise.
11566         (analyze_overlapping_iterations): Likewise.
11567         (access_functions_are_affine_or_constant_p): Likewise.
11568         (build_classic_dist_vector_1): If the access functions
11569         are equal, don't do anything.
11570
11571 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
11572             Paolo Carlini  <pcarlini@suse.de>
11573             Uros Bizjak  <ubizjak@gmail.com>
11574
11575         * c-cppbuiltin.c (c_cpp_builtins): Define
11576         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
11577         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
11578         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
11579         * doc/cpp.texi ([Standard Predefined Macros]): Document.
11580
11581 2007-05-21  Mike Stump  <mrs@apple.com>
11582
11583         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
11584         handling as well.
11585         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
11586
11587 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
11588
11589         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
11590         implementation if __OPTIMIZE__ is not defined.
11591         (_mm_alignr_pi8): Ditto.
11592         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
11593         (_mm_inserti_si64): Ditto.
11594         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
11595         (_mm_slli_epi16): Ditto.
11596         (_mm_slli_epi32): Ditto.
11597         (_mm_slli_epi64): Ditto.
11598         (_mm_srai_epi16): Ditto.
11599         (_mm_srai_epi32): Ditto.
11600         (_mm_srli_si128): Ditto.
11601         (_mm_slli_si128): Ditto.
11602         (_mm_srli_epi16): Ditto.
11603         (_mm_srli_epi32): Ditto.
11604         (_mm_srli_epi64): Ditto.
11605         (_mm_extract_epi16): Ditto.
11606         (_mm_insert_epi16): Ditto.
11607         (_mm_shufflehi_epi16): Ditto.
11608         (_mm_shufflelo_epi16): Ditto.
11609         (_mm_shuffle_epi32): Ditto.
11610         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
11611         (_m_pextrw): Ditto.
11612         (_mm_insert_pi16): Ditto.
11613         (_m_pinsrw): Ditto.
11614         (_mm_shuffle_pi16): Ditto.
11615         (_m_pshufw): Ditto.
11616         (_mm_shufle_ps): Ditto.
11617         (_mm_prefetch): Ditto.
11618
11619 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
11620
11621         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
11622         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
11623         * real.c (encode_i370_single, decode_i370_single,
11624         encode_i370_double, decode_i370_double): Functions removed.
11625         (i370_single_format, i370_double_format): Initializations removed.
11626         (real_maxval, round_for_format, exact_real_truncate, significand_size):
11627         Consider the log2_b field to always be one.
11628         (ieee_single_format, mips_single_format, coldfire_single_format,
11629         ieee_double_format, mips_double_format, coldfire_double_format,
11630         ieee_extended_motorola_format, ieee_extended_intel_96_format,
11631         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
11632         ibm_extended_format, mips_extended_format, ieee_quad_format,
11633         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
11634         decimal_single_format, decimal_double_format, decimal_quad_format,
11635         c4x_single_format, c4x_extended_format, real_internal_format): Remove
11636         initialization of log2_b.
11637         * real.h (i370_single_format, i370_double_format): Declarations
11638         removed.
11639         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
11640         field to always be one.
11641
11642 2007-05-21  Andreas Schwab  <schwab@suse.de>
11643
11644         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
11645         NOTE_INSN_BASIC_BLOCK_P.
11646         (process_for_unwind_directive): Likewise.
11647
11648 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
11649
11650         * builtins.c (expand_builtin_setjmp_setup): Update comment.
11651         * function.h (struct function): Move va_list_gpr_size,
11652         va_list_fpr_size, function_frequency to front of bitfields.  Add
11653         calls_unwind_init.
11654         (current_function_calls_unwind_init): New.
11655         * except.c (expand_builtin_unwind_init): Set
11656         current_function_calls_unwind_init not
11657         current_function_has_nonlocal_label.
11658         * reload1.c (has_nonexceptional_receiver): New.
11659         (reload): Use it and current_function_calls_unwind_init to
11660         determine whether call-saved regs must be saved.
11661
11662 2007-05-20  Jan Hubicka  <jh@suse.cz>
11663
11664         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
11665         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
11666         * ddg.c (create_ddg): LIkewise.
11667         * final.c (final): Remove hunk moving line number notes around since
11668         they are no longer present at this stage.
11669         (final_scan_insn): Use NOTE_KIND instead of
11670         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
11671         (output_asm_label): Likewise.
11672         * reorg.c (dbr_schedule): Likewise.
11673         * haifa-sched.c (unlink_other_notes): Likewise.
11674         * mode-switching.c (optimize_mode_switching): Likewise.
11675         * graph.c (start_bb): Likewise.
11676         * rtl.def (NOTE): Update description.
11677         * jump.c (squeeze_notes): Delete.
11678         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
11679         NOTE_INSN_BASIC_BLOCK_P when possible.
11680         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
11681         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
11682         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
11683         (dwarf2out_var_location): Likewise.
11684         * cfgbuild.c (make_edges): Likewise.
11685         (find_basic_blocks_1): Likewise.
11686         * function.c (reorder_blocks_1): Likewise.
11687         (epilogue_done): Likewise.
11688         (reposition_prologue_and_epilogue_notes): Likewise.
11689         * print-rtl.c (print_rtx): Likewise; drop code for printing
11690         line number notes.
11691         (print_rtl): Likewise.
11692         (print_rtl_single): Likewise.
11693         * gcse.c (insert_insn_start_bb): Likewise.
11694         * alias.c (init_alias_analysis): Likewise.
11695         * calls.c (fixup_tail_calls): Likewise.
11696         * except.c (sjlj_emit_function_enter): Likewise.
11697         * emit-rtl.c (add_insn_after): Likeiwse.
11698         (emit_label_before): Likewise.
11699         (emit_label_after): Likewise.
11700         (emit_note_before, emit_note_after, emit_note): Update
11701         parameter to be enum insn_note; do not deal with source
11702         files.
11703         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
11704         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
11705         when possible.
11706         (merge_blocks_move_successor_nojumps): Simplify now when
11707         we don't have BLOCK notes.
11708         (try_optimize_cfg): Likewise.
11709         * cfglayout.c (skip_insns_after_block): Likewise.
11710         (record_effective_endpoints): Likewise.
11711         (duplicate_insn_chain): Likewise.
11712         * varasm.c (output_constant_pool_1): Likewise.
11713         * sched-deps.c (sched_analyze): Likewise.
11714         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
11715         Exterminate.
11716         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
11717         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
11718         (SET_INSN_DELETED): Simplify.
11719         (NOTE_LINE_NUMBER): Exterminate.
11720         (NOTE_LINE_KIND): New.
11721         (NOTE_INSN_BASIC_BLOCK_P): Update.
11722         (enum insn_note): Simplify.
11723         (GET_NOTE_INSN_NAME) Simplify.
11724         (emit_note_before, emit_note_after, emit_note): Update prototype.
11725         (squeeze_notes): Remove.
11726         * sched-int.h (NOTE_NOT_BB_P): Update.
11727         * resource.c (mark_target_live_regs): Update.
11728         * sched-rgn.c (debug_dependencies): Update.
11729         * sched-vis.c (print_insn): Update.
11730         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
11731         * config/i386/i386.c (ix86_output_function_epilogue): Update.
11732         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
11733         (TARGET_ADJUST_UNROLL_MAX): Likewise.
11734         (split_branches): Update.
11735         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
11736         4.0.0.
11737         (sh_adjust_unroll_max): Exterminate.
11738         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
11739         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
11740         (m68hc11_reorg): Likewise.
11741         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
11742         (emit_predicate_relation_info): Update.
11743         (process_for_unwind_directive): Update.
11744         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
11745         (output_call): Update.
11746         * config/pa/pa.c (output_lbranch): Update.
11747         (output_millicode_call): Update.
11748         (output_call): Update.
11749         (pa_combine_instructions): Update.
11750         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
11751         * config/bfin/bfin.c (gen_one_bundle): Update.
11752         * cfgrtl.c (can_delete_note_p): Update.
11753         (delete_insn): Update.
11754         (rtl_merge_blocks): Update.
11755         (commit_one_edge_insertion): Update.
11756         (rtl_verify_flow_info): Update.
11757         * stmt.c (expand_case): Do not call squeeze_notes.
11758
11759 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11760
11761         PR middle-end/7651
11762         PR c++/11856
11763         PR c/12963
11764         PR c/23587
11765         PR other/29694
11766         * c.opt (Wtype-limits): New.
11767         * doc/invoke.texi (Wtype-limits): Document it.
11768         (Wextra): Enabled by -Wextra.
11769         * c-opts.c (c_common_post_options): Enabled by -Wextra.
11770         * c-common.c (shorten_compare): Warn with Wtype-limits.
11771
11772 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
11773
11774         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
11775         inlined function, not as a macro.
11776         (_mm_alignr_pi8): Ditto.
11777         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
11778         (_mm_inserti_si64): Ditto.
11779         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
11780         (_mm_extract_epi16): Ditto.
11781         (_mm_insert_epi16): Ditto.
11782         (_mm_shufflehi_epi16): Ditto.
11783         (_mm_shufflelo_epi16): Ditto.
11784         (_mm_shuffle_epi32): Ditto.
11785         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
11786         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
11787         all functions.
11788         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
11789         float constant.
11790         (_m_to_float): Use C89 compatible assignment.
11791
11792 2007-05-20  Martin Michlmayr  <tbm@cyrius.com>
11793
11794         PR target/32007
11795         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
11796
11797 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11798
11799         PR middle-end/7651
11800         * doc/invoke.texi (Wreturn-type): Complete description.
11801         (Wextra): Delete item about return-type warning.
11802         * c-decl.c: Delete redundant Wextra warning.
11803
11804 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
11805
11806         PR target/31585
11807         * config/i386/pmmintrin.h: Do not include xmmintrin.h
11808         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
11809         inlined function, not as a macro.
11810         (_mm_prefetch): Ditto.
11811         (_m_pextrw): Ditto.
11812         (_mm_insert_pi16): Ditto.
11813         (_m_pinsrw): Ditto.
11814         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
11815         (_m_pshufw): Ditto. Add const to __N argument.
11816         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
11817         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
11818         (_mm_slli_epi32): Ditto.
11819         (_mm_srli_si128): Implement as always inlined function, not as a
11820         macro.  Add __inline to function declaration.
11821         (_mm_slli_si128): Ditto.
11822
11823 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
11824
11825         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
11826         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
11827         New constants.
11828         (struct fenv): New structure.
11829         (FP_HANDLE_EXCEPTIONS): New define.
11830         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
11831         (_FP_DECL_EXP): New define.
11832         (FP_INIT_ROUNDMODE): New define.
11833         (FP_ROUNDMODE): New define.
11834
11835 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11836
11837         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
11838         (Wconversion): Update description.
11839         (Wconversion-sign): New.
11840         * c.opt (Wconversion-sign): New.
11841         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
11842         means disabled for C++. Otherwise, take the status of Wconversion.
11843         * c-common.c (conversion_warning): Warn with either Wconversion or
11844         Wconversion-sign.
11845         (warnings_for_convert_and_check): Conditions are already checked by
11846         conversion_warning.
11847         (convert_and_check): Don't check warnings if the conversion failed.
11848
11849 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
11850            Anatoly Sokolov <aesok@dol.ru>
11851
11852         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
11853         avr_epilogue_uses) : Add declaration.
11854         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
11855         * config/avr/constraints.md (R): New constraint.
11856         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
11857         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
11858         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
11859         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
11860         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
11861         call_prologue_saves, epilogue_restores, return_from_epilogue,
11862         return_from_main_epilogue, return_from_interrupt_epilogue,
11863         return_from_naked_epilogue, prologue, epilogue): New patterns.
11864         (jump): Handle symbol reference.
11865         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
11866         avr_output_function_prologue, avr_output_function_epilogue): Remove
11867         functions.
11868         (avr_init_machine_status, expand_prologue, expand_epilogue,
11869         avr_asm_function_end_prologue, avr_epilogue_uses,
11870         avr_asm_function_begin_epilogue): New functions.
11871         (prologue_size, epilogue_size, jump_tables_size): Remove global
11872         variables.
11873         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
11874         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
11875         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
11876         (avr_override_options): Initialise init_machine_status.
11877         (output_movhi): Handle all stack pointer loads.
11878         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
11879         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
11880         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
11881         (EPILOGUE_USES) Redefine.
11882         (machine_function) Declare.
11883
11884 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
11885
11886         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
11887         Use a single return statement.
11888
11889 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11890
11891         PR middle-end/30250
11892         * builtins.c (do_mpfr_lgamma_r): New.
11893         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
11894         * tree.h (CASE_FLT_FN_REENT): New.
11895
11896 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
11897
11898         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
11899         (output_die): Use 'unsigned long' with %x.
11900         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
11901         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
11902         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
11903
11904         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
11905
11906 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
11907
11908         PR target/31989
11909         PR target/31681
11910         PR target/31666
11911         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
11912         true if function has no argument.
11913
11914 2007-05-18  DJ Delorie  <dj@redhat.com>
11915
11916         * config/mips/mips.c (mips_offset_within_alignment_p): New.
11917         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
11918
11919 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
11920
11921         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
11922         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
11923         count_trailing_zeros.
11924         (__i386__): Implement count_leading_zeros using __builtin_clz().
11925         Implement count_trailing_zeros usign __builtin_ctz().
11926
11927 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
11928
11929         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
11930
11931 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
11932
11933         PR middle-end/31344
11934         * expr.c (emit_move_change_mode): Change mode of push operands here.
11935
11936 2007-05-17  Ian Lance Taylor  <iant@google.com>
11937
11938         PR tree-optimization/31953
11939         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
11940         Change all callers.
11941         (set_value_range_to_null): Call set_value_range_to_value.
11942         (extract_range_from_comparison): Likewise.
11943
11944 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11945
11946         * toplev.c (print_version): Output GMP/MPFR version info.
11947
11948         * builtins.c (CASE_MATHFN_REENT): New macro.
11949         (mathfn_built_in): Use it.
11950         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
11951         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
11952         BUILT_IN_LGAMMAL_R): New.
11953         * doc/extend.texi: Document new builtins.
11954
11955         PR middle-end/31796
11956         * builtins.c (do_mpfr_remquo): New.
11957         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
11958         (fold_builtin_3): Handle BUILT_IN_REMQUO.
11959
11960         PR middle-end/30251
11961         * builtins.c (fold_builtin_1): Handle y0, y1.
11962         (fold_builtin_2): Handle yn.
11963
11964         PR middle-end/30251
11965         * builtins.c (do_mpfr_bessel_n): New.
11966         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
11967         (fold_builtin_2): Handle BUILT_IN_JN.
11968
11969 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
11970
11971         PR target/31965
11972         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
11973         TYPE_PRECISION (intmax_type_node).
11974
11975 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
11976
11977         PR target/31850
11978         * reload.c (subst_reloads): Remove checking.
11979
11980 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
11981
11982         PR rtl-optimization/31691
11983         * combine.c (simplify_set): Build a new src pattern instead of
11984         substituting its operands in the COMPARE case.
11985
11986 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
11987
11988         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
11989         (execute_vrp): Preserve loops through jump threading.
11990         * tree-ssa-threadupdate.c (thread_single_edge,
11991         dbds_continue_enumeration_p, determine_bb_domination_status,
11992         thread_through_loop_header): New functions.
11993         (create_edge_and_update_destination_phis,
11994         create_edge_and_update_destination_phis): Set loops for the new blocks.
11995         (prune_undesirable_thread_requests): Removed.
11996         (redirect_edges): Do not pretend that redirect_edge_and_branch can
11997         create new blocks.
11998         (thread_block): Do not call prune_undesirable_thread_requests.
11999         Update loops.
12000         (mark_threaded_blocks): Select edges to thread here.
12001         (thread_through_all_blocks): Take may_peel_loop_headers argument.
12002         Thread edges through loop headers independently.
12003         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
12004         * tree-pass.h (TODO_mark_first_instance): New.
12005         (first_pass_instance): Declare.
12006         * cfghooks.c (duplicate_block): Put the block to the original loop
12007         if copy is not specified.
12008         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
12009         jump threading.  Pass may_peel_loop_headers to
12010         thread_through_all_blocks according to first_pass_instance.
12011         * cfgloop.h (create_preheader): Declare.
12012         * tree-flow.h (thread_through_all_blocks): Declaration changed.
12013         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
12014         * passes.c (first_pass_instance): New variable.
12015         (next_pass_1): Set TODO_mark_first_instance.
12016         (execute_todo): Set first_pass_instance.
12017
12018 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
12019
12020         PR tree-optimization/24659
12021         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
12022         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
12023         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
12024         OTI_vec_pack_ufix_trunc.
12025         (vec_unpacks_float_hi_optab): Define new macro.
12026         (vec_unpacks_float_lo_optab): Ditto.
12027         (vec_unpacku_float_hi_optab): Ditto.
12028         (vec_unpacku_float_lo_optab): Ditto.
12029         (vec_pack_sfix_trunc_optab): Ditto.
12030         (vec_pack_ufix_trunc_optab): Ditto.
12031         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
12032         and vec_pack_[s|u]fix_trunc_optab using
12033         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
12034         * tree-vectorizer.c (supportable_widening_operation): Handle
12035         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
12036         (supportable_narrowing_operation): New function.
12037         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
12038         * tree-vect-transform.c (vectorizable_conversion): Handle
12039         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
12040         (vect_gen_widened_results_half): Move before vectorizable_conversion.
12041         (vectorizable_type_demotion): Call supportable_narrowing_operation()
12042         to check for target support.
12043         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
12044         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
12045         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
12046         for VEC_PACK_FIX_TRUNC_EXPR.
12047         (expand_binop): Special case mode of the result for
12048         vec_pack_[u|s]fix_trunc_optab.
12049         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
12050         vec_pack_[u|s]fix_trunc_optab.
12051
12052         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
12053         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
12054         * tree-pretty-print.c (dump_generic_node): Handle
12055         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
12056         VEC_PACK_FIX_TRUNC_EXPR.
12057         (op_prio): Ditto.
12058         * expr.c (expand_expr_real_1): Ditto.
12059         * tree-inline.c (estimate_num_insns_1): Ditto.
12060         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
12061
12062         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
12063         (vec_unpacks_float_lo_v8hi): Ditto.
12064         (vec_unpacku_float_hi_v8hi): Ditto.
12065         (vec_unpacku_float_lo_v8hi): Ditto.
12066         (vec_unpacks_float_hi_v4si): Ditto.
12067         (vec_unpacks_float_lo_v4si): Ditto.
12068         (vec_pack_sfix_trunc_v2df): Ditto.
12069
12070         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
12071         Document.
12072         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
12073         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
12074         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
12075         [vec_pack_ufix_trunc]: Ditto.
12076         [vec_unpacks_float_hi]: Ditto.
12077         [vec_unpacks_float_lo]: Ditto.
12078         [vec_unpacku_float_hi]: Ditto.
12079         [vec_unpacku_float_lo]: Ditto.
12080
12081 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
12082
12083         * soft-fp/README: Update for new files.
12084         * soft-fp/floattisf.c: New file.
12085         * soft-fp/floattidf.c: New file.
12086         * soft-fp/floattitf.c: New file.
12087         * soft-fp/floatuntisf.c: New file.
12088         * soft-fp/floatuntidf.c: New file.
12089         * soft-fp/floatuntitf.c: New file.
12090         * soft-fp/fixsfti.c: New file.
12091         * soft-fp/fixdfti.c: New file.
12092         * soft-fp/fixtfti.c: New file.
12093         * soft-fp/fixunssfti.c: New file.
12094         * soft-fp/fixunsdfti.c: New file.
12095         * soft-fp/fixunstfti.c: New file.
12096         * soft-fp/extendxftf.c: New file.
12097         * soft-fp/trunctfxf.c: New file.
12098
12099         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
12100         (__trunctfxf2): Ditto.
12101
12102         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
12103         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
12104         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
12105         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
12106         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
12107         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
12108
12109         * config/i386/t-fprules-softfp64: New file.
12110         * config/i386/sfp-machine.h: New file.
12111         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
12112         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
12113         and soft-fp/t-softfp to tmake_file.
12114         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
12115         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
12116
12117         * config/i386/t-linux64 (softfp_wrap_start): New.
12118         (softfp_wrap_end): New.
12119         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
12120         supported for TARGET_64BIT.
12121
12122 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
12123
12124         * c-common.c (c_common_signed_or_unsigned_type): Emulate
12125         c_common_unsigned_type behavior.
12126
12127 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
12128
12129         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
12130         calls as pure.
12131
12132 2007-05-16  Eric Christopher  <echristo@apple.com>
12133
12134         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
12135         saving after stack push. Set sp_offset whenever we push.
12136         (rs6000_emit_epilogue): Move altivec register restore before
12137         stack push.
12138
12139 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
12140
12141         * configure.ac: Allow sysroots to be relocated under $prefix as
12142         well as $exec_prefix.
12143         * configure: Regenerate.
12144
12145 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
12146
12147         Revert:
12148
12149         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
12150
12151         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
12152         (gcc_tooldir): Likewise.
12153         * configure: Regenerate.
12154         * Makefile.in (libsubdir_to_prefix): New variable, based on the
12155         old configure.ac gcc_tooldir setting.
12156         (prefix_to_exec_prefix): New variable.
12157         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
12158         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
12159
12160 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
12161
12162         * c-typeck.c (build_binary_op): Return early for error.
12163
12164 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
12165
12166         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
12167         struct nb_iter_bound.
12168         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
12169         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
12170         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
12171         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
12172         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
12173         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
12174         (del_scev_info): Use ggc_free.
12175         (scev_initialize): Allocate scalar_evolution_info in gc memory.
12176         * loop-init.c: Include ggc.h.
12177         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
12178         (loop_optimizer_finalize): Use ggc_free.
12179         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
12180         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
12181         pass_iv_optimize): Add TODO_ggc_collect.
12182         * function.h (struct function): Remove skip marker from
12183         x_current_loops.
12184         * cfgloop.c: Include ggc.h.
12185         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
12186         memory.
12187         (establish_preds): Vector superloops is gc allocated.
12188         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
12189         loop->exits list.
12190         (flow_loops_find): Vector larray is gc allocated.
12191         (loop_exit_free): Use ggc_free.
12192         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
12193         that head of exits list is now not a part of struct loop.
12194         (record_loop_exits): Allocate exits table in gc memory.
12195         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect
12196         that head of exits list is now not a part of struct loop.
12197         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
12198         struct loop_exit): Add GTY marker.
12199         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
12200         Add skip marker to aux field.  Make head of exits list a separate
12201         object.
12202         (struct loops): Add GTY marker.  Make larray vector gc allocated.
12203         Add param marker to exits table.
12204         (get_loops): Type changed.
12205         * Makefile.in (tree-scalar-evolution.o): Add
12206         gt-tree-scalar-evolution.h dependency.
12207         (cfgloop.o, loop-init.o): Add ggc.h dependency.
12208         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
12209         * basic-block.h (struct basic_block_def): Remove skip marker from
12210         loop_father field.
12211
12212 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
12213
12214         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
12215         of 0 in the call to expand_expr().
12216         (expand_builtin_mathfn_3): Ditto.
12217         (expand_builtin_interclass_mathfn): Ditto.
12218         (expand_builtin_cexpi): Ditto.
12219         (expand_builtin_int_roundingfn): Ditto.
12220         (expand_builtin_int_roundingfn_2): Ditto.
12221         (expand_builtin_pow): Ditto.
12222         (expand_builtin_powi): Ditto.
12223         (expand_builtin_bswap): Ditto.
12224         (expand_builtin_unop): Ditto.
12225         (expand_builtin_fabs): Ditto.
12226         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
12227         the call to expand_expr().
12228         (expand_builtin_sync_operation): Ditto.
12229         (expand_builtin_compare_and_swap): Ditto.
12230         (expand_builtin_lock_test_and_set): Ditto.
12231         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
12232         instead of 0 in the call to expand_expr().
12233         (expand_builtin_extract_return_addr): Ditto.
12234         (expand_builtin_eh_return): Ditto.
12235         (expand_eh_return): Ditto.
12236         * explow.c (expr_size): Ditto.
12237         * expr.c (optimize_bitfield_assignment_op): Ditto.
12238         (expand_assignement): Ditto.
12239         (store_expr): Ditto.
12240         (store_field): Ditto.
12241         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
12242         the call to expand_expr().
12243         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
12244         in the call to expand_expr().
12245         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
12246         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
12247         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
12248         of expand_expr().
12249         * optabs.c (expand_vec_shift_expr): Ditto.
12250         (expand_vec_cond_expr): Ditto.
12251         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
12252         call to expand_expr().
12253         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
12254         in the call to expand_expr().
12255
12256 2007-05-14  Dave Korn  <dave.korn@artimi.com>
12257
12258         * genautomata.c (gen_regexp_el):  Allocate correct size for regexp.
12259
12260 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
12261
12262         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
12263         instead of c_common_unsigned_type.
12264         (c_common_unsigned_type): Remove.
12265         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
12266         c_common_unsigned_type.
12267         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
12268         c_common_unsigned_type.
12269         * c-common.h (c_common_unsigned_type): Remove.
12270         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
12271         c_common_unsigned_type.
12272         * c-format.c (check_format_types): Use unsigned_type_for instead of
12273         c_common_unsigned_type.
12274         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
12275         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead
12276         of c_common_unsigned_type.
12277         * convert.c (convert_to_integer): Use unsigned_type_for instead of
12278         lang_hooks.types.unsigned_type.
12279         * expmed.c (make_tree): Use unsigned_type_for instead of
12280         lang_hooks.types.unsigned_type.
12281         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
12282         lang_hooks.types.unsigned_type.
12283         (build_range_check): Likewise.
12284         (fold_unary): Likewise.
12285         (fold_binary): Likewise.
12286         (fold_ternary): Likewise.
12287         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
12288         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
12289         * tree.c (get_unsigned_type): New.
12290         (unsigned_type_for): Use get_unsigned_type instead of
12291         lang_hooks.types.unsigned_type.
12292
12293 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
12294
12295         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
12296         to m68k_get_function_kind.  Update its prototype.
12297         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
12298         interrupt_thread.
12299         (m68k_interrupt_function_p): Return enum m68k_function_type
12300         instead of bool.  Rename to m68k_get_function_kind.
12301         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
12302         target is not fido.
12303         (m68k_compute_frame_layout): Don't mark any register for save
12304         if an interrupt_thread attribute is specified.
12305         (m68k_hard_regno_rename_ok): Update a use of
12306         m68k_interrupt_function_p.
12307         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
12308         m68k_interrupt_function_p.
12309         (m68k_function_type): New.
12310         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
12311         for a function with an interrupt_thread attribute.
12312         * doc/extend.texi: Document the interrupt_thread attribute.
12313
12314 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
12315
12316         Fix PR tree-optimization/31911
12317         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
12318         if they didn't change the expression.
12319
12320 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
12321
12322         * tree-scalar-evolution.c (resolve_mixers): Exported.
12323         * tree-scalar-evolution.h (resolve_mixers): Declare.
12324         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
12325         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
12326         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
12327         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
12328         init_array_ref, init_pointer_ref, analyze_indirect_ref,
12329         strip_conversion, analyze_offset_expr, address_analysis,
12330         object_analysis, analyze_offset): Removed.
12331         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
12332         split_constant_offset, canonicalize_base_object_address,
12333         object_address_invariant_in_loop_p, disjoint_objects_p,
12334         dr_may_alias_p, dr_address_invariant_p): New functions.
12335         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
12336         and dr_analyze_alias.
12337         (initialize_data_dependence_relation): Use dr_may_alias_p
12338         and object_address_invariant_in_loop_p.
12339         (compute_self_dependence): Handle the case when
12340         DDR_ARE_DEPENDENT (ddr) is chrec_dont_know.
12341         (find_data_references_in_stmt): Restrict the analysis of data
12342         references to the given loop nest.
12343         (find_data_references_in_loop): Made static.  Pass loop nest to
12344         find_data_references_in_stmt.
12345         (compute_data_dependences_for_loop): Use DR_VOPS.
12346         (free_data_ref): Free DR_VOPS.
12347         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
12348         (struct innermost_loop_behavior): ... new.
12349         (struct base_object_info): Replaced by ...
12350         (struct indices): ... new.
12351         (struct dr_alias): New.
12352         (enum data_ref_type): Removed.
12353         (struct data_reference): Consist of struct innermost_loop_behavior,
12354         struct indices and struct dr_alias.
12355         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
12356         (DR_MEMTAG): Renamed to ...
12357         (DR_SYMBOL_TAG): ... this.
12358         (find_data_references_in_loop): Declaration removed.
12359         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
12360         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
12361         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
12362         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
12363
12364 2007-05-13  Revital Eres  <eres@il.ibm.com>
12365
12366         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
12367         which walks virtual def-use chains to find redundant stores.
12368         (dse_optimize_stmt): Call it.
12369
12370 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
12371
12372         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
12373         * passes.c (init_optimization_passes): Move pass_jump_bypass
12374         after loop2.
12375
12376         * basic-block.h (bb_has_eh_pred): Fix style issue.
12377
12378 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
12379
12380         PR rtl-optimization/31848
12381         * loop-invariant.c (move_invariant_reg): If we move an insn
12382         with a REG_EQUAL note, and that insn is not always executed,
12383         remove the REG_EQUAL note.
12384
12385 2007-05-12  Richard Guenther  <rguenther@suse.de>
12386
12387         PR tree-optimization/31797
12388         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
12389         propagate into a stmt that has volatile ops.
12390
12391 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
12392
12393         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
12394         (gcc_tooldir): Likewise.
12395         * configure: Regenerate.
12396         * Makefile.in (libsubdir_to_prefix): New variable, based on the
12397         old configure.ac gcc_tooldir setting.
12398         (prefix_to_exec_prefix): New variable.
12399         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
12400         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
12401
12402 2007-05-11  Silvius Rus  <rus@google.com>
12403
12404         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
12405         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
12406         * c-common.h (strict_aliasing_warning): Change return type.
12407         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
12408         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
12409         (build_c_cast): Condition call to strict_aliasing_warning.
12410         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
12411         * flags.h (set_Wstrict_aliasing): Declare.
12412         * opts.c (set_Wstrict_alising): Define, add call to.
12413         * tree-flow.h (strict_aliasing_warning_backend): Declare.
12414         * tree-ssa-alias-warnings.c: New file.
12415         * tree-ssa-alias.c (compute_may_aliases): Add call to
12416         strict_aliasing_warning_backend.
12417
12418 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
12419
12420         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
12421         Use loop_depth and loop_outer accessor functions.
12422         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
12423         determine_invariantness_stmt, move_computations_stmt): Ditto.
12424         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
12425         add_loop, loopify, unloop, fix_loop_structure): Ditto.
12426         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
12427         * tree-scalar-evolution.c (interpret_loop_phi,
12428         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
12429         instantiate_parameters_1, scev_const_prop): Ditto.
12430         * cfghooks.c (make_forwarder_block): Ditto.
12431         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
12432         * modulo-sched.c (loop_canon_p): Ditto.
12433         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
12434         slpeel_can_duplicate_loop_p): Ditto.
12435         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
12436         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
12437         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
12438         cancel_loop, verify_loop_structure): Ditto.
12439         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
12440         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
12441         superloops vector instead of "pred" array.
12442         (establish_preds): Take father loop as an argument.  Initialize the
12443         superloops vector.
12444         (flow_loop_tree_node_add): Pass father loop to establish_preds.
12445         Do not initialize loop->outer.
12446         (flow_loop_tree_node_remove): Truncate the superloops vector.
12447         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
12448         "pred" merged to "superloops" vector.
12449         (loop_depth, loop_outer): New.
12450         (fel_init): Use loop_outer.
12451
12452 2007-05-11  Jan Hubicka  <jh@suse.cz>
12453
12454         * cgraphunit.c: Include gt-cgraphunit.h
12455         (static_ctors, static_dtors): New static vars.
12456         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
12457         based on implementation in c-common.c
12458         (cgraph_finalize_function): Call record_cdtor_fn.
12459         (cgraph_optimize): Call cgraph_build_cdtor_fns.
12460         * decl.c (finish_function): Do not call c_record_cdtor_fn.
12461         (c_write_global_declarations): Do not call c_build_cdtor_fns.
12462         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
12463         build_cdtor, c_build_cdtor_fns): Remove.
12464         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
12465         c_build_cdtor_fns): Remove prototype.
12466
12467 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
12468
12469         PR other/31852
12470         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
12471         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
12472         * builtins.c (fold_builtin_memchr): New.
12473         (expand_builtin_memchr): Call the latter.
12474         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
12475         * doc/extend.texi ([Other built-in functions provided by GCC]):
12476         Document memchr.
12477
12478 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
12479
12480         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
12481         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
12482         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
12483         PFPO_OP1_TYPE_SHIFT): Constants added.
12484         (DFP_ALL): Mode macro defined.
12485         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
12486         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
12487         Insn definitions added.
12488         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
12489         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
12490         Expanders added.
12491
12492 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
12493
12494         PR tree-optimization/31885
12495         * tree-chrec.c (chrec_contains_undetermined): Do not consider
12496         NULL_TREE to be undetermined.
12497         (automatically_generated_chrec_p): Return false for NULL.
12498
12499 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
12500
12501         * config/bfin/bfin.h (MOVE_RATIO): Define.
12502
12503 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
12504
12505         * config.gcc (sparc-wrs-vxworks): New target.
12506         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
12507         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
12508         * config/sparc/sparc.h: Include vxworks-dummy.h.
12509         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
12510         include LABEL_REFs too.
12511         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
12512         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
12513         VxWorks.
12514         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
12515         on VxWorks.
12516         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
12517         (sparc_emit_call_insn): New function.
12518         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
12519         functions when generating VxWorks PIC.
12520         * config/sparc/sparc.md (vxworks_load_got): New pattern.
12521         (call, call_value): Use sparc_emit_call_insn instead of
12522         emit_call_insn.
12523
12524 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
12525
12526         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
12527
12528 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
12529
12530         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
12531         for floating-point values if HOST_BITS_PER_LONG > 32.  Use
12532         split_double instead of operand_subword.
12533
12534 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
12535
12536         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
12537         * config/bfin/bfin.c (bfin_local_alignment): New function.
12538         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
12539
12540 2007-05-08  Chao-ying Fu  <fu@mips.com>
12541
12542         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
12543         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
12544         (smsub_widen_optab, umsub_widen_optab): Define.
12545         * optabs.c (init_optabs): Initialize smsub_widen_optab and
12546         umsub_widen_optab.
12547         * genopinit.c (optabs): Fill in smsub_widen_optab and
12548         umsub_widen_optab.
12549         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
12550         and umsub_widen_optab to implement multiply-subtract sequences.
12551         * config/mips/mips.md (*msac<u>_di): Rename to...
12552         (<u>msubsidi4): ...this.  Extend condition to include
12553         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
12554         of operand 0 to "ka" and use the three-operand form of msub<u>
12555         for TARGET_DSPR2.
12556         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
12557         to define_expands.
12558
12559 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
12560
12561         PR rtl-optimization/28011
12562         * reload.c (push_reload): Set dont_share if IN appears in OUT
12563         also when IN is a PLUS rtx.
12564         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
12565         are same PLUS rtx.
12566
12567 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
12568
12569         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
12570         call unshare_all_decls.
12571         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
12572         (unshare_all_decls): Remove.
12573
12574 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
12575
12576         PR 31847
12577         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
12578         dumps.
12579
12580 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
12581             Nigel Stephens  <nigel@mips.com>
12582
12583         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
12584         Update comments and all uses.
12585         (MIN_FPRS_PER_FMT): Define.
12586         * config/mips/mips.c (function_arg): Fix to correctly handle
12587         the -mips32r2 -mfp64 -mabi=32 case.
12588         (override_options): Enable use of odd-numbered registers for
12589         SFmode values on MIPS32.
12590         (mips_save_reg_p): Save whole floating-point register pair if
12591         either half is used.
12592         (compute_frame_size): Fix comment.
12593
12594 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
12595
12596         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
12597         argument of type bool.
12598         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
12599         argument. Safely select temporary P register according to it.
12600         (do_link): Change call site of add_to_reg accordingly.
12601         (do_unlink): Add epilogue_p as a fourth argument and pass it
12602         to add_to_reg.
12603         (expand_interrupt_handler_epilogue): Change call of do_unlink
12604         accordingly.
12605         (bfin_expand_prologue): Add a third argument sibcall_p.
12606         * config/bfin/bfin.md (epilogue): Change call of
12607         bfin_expand_epilogue accordingly.
12608         (sibcall_epilogue): Likewise.
12609         (eh_return_internal): Likewise.
12610
12611         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
12612         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
12613         * config/bfin/bfin.c (bfin_handle_option): Handle
12614         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
12615         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
12616         Support bf534, bf536 and bf561.
12617         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
12618
12619 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
12620
12621         PR target/31854
12622         * config/i386/i386.c (ix86_function_regparm): Process local
12623         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
12624
12625 2007-05-07  Mike Stump  <mrs@apple.com>
12626
12627         * doc/invoke.texi (Warning Options): Document that -Wempty-body
12628         also checks for and while statements in C++.
12629
12630 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
12631
12632         * gcc.c (at_file_supplied): New variable.
12633         (main): Set it if we expanded argv.
12634         (do_spec_1): Pass an @-file to the linker if we were called with
12635         an @-file argument and HAVE_GNU_LD.
12636         * collect2.c (at_file_supplied): New variable.
12637         (response_file): New variable.
12638         (collect_exit): Unlink response_file if necessary.
12639         (handler): Likewise.
12640         (do_wait): Likewise.
12641         (main): Set at_file_supplied if we expanded argv.
12642         (collect_execute): Pass an @-file to subprocesses if we were called
12643         with an @-file argument.
12644         * configure.ac: Add define for HAVE_GNU_LD.
12645         * configure: Regenerate.
12646         * config.in: Regenerate.
12647
12648 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
12649
12650         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
12651         operand to HI mode.
12652         (mulsi3): New.
12653         (divsi3): New.
12654         (udivsi3): New.
12655
12656 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
12657
12658         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
12659         (TARGET_ENCODE_SECTION_INFO): Re-define.
12660         (m32c_encode_section_info): New
12661         (function_vector_handler): New
12662         (current_function_special_page_vector): New
12663         (m32c_special_page_vector_p): New.
12664         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
12665         Prototype.
12666         * config/m32c/jump.md: Added instruction JSRS for functions
12667         with attribute "function_vector".
12668         * doc/extend.texi (function_vector): Added description
12669         for M16C, M32C targets.
12670
12671 2007-05-07  DJ Delorie  <dj@redhat.com>
12672
12673         PR 31794
12674         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
12675         ashrpsi3, lshrpsi3): Update shift count constraint.
12676
12677 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
12678             Nathan Froyd  <froydnj@codesourcery.com>
12679
12680         PR 22133
12681         * c-incpath.c (add_path): Strip trailing path separators.
12682
12683 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
12684
12685         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
12686         Free dominance info before purging EH edges.
12687         (eliminate_degenerate_phis): Likewise.
12688         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
12689
12690 2007-05-07  Jan Hubicka  <jh@suse.cz>
12691
12692         * gimplify.c (gimplify_expr): Do not crash when folding
12693         (void *)(int)&a + 4.
12694
12695 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
12696
12697         PR driver/31694
12698         * c-opts.c (lang_fortran): Make it non static.
12699         * c-common.h (lang_fortran): New prototype.
12700         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
12701         -lang-fortran option was passed by the driver.
12702
12703 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
12704
12705         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
12706         of ASSERT_CHECKING.  Tweak message.
12707
12708 2007-05-06  Revital Eres  <eres@il.ibm.com>
12709
12710         PR 30957
12711         * loop-unroll.c (insert_var_expansion_initialization):
12712         Initialize the expansions with -zero instead of +zero.
12713
12714 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
12715
12716         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
12717         into pic and non-pic versions. Mark r19 as used for
12718         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
12719         for tgd_load, tld_load and tie_load .
12720         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
12721         version of tgd_load, tld_load and tie_load depending on the
12722         value of flag_pic.
12723
12724 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
12725             Jakub Jelinek  <jakub@redhat.com>
12726
12727         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
12728         (__do_global_dtors_aux): Use more paranoid loop to run
12729         destructors if HIDDEN_DTOR_LIST_END.
12730         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
12731
12732 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
12733
12734         * varasm.c (align_variable): Don't increase alignment for
12735         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
12736         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
12737
12738 2007-05-04  Josh Conner  <jconner@apple.com>
12739
12740         * basic-block.h (cdi_direction): Assign values to all enumeration
12741         constants.
12742         (dom_computed): Remove.
12743         (dom_info_state): New.
12744         (set_dom_info_availability): New.
12745         * tree-ssa-loop-im.c (determine_invariantness): Initialize
12746         walk_data.dom_direction.
12747         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
12748         instead of dom_computed[].
12749         (split_edge): Likewise.
12750         (create_basic_block): Likewise.
12751         (merge_blocks): Likewise.
12752         * ifcvt.c (find_if_header): Likewise.
12753         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
12754         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
12755         * tree-ssa.c (verify_ssa): Likewise.
12756         * tree-cfg.c (tree_verify_flow_info): Likewise.
12757         (remove_edge_and_dominated_blocks): Likewise.
12758         * dominance.c (dom_computed): Make static.
12759         (calc_dfs_tree_nonrec): Change third param to a bool.
12760         (calc_dfs_tree): Change second param to a bool.
12761         (calc_idioms): Change second param to a bool.  Use
12762         dom_convert_dir_to_idx.
12763         (init_dom_info): Validate dir before using.
12764         (dom_convert_dir_to_idx): New.
12765         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
12766         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
12767         (free_dominance_info): Use dom_convert_dir_to_idx.
12768         (get_immediate_dominator): Likewise.
12769         (set_immediate_dominator): Likewise.
12770         (get_dominated_by): Likewise.
12771         (redirect_immediate_dominators): Likewise.
12772         (nearest_common_denominator): Likewise.
12773         (dominated_by_p): Likewise.
12774         (bb_dom_dfs_in): Likewise.
12775         (bb_dom_dfs_out): Likewise.
12776         (recount_dominator): Likewise.
12777         (iterate_fix_dominators): Likewise.
12778         (add_to_dominance_info): Likewise.
12779         (delete_from_dominance_info): Likewise.
12780         (first_dom_son): Likewise.
12781         (next_dom_son): Likewise.
12782         (dom_info_available_p): Likewise.
12783         (dom_info_state): New.
12784         (set_dom_info_availability): New.
12785
12786 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
12787
12788         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
12789         Expander removed.
12790         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
12791
12792 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
12793
12794         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
12795         (subdi3, subdi_carry): Delete.
12796
12797 2007-05-04  Jan Hubicka  <jh@suse.cz>
12798             Richard Guenther  <rguenther@suse.de>
12799
12800         * opts.c (decode_options): Do not fiddle with inlining
12801         parameters in case of optimizing for size.
12802         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
12803         for size do nothing.
12804         (cgraph_decide_inlining_of_small_function): When optimizing for
12805         size never inline functions increasing caller size.
12806         (cgraph_early_inlining): Inline for size when optimizing for size.
12807
12808 2007-05-04  Bernd Schmidt  <bernd.schmidt@analog.com>
12809
12810         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
12811         logical operations piecewise.
12812         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
12813         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
12814         subdi_sesidi_di): Delete.
12815         (add_with_carry): Produce carry in CC instead of a DREG to shorten
12816         the generated sequence.  Allow three-reg add in constraints.  Rewrite
12817         the rtl expression for carry to avoid zero_extend of a constant.
12818         (sub_with_carry): New pattern.
12819         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
12820         different sequence not involving jumps.
12821         (notbi): Now a named pattern.
12822
12823 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
12824
12825         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
12826         Add the note about a significant loss of accuracy of some
12827         mathematical routines when these options are used.
12828
12829 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
12830
12831         * haifa-sched.c (rtx_vec_t): New typedef.
12832         (contributes_to_priority_p): Extract piece of priority () into new
12833         static function.
12834         (priority): Use the function.  Add assertion.
12835         (rank_for_schedule, set_priorities): Add assertion to check that
12836         insn's priority is initialized.
12837         (clear_priorities, calc_priorities): Change signature.  Make it update
12838         all relevant insns.  Update all callers ('add_to_speculative_block ()'
12839         and 'create_block_check_twin ()').
12840         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
12841         Add new field 'priority_status'.
12842         (INSN_PRIORITY_STATUS): New macro.
12843         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
12844
12845 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
12846
12847         * sched-ebb.c (debug_ebb_dependencies): New static function.
12848         (init_ready_list): Use it.
12849
12850         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
12851         with changed signature and 'debug_rgn_dependencies ()'.
12852         (debug_rgn_dependencies): New static function.
12853         (init_ready_list): Use it.
12854
12855         * sched-int.h (debug_dependencies): Declare.
12856
12857 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
12858
12859         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
12860
12861 2007-05-04  Dirk Mueller  <dmueller@suse.de>
12862
12863         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
12864
12865 2007-05-03  Jan Hubicka  <jh@suse.cz>
12866
12867         * fold-const.c (fold_unary): Convert (T1)(X op Y) into
12868         ((T1)X op (T1)Y), for pointer type in more cases than before.
12869
12870         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
12871
12872         * tree-object-size.c (plus_expr_object_size): When operand size is
12873         unknown, return unknown.
12874
12875 2007-05-03  Dirk Mueller  <dmueller@suse.de>
12876
12877         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
12878
12879         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
12880         options.
12881
12882         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
12883
12884 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
12885
12886         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
12887
12888 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
12889
12890         * config/soft-fp/double.h, config/soft-fp/extended.h,
12891         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
12892         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
12893         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
12894         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
12895         glibc CVS.
12896
12897 2007-05-03  Ian Lance Taylor  <iant@google.com>
12898
12899         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
12900         MASK_PPC_GFXOPT for 8540 or 8548.
12901
12902 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
12903
12904         * tree-vect-transform.c (vect_update_inits_of_drs): Use
12905         vect_print_dump_info() to output debug information.
12906
12907 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
12908
12909         PR target/31768
12910         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
12911         operands of size 2 when operand is not MEM_P.
12912
12913 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
12914
12915         PR tree-optimization/30565
12916         * lambda-code.c (perfect_nestify): Fix updating of dominators.
12917
12918 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
12919
12920         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
12921         (umulsi3_highpart): Use them.
12922         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
12923         for final accumulator to D regisster tranfser.
12924
12925 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
12926
12927         PR tree-optimization/31699
12928         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove
12929         wrong code.
12930         (vect_enhance_data_refs_alignment): Compute peel amount using
12931         TYPE_VECTOR_SUBPARTS instead of vf.
12932         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
12933
12934 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
12935
12936         PR bootstrap/31776
12937         * system.h: Remove inclusion of double-int.h
12938         * tree.h: Include double-int.h
12939         * gengtype.c: Likewise
12940         * cfgloop.h: Likewise
12941         * Makefile.in: Adjust dependencies on double-int.h
12942
12943 2007-05-02  Eric Christopher  <echristo@apple.com>
12944
12945         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
12946         -shared to -Zdynamiclib.
12947
12948 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
12949
12950         PR c++/31663
12951         * c-common.c (strip_pointer_or_array_types): New function.
12952         * c-common.h (strip_pointer_or_array_types): New function declaration.
12953
12954 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
12955
12956         PR tree-optimization/31771
12957         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
12958
12959 2007-05-02  Paul Brook  <paul@codesourcery.com>
12960
12961         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
12962
12963 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12964
12965         PR middle-end/29715
12966         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
12967         transformation.
12968
12969 2007-05-02  Nick Clifton  <nickc@redhat.com>
12970
12971         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
12972
12973 2007-05-02  Richard Guenther  <rguenther@suse.de>
12974
12975         PR tree-optimization/31146
12976         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
12977         argument, single_use_p.  If we have a single use that is
12978         a conversion to the definition rhs type, propagate that rhs.
12979         (forward_propagate_addr_expr): Pass single_use_p argument
12980         to forward_propagate_addr_expr_1.
12981
12982 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
12983
12984         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
12985         variable.
12986
12987 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
12988
12989         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
12990         'AMD Family 10 core'.
12991
12992 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
12993
12994         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
12995         and athlon64-sse3 as improved versions of k8, opteron and athlon64
12996         with SSE3 instruction set support.
12997         * doc/invoke.texi: Likewise.
12998
12999 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
13000
13001         * config/i386/i386.c (override_options): Tuning 32-byte loop
13002         alignment for amdfam10 architecture. Increasing the max loop
13003         alignment to 24 bytes.
13004
13005 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
13006
13007         * config/m68k/constraints.md: New.
13008         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
13009         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
13010         EXTRA_CONSTRAINT): Remove.
13011         * config/m68k/m68k.md: Include constraints.md.
13012         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
13013
13014 2007-05-01  Ian Lance Taylor  <iant@google.com>
13015
13016         PR tree-optimization/31739
13017         * tree-vrp.c (vrp_val_is_max): New static function.
13018         (vrp_val_is_min): New static function.
13019         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
13020         copying the node.
13021         (set_value_range): Use vrp_val_is_{max,min}.
13022         (extract_range_from_assert): Likewise.
13023         (extract_range_from_binary_expr): Likewise.
13024         (extract_range_from_unary_expr): Likewise.
13025         (dump_value_range, vrp_meet): Likewise.
13026         (vrp_visit_phi_node): Likewise.
13027         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
13028
13029 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
13030
13031         * config/i386/gmon-sol2.c (size_t): New type.
13032         (intptr_t): Likewise.
13033         (s_textsize): Declare as size_t.
13034         (sbrk): Declare.
13035         (monstartup): Use size_t for sizes.
13036         (_mcount): Save and restore registers.
13037         (internal_mcount): Pass 0 as the first argument to monstartup
13038         in 64-bit mode.
13039         (moncontrol): Convert pointer to appropriately sized integer
13040         before passing to profil.
13041
13042 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
13043
13044         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
13045         __NO_FPRS__, not just if _SOFT_DOUBLE.
13046         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
13047         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
13048         also for E500 double.
13049         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
13050         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
13051         && !TARGET_FPRS).
13052
13053 2007-05-01  Richard Guenther  <rguenther@suse.de>
13054
13055         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
13056         is NULL.
13057
13058 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
13059
13060         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
13061
13062 2007-05-01  Jan Hubicka  <jh@suse.cz>
13063
13064         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
13065         invariant.
13066
13067 2007-05-01  Jan Hubicka  <jh@suse.cz>
13068
13069         * tree.h (maybe_fold_offset_to_component_ref): Remove.
13070         (maybe_fold_offset_to_reference): Declare.
13071         * fold-const.c (fold_unary): Do not fold
13072         (type *)&A into &A->field_of_type_and_offset_0
13073         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
13074         size is unknown, give up.
13075         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
13076         offsets.
13077         (maybe_fold_offset_to_reference): New.
13078         (maybe_fold_stmt_indirect): Use it.
13079         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
13080         * gimplify.c (gimplify_conversion): Canonicalize conversions to
13081         field references.
13082         (gimplify_expr): Likewise for plus_expr.
13083
13084 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
13085
13086         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
13087         bsi_after_labels.  Always insert statements before bsi.
13088         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
13089         * predict.c (apply_return_prediction): Check for empty blocks.
13090         * cfgexpand.c (lab_rtx_for_bb): New variable.
13091         (label_rtx_for_bb): Do not create new tree labels.
13092         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
13093         (tree_expand_cfg): Initialize lab_rtx_for_bb.
13094         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
13095         creating edges.
13096         (label_for_bb): Add field used.
13097         (update_eh_label, main_block_label): Mark the label used.
13098         (cleanup_dead_labels): Remove unused labels.
13099
13100 2007-05-01  Richard Guenther  <rguenther@suse.de>
13101
13102         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
13103         if it is not about to be set.
13104         (get_value_range): Do not pre-allocate equiv bitmap.
13105         (update_value_range): No need to clear equiv field.
13106         (add_equivalence): Change prototype to get bitmap pointer.
13107         Allocate bitmap here if it is not already.
13108         (extract_range_from_assert): Do not allocate bitmap here.
13109         Update callers to add_equivalence.
13110         (extract_range_from_ssa_name): Likewise.
13111         (get_vr_for_comparison): New static helper.
13112         (compare_name_with_value): Handle NULL equiv bitmap by
13113         peeling the first iteration of the comparison loop.
13114         Use get_vr_for_comparison.
13115         (compare_names): Handle NULL equiv bitmaps by using fake
13116         ones.  Use get_vr_for_comparison.
13117
13118 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
13119
13120         * double-int.c (mpz_set_double_int): Moved from
13121         tree-ssa-loop-niter.c.
13122         (mpz_get_double_int): Likewise; also, add option to wrap
13123         out-of-range integers.
13124         * double-int.h: New prototypes for above.
13125         * tree.c (get_static_type_bounds): Moved from
13126         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
13127         TYPE_MAX_VALUE if they exist..
13128         * tree.h: New prototype for above.
13129         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
13130         get_type_bounds calls.
13131         (mpz_set_double_int): Move to double-int.c.
13132         (get_type_bounds): Move to tree.c, rename to
13133         get_static_type_bounds.
13134         (mpz_to_double_int): Move to double-int.c, rename to
13135         mpz_get_double_int.
13136
13137 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
13138
13139         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
13140         DIV0 exception can fall through to a normal return.
13141
13142 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
13143
13144         PR middle-end/22156
13145         Temporarily revert:
13146         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
13147         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
13148         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
13149         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
13150         initialize align to silence bogus warning.
13151         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
13152         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
13153         all_no_warning.
13154         (struct sra_walk_fns): Remove use_all parameter from use.
13155         (sra_hash_tree): Handle BIT_FIELD_REFs.
13156         (sra_elt_hash): Don't hash bitfld blocks.
13157         (sra_elt_eq): Skip them in parent compares as well.  Handle
13158         BIT_FIELD_REFs.
13159         (sra_walk_expr): Don't maintain or pass down use_all_p.
13160         (scan_use): Remove use_all parameter.
13161         (scalarize_use): Likewise.  Re-expand assignment to
13162         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
13163         output, and re-scalarize after output.  Don't mark anything
13164         for no warning.
13165         (scalarize_ldst): Adjust.
13166         (scalarize_walk_gimple_modify_statement): Likewise.
13167         (build_element_name_1): Handle BIT_FIELD_REFs.
13168         (instantiate_element): Don't warn for any element whose parent
13169         is used as a whole.
13170         (instantiate_missing_elements_1): Return the sra_elt.
13171         (canon_type_for_field): New.
13172         (try_instantiate_multiple_fields): New.
13173         (instantiate_missing_elemnts): Use them.
13174         (mark_no_warning): Removed.
13175         (generate_one_element_ref): Handle BIT_FIELD_REFs.
13176         (REPLDUP, sra_build_elt_assignment): New.
13177         (generate_copy_inout): Use them.
13178         (generate_element_copy): Likewise.  Handle bitfld differences.
13179         (generate_element_zero): Don't recurse for blocks.  Use
13180         sra_build_elt_assignment.
13181         (generate_one_element_int): Take elt instead of var.  Use
13182         sra_build_elt_assignment.
13183         (generate_element_init_1): Adjust.
13184         (scalarize_use, scalarize_copy): Use REPLDUP.
13185         (scalarize_ldst): Move assert before dereference.
13186         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
13187
13188 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13189
13190         PR C++/31721
13191         * tree.c (reconstruct_complex_type): Reconstruct a reference
13192         correctly.
13193         Also use the same mode for the pointer as the old pointer type.
13194
13195 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
13196
13197         * doc/trouble.texi (Interoperation): Remove note about Ultrix
13198         Fortran compiler.
13199
13200 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
13201
13202         PR rtl-optimization/31676
13203         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
13204         (df_refs_record): Call it.
13205
13206 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
13207
13208         * rtl.def (SS_ABS): New code.
13209         * config/bfin/bfin.c (print_operand): New modifier 'v'.
13210         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
13211         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
13212         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
13213         (bfin_init_builtins): Define them.
13214         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
13215         (bfin_expand_builtin): ... and handle the others here.
13216         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
13217         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
13218         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
13219         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
13220         operand is only HImode.
13221
13222 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
13223
13224         * regclass.c (scan_one_insn): Remove splitting of
13225         two address insns.
13226
13227 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
13228             Nigel Stephens  <nigel@mips.com>
13229
13230         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
13231
13232 2007-04-28  Jan Hubicka  <jh@suse.cz>
13233
13234         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
13235         insn_locators_alloc instead of insn_locators_initialize;
13236         call reset_block_changes.
13237         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
13238         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
13239         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
13240         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
13241         * config/score/score.c (th_output_mi_thunk): Likewise.
13242         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
13243         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
13244         tolerate uninitialized locator info.
13245
13246         Re-apply:
13247         * function.c (init_function_start): Don't init line number info.
13248         (expand_function_end): Update.
13249         (reset_block_changes, record_block_change, finalize_block_changes,
13250         check_block_change, free_block_changes): Kill.
13251         * function.h (reset_block_changes, record_block_change,
13252         finalize_block_changes, check_block_change, free_block_changes):
13253         Remove prototypes.
13254         (struct function): Remove ib_boundaries_block.
13255         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
13256         Use curr_insn_locator to initialize locator.
13257         (emit_line_note): Remove.
13258         * cfgexpand.c (expand_gimple_cond_expr): Update.
13259         (construct_exit_block): Likewise.
13260         (tree_expand_cfg): Initialize/finalize locators.
13261         * expr.c (expand_expr_real): Update.
13262         * cfglayout.c (line_locators_locs, line_locators_lines,
13263         file_locators_locs, file_locators_files): Remove.
13264         (set_block_levels): Move to cfgexpand.c.
13265         (insn_locators_initialize): Remove.
13266         (pass_insn_locators_initialize): Remove.
13267         (locations_locators_locs, locations_locators_vals): New static vars.
13268         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
13269         Likewise.
13270         (insn_locators_alloc, insn_locators_finalize,
13271         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
13272         New functions.
13273         (locator_location): New.
13274         (locator_line, locator_file): Rewrite.
13275         * rtl.h (emit_line_note): Kill.
13276         (insn_locators_alloc, insn_locators_finalize,
13277         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
13278         Declare.
13279         * tree-inline.c (initialize_cfun): Do not initialize
13280         ib_boundaries_block.
13281         * passes.c (pass_insn_locators_initialize): Remove.
13282
13283 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
13284
13285         * tree-cfg.c (move_block_to_fn): Release bb from dominance
13286         info.  Update last_basic_block correctly.
13287
13288 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
13289
13290         PR target/31701
13291         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
13292         register itself to hold the offset constant.  Tell flow the use
13293         of r4 and r5 when they are used.
13294
13295 2007-04-27  Richard Guenther  <rguenther@suse.de>
13296
13297         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
13298         if we simplified anything.
13299         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
13300         warnings until we did a simplification and the stmt was not
13301         marked as TREE_NO_WARNING.
13302
13303 2007-04-27  Mike Stump  <mrs@apple.com>
13304
13305         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
13306
13307 2007-04-27  Ian Lance Taylor  <iant@google.com>
13308
13309         PR middle-end/31710
13310         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
13311         TYPE_MAX_VALUE exist, convert them to the new type.
13312
13313 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
13314
13315         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
13316         if it claims to be available.
13317         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
13318         edge is redirected.
13319         (perform_tree_ssa_dce): Always free postdominators.
13320
13321 2007-04-27  Richard Henderson  <rth@redhat.com>
13322
13323         * config/alpha/predicates.md (aligned_memory_operand): Mark
13324         as define_special_predicate.
13325         (unaligned_memory_operand, normal_memory_operand): Likewise.
13326         (reg_or_unaligned_mem_operand): Remove.
13327         (any_memory_operand): Match the documentation and check for
13328         non-renumbered pseudos during reload.
13329         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
13330         alpha_secondary_reload_class, update to new interface, make static.
13331         Handle CQImode like HImode.  Remove FP subreg check.
13332         (alpha_expand_mov): Use replace_equiv_address.
13333         (alpha_expand_mov_nobwx): Use any_memory_operand.
13334         (TARGET_SECONDARY_RELOAD): New.
13335         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
13336         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
13337         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
13338         * config/alpha/alpha.md: ... here.
13339         (RELOAD12, reloadmode): New.
13340         (movcqi): New.
13341         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
13342         Don't handle the aligned case here.
13343         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
13344         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
13345         reload_inhi_help.  Don't expect a scratch register.
13346         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
13347         reload_outhi_help.
13348         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
13349
13350 2007-04-27  Richard Guenther  <rguenther@suse.de>
13351
13352         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
13353
13354 2007-04-27  Richard Guenther  <rguenther@suse.de>
13355
13356         PR tree-optimization/30965
13357         PR tree-optimization/30978
13358         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
13359         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
13360         (find_equivalent_equality_comparison): Likewise.
13361         (simplify_cond): Likewise.
13362         (get_prop_source_stmt): New helper.
13363         (get_prop_dest_stmt): Likewise.
13364         (can_propagate_from): Likewise.
13365         (remove_prop_source_from_use): Likewise.
13366         (combine_cond_expr_cond): Likewise.
13367         (forward_propagate_comparison): New function.
13368         (forward_propagate_into_cond): Rewrite to use fold for
13369         tree combining.
13370         (tree_ssa_forward_propagate_single_use_vars): Call
13371         forward_propagate_comparison to propagate comparisons.
13372
13373 2007-04-27  Richard Guenther  <rguenther@suse.de>
13374
13375         PR tree-optimization/31715
13376         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
13377         sure to do computation on the offset in an appropriate
13378         signed type.
13379
13380 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
13381
13382         * reload.h (elimination_target_reg_p): Declare.
13383         * reload.c (find_reloads): Don't apply the reg_rtx move
13384         optimization if the SET_DEST satisfies elimination_target_reg_p.
13385         * reload1.c (elimination_target_reg_p): New function.
13386         (gen_reload): In the move/add2 fallback, make sure that op0
13387         does not overlap the destination register.
13388
13389 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
13390
13391         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
13392         transform only GIMPLE_MODIFY_STMTs.
13393         * tree-complex.c (expand_complex_operations_1): Ditto.
13394         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
13395         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
13396         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
13397         branches.
13398         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
13399         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
13400         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
13401         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
13402         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
13403         slpeel_add_loop_guard): Ditto.
13404         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
13405         * lambda-code.c (perfect_nestify): Ditto.
13406         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
13407         before the first statement.
13408         * tree-optimize.c (execute_free_datastructures): Fix comments.
13409         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
13410         * tree-flow.h (disband_implicit_edges): Declaration removed.
13411         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
13412         branches.
13413         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle
13414         COND_EXPRs without gotos.
13415         (disband_implicit_edges, has_label_p): Removed.
13416         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
13417         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
13418         branches.
13419         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
13420         side effects.
13421         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
13422         also for COND_EXPRs.
13423         * cfgexpand.c (label_rtx_for_bb): New function.
13424         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
13425         Use label_rtx_for_bb to find the labels.
13426         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
13427         last block.  Detect fallthru edges.
13428
13429 2007-04-26  Ian Lance Taylor  <iant@google.com>
13430
13431         PR target/28675
13432         * reload.c (find_reloads_subreg_address): If the address was valid
13433         in the original mode but not in the new mode, reload the whole
13434         address.
13435
13436 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
13437
13438         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
13439         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
13440         (cleanup_control_expr_graph): Do not invalidate dominance info.
13441         Record altered blocks.
13442         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
13443         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
13444         cleanup_tree_cfg_bb): New functions.
13445         (remove_forwarder_block): Do not maintain the worklist of blocks.
13446         Record altered blocks.
13447         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
13448         not over whole cfg.
13449         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
13450         delete_unreachable_blocks if dominators are not available.
13451         * tree-inline.c (optimize_inline_calls): Free dominance information
13452         earlier.
13453         * tree-flow.h (remove_edge_and_dominated_blocks,
13454         cfgcleanup_altered_bbs): Altered.
13455         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
13456         blocks.
13457         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
13458         functions.
13459         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
13460         do not invalidate dominators.
13461
13462 2007-04-26  Anatoly Sokolov <aesok@post.ru>
13463
13464         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
13465         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
13466         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
13467         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
13468
13469 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
13470
13471         * config/ia64/ia64.md (ip_value):  Fix itanium_class attribute.
13472
13473 2007-04-26  Richard Guenther  <rguenther@suse.de>
13474
13475         PR tree-optimization/31703
13476         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
13477         the right type for the target of the bittest.
13478
13479 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
13480
13481         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
13482         ix86_sol10_return_in_memory.
13483
13484 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
13485
13486         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
13487         variables.
13488
13489 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
13490
13491         PR c++/31598
13492         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
13493
13494         PR tree-optimization/30558
13495         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
13496         clear this_state.prev_try.
13497
13498 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
13499             Mark Mitchell  <mark@codesourcery.com>
13500
13501         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
13502         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
13503         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
13504
13505 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
13506
13507         PR driver/31107
13508         * doc/invoke.texi (%:print-asm-header): Document.
13509         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
13510         and -ftarget-help.
13511         (static_spec_functions): Add print-asm-header.
13512         (main): Print a banner before the --target-help linker options.
13513         (print_asm_header_spec_function): New function.
13514
13515 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
13516
13517         PR target/31403
13518         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
13519         (movsf_ie): Likewise.
13520
13521 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
13522
13523         * doc/extend.texi ([Type Traits]): Adjust per N2255.
13524
13525 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
13526
13527         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an
13528         exception for divide-by-zero.
13529         (__umodsi3, __modsi3): Likewise.
13530
13531 2007-04-25  Dirk Mueller  <dmueller@suse.de>
13532
13533         * c-typeck.c (build_compound_expr): Annotate warning()
13534         call with OPT_Wunused_value.
13535         * tree-ssa.c (warn_uninit): Annotate warning with
13536         OPT_Wunintialized.
13537         * c-common.c (handle_sentinel_attribute): Annotate warning
13538         call with OPT_Wattributes.
13539
13540 2007-04-25  Thiemo Seufer  <ths@mips.com>
13541
13542         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
13543         (mips16): Fix typo.
13544         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
13545         on to the assembler.  Improve handling of -mno-mips16.  Add handling
13546         of -mno-mips3d, -mno-dsp, -mno-dspr2.
13547         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
13548         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
13549         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
13550
13551 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
13552
13553         PR target/31680
13554         * config/i386/winnt.c (i386_pe_file_end): Strip only
13555         USER_LABEL_PREFIX when writing export name.
13556
13557 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
13558
13559         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
13560         sh/elf.h, vx-common.h and vxworks.h.
13561         * config/sh/sh.h: Include config/vxworks-dummy.h.
13562         (SUBTARGET_OVERRIDE_OPTIONS): Define.
13563         (OVERRIDE_OPTIONS): Use it.
13564         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
13565         (vxworks_picreg): New pattern.
13566         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
13567         VXWORKS_OS_CPP_BUILTINS.
13568         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
13569         to their VXWORKS_* equivalents.
13570         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
13571         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
13572         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
13573         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
13574         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
13575         -mrtp/-fPIC multilibs.
13576         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
13577         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
13578         (MULTILIB_OSDIRNAMES): Delete.
13579
13580 2007-04-25  Anatoly Sokolov <aesok@post.ru>
13581
13582         PR target/18989
13583         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
13584
13585 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
13586
13587         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
13588         rounding mode to be specified by the caller.
13589         (real_to_mpfr) Likewise.
13590         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
13591         include new arguments.
13592         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
13593
13594 2007-04-24  Ian Lance Taylor  <iant@google.com>
13595
13596         PR tree-optimization/31605
13597         * tree-vrp.c (set_value_range): Check that min and max are not
13598         both overflow infinities.
13599         (set_value_range_to_value): New static function.
13600         (extract_range_from_binary_expr): Call set_value_range_to_value.
13601         (extract_range_from_cond_expr): Likewise.
13602         (extract_range_from_expr): Likewise.
13603         (extract_range_from_unary_expr): Likewise.  Don't create a range
13604         which overflows on both sides.
13605         (vrp_meet): Check for a useless range.
13606         (vrp_visit_phi_node): If we see a constant which looks like an
13607         overflow infinity, turn off the TREE_OVERFLOW flag.
13608
13609 2007-04-24  Ian Lance Taylor  <iant@google.com>
13610
13611         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
13612
13613 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
13614
13615         PR diagnostic/25923
13616         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
13617         diagnostic message is being built.
13618         * tree-pretty-print.c (dump_generic_node): Only write the
13619         formatted text into BUFFER's stream if we are not building a
13620         diagnostic message.
13621         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
13622         dump_generic_node.
13623         * Makefile.in (toplev.o): Depend on tree-pass.h.
13624
13625 2007-04-24  Ian Lance Taylor  <iant@google.com>
13626
13627         PR tree-optimization/31602
13628         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
13629         conditionals in the copied loop header.
13630         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
13631         warnings if TREE_NO_WARNING is set.
13632         * doc/invoke.texi (Warning Options): Clarify that
13633         -Wstrict-overflow does not warn about loops.
13634
13635 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
13636
13637         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
13638         expand on the comment about _Decimal128 arguments and check the
13639         integer result of the modulus operation; for 64-bit ELF ABI, ensure
13640         that _Decimal128 argument uses even/odd register pair.
13641         (function_arg): Ditto.
13642
13643 2007-04-24  Hui-May Chang <hm.chang@apple.com>
13644
13645         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
13646         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
13647
13648 2007-04-24  Richard Guenther  <rguenther@suse.de>
13649             Olga Golovanevsky  <olga@il.ibm.com>
13650
13651         * fold-const.c (multiple_of_p): Check for bottom
13652         to be zero.
13653
13654 2007-04-24  Richard Henderson  <rth@redhat.com>
13655
13656         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
13657         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
13658         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
13659         looking for non-zero bits shifted out.  Avoid a recursive call
13660         when constructing the scalar.
13661         (__floatundisf): Likewise.
13662
13663 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
13664
13665         * dwarf2out.c (field_byte_offset): Move the existing logic
13666         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
13667         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
13668
13669 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
13670
13671         PR target/31641
13672         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant
13673         length argument of 0 for memset.
13674         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
13675         unsigned shift instead of the signed variant.
13676
13677 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
13678
13679         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
13680         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
13681         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
13682         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
13683         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
13684         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
13685         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
13686         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
13687         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
13688         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
13689         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
13690         "mul<mode>3", "div<mode>3"): Insn definitions added.
13691         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
13692         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
13693         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
13694         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
13695         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
13696         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
13697         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
13698         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
13699         TARGET_FLOAT_FORMAT): Macro definitions removed.
13700         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
13701         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
13702         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
13703         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
13704         (s390_gen_rtx_const_DI): Function removed.
13705         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
13706
13707 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
13708
13709         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
13710         over an external ffs function.
13711
13712 2007-04-24  Chao-ying Fu  <fu@mips.com>
13713             Richard Sandiford  <richard@nildram.co.uk>
13714
13715         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
13716         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
13717         (smadd_widen_optab, umadd_widen_optab): Define.
13718         * optabs.c (init_optabs): Initialize smadd_widen_optab and
13719         umadd_widen_optab.
13720         * genopinit.c (optabs): Fill in smadd_widen_optab and
13721         umadd_widen_optab.
13722         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
13723         and umadd_widen_optab to implement multiply-add sequences.
13724         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
13725         (<u>maddsidi4): ...this.  Extend condition to include
13726         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
13727         of operand 0 to "ka" and use the three-operand form of madd<u>
13728         for TARGET_DSPR2.
13729         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
13730         to define_expands.
13731         * config/mips/constraints.md (ka): New register constraint.
13732
13733 2007-04-24  Jan Hubicka  <j@suse.cz>
13734
13735         Revert:
13736
13737         2007-04-23  Jan Hubicka  <jh@suse.cz>
13738         * function.c (init_function_start): Don't init line number info.
13739         (expand_function_end): Update.
13740         (reset_block_changes, record_block_change, finalize_block_changes,
13741         check_block_change, free_block_changes): Kill.
13742         * function.h (reset_block_changes, record_block_change,
13743         finalize_block_changes, check_block_change, free_block_changes):
13744         Remove prototypes.
13745         (struct function): Remove ib_boundaries_block.
13746         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
13747         Use curr_insn_locator to initialize locator.
13748         (emit_line_note): Remove.
13749         * cfgexpand.c (expand_gimple_cond_expr): Update.
13750         (construct_exit_block): Likewise.
13751         (tree_expand_cfg): Initialize/finalize locators.
13752         * expr.c (expand_expr_real): Update.
13753         * cfglayout.c (line_locators_locs, line_locators_lines,
13754         file_locators_locs, file_locators_files): Remove.
13755         (set_block_levels): Move to cfgexpand.c.
13756         (insn_locators_initialize): Remove.
13757         (pass_insn_locators_initialize): Remove.
13758         (locations_locators_locs, locations_locators_vals): New static vars.
13759         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
13760         Likewise.
13761         (insn_locators_alloc, insn_locators_finalize,
13762         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
13763         New functions.
13764         (locator_location): New.
13765         (locator_line, locator_file): Rewrite.
13766         * rtl.h (emit_line_note): Kill.
13767         (insn_locators_alloc, insn_locators_finalize,
13768         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
13769         Declare.
13770         * tree-inline.c (initialize_cfun): Do not initialize
13771         ib_boundaries_block.
13772         * passes.c (pass_insn_locators_initialize): Remove.
13773
13774 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
13775
13776         * doc/invoke.texi: Removed leading '-' from option index entries.
13777
13778 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
13779
13780         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
13781         Use phi_nodes_ptr.
13782         (create_phi_node): Use set_phi_nodes.
13783         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
13784         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
13785         (combine_blocks):  Use bb_stmt_list and set_bb_stmt_list.
13786         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
13787         (bsi_start, bsi_last): Use bb_stmt_list.
13788         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
13789         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
13790         Traverse the statements using tsi iterator.
13791         * basic-block.h (struct basic_block_def): Fields stmt_list
13792         and phi_nodes moved to ...
13793         (struct tree_bb_info): ... new structure.
13794         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
13795         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
13796         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
13797         (tree_verify_flow_info): Verify that il.tree is not set for
13798         entry and exit block.
13799         (tree_split_block): Use set_bb_stmt_list.
13800
13801 2007-04-23  Mike Stump  <mrs@apple.com>
13802
13803         * config/i386/i386.c (ix86_tune_features
13804         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
13805         nocona and core2.
13806
13807 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
13808
13809         * config/i386/i386.md (prefix_extra): New attribute.
13810         (length): Add prefix_extra.
13811
13812         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
13813         (sse2_movntv2di): Likewise.
13814         (sse2_cvtps2dq): Likewise.
13815         (sse2_cvtpd2pi): Likewise.
13816         (sse2_cvttpd2pi): Likewise.
13817         (*sse2_cvtpd2ps): Likewise.
13818         (*add<mode>3): Likewise.
13819         (sse2_ssadd<mode>3): Likewise.
13820         (sse2_usadd<mode>3): Likewise.
13821         (*sub<mode>3): Likewise.
13822         (sse2_sssub<mode>3): Likewise.
13823         (sse2_ussub<mode>3): Likewise.
13824         (*mulv8hi3): Likewise.
13825         (*smulv8hi3_highpart): Likewise.
13826         (*umulv8hi3_highpart): Likewise.
13827         (sse2_umulv2siv2di3): Likewise.
13828         (sse2_pmaddwd): Likewise.
13829         (ashr<mode>3): Likewise.
13830         (lshr<mode>3): Likewise.
13831         (ashl<mode>3): Likewise.
13832         (sse2_ashlti3): Likewise.
13833         (sse2_lshrti3): Likewise.
13834         (*umaxv16qi3): Likewise.
13835         (*smaxv8hi3): Likewise.
13836         (*uminv16qi3): Likewise.
13837         (*sminv8hi3): Likewise.
13838         (sse2_eq<mode>3): Likewise.
13839         (sse2_gt<mode>3): Likewise.
13840         (*and<mode>3): Likewise.
13841         (sse2_nand<mode>3): Likewise.
13842         (*ior<mode>3): Likewise.
13843         (*xor<mode>3): Likewise.
13844         (sse2_packsswb): Likewise.
13845         (sse2_packssdw): Likewise.
13846         (sse2_packuswb): Likewise.
13847         (sse2_punpckhbw): Likewise.
13848         (sse2_punpcklbw): Likewise.
13849         (sse2_punpckhwd): Likewise.
13850         (sse2_punpcklwd): Likewise.
13851         (sse2_punpckhdq): Likewise.
13852         (sse2_punpckldq): Likewise.
13853         (sse2_punpckhqdq): Likewise.
13854         (sse2_punpcklqdq): Likewise.
13855         (*sse2_pinsrw): Likewise.
13856         (*sse2_pextrw): Likewise.
13857         (sse2_pshufd_1): Likewise.
13858         (sse2_uavgv16qi3): Likewise.
13859         (sse2_uavgv8hi3): Likewise.
13860         (sse2_psadbw): Likewise.
13861         (sse2_pmovmskb): Likewise.
13862         (*sse2_maskmovdqu): Likewise.
13863         (*sse2_maskmovdqu_rex64): Likewise.
13864         (sse4a_extrqi): Likewise.
13865         (sse4a_extrq): Likewise.
13866         (sse3_lddqu): Set prefix_rep.
13867         (sse3_addsubv4sf3): Likewise.
13868         (sse3_haddv4sf3): Likewise.
13869         (sse3_hsubv4sf3): Likewise.
13870         (sse_cvtss2si): Likewise.
13871         (sse_cvtss2si_2): Likewise.
13872         (sse_cvtss2siq): Likewise.
13873         (sse_cvtss2siq_2): Likewise.
13874         (sse_cvttss2si): Likewise.
13875         (sse_cvttss2siq): Likewise.
13876         (sse2_cvttps2dq): Likewise.
13877         (sse3_movshdup): Likewise.
13878         (sse3_movsldup): Likewise.
13879         (sse2_cvtsd2si): Likewise.
13880         (sse2_cvtsd2si_2): Likewise.
13881         (sse2_cvtsd2siq): Likewise.
13882         (sse2_cvtsd2siq_2): Likewise.
13883         (sse2_cvttsd2si): Likewise.
13884         (sse2_cvttsd2siq): Likewise.
13885         (*sse2_cvtpd2dq): Likewise.
13886         (*sse2_cvttpd2dq): Likewise.
13887         (sse2_pshuflw_1): Likewise.
13888         (sse2_pshufhw_1): Likewise.
13889         (sse4a_insertqi): Likewise.
13890         (sse4a_insertq): Likewise.
13891         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
13892         (ssse3_phadddv4si3): Likewise.
13893         (ssse3_phaddswv8hi3): Likewise.
13894         (ssse3_phsubwv8hi3): Likewise.
13895         (ssse3_phsubdv4si3): Likewise.
13896         (ssse3_phsubswv8hi3): Likewise.
13897         (ssse3_pmaddubswv8hi3): Likewise.
13898         (ssse3_pmulhrswv8hi3): Likewise.
13899         (ssse3_pshufbv16qi3): Likewise.
13900         (ssse3_psign<mode>3): Likewise.
13901         (ssse3_palignrti): Likewise.
13902         (abs<mode>2): Likewise.
13903         (ssse3_phaddwv4hi3): Set prefix_extra.
13904         (ssse3_phadddv2si3): Likewise.
13905         (ssse3_phaddswv4hi3): Likewise.
13906         (ssse3_phsubwv4hi3): Likewise.
13907         (ssse3_phsubdv2si3): Likewise.
13908         (ssse3_phsubswv4hi3): Likewise.
13909         (ssse3_pmaddubswv4hi3): Likewise.
13910         (ssse3_pmulhrswv4hi3): Likewise.
13911         (ssse3_pshufbv8qi3): Likewise.
13912         (ssse3_psign<mode>3): Likewise.
13913         (ssse3_palignrdi): Likewise.
13914         (abs<mode>2): Likewise.
13915         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
13916         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
13917         (sse2_pmovmskb): Set mode to SI instead of V2DF.
13918
13919 2007-04-23  Nick Clifton  <nickc@redhat.com>
13920
13921         * params.def: Fix formatting of emacs local variables.
13922
13923 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
13924
13925         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
13926         move if inter-unit move isn't allowed.
13927         Don't split moving the first element of V2DI to DI to inter-unit
13928         move if inter-unit move isn't allowed.
13929
13930 2007-04-23  Richard Guenther  <rguenther@suse.de>
13931
13932         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
13933         and CDI_POST_DOMINATORS separately.
13934
13935 2007-04-23  Nick Clifton  <nickc@redhat.com>
13936
13937         * c.opt (Wformat-contains-nul): Add warning attribute.
13938
13939 2007-04-23  Jan Hubicka  <jh@suse.cz>
13940
13941         * function.c (init_function_start): Don't init line number info.
13942         (expand_function_end): Update.
13943         (reset_block_changes, record_block_change, finalize_block_changes,
13944         check_block_change, free_block_changes): Kill.
13945         * function.h (reset_block_changes, record_block_change,
13946         finalize_block_changes, check_block_change, free_block_changes):
13947         Remove prototypes.
13948         (struct function): Remove ib_boundaries_block.
13949         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
13950         Use curr_insn_locator to initialize locator.
13951         (emit_line_note): Remove.
13952         * cfgexpand.c (expand_gimple_cond_expr): Update.
13953         (construct_exit_block): Likewise.
13954         (tree_expand_cfg): Initialize/finalize locators.
13955         * expr.c (expand_expr_real): Update.
13956         * cfglayout.c (line_locators_locs, line_locators_lines,
13957         file_locators_locs, file_locators_files): Remove.
13958         (set_block_levels): Move to cfgexpand.c.
13959         (insn_locators_initialize): Remove.
13960         (pass_insn_locators_initialize): Remove.
13961         (locations_locators_locs, locations_locators_vals): New static vars.
13962         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
13963         Likewise.
13964         (insn_locators_alloc, insn_locators_finalize,
13965         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
13966         New functions.
13967         (locator_location): New.
13968         (locator_line, locator_file): Rewrite.
13969         * rtl.h (emit_line_note): Kill.
13970         (insn_locators_alloc, insn_locators_finalize,
13971         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
13972         Declare.
13973         * tree-inline.c (initialize_cfun): Do not initialize
13974         ib_boundaries_block.
13975         * passes.c (pass_insn_locators_initialize): Remove.
13976
13977 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13978
13979         PR middle-end/31448
13980         * expr.c (reduce_to_bit_field_precision): Handle
13981         CONST_INT rtx's.
13982
13983 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
13984
13985         PR tree-optimization/24659
13986         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
13987         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
13988         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
13989         * genopinit.c (optabs): Rename vec_pack_mod_optab
13990         to vec_pack_trunc_optab.
13991         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
13992         early for scalar floating point operands for NOP_EXPR.
13993         (vectorizable_type_promotion): Ditto.
13994         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
13995         vec_pack_trunc_optab.
13996         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
13997
13998         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
13999         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
14000         Rename from VEC_PACK_MOD_EXPR.
14001         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
14002         * expr.c (expand_expr_real_1): Ditto.
14003         * tree-inline.c (estimate_num_insns_1): Ditto.
14004         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
14005
14006         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
14007         (vec_unpacks_lo_v4sf): Ditto.
14008         (vec_pack_trunc_v2df): Ditto.
14009         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
14010         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
14011         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
14012
14013         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
14014         vec_pack_mod_v8hi.
14015         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
14016
14017         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
14018         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
14019         packing of floating point operands.
14020         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
14021         represent unpacking of floating point operands.
14022         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
14023         [vec_unpacks_hi]: Ditto.
14024         [vec_unpacks_lo]: Ditto.
14025
14026 2007-04-22  Jan Hubicka  <jh@suse.cz>
14027
14028         * final.c (rest_of_handle_final): Call
14029         targetm.asm_out.constructor/targetm.asm_out.destructor
14030         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
14031         proper priority via decl_*_priority_insert.
14032         * c-common.c (c_expand_body): Likewise.
14033
14034 2007-04-22  Richard Guenther  <rguenther@suse.de>
14035
14036         PR tree-optimization/29789
14037         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
14038         (rewrite_reciprocal): New helper split out from
14039         determine_invariantness_stmt.
14040         (rewrite_bittest): Likewise.
14041         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
14042         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
14043         is not.
14044
14045 2007-04-22  Revital Eres  <eres@il.ibm.com>
14046
14047         * loop-unroll.c (var_to_expand): New field to support also
14048         insns of the form x = something + x.
14049         (analyze_insn_to_expand_var): Use it.
14050         (expand_var_during_unrolling): Likewise.
14051
14052 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
14053
14054         * predict.c: Include pointer-set.h.
14055         (bb_predictions): New variable.
14056         (tree_predicted_by_p, tree_predict_edge,
14057         remove_predictions_associated_with_edge): Use bb_predictions map
14058         instead of bb->predictions.
14059         (clear_bb_predictions, assert_is_empty): New functions.
14060         (combine_predictions_for_bb): Use bb_predictions map.  Call
14061         clear_bb_predictions.
14062         (tree_estimate_probability): Create and free bb_predictions map.
14063         * Makefile.in (predict.o): Add pointer-set.h dependency.
14064         * basic-block.h (struct basic_block_def): Remove predictions
14065         field.
14066         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
14067
14068 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
14069
14070         PR target/31480
14071         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
14072         is null.
14073
14074 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14075
14076         * timevar.c (timevar_print): Change reference of --disable-checking to
14077         --enable-checking=release.  Also warn if assert checking is disabled.
14078
14079 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14080
14081         PR C/30265
14082         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
14083         decl as addressable if the compound literal was marked as
14084         addressable.
14085         Mark the decl as a gimple register if it is a complex or
14086         vector decl and does not live in memory.
14087
14088 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14089
14090         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
14091         (GENERIC_NEXT): New function macro.
14092         (PHI_CHAIN): Use phi_node's new chain variable.
14093         (tree_phi_node): Change tree_common to tree_base
14094         and add the chain field.
14095         * tree-phinodes.c (make_phi_node): Don't set
14096         TREE_TYPE on the new node.
14097         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
14098         instead of checking GIMPLE_TUPLE_P in chain_next.
14099         * tree-vect-transform.c
14100         (get_initial_def_for_induction): Look at
14101         PHI_RESULT_TREE for the type of the phi node.
14102         (update_vuses_to_preheader): Use PHI_CHAIN
14103         instead of TREE_CHAIN on the phi node.
14104         * tree-ssa-structalias.c (compute_points_to_sets):
14105         Likewise.
14106         (ipa_pta_execute): Likewise.
14107
14108 2007-04-21  Richard Guenther  <rguenther@suse.de>
14109
14110         PR middle-end/31136
14111         * fold-const.c (fold_unary): Call fold_convert_const on the
14112         original tree.
14113
14114 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
14115
14116         * gcse.c (store_killed_in_insn): Handle PARALLELs.
14117         (store_killed_in_pat): New.
14118
14119 2007-04-20  Richard Henderson  <rth@redhat.com>
14120
14121         PR target/31628
14122         * config/i386/i386.c (type_has_variadic_args_p): Look for any
14123         TREE_LIST with a void_type_node value, not void_list_node exactly.
14124
14125 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
14126
14127         * doc/standards.texi: Re-arrange into language-specific
14128         subsections. Add a C++ section, documenting which standards we
14129         support.
14130
14131 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
14132
14133         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
14134         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
14135
14136 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
14137
14138         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
14139         ecrti.o and crtbegin.o.
14140         (LIB_DEFAULT_SPEC): Include -lc.
14141         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
14142
14143 2007-04-20  Richard Henderson  <rth@redhat.com>
14144
14145         PR target/28623
14146         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
14147         argument; update all callers.
14148         (get_unaligned_offset): New.
14149         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
14150         get_unaligned_address, just pass on the address directly.
14151         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
14152         the subreg in the helper patterns.
14153         (unaligned_extendqidi_le): Use get_unaligned_offset.
14154         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
14155         (unaligned_extendhidi_be): Likewise.
14156         (unaligned_extendhidi): Tidy.
14157         * config/alpha/alpha-protos.h: Update.
14158
14159 2007-04-20  Richard Henderson  <rth@redhat.com>
14160
14161         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
14162         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
14163         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
14164         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
14165         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
14166         (CPP_SPEC): Don't include %(cpp_subtarget).
14167         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
14168         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
14169         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
14170
14171 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
14172
14173         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
14174         for __builtin_ia32_cmpordss.
14175
14176         PR tree-optimization/31632
14177         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
14178         and arg1 for optimizations of comparison against min/max values.
14179         Fold arg0 to arg1's type for optimizations of comparison against
14180         min+1 and max-1 values.
14181
14182 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
14183
14184         * reload.c (combine_reloads): When trying to use a dying register,
14185         check whether it's uninitialized and don't use if so.
14186
14187 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
14188
14189         * fold-const.c: Remove prototypes for native_encode_expr and
14190         native_interpret_expr.
14191         (native_encode_expr): Make non-static.
14192         (native_interpret_expr): Likewise.
14193         * tree.h: Add prototypes for the above.
14194
14195 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
14196
14197         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
14198         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
14199         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
14200         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
14201         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
14202         Add length attributes.
14203
14204 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
14205
14206         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
14207         not that it is 1.
14208
14209         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
14210         __STDC_WANT_DEC_FP__.
14211
14212 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
14213
14214         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
14215         for long double compatibility.
14216         * configure: Regenerate.
14217
14218 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
14219
14220         PR rtl-optimization/29841
14221         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
14222         trap instructions.
14223         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
14224         that may cause control flow transfer from being moved.
14225
14226 2007-04-18  Jan Hubicka  <jh@suse.cz>
14227
14228         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
14229         types.
14230
14231 2007-04-18  Eric Christopher  <echristo@apple.com>
14232
14233         * config/rs6000/darwin.md (load_macho_picbase): Use link register
14234         only. Update operands.
14235         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
14236         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
14237         link register to pic register.
14238
14239 2007-04-18  Dirk Mueller  <dmueller@suse.de>
14240
14241         PR diagnostic/31227
14242         * tree-vrp.c (search_for_addr_array): New.
14243         (check_array_bounds): Suppress warning about
14244         address taken of array refs if its not de-referenced.
14245
14246 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
14247
14248         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
14249         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
14250
14251         * tree-vectorizer.h (NITERS_KNOWN_P): New.
14252         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
14253         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
14254
14255         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
14256         dump print.
14257         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
14258         print message.
14259         (vect_analyze_scalar_cycles): Fix indentation.
14260         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
14261         (vect_mark_relevant): Include phis in relevance analysis.
14262
14263         * tree-vect-transform.c (vect_transform_loop): Add an assert.
14264
14265 2007-04-18  Anatoly Sokolov <aesok@post.ru>
14266
14267         * config/avr/avr.c (ptrreg_to_str): Replace error() with
14268         output_operand_lossage().
14269
14270 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
14271
14272         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
14273         the unused code for reduction without adjust-in-epilog to simplify the
14274         function.
14275
14276 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
14277
14278         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
14279         (S390_TDC_NEGATIVE_ZERO): New constant.
14280         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
14281         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
14282         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
14283         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
14284         (S390_TDC_POSITIVE_INFINITY): New constant.
14285         (S390_TDC_NEGATIVE_INFINITY): New constant.
14286         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
14287         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
14288         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
14289         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
14290         (S390_TDC_INFINITY): New constant.
14291         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
14292         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
14293         optimization for UNSPEC_CCZ_TO_INT.
14294         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
14295         ("*ccz_to_int"): New insn.
14296         ("isinf<mode>2"): New insn.
14297         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
14298         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
14299         (UNSPEC_CCZ_TO_INT): New constant.
14300
14301 2007-04-18  Richard Guenther  <rguenther@suse.de>
14302
14303         PR tree-optimization/19431
14304         PR tree-optimization/21463
14305         * tree-pass.h (pass_phiprop): Declare.
14306         * passes.c (init_optimization_passes): New phiprop pass.
14307         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
14308         (phivn_valid_p): New helper function.
14309         (phiprop_insert_phi): Likewise.
14310         (propagate_with_phi): Likewise.
14311         (tree_ssa_phiprop): New propagator propagating loads
14312         through phi nodes if profitable.
14313
14314 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
14315
14316         * tree-vect-analyze.c (process_use): New function.
14317         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
14318         Check phis in all bbs.
14319         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
14320         assert.
14321
14322 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
14323
14324         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
14325         we use REG_EQUAL.
14326
14327 2007-04-17  Anatoly Sokolov <aesok@post.ru>
14328
14329         PR target/30483
14330         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
14331         error().
14332
14333 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
14334
14335         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
14336         on "0".
14337         (sse_vmmulv4sf3): Likewise.
14338         (sse2_vmaddv2df3): Likewise.
14339         (sse2_vmmulv2df3): Likewise.
14340
14341 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
14342
14343         PR rtl-optimization/31360
14344         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
14345         (target_reg_cost): New.
14346         (init_set_costs): Initialize target_reg_cost.  Add comments
14347         regarding the rationale of the costs.
14348         (global_cost_for_size): Renamed to...
14349         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
14350         of register pressure.
14351         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
14352         estimate_reg_pressure_cost.  Add number of ivs.
14353         (determine_set_costs): Dump target_reg_cost.
14354         * loop-invariant.c (gain_for_invariant):  Use
14355         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
14356         (best_gain_for_invariant, find_invariants_to_move): Remove
14357         n_inv_uses.
14358         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
14359         (target_reg_cost): Declare.
14360         (global_cost_for_size): Declaration removed.
14361         (estimate_reg_pressure_cost): Declare.
14362
14363 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
14364
14365         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
14366         regnos into even/odd register pairs.
14367         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
14368         TDmode similar to the other floating point modes.
14369         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
14370         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
14371         define_expand's.
14372         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
14373         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
14374         (movdd_hardfloat64): Use TARGET_MFPGPR.
14375
14376 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
14377
14378         * reload1.c (delete_output_reload): Don't count output in n_inherited.
14379
14380         Revert
14381         2005-01-05  Richard Henderson  <rth@redhat.com>
14382         PR rtl-opt/10692
14383         * reload1.c (do_input_reload): Restrict the optimization deleteing
14384         a previous output reload to RELOAD_FOR_INPUT.
14385
14386 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
14387
14388         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
14389         induc_vec_info_type.
14390         (vectorizable_induction): New function declaration.
14391         * tree-vect-transform.c (get_initial_def_for_induction): No need to
14392         check if already vectorized.  Find first place in BB where new stmts
14393         can be inserted.  Takes only one argument.
14394         (vectorizable_induction): New function.
14395         (vect_transform_stmt): Add case for induc_vec_info_type to call
14396         vectorizable_induction.
14397         (vect_transform_loop): Consider phis for vectorization.
14398         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
14399         condition.
14400         (analyze_operations): Call vectorizable_induction when analyzing phis.
14401         Fix comment.
14402         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
14403         (vect_mark_relevant): Include phis in relevance analysis.
14404         (vect_mark_stmts_to_be_vectorize): Likewise.
14405         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
14406
14407 2007-04-16  Lawrence Crowl  <crowl@google.com>
14408
14409         * doc/invoke.texi (Debugging Options): Add documentation for the
14410         -femit-struct-debug options -femit-struct-debug-baseonly,
14411         -femit-struct-debug-reduced, and
14412         -femit-struct-debug-detailed[=...].
14413
14414         * c-opts.c (c_common_handle_option): Add
14415         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
14416         and OPT_femit_struct_debug_detailed_.
14417         * c.opt: Add specifications for
14418         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
14419         and -femit-struct-debug-detailed[=...].
14420         * opts.c (set_struct_debug_option): Parse the
14421         -femit-struct-debug-... options.
14422         * opts.c (matches_main_base, main_input_basename,
14423         main_input_baselength, base_of_path, matches_main_base): Add
14424         variables and functions to compare header base name to compilation
14425         unit base name.
14426         * opts.c (should_emit_struct_debug): Add to determine to emit a
14427         structure based on the option.
14428         (dump_struct_debug) Also disabled function to debug this
14429         function.
14430         * opts.c (handle_options): Save the base name of the
14431         compilation unit.
14432
14433         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
14434         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
14435         This hook indicates if a type is generic.  Set it by default
14436         to "never generic".
14437         * langhooks.h (struct lang_hooks_for_types): Add a new hook
14438         to determine if a struct type is generic or not.
14439         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
14440         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
14441         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
14442         with live C++ hook.
14443
14444         * flags.h (enum debug_info_usage): Add an enumeration to describe
14445         a program's use of a structure type.
14446         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
14447         to indicate the program's usage of the type.  Filter structs based
14448         on the -femit-struct-debug-... specification.
14449         (gen_type_die): Split into two routines, gen_type_die and
14450         gen_type_die_with_usage.  gen_type_die is now a wrapper
14451         that assumes direct usage.
14452         (gen_type_die_with_usage): Replace calls to gen_type_die
14453         with gen_type_die_with_usage adding the program usage of
14454         the referenced type.
14455         (dwarf2out_imported_module_or_decl): Suppress struct debug
14456         information using should_emit_struct_debug when appropriate.
14457
14458 2007-04-16  Ian Lance Taylor  <iant@google.com>
14459
14460         PR tree-optimization/31522
14461         * tree-vrp.c (vr_phi_edge_counts): New static variable.
14462         (vrp_initialize): Allocate vr_phi_edge_counts.
14463         (vrp_visit_phi_node): Don't push to infinity if we saw a new
14464         executable edge.  Drop test for all constants.
14465         (vrp_finalize): Free vrp_phi_edge_counts.
14466
14467         * doc/cpp.texi (Common Predefined Macros): Clarify description of
14468         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
14469
14470         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
14471         predecessors at head rather than tail.
14472
14473 2007-04-16  Matthias Klose  <doko@debian.org>
14474
14475         * config/alpha/linux.h (CPP_SPEC): Define.
14476         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
14477
14478 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
14479
14480         * function.h: Remove sequence_stack extern declaration.
14481
14482 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
14483
14484         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
14485         TARGET_FIDOA.
14486         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
14487         defined.
14488
14489 2007-04-16  Anatoly Sokolov <aesok@post.ru>
14490
14491         * config/avr/avr.c (avr_arch_types): Rearranging  array.
14492         (enum avr_arch): Add.
14493         (avr_mcu_types): Use avr_arch enumeration constants instead of
14494         numbers.
14495         * config/avr/avr.h (LINK_SPEC): Simplify.
14496
14497 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
14498
14499         * config/m68k/m68k.c (m68k_libcall_value,
14500         m68k_function_value): Use macros for register names more.
14501
14502         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
14503         instead.
14504         (M68K_REGNAME): Use A6_REG.
14505         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
14506
14507 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
14508
14509         PR middle-end/28071
14510         * sched-int.h (struct deps): Split field 'pending_lists_length' into
14511         'pending_read_list_length' and 'pending_write_list_length'.  Update
14512         comment.
14513         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
14514         to handle two length counters instead of one.  Update all uses.
14515         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
14516         two length counters instead of one.
14517         * sched-rgn.c (propagate_deps): Update to handle two length counters
14518         instead of one.
14519
14520 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
14521
14522         PR target/31582
14523         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
14524         copy of source, pass it to ix86_expand_vector_set and return
14525         it as target.
14526
14527 2007-04-16  David Ung  <davidu@mips.com>
14528             Joseph Myers  <joseph@codesourcery.com>
14529
14530         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
14531         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
14532         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
14533         Add 74K processor information.
14534         * config/mips/mips.md: Include 74k.md.
14535         (cpu): Add 74kc,74kf,74kx.
14536         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
14537         * config/mips/74k.md: New.
14538         * doc/invoke.texi (MIPS Options): Document 74K support.
14539
14540 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
14541
14542         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
14543         vectorizable_* functions.
14544         * tree-vect-transform.c (vectorizable_call): Add check for
14545         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
14546         (vectorizable_store): likewise.
14547         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
14548         Add comments.
14549         (vectorizable_operation, vectorizable_type_demotion): Likewise.
14550         (vectorizable_type_promotion, vectorizable_load): Likewise.
14551         (vectorizable_live_operation, vectorizable_condition): Likewise.
14552         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
14553         STMT_VINFO_LIVE_P.
14554         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
14555
14556 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
14557
14558         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
14559         register numbers more.
14560         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
14561         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
14562         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
14563         FUNCTION_VALUE_REGNO_P): Likewise.
14564         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
14565         STATIC_CHAIN_REGNUM): Likewise.
14566         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
14567         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
14568         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
14569         * config/m68k/m68k.md (FP_REG): New.
14570
14571 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
14572
14573         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
14574         alignment on fido.
14575
14576 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
14577
14578         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
14579         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
14580         comment typos.
14581
14582 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
14583
14584         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
14585         cold loops.
14586
14587 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14588
14589         PR c/31520
14590         * c-decl.c (finish_decl): Grab the type of the decl after the call
14591         to store_init_value.
14592
14593 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
14594
14595         * common.opt (fforward-propagate): Fix "Optimization" annotation.
14596
14597 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
14598
14599         PR c++/25874
14600         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free
14601         dominators, post dominators and cleanup cfg before returning.
14602
14603 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
14604
14605         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
14606         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
14607
14608 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
14609
14610         * config.gcc: Recognize fido.
14611         * config/m68k/m68k-devices.def (fidoa): New.
14612         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
14613         __mfido__.
14614         (FL_FIDOA, TARGET_FIDOA): New.
14615         * config/m68k/m68k.opt (mfidoa): New.
14616
14617 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14618
14619         PR middle-end/31322
14620         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
14621         when a personality function is used.
14622
14623 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
14624
14625         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
14626
14627 2007-04-13  Mike Stump  <mrs@apple.com>
14628
14629         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
14630         we can...
14631         * config/darwin.opt (fapple-kext): Make C++ only.
14632         * config/darwin.c (darwin_override_options): Remove code to ensure
14633         -fapple-kext is given for C++ only.
14634
14635 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
14636
14637         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
14638         * config/mips/mips.c (override_options): Call
14639         SUBTARGET_OVERRIDE_OPTIONS, if defined.
14640
14641 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
14642
14643         * config/i386/i386.opt (msvr3-shlib): Removed.
14644
14645         * doc/invoke.texi: Remove -msvr3-shlib.
14646
14647 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
14648
14649         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
14650         with "popcnt" instruction.
14651
14652 2007-04-13  Richard Guenther  <rguenther@suse.de>
14653
14654         PR tree-optimization/21258
14655         * tree-vrp.c (compare_case_labels): New helper.
14656         (find_switch_asserts): New function.
14657         (find_assert_locations): Call it for SWITCH_EXPRs.
14658
14659 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
14660
14661         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
14662         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
14663         check is now implied in X87_FLOAT_MODE_P.
14664         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
14665         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
14666         (fix_trunc<mode>_i386_fisttp): Ditto.
14667         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
14668         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
14669         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
14670         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
14671         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
14672         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
14673         (unnamed_splitters): Ditto.
14674         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
14675         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
14676         FIRST_SSE_REG for local functions when SSE math is enabled or
14677         for functions with sseregparm attribute.
14678         (standard_80387_constant_p): Return -1 if mode is not
14679         X87_FLOAT_MODE_P.
14680         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
14681         (ix86_expand_compare): Ditto.
14682         (ix86_expand_carry_flag_compare): Ditto.
14683         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
14684         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
14685         DECIMAL_FLOAT_MODE_P.
14686         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
14687         of SCALAR_FLOAT_MODE_P.
14688         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
14689         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
14690         checks before FLOAT_MODE_P.
14691         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
14692         before FLOAT_MODE_P.
14693         [DIV]: Ditto.
14694         [NEG]: Ditto.
14695         [ABS]: Ditto.
14696         [SQRT]: Ditto.
14697         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
14698
14699 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
14700             Charles Wilson  <libtool@cwilson.fastmail.fm>
14701
14702         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
14703         (libgcc.mvars): Don't depend on them.
14704         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
14705         * exec-tool.in: New.
14706
14707 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
14708
14709         * doc/invoke.text (--help): Document --help=common.
14710
14711 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
14712
14713         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
14714
14715 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14716
14717         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
14718         * genemit.c (main): Emit #include "integrate.h".
14719         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
14720         (LOADGP_RTP): New mips_loadgp_style.
14721         * config/mips/mips.h: Include config/vxworks-dummy.h.
14722         (TARGET_RTP_PIC): New macro.
14723         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
14724         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
14725         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
14726         for TARGET_RTP_PIC.
14727         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
14728         -mvxworks-pic when using -mrtp and a PIC option.
14729         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
14730         for RTP PIC.
14731         (mips_symbolic_constant_p, mips_symbolic_address_p)
14732         (mips_symbol_insns): Handle SYMBOL_HALF.
14733         (override_options): Warn about -G and -mrtp being used together.
14734         Initialize mips_lo_relocs[SYMBOL_HALF].
14735         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
14736         (mips_emit_loadgp): Handle LOADGP_RTP.
14737         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
14738         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
14739         (tablejump): Handle function-relative case table entries if
14740         TARGET_RTP_PIC.
14741         * config/mips/predicates.md (symbol_ref_operand): New predicate.
14742
14743 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14744
14745         * config/mips/mips.md (load_call<mode>): Allow any general register.
14746         destination.
14747         (sibcall_value_internal, sibcall_value_multiple_internal)
14748         (call_value_internal, call_value_split, call_value_multiple_internal)
14749         (call_value_multiple_split): Remove constraints from operand 0.
14750
14751 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14752
14753         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
14754         rather than loadgp_noshared.
14755         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
14756         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
14757         gen_loadgp.
14758         * config/mips/mips.md (loadgp): Rename to...
14759         (loadgp_newabi): ...this.
14760         (loadgp_noshared): Rename to...
14761         (loadgp_absolute): ...this.
14762
14763 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14764
14765         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
14766         false for locally-binding symbols.
14767         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
14768
14769 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14770
14771         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
14772         (SYMBOL_GOT_PAGE_OFST): ...this.
14773         (SYMBOL_GOT_GLOBAL): Rename to...
14774         (SYMBOL_GOT_DISP): ...this.
14775         (SYMBOL_GOTOFF_GLOBAL): Rename to...
14776         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
14777         * config/mips/mips.c (mips_global_symbol_p): New function.
14778         (mips_symbol_binds_local_p): Likewise.
14779         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
14780         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use
14781         mips_global_symbol_p and mips_symbol_binds_local_p.
14782         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
14783         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
14784         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
14785         SYMBOL_GOTOFF_DISP.
14786         (mips_ok_for_lazy_binding_p): New function.
14787         (mips_load_call_address, mips_expand_call): Use it.
14788         (mips_dangerous_for_la25_p): Likewise.
14789         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
14790         (*got_disp<mode>): Use got_disp_operand instead of
14791         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
14792         SYMBOL_GOTOFF_GLOBAL.
14793         (*got_page<mode>): Use got_page_ofst_operand instead of
14794         local_got_operand.
14795         * config/mips/predicates.md (const_call_insn_operand): Use
14796         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
14797         (global_got_operand): Rename to...
14798         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
14799         SYMBOL_GOT_GLOBAL.
14800         (local_got_operand): Rename to...
14801         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
14802         of SYMBOL_GOT_LOCAL.
14803
14804 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14805
14806         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
14807         TARGET_CALL_CLOBBERED_GP.
14808         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
14809         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
14810         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
14811         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
14812         of TARGET_ABICALLS && !TARGET_NEWABI.
14813         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
14814         * config/mips/mips.c (mips_load_call_address): Check
14815         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
14816         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
14817         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
14818         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
14819         TARGET_ABICALLS && TARGET_NEWABI.
14820         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
14821         TARGET_ABICALLS.
14822         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
14823         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
14824         TARGET_ABICALLS && TARGET_NEWABI.
14825         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
14826         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
14827         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
14828         whether indirect calls must use $25.
14829         (mips_extra_live_on_entry): Check TARGET_GOT instead of
14830         TARGET_ABICALLS.
14831         * config/mips/mips.md (jal_macro): Check flag_pic and
14832         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
14833         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
14834         instead of TARGET_ABICALLS.
14835         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
14836         TARGET_ABICALLS && TARGET_OLDABI.
14837         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
14838         (sibcall): In the comment above the define_insn, mention
14839         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
14840         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
14841         instead of TARGET_ABICALLS.
14842
14843 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
14844
14845         * doc/md.texi (Blackfin family constraints): Document PA and PB.
14846         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
14847         (MACFLAGS_MATCH_P): New macro.
14848         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
14849         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
14850         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
14851         the other MACFLAG constants.
14852         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
14853         (flag_machi): Tighten constraints.  Renumber some of the operands.
14854         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
14855         output template.
14856         (flag_machi_parts_acconly): New pattern.
14857         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
14858         used.
14859         (flag_macinit1hi): Tighten constraints.
14860         (flag_mul_macv2hi_parts_acconly): New pattern.
14861
14862         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
14863         Use a more efficient implementation.
14864         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
14865         inline sequences when not optimizing for size.
14866
14867         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
14868         movhi_high2low): Delete, merge functionality into...
14869         (packv2hi): ... this pattern.
14870
14871         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
14872         * config/bfin/bfin.opt (msim): New option.
14873         (mcpu=): New option.
14874         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
14875         (bfin_cpu_t): Typedef of enum bfin_cpu.
14876         (bfin_cpu_type): New declaration.
14877         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
14878         -msim and -mcpu= options.
14879         (LIB_SPEC): Likewise.
14880         * config/bfin/bfin.c (bfin_cpu_type): Define.
14881         (bfin_handle_option): Handle -mcpu= option.
14882         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
14883         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
14884         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
14885
14886 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14887
14888         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
14889         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
14890         (powerpc-wrs-vxworksae): Use ${tm_file}.
14891         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
14892         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
14893         * config/i386/vx-common.h: New file.
14894
14895 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14896
14897         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
14898         of crt0.o%s.
14899
14900 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
14901
14902         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
14903         ldxtr.
14904
14905 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
14906
14907         PR c++/31078
14908         PR c++/31103
14909         * c-common.c (c_build_qualified_type): Set canonical type
14910         appropriately.
14911
14912 2007-04-12  Richard Guenther  <rguenther@suse.de>
14913
14914         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
14915         lower bound and element size if lower bound is not zero
14916         or either of the ARRAY_REF operands is set.
14917
14918 2007-04-12  Richard Guenther  <rguenther@suse.de>
14919
14920         PR tree-optimization/24689
14921         PR tree-optimization/31307
14922         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
14923         indices by value.
14924         * gimplify.c (canonicalize_addr_expr): To be consistent with
14925         gimplify_compound_lval only set operands two and three of
14926         ARRAY_REFs if they are not gimple_min_invariant.  This makes
14927         it never at this place.
14928         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
14929
14930 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14931
14932         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
14933         null before emitting a .nsubspa directive.
14934
14935 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
14936
14937         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
14938         need_to_partition_p if there are no memory statements in the
14939         function.
14940
14941 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
14942
14943         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
14944         (gcd_of_steps_may_divide_p): New function.
14945         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
14946
14947 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
14948
14949         * reload.c (find_reloads_toplev, find_reloads_address,
14950         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
14951         not a pointer equality test, to decide if we need to call
14952         push_reg_equiv_alt_mem.
14953
14954 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
14955
14956         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
14957         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps):
14958         New.
14959         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
14960
14961 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
14962
14963         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
14964         vector to be positive.
14965
14966 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
14967
14968         PR 30735
14969         PR 31090
14970         * doc/invoke.texi: Document --params max-aliased-vops and
14971         avg-aliased-vops.
14972         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
14973         debug_memory_partitions): Move to tree-flow.h
14974         * params.h (AVG_ALIASED_VOPS): Define.
14975         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
14976         users.
14977         (mp_info_t): Likewise.
14978         (get_mem_sym_stats_for): New.
14979         (set_memory_partition): Move from tree-flow-inline.h.
14980         (mark_non_addressable): Only clear the set of symbols for the
14981         partition if it exists.
14982         (dump_memory_partitions): Move from tree-ssa-operands.c
14983         (debug_memory_partitions): Likewise.
14984         (need_to_partition_p): New.
14985         (dump_mem_ref_stats): New.
14986         (debug_mem_ref_stats): New.
14987         (dump_mem_sym_stats): New.
14988         (debug_mem_sym_stats): New.
14989         (update_mem_sym_stats_from_stmt): New.
14990         (compare_mp_info_entries): New.
14991         (mp_info_cmp): Call it.
14992         (sort_mp_info): Change argument to a list of mem_sym_stats_t
14993         objects.
14994         (get_mpt_for): Move from tree-ssa-operands.c.
14995         (find_partition_for): New.
14996         (create_partition_for): Remove.
14997         (estimate_vop_reduction): New.
14998         (update_reference_counts): New.
14999         (build_mp_info): New.
15000         (compute_memory_partitions): Refactor.
15001         Document new heuristic.
15002         Call build_mp_info, update_reference_counts,
15003         find_partition_for and estimate_vop_reduction.
15004         (compute_may_aliases): Populate virtual operands before
15005         calling debugging dumps.
15006         (delete_mem_sym_stats): New.
15007         (delete_mem_ref_stats): New.
15008         (init_mem_ref_stats): New.
15009         (init_alias_info): Call it.
15010         (maybe_create_global_var): Remove alias_info argument.
15011         Get number of call sites and number of pure/const call sites
15012         from gimple_mem_ref_stats().
15013         (dump_alias_info): Call dump_memory_partitions first.
15014         (dump_points_to_info_for): Show how many times a pointer has
15015         been dereferenced.
15016         * opts.c (decode_options): For -O2 set --param
15017         max-aliased-vops to 500.
15018         For -O3 set --param max-aliased-vops to 1000 and --param
15019         avg-aliased-vops to 3.
15020         * fortran/options.c (gfc_init_options): Remove assignment to
15021         MAX_ALIASED_VOPS.
15022         * tree-flow-inline.h (gimple_mem_ref_stats): New.
15023         * tree-dfa.c (dump_variable): Dump memory reference
15024         statistics.
15025         Dump NO_ALIAS* settings.
15026         (referenced_var_lookup): Tidy.
15027         (mem_sym_stats): New.
15028         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
15029         and ORIG are different SSA names for a memory partition.
15030         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
15031         * tree-flow.h (struct mem_sym_stats_d): Define.
15032         (mem_sym_stats_t): Define.
15033         (struct mem_ref_stats_d): Define.
15034         (struct gimple_df): Add field mem_ref_stats.
15035         (enum noalias_state): Define.
15036         (struct var_ann_d): Add bitfield noalias_state.
15037         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
15038         debug_mem_ref_stats, debug_memory_partitions,
15039         debug_mem_sym_stats): Declare.
15040         * tree-ssa-structalias.c (update_alias_info): Update call
15041         sites, pure/const call sites and asm sites in structure
15042         returned by gimple_mem_ref_stats.
15043         Remove local variable IS_POTENTIAL_DEREF.
15044         Increase NUM_DEREFS if the memory expression is a potential
15045         dereference.
15046         Call update_mem_sym_stats_from_stmt.
15047         If the memory references memory, call
15048         update_mem_sym_stats_from_stmt for all the direct memory
15049         symbol references found.
15050         (intra_create_variable_infos): Set noalias_state field for
15051         pointer arguments according to the value of
15052         flag_argument_noalias.
15053         * tree-ssa-structalias.h (struct alias_info): Remove fields
15054         num_calls_found and num_pure_const_calls_found.
15055         (update_mem_sym_stats_from_stmt): Declare.
15056         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
15057         Set default value to 100.
15058         (PARAM_AVG_ALIASED_VOPS): Define.
15059
15060 2007-04-11  Richard Guenther  <rguenther@suse.de>
15061
15062         PR middle-end/31530
15063         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
15064         a * -b + c as c - a * b if we honor sign dependent rounding.
15065
15066 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
15067
15068         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
15069         bfin_expand_strmov.
15070         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
15071         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
15072         variables.
15073         (initialize_trampoline): Don't use old-style function definition.
15074         (bfin_secondary_reload): Mark IN_P argument as unused.
15075
15076 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
15077
15078         PR tree-optimization/31343
15079         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
15080         (build_polynomial_chrec): Return a scalar when the evolution is zero.
15081         * testsuite/gcc.dg/vect/pr31343.c: New.
15082
15083 2007-04-10  Eric Christopher  <echristo@apple.com>
15084
15085         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
15086         * config/i386/i386.md (*cmpfp0): Use.
15087         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
15088         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
15089         (fix_trunc<mode>_i386_fisttp): Ditto.
15090         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
15091         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
15092         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
15093         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
15094         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
15095         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
15096         (unnamed_splitters): Ditto.
15097         * config/i386/i386.c (output_fix_trunc): Assert that
15098         we're not being passed a TFmode operand.
15099
15100 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
15101
15102         PR tree-optimization/31526
15103         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
15104         n_basic_blocks to find newly added blocks.
15105
15106 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
15107
15108         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
15109         alternative.
15110         (fix_trunc<mode>si_sse): Ditto.
15111         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
15112         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
15113         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
15114         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
15115         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
15116         expander using SSEMODEF mode macro.
15117         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
15118         expander using SSEMODEF mode macro.
15119         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
15120         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
15121         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
15122         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
15123         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
15124         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
15125         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
15126         Macroize insn using X87MODEF mode macro.
15127
15128 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
15129
15130         * config/i386/sse.md (sse2_pinsrw): Removed.
15131         (sse2_pextrw): Renamed to ...
15132         (*sse2_pextrw): This.
15133
15134 2007-04-09  Jan Hubicka  <jh@suse.cz>
15135
15136         PR target/27869
15137         * config/i386/sse.md
15138         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
15139         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
15140         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
15141         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
15142
15143 2007-04-09  Jan Hubicka  <jh@suse.cz>
15144
15145         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
15146         multiple fields of union.
15147
15148 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
15149
15150         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
15151         (create_preheaders): Check that loops are available.
15152         (fix_loop_structure): Clean up, improve comments.
15153         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
15154         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
15155         state flags.
15156         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
15157         * predict.c (tree_estimate_probability): Do not call
15158         calculate_dominance_info.  Call create_preheaders.
15159         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
15160         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
15161         flags.
15162         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
15163         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
15164         * tree-cfg.c (tree_split_edge): Make an assert more precise.
15165         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
15166         arguments.
15167
15168 2007-04-08  Jan Hubicka  <jh@suse.cz>
15169
15170         * tree.h (maybe_fold_offset_to_component_ref): Declare.
15171         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
15172         * fold-const.c (fold_unary): Use it.
15173
15174 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15175
15176         * varasm.c (assemble_variable): Remove call to
15177         lang_hooks.decls.prepare_assemble_variable.
15178         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
15179         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
15180         * langhooks.h (lang_hooks_for_decls): Remove
15181         prepare_assemble_variable.
15182
15183 2007-04-08  Mike Stump  <mrs@apple.com>
15184
15185         * config/i386/i386.c: Use inc/dec on Core2.
15186
15187 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
15188
15189         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
15190         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
15191         lhd_tree_inlining_end_inlining): Remove.
15192         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
15193         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
15194         end_inlining hooks.
15195         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
15196         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
15197         lhd_tree_inlining_end_inlining): Remove prototypes.
15198         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
15199         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
15200         LANG_HOOKS_TREE_INLINING_START_INLINING,
15201         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
15202
15203         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
15204         not set it.
15205
15206 2007-04-08  Anatoly Sokolov <aesok@post.ru>
15207
15208         PR target/29932
15209         * config/avr/predicates.md (io_address_operand): Delete predicate.
15210         (low_io_address_operand): Don't use 'mode' argument.
15211         (higth_io_address_operand): Rename ...
15212         (high_io_address_operand): ... to this. Don't use 'mode' argument.
15213         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
15214         for above change.
15215
15216 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
15217
15218         Revert change removing staticp.
15219
15220 2007-04-07  Anatoly Sokolov <aesok@post.ru>
15221
15222         PR target/30289
15223         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
15224         earlyclobber.
15225
15226 2007-04-07  Bruce Korb  <bkorb@gnu.org>
15227
15228         * c.opt: Add -Wformat-contains-nul.
15229         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
15230           -Wformat setting.
15231         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
15232         the NUL byte warning.
15233
15234 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
15235
15236         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
15237
15238 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
15239
15240         * tree.c (staticp): No longer use staticp langhook.
15241         * langhooks.c (lhd_staticp): Removed.
15242         * langhooks.h (struct lang_hooks): Remove staticp.
15243         * c-common.c (c_staticp): Remove.
15244         * c-common.h (c_staticp): Ditto.
15245         * langhooks-defs.h (lhd_staticp): Ditto.
15246         (LHD_HOOKS_STATICP): Ditto
15247         * tree.h (gcc_assert_lowered): New macro.
15248
15249 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
15250
15251         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
15252         argument "reliable".
15253         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
15254         Add argument "reliable".  Propagate it through calls.
15255         (infer_loop_bounds_from_undefined):  Derive number of iterations
15256         estimates from references in blocks that do not dominate loop latch.
15257         (gcov_type_to_double_int): New function.
15258         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
15259         and expected_loop_iterations_unbounded.
15260         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
15261         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
15262         * tree-data-ref.c (estimated_loop_iterations): Export.
15263         (get_references_in_stmt): Fix -- do not return addresses of local
15264         objects.
15265         * cfgloop.h (expected_loop_iterations_unbounded,
15266         estimated_loop_iterations): Declare.
15267
15268 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
15269
15270         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
15271
15272 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
15273
15274         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
15275         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
15276         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
15277         Use output_387_reg_move().
15278         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
15279         expander using X87MODEF12 mode macro.
15280         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
15281         choosing register preferences.  Use output_387_reg_move().
15282         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
15283         instead of "x".  Use output_387_reg_move().
15284         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
15285         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
15286         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
15287         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
15288         Use output_387_reg_move().
15289         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
15290         mode macro.
15291         (*truncxf?f_i387 splitter): Ditto.
15292
15293 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
15294
15295         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
15296         LANG_HOOKS_SAFE_FROM_P.
15297         * expr.c (safe_from_p): Remove langhook call.
15298         * langhooks.h (lang_hooks): Remove safe_from_p.
15299         (lhd_safe_from_p): Remove prototype.
15300         * langhooks.c (lhd_safe_from_p): Remove.
15301
15302 2007-04-06  Jan Hubicka  <jh@suse.cz>
15303
15304         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
15305         functions.
15306
15307 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
15308
15309         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
15310         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
15311         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
15312         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
15313         alternative.
15314         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
15315         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
15316
15317 2007-04-05  Richard Henderson  <rth@redhat.com>
15318
15319         * config/alpha/alpha.c (print_operand) [+]: Remove.
15320         (alpha_end_function): Print nop if call at end of function.
15321         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
15322         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
15323         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
15324         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
15325         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
15326         the call pattern. Update peepholes to match.
15327
15328 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
15329
15330         * doc/extend.texi (Other Builtins): Add decimal float variants
15331         of signbit.
15332         * builtins.def: Ditto.
15333         * builtins.c (expand_builtin): Ditto.
15334
15335 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
15336             H.J. Lu  <hongjiu.lu@intel.com>
15337
15338         PR target/31478
15339         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
15340         of V8HImode when calling ix86_binary_operator_ok.
15341         (sse2_pmaddwd): Call ix86_binary_operator_ok.
15342         (sdot_prodv8hi): Operands 1 and 2 must be register.
15343
15344 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
15345
15346         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
15347         initialize align to silence bogus warning.
15348
15349 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
15350
15351         PR middle-end/22156
15352         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
15353         all_no_warning.
15354         (struct sra_walk_fns): Remove use_all parameter from use.
15355         (sra_hash_tree): Handle BIT_FIELD_REFs.
15356         (sra_elt_hash): Don't hash bitfld blocks.
15357         (sra_elt_eq): Skip them in parent compares as well.  Handle
15358         BIT_FIELD_REFs.
15359         (sra_walk_expr): Don't maintain or pass down use_all_p.
15360         (scan_use): Remove use_all parameter.
15361         (scalarize_use): Likewise.  Re-expand assignment to
15362         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
15363         output, and re-scalarize after output.  Don't mark anything
15364         for no warning.
15365         (scalarize_ldst): Adjust.
15366         (scalarize_walk_gimple_modify_statement): Likewise.
15367         (build_element_name_1): Handle BIT_FIELD_REFs.
15368         (instantiate_element): Don't warn for any element whose parent
15369         is used as a whole.
15370         (instantiate_missing_elements_1): Return the sra_elt.
15371         (canon_type_for_field): New.
15372         (try_instantiate_multiple_fields): New.
15373         (instantiate_missing_elemnts): Use them.
15374         (mark_no_warning): Removed.
15375         (generate_one_element_ref): Handle BIT_FIELD_REFs.
15376         (REPLDUP, sra_build_elt_assignment): New.
15377         (generate_copy_inout): Use them.
15378         (generate_element_copy): Likewise.  Handle bitfld differences.
15379         (generate_element_zero): Don't recurse for blocks.  Use
15380         sra_build_elt_assignment.
15381         (generate_one_element_int): Take elt instead of var.  Use
15382         sra_build_elt_assignment.
15383         (generate_element_init_1): Adjust.
15384         (scalarize_use, scalarize_copy): Use REPLDUP.
15385         (scalarize_ldst): Move assert before dereference.
15386         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
15387
15388 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
15389
15390         * regmove.c: Fix unused variable warnings due to previous commit.
15391
15392 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
15393
15394         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
15395         (regmove_bb_head): Remove.
15396         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
15397         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
15398         problems with fixup_match_1.
15399         Don't initialize/free regmove_bb_head.
15400
15401         (reg_is_remote_constant_p): If an insn is in the same basic block
15402         but not before INSN, consider it remote, too.
15403
15404 2007-04-05  Anatoly Sokolov <aesok@post.ru>
15405
15406         PR target/25448
15407         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
15408         DECL_ASSEMBLER_NAME, not the DECL_NAME.
15409
15410 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
15411
15412         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
15413         (CONDITIONAL_REGISTER_USAGE): Likewise.
15414
15415 2007-04-04  Richard Henderson  <rth@redhat.com>
15416
15417         * config/alpha/lib1funcs.asm: Remove unused file.
15418
15419 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
15420
15421         PR other/31356
15422         * opts.c (print_specific_help): Fix --help=<language>
15423         header line.
15424         (common_handle_option): Support --help=common.
15425
15426 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
15427
15428         PR other/31353
15429         * gcc.c (main): Do not run the linker if
15430         print_subprocess_help indicates that it shouldn't be
15431         run.
15432
15433 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
15434
15435         PR doc/31355
15436         * doc/invoke.texi (--help=): Document <languages> value, fix
15437         formatting in tables of values.
15438
15439 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
15440
15441         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
15442         dllimport attribute of virtual methods.
15443
15444 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
15445
15446         * config/score/crti.asm: Change _bss_start to __bss_start.
15447         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
15448         (OUTGOING_REG_PARM_STACK_SPACE) update.
15449         * config/score/score.opt: add options to make backend support
15450         score5, score5u, score7 and score7d.
15451         * config/score/score.md: Likewise.
15452         * config/score/misc.md: Likewise.
15453         * config/score/mac.md: Likewise.
15454         * doc/invoke.texi: Likewise.
15455         * doc/md.texi: update constraints define.
15456
15457 2007-04-03  Richard Henderson  <rth@redhat.com>
15458
15459         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
15460         an appropriate type, use the mode instead.
15461
15462 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
15463
15464         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
15465         Set the default --with-arch setting to mips2.
15466         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
15467         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
15468         (MULTILIB_OSDIRNAMES): Delete.
15469         (MULTILIB_DIRNAMES): Define.
15470         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
15471         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
15472         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
15473         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
15474         VXWORKS_OS_CPP_BUILTINS.
15475         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
15476         (MIPS_DEBUGGING_INFO): Undefine.
15477         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
15478
15479 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
15480
15481         PR middle-end/30704
15482         * fold-const.c (native_encode_real): Encode real.c provided longs
15483         as a series of 32-bit native integers.
15484         (native_interpret_real): Interpret buffer as a series of 32-bit
15485         native integers.
15486
15487 2007-04-03  Richard Guenther  <rguenther@suse.de>
15488
15489         * genpreds.c (write_insn_constraint_len): Write function
15490         optimized for CONSTRAINT_LEN implementation.
15491         (write_tm_preds_h): Output insn_constraint_len inline and
15492         use it for CONSTRAINT_LEN.
15493         (write_insn_preds_c): Don't output insn_constraint_len.
15494         * doc/md.texi (define_register_constraint): Document multi-letter
15495         constraints shall have the same length if they start with the same
15496         letter.
15497
15498 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
15499
15500         PR target/31175
15501         * config/i386/i386.md (isinf<mode>2): Expand only when
15502         TARGET_C99_FUNCTIONS is set.
15503
15504 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
15505
15506         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
15507         (x86_64-*-linux*): Ditto.
15508         * config/i386/i386.opt (mpc): New option.
15509         * config/i386/i386.c (overrride_options): Handle
15510         ix87_precision_string.
15511         * config/i386/crtprec.c: New file.
15512         * config/i386/t-crtpc: Ditto.
15513         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
15514         and -mpc80 options.
15515         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
15516         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
15517         crtprec32.o, crtprec64.o and crtprec80.o.
15518
15519         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
15520         and -mpc80 options.
15521         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
15522
15523 2007-04-02  Eric Christopher  <echristo@apple.com>
15524
15525         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
15526         limitations on darwin.
15527
15528 2007-04-02  Anatoly Sokolov <aesok@post.ru>
15529
15530         PR target/31137
15531         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
15532
15533 2007-04-02  Dave Korn  <dave.korn@artimi.com>
15534
15535         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
15536
15537 2007-04-02  Dave Korn  <dave.korn@artimi.com>
15538
15539         * libgcc2.h (exception_descriptor): Don't forward-declare.
15540         (__get_eh_table_language, __get_eh_table_version): Delete
15541         prototypes of long-dead functions.
15542
15543 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
15544
15545         * ebitmap.h: New file
15546         * ebitmap.c: New file
15547         * Makefile.in (ebitmap.o): New target.
15548
15549 2007-04-01  Jan Hubicka  <jh@suse.cz>
15550
15551         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
15552         before very first instruction.
15553
15554 2007-04-01  Jan Hubicka  <jh@suse.cz>
15555
15556         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
15557         waring on 64bit hosts.
15558         * bitmap.h: Fix typo in bitmap_head_def.
15559
15560 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
15561
15562         PR rtl-optimization/31391
15563         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
15564         into a DELETED_LABEL note, and the label is in an empty basic
15565         block, update BB_END as well as BB_HEAD.
15566
15567 2007-04-01  Richard Henderson  <rth@redhat.com>
15568
15569         PR tree-optimization/31169
15570         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
15571         to varying if the range is outside [0,  prec-1].
15572
15573 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
15574
15575         PR target/31388
15576         * config/mips/mips.md (load_const_gp): New insn.
15577         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
15578         the MIPS16 GP pseudo register if no_new_pseudos.
15579         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
15580
15581 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15582
15583         PR target/31364
15584         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
15585         secureplt.
15586         (call_value): Likewise.
15587
15588 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
15589             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15590
15591         PR 14737
15592         * doc/invoke.texi: (optimization options): Reword description
15593         of -ffast-math. Document its primary purpose.
15594
15595 2007-03-31  Richard Guenther  <rguenther@suse.de>
15596
15597         * omp-low.c (splay-tree.h): Include.
15598         (lookup_decl): Replace splay-tree usage by pointer-map.
15599         (maybe_lookup_decl): Likewise.
15600         (new_omp_context): Likewise.
15601         (delete_omp_context): Likewise.
15602         * gimplify.c (splay-tree.h): Include.
15603         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
15604         pointer-map.
15605         (remap_ssa_name): Likewise.
15606         (remap_decl): Likewise.
15607         (remap_type_1): Likewise.
15608         (remap_type): Likewise.
15609         (copy_body_r): Likewise.
15610         (expand_call_inline): Likewise.
15611         (clone_body): Likewise.
15612         (copy_tree_r): Likewise.
15613         (remap_save_expr): Likewise.
15614         (unsave_r): Likewise.
15615         (unsave_expr_now): Likewise.
15616         (tree_function_versioning): Likewise.
15617         (build_duplicate_type): Likewise.
15618         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
15619         (struct copy_body_data): Replace splay-tree by pointer-map.
15620         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
15621         not $(SPLAY_TREE_H).
15622         (gimplify.o): Depend on $(SPLAY_TREE_H).
15623         (omp-low.p): Likewise.
15624
15625 2007-03-31  Anatoly Sokolov <aesok@post.ru>
15626
15627         * config/avr/predicates.md (even_register_operand,
15628         odd_register_operand): New predicates.
15629         * config/avr/avr.md (movw peephole2): New.
15630         (movw_r peephole2): New.
15631
15632 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
15633
15634         * tree.h (get_signed_or_unsigned_type): New.
15635         * fold-const.c (operand_equal_for_comparison_p): Use
15636         get_signed_or_unsigned_type instead of
15637         lang_hooks.types.signed_or_unsigned_type.
15638         * expr.c (store_expr): Ditto.
15639         * langhooks.c (get_signed_or_unsigned_type): New.
15640         (lhd_signed_or_unsigned_type): New.
15641         * langhooks.h (lhd_signed_or_unsigned_type): New.
15642         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
15643
15644 2007-03-30  Richard Henderson  <rth@redhat.com>
15645
15646         * tree-ssa-loop-ivopts.c: Include target.h.
15647         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
15648         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
15649         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
15650         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
15651
15652 2007-03-30  Richard Henderson  <rth@redhat.com>
15653             Kai Tietz  <kai.tietz@onevision.com>
15654
15655         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
15656         default for 64-bit.
15657         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
15658         (TARGET_64BIT_MS_ABI): New.
15659         (DBX_REGISTER_NUMBER): Handle 64-bit.
15660         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
15661         (LONG_TYPE_SIZE): Force to 32.
15662         (REG_PARM_STACK_SPACE): New.
15663         (OUTGOING_REG_PARM_STACK_SPACE): New.
15664         (REGPARM_MAX, SSE_REGPARM_MAX): New.
15665         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
15666         (STACK_BOUNDARY): Use 128 for 64-bit.
15667         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
15668         Add 64-bit implementation.
15669         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
15670         argument unused.
15671         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
15672         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
15673         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
15674         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
15675         (ix86_handle_cconv_attribute): Don't warn when ignoring if
15676         TARGET_64BIT_MS_ABI.
15677         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
15678         (ix86_pass_by_reference): Likewise.
15679         (ix86_function_value_regno_p): Likewise.
15680         (ix86_build_builtin_va_list): Likewise.
15681         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
15682         (function_arg_advance_ms_64): New.
15683         (function_arg_advance): Call it.
15684         (function_arg_ms_64): New.
15685         (function_arg): Call it.
15686         (function_value_ms_64): New.
15687         (ix86_function_value_1): Call it.
15688         (return_in_memory_ms_64): New.
15689         (ix86_return_in_memory): Call it.
15690         (setup_incoming_varargs_ms_64): New.
15691         (ix86_setup_incoming_varargs): Call it.
15692         (ix86_expand_prologue): Handle 64-bit stack probing.
15693         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
15694         (output_pic_addr_const): Likewise.
15695         (x86_this_parameter): Likewise.
15696         (x86_output_mi_thunk): Likewise.
15697         (x86_function_profiler): Likewise.
15698         (TARGET_STRICT_ARGUMENT_NAMING): New.
15699         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
15700         (TARGET_64BIT_MS_ABI): New.
15701         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
15702         * config/i386/i386.md (allocate_stack_worker): Remove.
15703         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
15704         describe the clobber of eax without a match_scratch.
15705         (allocate_stack_worker_postreload): Remove.
15706         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
15707         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
15708         (allocate_stack_worker_rex64_postreload): Remove.
15709         (allocate_stack): Handle 64-bit.
15710         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
15711         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
15712         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
15713         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
15714         (STANDARD_STARTFILE_PREFIX_1): Likewise.
15715         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
15716         * config.build (x86_64-*-mingw*): New host.
15717         * config.host (x86_64-*-mingw*): New host.
15718         * config.gcc (x86_64-*-mingw*): New target.
15719         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
15720
15721 2007-03-30  Richard Henderson  <rth@redhat.com>
15722             Kai Tietz  <kai.tietz@onevision.com>
15723
15724         * c-pragma.c (struct def_pragma_macro_value): New.
15725         (struct def_pragma_macro): New.
15726         (pushed_macro_table): New.
15727         (dpm_hash, dpm_eq): New.
15728         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
15729         (init_pragma): Install them.
15730         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
15731
15732 2007-03-30  Anatoly Sokolov <aesok@post.ru>
15733
15734         * config/avr/avr.c (avr_override_options): Clear
15735         'flag_delete_null_pointer_checks'.
15736
15737 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
15738
15739         PR c++/26099
15740         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
15741         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
15742         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
15743         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
15744         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
15745         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
15746         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
15747         C++ extensions.
15748         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
15749
15750 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
15751
15752         * regmove.c: Move all of pass_stack_adjustments from here...
15753         * combine-stack-adj.c: ...to this new file.
15754         * Makefile.in: Add rules for combine-stack-adj.o.
15755
15756 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
15757
15758         PR tree-optimization/31383
15759         * tree-data-ref.c (affine_function_equal_p): Do not require the
15760         vectors to have the same length.
15761
15762 2007-03-30  Jan Hubicka  <jh@suse.cz>
15763
15764         PR middle-end/30700
15765         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
15766         availablility; add more sanity checking; ask varpool only about
15767         VAR_DECL.
15768
15769 2007-03-29  Richard Henderson  <rth@redhat.com>
15770
15771         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
15772         to decide, but __SIZEOF_LONG_LONG__.
15773
15774 2007-03-29  Richard Henderson  <rth@redhat.com>
15775
15776         * emutls.c (struct __emutls_array): New.
15777         (emutls_destroy): Use it instead of casting element 0 from void*.
15778         (__emutls_get_address): Likewise.
15779
15780 2007-03-29  Richard Henderson  <rth@redhat.com>
15781
15782         * varasm.c (initializer_constant_valid_p): Don't deny
15783         DECL_DLLIMPORT_P on functions.
15784
15785         * config/i386/cygming.h: Remove function declarations.
15786         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
15787         (ASM_OUTPUT_LABELREF): Remove.
15788         (COMMON_ASM_OP): Remove.
15789         (ASM_OUTPUT_COMMON): Remove.
15790         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
15791         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
15792         (ASM_DECLARE_FUNCTION_NAME): Likewise.
15793         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
15794         Rename from TARGET_ENCODE_SECTION_INFO.
15795         * config/i386/netware.h: Likewise.
15796         * config/i386/i386-protos.h: Update.
15797         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
15798         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
15799         (legitimate_constant_p): Reject dllimports.
15800         (dllimport_map, get_dllimport_decl): New.
15801         (legitimize_dllimport_symbol): New.
15802         (legitimize_address, ix86_expand_move): Use it.
15803         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
15804         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
15805         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
15806         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
15807         * config/i386/predicates.md (constant_call_address_operand): Only
15808         accept symbols; reject dllimport_p symbols.
15809         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
15810         i386_pe_maybe_record_exported_symbol.
15811         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
15812         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
15813         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
15814         trust the setting of DECL_DLLIMPORT_P.
15815         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
15816         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
15817         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
15818         tidy the argument scanning loop.
15819         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
15820         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
15821         (i386_pe_strip_name_encoding): Remove.
15822         (i386_pe_binds_local_p): New.
15823         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
15824         (i386_pe_output_labelref): Remove.
15825         (i386_pe_asm_output_aligned_decl_common): New.
15826         (i386_pe_maybe_record_exported_symbol): Rename from
15827         i386_pe_record_exported_symbol; check for dllexported symbols.
15828
15829 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
15830
15831         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
15832         add comment explaining why vsnprintf cannot be used.
15833
15834 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
15835
15836         PR tree-optimization/30666
15837         * tree.c (build_complex_type): When creating type names for DWARF2
15838         debug info, create TYPE_DECLs for TYPE_NAME instead of
15839         IDENTIFIER_NODEs.
15840         (build_common_tree_nodes_2): Use build_complex_type when building
15841         predefined complex types, to preserve canonical types.
15842
15843 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
15844
15845         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
15846         (noce_get_alt_condition): Look at it to determine whether to
15847         reverse the condition or not.
15848         (noce_get_condition): Substitute the truth for lies.
15849         (noce_find_if_block): Set the then_else_reversed field.
15850
15851 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
15852
15853         * config/fr30/fr30.md (movdi): Do not accept immediates as the
15854         destination of this insn.
15855         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
15856         than calling gen_rtx_SET directly.  Use r0 to hold the value of
15857         'address + 4' rather than a stack based temporary which can be
15858         mis-optimized away.
15859
15860 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
15861
15862         * config/s390/s390.c (s390_secondary_input_reload_class,
15863         s390_secondary_output_reload_class): Functions removed.
15864         (s390_secondary_reload): New function.
15865         (TARGET_SECONDARY_RELOAD): Target macro defined.
15866         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
15867         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
15868         * config/s390/s390.md ("reload_outti", "reload_outdi",
15869         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
15870         "reload_out<mode>"): Expanders removed.
15871         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
15872         "reload<mode>_nonoffmem_out"): Expanders added.
15873
15874 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
15875
15876         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair
15877         action if SRC->DEST replacement failed anyway.
15878
15879 2007-03-28  Mike Stump  <mrs@apple.com>
15880
15881         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
15882         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
15883         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
15884
15885 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
15886
15887         * config.gcc: Accept barcelona as a variant of amdfam10.
15888         * config/i386/i386.c (override_options): Likewise.
15889         * doc/invoke.texi: Likewise.
15890
15891 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
15892
15893         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
15894         offsets for BIT_FIELD_REF and COMPONENT_REF.
15895
15896 2007-03-28  Richard Guenther  <rguenther@suse.de>
15897
15898         * tree.c (is_global_var): Move ...
15899         * tree-flow-inline.h (is_global_var): ... here.
15900         * tree.h (is_global_var): Remove declaration.
15901
15902 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
15903
15904         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
15905         option.
15906         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
15907         * config/i386/i386.c (ix86_tune_features): Initialize new
15908         tuning option.
15909         * config/i386/predicates.md (promotable_binary_operator): Use
15910         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
15911
15912 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
15913
15914         PR target/31380
15915         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
15916
15917 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
15918
15919         * config/fr30/fr30.md (movsi_internal): Change destination
15920         constraint from m to V and add m to the end.
15921
15922 2007-03-28  Christian Bruel  <christian.bruel@st.com>
15923
15924         * config/sh/sh.md (movsi_i): Fix type attribute.
15925
15926 2007-03-28  Christian Bruel  <christian.bruel@st.com>
15927
15928         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
15929         (movsf_ie): Likewise.
15930
15931 2007-03-28  Christian Bruel  <christian.bruel@st.com>
15932
15933         * config.gcc: Add sh4-300 to multilib.
15934         * config/sh/t-mlib-sh4-300: New file.
15935
15936 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
15937
15938         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
15939         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
15940         fix_trunc<mode>di2.
15941         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
15942         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
15943         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
15944         "fixuns_trunctddi2"): Whitespace fix.
15945
15946 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
15947
15948         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
15949         the definition of struct sh_args.
15950         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
15951         CALL_COOKIE_INT_REG_GET): Likewise.
15952
15953 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
15954
15955         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
15956         transformations are applied successfully.
15957
15958 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
15959
15960         * tree.c (tree_contains_struct): Permit 512 tree codes.
15961         * tree.h (tree_contains_struct): Ditto.
15962         (MAX_TREE_CODES): Ditto.
15963         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
15964         SPARE member to store remaining padding bits.
15965
15966 2007-03-27  Anatoly Sokolov <aesok@post.ru>
15967
15968         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
15969         architecture.
15970
15971 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
15972
15973         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
15974         * configure: Regenerate.
15975
15976         * configure: Regenerate using the correct version of autoconf.
15977
15978 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
15979
15980         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
15981         pointer regs.
15982         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
15983         regs to "__SP_L__" and "__SP_H__".
15984
15985 2007-03-27  Richard Guenther  <rguenther@suse.de>
15986
15987         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
15988         computations with it with a HOST_WIDE_INT variable.
15989
15990 2007-03-26  Mike Stump  <mrs@apple.com>
15991
15992         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
15993         objective-c-header, objective-c++-header and objc++-cpp-output
15994         support.
15995         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
15996
15997 2007-03-26  Richard Henderson  <rth@redhat.com>
15998
15999         PR target/31361
16000         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
16001         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
16002         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
16003         IX86_BUILTIN_PSRLQ128): New.
16004         (ix86_init_mmx_sse_builtins): Add them.
16005         (ix86_expand_builtin): Expand them.
16006         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
16007         operand 2 be TImode.
16008         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
16009         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
16010         _mm_srli_epi64): Mark __B const.
16011         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
16012         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
16013         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
16014         new two-vector shift builtins.
16015
16016 2007-03-26  Ian Lance Taylor  <iant@google.com>
16017
16018         PR tree-optimization/31345
16019         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
16020         [+INF, +INF(OVF)] into VARYING.
16021
16022 2007-03-26  Zack Weinberg  <zackw@panix.com>
16023
16024         * gengtype-parse.c: New file.
16025         * gengtype-yacc.y: Delete.
16026         * gengtype-lex.l: Don't include gengtype-yacc.h.
16027         Define YY_DECL and yyterminate appropriately for recursive
16028         descent parser.  yylval is now a string out-parameter to yylex.
16029         (HWS, EOID): New shorthand.
16030         (IWORD): Add a couple more types.
16031         (yylex): Add a setup stanza.  Remove the complex rules for
16032         detecting GTY'ed types and typedefs; replace with simple
16033         keyword detectors.  Adjust everything for the changed
16034         definition of yylval.  Ignore all pp-directives, not just #define.
16035         (yyerror): Delete.
16036         (parse_file): Rename yybegin; do not call yyparse.
16037         (yyend): New.
16038         * gengtype.c (xasprintf): Export again.
16039         (this_file): New.  Use everywhere __FILE__ was being used.
16040         (get_lang_bitmap): Special case types defined in gengtype.c.
16041         (do_typedef, new_structure): Suppress definition of certain types.
16042         (new_structure): Improve diagnostics of duplicate definitions.
16043         Make sure location_s is associated with input.h.
16044         (nreverse_pairs, define_location_structures): New functions.
16045         (main): Improve tagging of kludge types.  Remove old kludges
16046         for input.h types; use define_location_structures.
16047         * gengtype.h: Update prototypes.  Define token codes here.
16048         * Makefile.in: Remove all references to gengtype-yacc.
16049         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
16050         and gengtype.
16051         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
16052         add GTY((skip)) to the field that's only conditionally there.
16053         * doc/install.texi: Document that Bison is no longer required
16054         unless building treelang.
16055
16056         * gengtype.c: Don't include gtyp-gen.h.
16057         (srcdir): Declare here.
16058         (base_files, lang_dir_names): Allocate dynamically.
16059         (gt_files, num_gt_files, num_lang_dirs): New globals.
16060         (measure_input_list, read_input_line, read_input_list)
16061         (set_lang_bitmap): New functions.
16062         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
16063         simplify, relying on read_input_list to set up the bitmaps.
16064         (main): Arguments are no longer unused.  Check for correct number
16065         of command line arguments, set srcdir and srcdir_len, then call
16066         read_input_list, before doing anything else.  No need to worry
16067         about duplicates in main loop.
16068         * configure.ac: Simplify the calculation of all_gtfiles.
16069         Put language tags in there.  Don't set or substitute
16070         all_gtfiles_files_langs or all_gtfiles_files_frags.
16071         * Makefile.in: Revamp the way gengtype is invoked, now that it
16072         takes a file on its command line with a much simpler format.
16073         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
16074         (GTFILES): Remove duplicates and C source files.
16075         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
16076         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
16077         * configure: Regenerate.
16078
16079         * gengtype.h: Remove all type definitions to gengtype.c; leave
16080         only definitions of options_p, type_p, and pair_p as opaque
16081         pointers.  Update prototypes.
16082         * gengtype.c: Many type definitions moved here from gengtype.h.
16083         Consolidate type definitions at the top of the file.
16084         (xvasprintf): Delete.
16085         (xasprintf): Make static.
16086         (create_nested_pointer_option): Add 'next' parameter.
16087         (create_field_all, create_field_at): New functions.
16088         (create_field): Now a thin wrapper around create_field_all.
16089         (create_optional_field): Rename create_optional_field_ and add
16090         line argument.  Original name is now a macro which supplies
16091         __LINE__.
16092         (oprintf): Use vsnprintf directly.
16093         (close_output_files): Use fatal rather than perror/exit.
16094         (note_def_vec, note_def_vec_alloc): Use create_field_at.
16095         (main): Set progname.  Don't use exit.
16096         * gengtype-yacc.y (struct_fields): Use create_field_at.
16097         (option, optionseqopt): Delete.
16098         (optionseq): Consolidate productions from option here so we
16099         can use the first argument to create_option.
16100
16101         * gengtype-lex.l: Distinguish unions from structures in the
16102         token type.  Don't call find_structure; return the tag as a string.
16103         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and
16104         ENT_UNION.  Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is
16105         string.  Reorganize typedef_struct production accordingly.
16106         Use create_nested_ptr_option.
16107         * gengtype.c (create_nested_ptr_option): New function.
16108         * gengtype.h: Declare it.
16109
16110         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
16111         (string_type): Don't declare.
16112         (do_scalar_typedef): Declare.
16113         (create_scalar_type): Update prototype.
16114         * gengtype.c (string_type): Make static.
16115         (scalar_nonchar, scalar_char): New.
16116         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
16117         (resolve_typedef): Use scalar_nonchar for error recovery.
16118         (create_scalar_type): Remove name_len field.  Return scalar_char
16119         or scalar_nonchar as appropriate.
16120         (adjust_field_type): Look at scalar_is_char boolean to decide whether
16121         to use string_type.
16122         (throughout): Use scalar_nonchar instead of calling
16123         create_scalar_type, whenever possible.
16124         (main): Initialize scalar_char and scalar_nonchar before calling
16125         gen_rtx_next.
16126         * gengtype-lex.l: Adjust for removal of second argument to
16127         create_scalar_type.  Use yylval.s instead of yylval.t when
16128         returning SCALAR.
16129         * gengtype-yacc.y: Type of SCALAR is string.  Call
16130         create_scalar_type from type:SCALAR rule.  Adjust for removal of
16131         second argument to create_scalar_type.
16132
16133         * vec.h: Remove all #if IN_GENGTYPE blocks.
16134         Add comment saying that changes may require adjustments to gengtype.
16135         * gengtype.c: Don't include coretypes.h or tm.h.
16136         Add comment to inclusion of errors.h.
16137         (note_def_vec, note_def_vec_alloc): New functions.
16138         * gengtype.h: Declare new functions.
16139         * gengtype-lex.l: Don't include coretypes.h.
16140         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
16141         Delete.
16142         (update_lineno): Remove unnecessary prototype.
16143         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
16144         (VEC rule): Just return VEC_TOKEN.
16145         * gengtype-yacc.y (VEC_TOKEN): New token type.
16146         (type): Add a production for VEC(a,b).
16147         * Makefile.in: Update dependencies.
16148
16149         * gengtype-lex.l: Remove rules for parsing pointer-to-function
16150         typedefs that use the old PARAMS macro.
16151
16152         * gengtype-lex.l: Remove all rules and states relating to yacc
16153         input files.
16154         * gengtype-yacc.y: Similarly.
16155         * gengtype.c (note_yacc_type): Delete function.
16156         * gengtype.h: Update prototypes.
16157
16158 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
16159
16160         * tree-pretty-print.c (dump_generic_node): Report precision of
16161         unnamed integer types.
16162
16163 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
16164
16165         * ifcvt.c (noce_try_store_flag_constants): Don't check
16166         no_new_pseudos here.
16167         (noce_try_store_flag_constants): Don't check no_new_pseudos.
16168         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
16169         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
16170         noce_try_sign_mask): Likewise.
16171         (if_convert): Check no_new_pseudos here.
16172
16173         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
16174         Remove prototypes.
16175         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
16176         (noce_get_condition): Handle new then_else_reversed argument.
16177         (noce_init_if_info): Remove, fold into noce_find_if_block.
16178         (noce_process_if_block): Take a struct noce_if_info as the
16179         argument.  Don't set up one based on ce_if_info.  Update pointer
16180         references accordingly.
16181         (cond_move_process_if_block): Likewise.
16182         (process_if_block): Removed.
16183         (find_if_block): Removed.  Move functionality two new functions,
16184         noce_find_if_block and cond_exec_find_if_block.
16185         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
16186         blocks and the symmetric IF-ELSE-JOIN case.
16187         (cond_exec_find_if_block): Also new function mostly based on old
16188         find_if_block and process_if_block.
16189         (find_if_header): Replace find_if_block call with separately
16190         guarded calls to noce_find_if_block and cond_exec_find_if_block.
16191         (find_cond_trap): Update noce_get_condition call.
16192         (dead_or_predicable): Likewise.
16193
16194 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
16195
16196         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
16197         Remove.
16198         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
16199         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
16200         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
16201         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
16202         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
16203         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
16204         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
16205         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
16206         __builtin_ia32_psrad128 builtins.
16207
16208 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
16209
16210         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
16211         * config/i386/constraints.md
16212         (define_constraint "I"): Use IN_RANGE macro.
16213         (define_constraint "J"): Ditto.
16214         (define_constraint "K"): Ditto.
16215         (define_constraint "M"): Ditto.
16216         (define_constraint "N"): Ditto.
16217         (define_constraint "O"): Ditto.
16218         * config/i386/predicates.md
16219         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
16220         (define_predicate "const_0_to_3_operand"): Ditto.
16221         (define_predicate "const_0_to_7_operand"): Ditto.
16222         (define_predicate "const_0_to_15_operand"): Ditto.
16223         (define_predicate "const_0_to_63_operand"): Ditto.
16224         (define_predicate "const_0_to_255_operand"): Ditto.
16225         (define_predicate "const_1_to_31_operand"): Ditto.
16226         (define_predicate "const_2_to_3_operand"): Ditto.
16227         (define_predicate "const_4_to_7_operand"): Ditto.
16228
16229 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
16230
16231         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
16232         in SImode for save_world.
16233         * config/rs6000/altivec.md (save_world, restore_world): Convert to
16234         LR hard reg.
16235
16236 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
16237
16238         PR tree-optimization/30784
16239         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
16240         BIT_FIELD_REF.
16241
16242 2007-03-25  Revital Eres  <eres@il.ibm.com>
16243
16244         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
16245           Fold movement_possibility function into it.
16246
16247 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
16248
16249         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
16250         (load_macho_picbase_{si,di}): Convert to LR hard reg.
16251         (call_indirect_nonlocal_darwin64): Same.
16252         (call_nonlocal_darwin64): Same.
16253         (call_value_indirect_nonlocal_darwin64): Same.
16254         (call_value_nonlocal_darwin64): Same.
16255         (sibcall_nonlocal_darwin64): Same.
16256         (sibcall_value_nonlocal_darwin64): Same.
16257         (sibcall_symbolic_64): Same.
16258         (sibcall_value_symbolic_64): Same.
16259         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
16260         LR pseudo.
16261         (rs6000_emit_load_toc_table): Same.
16262         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
16263         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
16264         (mull_call): Same.
16265         (divss_call): Same.
16266         (divus_call): Same.
16267         (quoss_call): Same.
16268         (quous_call): Same.
16269         (load_toc_v4_pic_si): Same
16270         (load_toc_v4_PIC_1): Same.
16271         (load_toc_v4_PIC_1b): Same.
16272         (call_indirect_aix{32,64}): Same.
16273         (call_value_indirect_aix{32,64}): Same.
16274         (call): Same.
16275         (call_value): Same.
16276         (call_local{32,64}): Same.
16277         (call_value_local{32,64}): Same.
16278         (call_indirect_nonlocal_aix{32,64}): Same.
16279         (call_nonlocal_aix{32,64}): Same.
16280         (call_value_indirect_nonlocal_aix{32,64}): Same.
16281         (call_value_nonlocal_aix{32,64}): Same.
16282         (call_indirect_nonlocal_sysv<mode>): Same.
16283         (call_nonlocal_sysv<mode>): Same.
16284         (call_value_indirect_nonlocal_sysv<mode>): Same.
16285         (call_value_nonlocal_sysv<mode>): Same.
16286         (sibcall): Same.
16287         (sibcall_local{32,64}): Same.
16288         (sibcall_value_local{32,64}): Same.
16289         (sibcall_nonlocal_aix{32,64}): Same.
16290         (sibcall_value_nonlocal_aix{32,64}): Same.
16291         (sibcall_nonlocal_sysv<mode>): Same.
16292         (sibcall_value): Same.
16293         (sibcall_value_nonlocal_sysv<mode>): Same.
16294
16295 2007-03-24  Paul Brook  <paul@codesourcery.com>
16296
16297         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
16298         * config/arm/linux-eabi.h: Remove legacy syscall hack.
16299
16300 2007-03-24  Richard Henderson  <rth@redhat.com>
16301
16302         * config/ia64/constraints.md: New file.
16303         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
16304         satisfies_constraint_?.
16305         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
16306         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
16307         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
16308         ia64_output_mi_thunk): Likewise.
16309         (ia64_const_ok_for_letter_p): Remove.
16310         (ia64_const_double_ok_for_letter_p): Remove.
16311         (ia64_extra_constraint): Remove.
16312         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
16313         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
16314         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
16315         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
16316         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
16317         EXTRA_MEMORY_CONSTRAINT): Remove.
16318         * config/ia64/ia64.md: Include constriants.md.  Replace
16319         CONST_OK_FOR_? with satisfies_constraint_?.
16320
16321 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
16322             H.J. Lu  <hongjiu.lu@intel.com>
16323
16324         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
16325         DPD or BID name.
16326         (name macros): Use DPD_BID_NAME to convert names properly.
16327
16328         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
16329         decimal floating point format.
16330         (init_floating_libfuncs): Change decimal functions so that they
16331         have a "bid_" prefix if the decimal system uses the BID format,
16332         and "dpd_" prefix if the decimal system uses the DPD format.
16333         (init_interclass_conv_libfuncs): Ditto.
16334         (init_intraclass_conv_libfuncs): Ditto.
16335
16336         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
16337         using the BID format.
16338
16339         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
16340         whether we are using the BID decimal format.
16341         * configure: Regenerate.
16342
16343         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
16344         the compiler has decimal floating point enabled.  Define
16345         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
16346         instead of DPD.
16347
16348         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
16349         using the BID format.
16350
16351         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
16352         whether we are using the BID decimal format.
16353         * configure: Regenerate.
16354
16355         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
16356         the compiler has decimal floating point enabled.  Define
16357         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
16358         instead of DPD.
16359
16360         * doc/install.texi (--enable-decimal-float): Document BID and DPD
16361         options, and that it is enabled for i386/x86_64 systems.
16362
16363         * Makefile.in (enable_decimal_float): New.
16364         (DECNUMFMT): New.
16365         (DECNUMINC): Add  -I$(DECNUMFMT).
16366         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
16367         to $(DECNUMFMT) from $(DECNUM).
16368
16369         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
16370         Substitute enable_decimal_float.
16371         * configure: Regenerated.
16372
16373         PR other/30529
16374         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
16375         unsigned long.
16376
16377         * configure.ac: Enable decimal float for x86_64-*-linux*.
16378         * configure: Regenerated.
16379
16380         PR other/30530
16381         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
16382         decimal128ClearSign to flip and clear the sign bit in decimal128.
16383         (decimal_real_maxval): Set decimal128SetSign to set the sign
16384         bit in decimal128.
16385
16386 2007-03-23  Ian Lance Taylor  <iant@google.com>
16387
16388         * fold-const.c (fold_binary): Correct warning for X - c >= X.
16389
16390 2007-03-23  Ian Lance Taylor  <iant@google.com>
16391
16392         * tree-dump.c (dump_files): Correct comment.
16393
16394 2007-03-23  Ian Lance Taylor  <iant@google.com>
16395
16396         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
16397
16398 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
16399
16400         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
16401         in cfglayout mode.  Don't go into and out of cfglayout mode.
16402         Link the blocks in the order of the constructed traces.
16403         (rest_of_handle_tracer): Adjust call to tracer.
16404         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
16405         Don't go into cfglayout mode.
16406         (rtl_loop_done): Don't go out of cfglayout mode.
16407         * cfglayout.c (relink_block_chain): New function, split out from...
16408         (fixup_reorder_chain): ...here.  Remove redundant checking.
16409         (cfg_layout_finalize): Don't clear the header, footer, and aux
16410         fields here, move the code to do so to relink_block_chain.  Likewise
16411         for free_original_copy_tables.
16412         * rtl.h (tracer): Update prototype.
16413         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
16414         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
16415         mode.  Use relink_block_chain to serialize the CFG according to the
16416         new basic block order.  Move targetm.cannot_modify_jumps_p check from
16417         here...
16418         (gate_handle_reorder_blocks): ...to here.
16419         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
16420         from here...
16421         (gate_duplicate_computed_gotos): ...to here.
16422         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
16423         something always changes when going into and out of cfglayout mode.
16424         Perform an expensive cfg cleanup while going into cfglayout mode.
16425         Always update liveness information on HAVE_conditional_execution
16426         targets.  Reserialize the basic blocks and go out of cfglayout mode.
16427         * reg-stack.c: Include cfglayout.h.
16428         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
16429         the call to reorder_basic_blocks.
16430         * basic-block.h (reorder_basic_blocks): Update prototype.
16431         (relink_block_chain): New prototype.
16432         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
16433
16434 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
16435
16436         * config/mips/mips.md (type, hazard, *movdi_32bit,
16437         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
16438         *movhi_internal, *movqi_internal, *movsf_hardfloat,
16439         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
16440         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
16441         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
16442         applicable.
16443         (movcc): Change first xfer to multi.
16444         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
16445         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
16446         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
16447         config/mips/generic.md: Change reservations using "xfer" to use
16448         "mfc,mtc".
16449         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
16450         using match_operand.
16451         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
16452         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
16453         examining mode.
16454         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
16455
16456 2007-03-22  Richard Henderson  <rth@redhat.com>
16457
16458         * config/i386/i386.c: Remove unnecessary function declarations.
16459         Move targetm definition, and all related macros, to the end of
16460         the file.  Resort some functions to put definitions before uses.
16461         (ix86_attribute_table): Make static.  Move to end of file.
16462         (ix86_gimplify_va_arg): Make static.
16463
16464 2007-03-22  Richard Henderson  <rth@redhat.com>
16465
16466         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
16467         don't increase local_regparm with force_align_arg_pointer check.
16468         (ix86_function_sseregparm): Assert 32-bit.
16469         (type_has_variadic_args_p): New.
16470         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
16471         type_has_variadic_args_p.
16472         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
16473         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
16474         use memset instead.  Do maybe_vaarg check first; skip attribute
16475         tests if true; skip attribute tests for 64-bit.
16476         (construct_container): Remove TARGET_DEBUG_ARG.
16477         (function_arg_advance_32, function_arg_advance_64): Split out ...
16478         (function_arg_advance): ... from here.
16479         (function_arg_32, function_arg_64): Split out ...
16480         (function_arg): ... from here.
16481         (ix86_pass_by_reference): Tidy.
16482         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
16483         (function_value_32): New, from parts of ix86_function_value
16484         and ix86_value_regno.
16485         (function_value_64): New, from parts of ix86_function_value
16486         and ix86_libcall_value.
16487         (ix86_function_value_1): New.
16488         (ix86_function_value, ix86_libcall_value): Use it.
16489         (return_in_memory_32, return_in_memory_64): Split out ...
16490         (ix86_return_in_memory): ... from here.
16491         (ix86_struct_value_rtx): Skip for 64-bit.
16492         (ix86_libcall_value, ix86_value_regno): Remove.
16493         (setup_incoming_varargs_64): Split out ...
16494         (ix86_setup_incoming_varargs): ... from here.
16495         (ix86_va_start): Remove TARGET_DEBUG_ARG.
16496         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
16497         * config/i386/i386-protos.h (ix86_function_value): Remove.
16498         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
16499
16500 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16501
16502         PR other/23572
16503         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
16504         infinities not supported, otherwise emit warning if -Woverflow. On
16505         underflow, emit warning if -Woverflow.
16506         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
16507         and 0 otherwise.
16508         * real.h (real_from_string): Update declaration
16509
16510 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
16511             Richard Henderson  <rth@redhat.com>
16512
16513         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
16514         * calls.c (compute_argument_block_size, expand_call,
16515         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
16516         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
16517         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
16518         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
16519         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
16520         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
16521         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
16522         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
16523         Set to 1.
16524
16525 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
16526
16527         * c-incpath.c (add_sysroot_to_chain): New.
16528         (merge_include_chains): Add sysroot argument.  Call
16529         add_sysroot_to_chain if sysrooted.
16530         (register_include_chains): Update call to merge_include_chains.
16531         * doc/cppopts.texi: Document use of '=' in include directory
16532         arguments.
16533
16534 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
16535
16536         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
16537         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
16538         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
16539         insn pattern using X87MODEF12 mode macro.
16540
16541 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
16542
16543         * regmove.c (regmove_optimize): Use reg_mentioned_p
16544         instead of reg_overlap_mentioned_p for DST.
16545
16546 2007-03-21  Mike Stump  <mrs@apple.com>
16547
16548         * c.opt: Fixup for Objective-C/C++.
16549
16550 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
16551
16552         * explow.c (convert_memory_address): Fold memory reference when
16553         POINTERS_EXTEND_UNSIGNED < 0
16554
16555 2007-03-21  Richard Henderson  <rth@redhat.com>
16556
16557         PR target/31245
16558         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
16559         * config/i386/mmintrin.h (__m64): Likewise.
16560         * config/i386/xmmintrin.h (__m128): Likewise.
16561
16562 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
16563
16564         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
16565         (VXWORKS_OS_CPP_BUILTINS): Define.
16566         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
16567         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
16568
16569 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
16570
16571         * rtl.h (constant_pool_reference_p): Delete.
16572         (find_constant_src): Declare.
16573         * rtlanal.c (find_constant_src): New function.
16574         * simplify-rtx.c (constant_pool_reference_p): Delete.
16575         * config/i386/i386.md: Use find_constant_src instead of
16576         constant_pool_reference_p/avoid_constant_pool_reference pairs.
16577
16578 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
16579
16580         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
16581         * c-cppbuiltin.c (c_cpp_builtins): Define them.
16582
16583 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
16584
16585         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
16586         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
16587         (arm_elf_asm_constructor): Use it.
16588         (arm_elf_asm_destructor): New function.
16589
16590 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
16591
16592         * jump.c (mark_jump_label): Treat SEQUENCE specially.
16593
16594 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
16595
16596         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
16597
16598 2007-03-19  Andrew Haley  <aph@redhat.com>
16599
16600         PR tree-optimization/31264
16601         * tree-vrp.c (register_edge_assert_for_1): Don't look though
16602         VIEW_CONVERT_EXPRs.
16603
16604 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
16605
16606         PR rtl-optimization/30907
16607         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
16608         (fwprop_init): Always call loop_optimizer_initialize.
16609         (fwprop_done): Always call loop_optimizer_finalize.
16610         (fwprop): We always have loop info now.
16611         (gate_fwprop_addr): Remove.
16612         (pass_fwprop_addr): Use gate_fwprop as gate.
16613
16614         PR rtl-optimization/30841
16615         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
16616         df_chain_alloc): Call df_reorganize_refs unconditionally.
16617         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
16618         refs_organized to refs_organized_size.
16619         (df_ref_create_structure): Use refs_organized_size instead of
16620         bitmap_size if refs had been organized, and keep refs_organized_size
16621         up-to-date.
16622         * df.h (struct df_ref_info): Change refs_organized to
16623         refs_organized_size.
16624         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
16625         bitmap_size.
16626
16627 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
16628
16629         * except.c (output_function_exception_table): Do not reference the
16630         EH personality routine for functions that do not require an
16631         exception table.
16632
16633 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
16634
16635         PR c/30762
16636         * c-typeck.c (convert_for_assignment): Call comptypes for
16637         RECORD_TYPE or UNION_TYPE.
16638
16639         PR inline-asm/30505
16640         * reload1.c (reload): Do invalid ASM checking after
16641         cleanup_subreg_operands.
16642
16643 2007-03-19  Jeff Law  <law@redhat.com>
16644
16645         * tree-cfg.c (find_taken_edge): Tighten conditions for
16646         optimizing computed gotos.
16647
16648 2007-03-19  Michael Matz  <matz@suse.de>
16649
16650         * builtins.c (expand_builtin_sync_operation,
16651         expand_builtin_compare_and_swap,
16652         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
16653         correctly.
16654
16655         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
16656         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
16657         for operand 3.
16658
16659 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
16660
16661         * doc/tm.texi: Add brackets around the return type of
16662         TARGET_SECONDARY_RELOAD.
16663
16664 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16665         Richard Guenther  <rguenther@suse.de>
16666
16667         PR tree-optimization/31254
16668         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
16669         Use handled_component_p () where appropriate.  Continue
16670         propagating into the rhs if we propagated into an INDIRECT_REF
16671         on the lhs.
16672
16673 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
16674
16675         * config/s390/s390.md (op_type attribute): RRR instruction type added.
16676         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
16677         (xde, xdee): Mode attributes adjusted to support DFP modes.
16678         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
16679         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
16680         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
16681         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
16682         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
16683         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
16684         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
16685         numbers.
16686         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
16687         "movsf"): Insn definitions removed.
16688         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
16689         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
16690         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
16691         definitions added.
16692         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
16693         "reload_in<mode>", "reload_out<mode>"): Expander added.
16694         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
16695         Expander removed.
16696
16697 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
16698
16699         * config/s390/s390.md: Only non-functional changes.  Renamed
16700         FPR mode macro to BFP all over the file.
16701
16702 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
16703
16704         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
16705         (op_type attribute): RRF instruction type added.
16706         (fT0): New mode attribute.
16707         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
16708         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
16709         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new
16710         instruction no secondary memory is needed when moving DFmode values
16711         between GPRs and FPRs.
16712
16713 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
16714
16715         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
16716         inverted and documentation adjusted.
16717         ("mhard-dfp", "msoft-dfp"): New options.
16718         * config/s390/s390.c (s390_handle_arch_option): New architecture
16719         switch: z9-ec.
16720         (override_options): Sanity checks for the new options added.
16721         * config.gcc: New architecture switch: z9-ec.
16722         * config/s390/s390.h (processor_flags): PF_DFP added.
16723         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
16724         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
16725         when the bit is NOT set so remove it from the defaults.
16726
16727 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
16728
16729         * genemit.c (main): Print include statement for dfp.h.
16730         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
16731         is not available.
16732
16733 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
16734
16735         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
16736
16737 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
16738
16739         PR target/31022
16740         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
16741         instead of PATTERN.
16742
16743 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16744
16745         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
16746         attr_length_call, output_call, output_indirect_call): Cleanup
16747         formatting of targetm calls.
16748
16749 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
16750
16751         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
16752
16753 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16754
16755         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
16756         reservation, bypass and anti-bypass descriptions for these
16757         instructions.  Update move patterns.
16758         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
16759         TYPE_FPSTORE.
16760
16761 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
16762
16763         * tree-vect-transform.c (get_initial_def_for_induction): Replace
16764         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
16765         (get_initial_def_for_reduction): Likewise.
16766
16767 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
16768
16769         Fix PR tree-optimization/29922
16770         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
16771         (get_representative): Removed.
16772         (value_dies_in_block_x): Update for rvuse removal.
16773         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
16774         (compute_antic_aux): Handle when PHI nodes appear in
16775         non-single-successors.
16776         (dump_bitmap_of_names): Removed.
16777         (compute_antic_safe): Renamed and removed rvuse calculation.
16778         Calculate only antic safe.
16779         (insert_into_preds_of_block): Remove assert.
16780         (execute_pre): Update for renamed functions.
16781         (defer_or_phi_translate_block): New function.
16782
16783 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
16784
16785         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
16786         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
16787         typos.
16788         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
16789         Follow spelling conventions.
16790
16791         * tree-data-ref.h: Remove the prototype for analyze_array.
16792
16793 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
16794
16795         PR tree-optimization/31041
16796         * tree-vect-transform.c (get_initial_def_for_induction): Call
16797         force_gimple_operand.
16798
16799 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
16800
16801         * ipa-type-escape.c (look_for_casts) : Revert code to use
16802         handled_component_p due to ada test a-numaux.adb.
16803
16804 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
16805
16806         * final.c (final_scan_insn): Alter the condition of a
16807         conditional trap if we have nonstandard CC.
16808
16809 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
16810
16811         * configure.ac: Remove excess quoting from asm line 0 test.
16812         * configure: Rebuilt.
16813
16814 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16815
16816         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
16817         * c-common.c (convert_and_check): Move warning logic to...
16818         (warnings_for_convert_and_check): ...here. Define.
16819         * c-common.h (warnings_for_convert_and_check): Declare.
16820
16821 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16822
16823         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
16824         (output_call): Likewise.
16825
16826 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
16827
16828         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
16829
16830 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
16831
16832         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
16833
16834 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
16835
16836         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
16837         opteron, athlon-64 and athlon-fx processor_alias_table entries.
16838
16839 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
16840
16841         PR tree-optimization/31183
16842         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
16843         Use double_int instead of unsigned int for representing access_strides.
16844         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
16845
16846 2007-03-16  Richard Guenther  <rguenther@suse.de>
16847
16848         PR tree-optimization/31146
16849         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
16850         to allow recursion of forward_propagate_addr_expr.
16851         (forward_propagate_addr_into_variable_array_index): Likewise.
16852         (forward_propagate_addr_expr): Likewise.
16853         (tree_ssa_forward_propagate_single_use_vars): Likewise.
16854         (forward_propagate_addr_expr_1): Recurse on simple copies
16855         instead of propagating into them.  Do so for useless conversions
16856         as well.
16857         (forward_propagate_addr_expr): Clean up unused statements after
16858         recursion.
16859
16860 2007-03-16  Richard Guenther  <rguenther@suse.de>
16861
16862         * builtins.c (expand_builtin_cexpi): Use the right argument
16863         for the expansion via cexp.
16864
16865 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
16866
16867         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
16868         * configure: Rebuilt.
16869
16870 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
16871
16872         PR debug/29906
16873         * dwarf2out.c (force_type_die): Adjust comment.
16874         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
16875
16876 2007-03-15  DJ Delorie  <dj@redhat.com>
16877
16878         * config/frv/predicates.md (minmax_operator): Don't check operands
16879         here.
16880
16881 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
16882
16883         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
16884         Update constant estimates of number of iterations.
16885         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
16886         argument renamed to "realistic".
16887         (compute_estimated_nb_iterations): Removed.
16888         (record_niter_bound): New function.
16889         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
16890         call record_nonwrapping_iv with upper = false.
16891         (infer_loop_bounds_from_signedness): Pass upper argument to
16892         record_nonwrapping_iv.
16893         (estimate_numbers_of_iterations_loop): Do not call
16894         compute_estimated_nb_iterations.  Record estimate based on profile
16895         information.  Initialize the constant estimates of number of
16896         iterations.
16897         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
16898         estimates.
16899         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
16900         number of iterations is too small.
16901         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
16902         (EST_NOT_AVAILABLE): Removed.
16903         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
16904         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
16905         fields.
16906
16907 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
16908
16909         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
16910         Handle NE_EXPR guards.
16911
16912 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16913
16914         PR c++/24924
16915         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
16916         Set also -pedantic-errors by default for the  preprocessor unless
16917         -fpermissive is given.
16918
16919 2007-03-15  Richard Guenther  <rguenther@suse.de>
16920
16921         PR middle-end/29719
16922         PR middle-end/31161
16923         * builtins.c (expand_builtin_cexpi): As a fallback if we
16924         don't have builtins for sincos or cexp create a function
16925         declaration for cexp and expand to a call to that.
16926         (expand_builtin_int_roundingfn): Always fall
16927         back to floor/ceil and its variants even if they may be
16928         not available.
16929
16930 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
16931
16932         PR middle-end/31159
16933         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
16934         jump tables, move the call to delete_dead_jumptables from here...
16935         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
16936         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
16937         don't allow merging of blocks that try_redirect_by_replacing_jump
16938         also does not handle when not optimizing.
16939
16940 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
16941             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
16942
16943         * config/i386/i386.md (x86_sahf_1): Correctly handle
16944         HAVE_AS_IX86_SAHF.
16945
16946 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
16947
16948         PR target/31167
16949         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
16950         x86_64_general_operand as operand[2] predicate.  Remove "iF"
16951         from operand constraints and use "e" constraint instead.
16952         (*subti3_1, *subti3_1 splitter): Ditto.
16953         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
16954         operand[1] predicate.
16955
16956 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
16957
16958         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
16959         arrays, multiply the access strides by the size of the sub-array.
16960         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
16961
16962 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
16963
16964         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
16965         the configured assembler supports the sahf mnemonic.
16966         * configure: Regenerate.
16967         * config.in: Regenerate.
16968
16969         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
16970         emit "sahf" or ".byte\t0x9e" as asm template.
16971
16972 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
16973
16974         PR 31018
16975         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
16976         option to replace hard coded TARGET_xxx in md file.
16977         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
16978         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
16979         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
16980         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
16981         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
16982         (X86_TUNE_NOT_VECTORMODE): Ditto.
16983         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
16984         (TUNE_AVOID_VECTOR_DECODE): Ditto.
16985         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
16986         (TUNE_SLOW_IMUL_IMM8): Ditto.
16987         (TUNE_MOVE_M1_VIA_OR): Ditto.
16988         (TUNE_NOT_UNPAIRABLE): Ditto.
16989         (TUNE_NOT_VECTORMODE): Ditto.
16990
16991         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
16992         options.
16993
16994         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
16995         tuning options instead of hard coded TARGET_xxx.
16996         (fix ssemode peephole2's): Ditto.
16997         (imul peephole2's): Ditto.
16998         (movsi_or): Ditto.
16999         (movdi_or_rex64): Ditto.
17000         (move peephole2): Ditto.
17001         (not peephole2's): Ditto.
17002
17003 2007-03-14  Dirk Mueller  <dmueller@suse.de>
17004
17005         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
17006         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
17007         * c-parser.c (c_parser_if_body): Always add an empty statement in case
17008         of empty body.
17009         * c-parser.c (c_parser_do_statement): Warn about empty body in
17010         do/while statement.
17011         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
17012         * doc/invoke.texi (-Wempty-body): Update documentation.
17013
17014 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17015
17016         PR c/21438
17017         * c-common.h (warn_for_div_by_zero): Declare.
17018         * c-common.c (warn_for_div_by_zero): Define.
17019         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
17020         warning.
17021
17022 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
17023
17024         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
17025         to PREFIX and STANDARD_PREFIX.
17026
17027 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
17028             Phil Edwards  <phil@codesourcery.com>
17029
17030         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
17031         (__gthread_once_t): Remove busy field for RTPs.
17032         (__GTHREAD_ONCE_INIT): Update accordingly.
17033
17034 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
17035
17036         * doc/invoke.texi: Document VxWorks options.
17037
17038 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
17039
17040         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
17041
17042 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
17043
17044         PR tree-optimization/30590
17045         * tree-nrv.c (tree_nrv): Check for the partial update of the
17046         return value.
17047
17048 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
17049
17050         * flags.h (flag_random_seed): Remove declaration, in favor of...
17051         * toplev.h (get_random_seed, set_random_seed): ... these.
17052         * tree.c (get_file_function_name): Use the former.
17053         * opts.c (common_handle_option): Use the latter.
17054         * toplev.c
17055
17056 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
17057
17058         PR middle-end/31127
17059         * cse.c (cse_find_path): Do not bail out if a basic block that
17060         we already visited now becomes part of a path that starts at a
17061         different basic block.  Just disallow this, to make sure we
17062         visit each basic block at most once.
17063
17064 2007-03-13  Jan Hubicka  <jh@suse.cz>
17065
17066         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold
17067         attributes, when profile esitmate is present, calls with very low
17068         frequency are cold.
17069
17070 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
17071
17072         PR tree-optimization/30730
17073         PR tree-optimization/26900
17074         * tree-ssa-loop-niter.c: Include gmp.h.
17075         (bounds): New type.
17076         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
17077         split_to_var_and_offset, determine_value_range,
17078         bound_difference_of_offsetted_base, refine_bounds_using_guard,
17079         bound_difference, bounds_add, bounds_negate,
17080         number_of_iterations_ne_max, dump_affine_iv): New functions.
17081         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
17082         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
17083         difference of initial and final value of control iv to validate
17084         results.
17085         (number_of_iterations_cond): Add loop parameter.  Determine bounds
17086         on the difference of the extremes of the control iv.  Add dumps.
17087         (expand_simple_operations): Handle phi nodes.
17088         (simplify_using_initial_conditions): Do not record used conditions.
17089         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
17090         Do not set additional_info.
17091         (implies_nonnegative_p, implies_ge_p): Removed.
17092         (derive_constant_upper_bound): Do not use parameter `additional'.
17093         (record_estimate): Parameter `additional' removed.  Parameter
17094         `i_bound' added.  Do not call derive_constant_upper_bound.
17095         (record_nonwrapping_iv): Use derive_constant_upper_bound to
17096         bound the number of iterations estimate.
17097         (estimate_numbers_of_iterations_loop): Pass the estimate from
17098         the number of iterations analysis to record_estimate.
17099         * tree.h (multiple_of_p): Declare.
17100         * tree-scalar-evolution.c (expression_expensive_p): Removed.
17101         (scev_const_prop): Do not check expression_expensive_p.
17102         * fold-const.c (multiple_of_p): Exported.
17103         * double-int.c (double_int_mask): Exported.
17104         * double-int.h (double_int_mask): Declare.
17105         * tree-flow.h (struct tree_niter_desc): Removed additional_info
17106         field.  Added max field.
17107
17108 2007-03-13  David Taylor  <taylor@candd.org>
17109
17110         PR driver/12448:
17111         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
17112         default -MQ.
17113
17114 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17115
17116         PR target/31123
17117         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
17118         two unamed patterns.
17119
17120 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
17121
17122         * config/i386/i386.opt (mcx16, msahf): New options.
17123         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
17124         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
17125
17126         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
17127         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
17128         Output -mcx16 and -msahf options when corresponding bit is set.
17129
17130         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
17131         and -msahf options.
17132
17133 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
17134
17135         * configure.ac: Test for assembler tolerance to # 0 "".
17136         * configure, config.in: Rebuilt.
17137         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
17138
17139 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
17140
17141         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
17142
17143         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
17144         (handle_syscall): Handle direct system calls.
17145         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
17146
17147 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
17148
17149         * doc/invoke.texi: Fix cpp.info cross-reference.
17150         * doc/passes.texi: Fix gcc.info cross-reference.
17151
17152 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
17153
17154         PR tree-optimization/30835
17155         * lambda-code.c (can_convert_to_perfect_nest): Check whether
17156         bb_for_stmt is not NULL before accessing it.
17157
17158 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
17159
17160         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
17161         some multilibs.
17162
17163 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
17164
17165         PR 30635
17166         * doc/install.texi: Document --enable-stage1-languages
17167
17168 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
17169
17170         * tree-pass.h (pass_into_cfg_layout_mode,
17171         pass_outof_cfg_layout_mode): Declare.
17172         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
17173         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
17174         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
17175         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
17176
17177 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
17178
17179         * c-decl.c (warn_variable_length_array): New function.
17180         Refactored from grokdeclarator to handle warn_vla
17181         and handle unnamed array case.
17182         (grokdeclarator): Refactored VLA warning case.
17183         * c.opt (Wvla): New flag.
17184         * doc/invoke.texi (Wvla): New warning.
17185
17186 2007-03-12  Richard Henderson  <rth@redhat.com>
17187
17188         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
17189         (TARGET_SECTION_TYPE_FLAGS): New.
17190
17191 2007-03-12  Richard Henderson  <rth@redhat.com>
17192
17193         * config/darwin.c (machopic_reloc_rw_mask): New.
17194         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
17195         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
17196
17197 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
17198
17199         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
17200         * cppdefault.h (cpp_PREFIX): Document.
17201         (cpp_PREFIX_len): Likewise.
17202         (cpp_EXEC_PREFIX): New variable.
17203         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
17204         * c-incpath.c (add_standard_paths): Correct logic for relocating
17205         paths within prefix.
17206
17207 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
17208
17209         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
17210         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
17211         mode macro.
17212         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
17213         fix_truncdfdi_sse using SSEMODEF mode macro.
17214         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
17215         fix_truncdfsi_sse using SSEMODEF mode macro.
17216         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
17217         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
17218
17219 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
17220
17221         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
17222         elfos.h to tm_file.
17223
17224 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
17225
17226         * tree.h : Add multiple_of_p declaration.
17227         * fold-const.c (multiple_of_p): Make multiple_of_p public.
17228         * ipa-type-escape.c (results_of_malloc): Redundant.
17229         (visited_stmts): New. Visited stmt for walk_use_def_chains.
17230         (cast_type): Extended with new members.
17231         (check_cast): Returns cast_type.
17232         (cast): New structure for data of walk_use_def_chains.
17233         (is_malloc_result, is_cast_from_non_pointer_1,
17234         is_cast_from_non_pointer,
17235         is_array_access_through_pointer_and_index): New functions.
17236         (look_for_casts): Returns cast types.
17237         (check_call): Returns void.
17238         (okay_pointer_operation): Use support of pointer plus index,
17239         pointer plus constant and allow all multiplications.
17240
17241 2007-03-11  Richard Guenther  <rguenther@suse.de>
17242
17243         PR tree-optimization/31115
17244         * tree-vrp.c (extract_range_from_binary_expr): Make sure
17245         the shift count is positive and non-anti-range for RSHIFT_EXPR.
17246         A shift count of zero is not special as with *_DIV_EXPR.
17247         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
17248         direction.
17249
17250 2007-03-11  Ian Lance Taylor  <iant@google.com>
17251
17252         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
17253         the *_DIV_EXPR codes correctly with overflow infinities.
17254
17255 2007-03-11  Ira Rosen  <irar@il.ibm.com>
17256
17257         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
17258         indicate success/failure of the analysis. Add negation to subtrahend
17259         in case of subtraction. Fail if both operands contain constants.
17260         (create_data_ref): Fail if analyze_offset fails.
17261
17262 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
17263
17264         * config/i386/i386.md (frndintxf2): Rename to ...
17265         (rintxf2): ... this. Remove expander having same name.
17266         (rintsf2, rintdf2): Implement using SSEMODEF macro.
17267         (roundsf2, rounddf2): Ditto.
17268         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
17269         (lround<mode>di2, lround<mode>si2): Ditto.
17270
17271 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
17272
17273         * lower-subreg.c: Include except.h.
17274         (decompose_multiword_subregs): Verify that the only control flow
17275         insns we can split are loads to multi-words pseudos.
17276         Handle breaking such blocks after splitting, instead of calling
17277         find_many_sub_basic_blocks.
17278
17279         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
17280         on the new basic block.  Add a lengthy comment explaining why we
17281         thought this was necessary.
17282         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
17283
17284 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
17285
17286         PR c++/30924
17287         * tree.c (walk_type_fields): Recurse into the element type of
17288         ARRAY_TYPEs if there is a pointer set.
17289
17290 2007-03-10  Dirk Mueller  <dmueller@suse.de>
17291
17292         * c-common.c (warn_logical_operator): Fix condition.
17293
17294 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
17295
17296         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
17297         quotation mark.
17298         * config/darwin.c (machopic_select_section): Remove superfluous
17299         argument in call to categorize_decl_for_section.  Remove unused
17300         variable shlib.
17301
17302 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
17303
17304         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
17305         defined.
17306         * configure: Regenerate.
17307
17308 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
17309
17310         PR target/31101
17311         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
17312         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
17313         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
17314         Add LABEL_NUSES to emitted label.
17315         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
17316         branch probability value to emitted jump insn.
17317         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
17318         Do not check life information and do not re-arrange input operands
17319         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
17320
17321 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
17322
17323         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
17324         the change of decode_asm_operands.
17325
17326 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
17327
17328         * mode-switching.c (create_pre_exit): Skip blockage insn.
17329
17330 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
17331
17332         * tree-pass.h (TODO_update_smt_usage): Remove.
17333         Update all users.
17334         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
17335         argument SOME.
17336         Update all users.
17337
17338 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17339
17340         * pa.c (attr_length_call): Revise condition for long
17341         pc-relative branch.
17342         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long
17343         local calls on the SOM target.  Don't use "LONG_PIC_PCREL" call
17344         sequence on SOM target.
17345
17346 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
17347
17348         * gcc.c: Document %{, in big comment at top.
17349         (input_suffix_matches): Remove special handling for .s and
17350         .S.
17351         (input_spec_matches): New.
17352         (handle_braces): Handle %{,.
17353         (validate_switches): ',' indicates a value which is not a switch.
17354         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
17355         to detect assembler input.
17356         * config/i386/sol2.h (CPP_SPEC): Likewise.
17357         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
17358         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
17359         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
17360         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
17361         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
17362         -m64 causes deployment target to default to 10.5.
17363         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
17364
17365 2007-03-09  Richard Henderson  <rth@redhat.com>
17366
17367         PR target/26090
17368         * target.h (targetm.asm.out.reloc_rw_mask): New.
17369         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
17370         (TARGET_ASM_OUT): Use it.
17371         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
17372         * varasm.c (categorize_decl_for_section): Remove shlib argument;
17373         use the new reloc_rw_mask target hook instead.
17374         (default_section_type_flags_1): Merge into...
17375         (default_section_type_flags): ... here.
17376         (decl_readonly_section_1): Merge into...
17377         (decl_readonly_section): ... here.
17378         (default_elf_select_section_1): Merge into...
17379         (default_elf_select_section): ... here.
17380         (default_unique_section_1): Merge into...
17381         (default_unique_section): ... here.
17382         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
17383         (default_select_rtx_section): Use it.
17384         (default_elf_select_rtx_section): Likewise.
17385         * output.h: Update to match.
17386         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
17387         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
17388         (TARGET_ASM_RELOC_RW_MASK): New.
17389         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
17390         to categorize_decl_for_section.
17391         (x86_64_elf_unique_section): Likewise.
17392         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
17393         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
17394         (TARGET_ASM_RELOC_RW_MASK): New.
17395         * config/ia64/ia64.c (ia64_rwreloc_select_section,
17396         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
17397         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
17398         (TARGET_RWRELOC): Remove.
17399         (ia64_section_type_flags): Adjust call to default_section_type_flags.
17400         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
17401         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
17402         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
17403         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
17404         (rs6000_xcoff_select_section): Use decl_readonly_section.
17405         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
17406         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
17407         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
17408         (TARGET_SECTION_TYPE_FLAGS): Remove.
17409         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
17410
17411 2007-03-09  Roger Sayle  <roger@eyesopen.com>
17412
17413         * fold-const.c (fold_comparison): Remove compile-time evaluation of
17414         complex constant equality/inequality comparisons for here.
17415         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
17416         known at compile-time or can be simplified to a scalar comparison.
17417         (fold_relational_const): Move compile-time evaluation of complex
17418         constant equality/inequality comparisons to here.
17419
17420 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
17421
17422         PR rtl-optimization/30643
17423         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
17424         dest_addr_elt.
17425         (fold_rtx): Recurse, like before 2006-11-03.
17426
17427 2007-03-09  DJ Delorie  <dj@redhat.com>
17428
17429         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
17430         m32c-pragma.o.
17431
17432 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
17433
17434         PR tree-optimization/30375
17435         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
17436         LHS of statements is not the same.
17437         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
17438
17439 2007-03-09  Chao-ying Fu  <fu@mips.com>
17440
17441         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
17442         REV 2.
17443         * doc/invoke.texi (-mdspr2): Document new option.
17444         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
17445         New unspec for DSP REV 2.
17446         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
17447         these instructions are extended in DSP REV 2.
17448         (mips-dspr2.md): Include.
17449         * config/mips/mips.opt (mdspr2): New option.
17450         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
17451         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
17452         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
17453         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
17454         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
17455         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
17456         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
17457         and 2 builtins.
17458         (bdesc_map): Add one field of unsupported_target_flags.
17459         (bdesc_arrays):  Update entries to have extra fields.  Add
17460         dsp_32only_bdesc.
17461         (mips_init_builtins): Initialize new function types.
17462         Check unsupported_target_fileds to filter out builtins.
17463         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
17464         TARGET_DSPR2.
17465         (ASM_SPEC): Pass mdspr2 to the assembler.
17466         * config/mips/mips-dspr2.md: New file.
17467
17468 2007-03-09  Sa Liu  <saliu@de.ibm.com>
17469
17470         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
17471
17472 2007-03-09  Ian Lance Taylor  <iant@google.com>
17473
17474         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
17475         argument) like -Wstrict-overflow=2.
17476         * doc/invoke.texi (Warning Options): Update documentation.
17477
17478 2007-03-09  Dirk Mueller  <dmueller@suse.de>
17479
17480         PR c++/17946
17481         * doc/invoke.texi (-Wlogical-op): Document.
17482         * common.opt (-Wlogical-op): New.
17483         * c-common.h (warn_logical_operator): Declare.
17484         * c-common.c (warn_logical_operator): Define.
17485         * c-typeck.c (parser_build_binary_op): Call
17486         warn_logical_operator.
17487
17488 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
17489
17490         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
17491         * final.c (final_scan_insn): Test for non-"" file name.
17492
17493 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
17494
17495         * doc/loop.texi: Document the Omega linear constraints solver.
17496         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
17497         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
17498         omega-hash-table-size, omega-max-keys, and
17499         omega-eliminate-redundant-constraints.
17500         * tree-pass.h (pass_check_data_deps): Declared.
17501         * omega.c: New.
17502         * omega.h: New.
17503         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
17504         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
17505         pass_check_data_deps): New.
17506         * tree-data-ref.c (init_data_ref): Remove declaration.
17507         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
17508         (analyze_array): Renamed init_array_ref, move up initializations.
17509         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
17510         Removed arguments that are set to NULL.
17511         (analyze_indirect_ref): Correct indentation, correct call to
17512         init_pointer_ref.
17513         (object_analysis): Call init_array_ref instead of analyze_array.
17514         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
17515         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
17516         of DR_ACCESS_FNS_ADDR.
17517         (init_omega_eq_with_af, omega_extract_distance_vectors,
17518         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
17519         ddr_consistent_p): New.
17520         (compute_affine_dependence): Check consistency of ddrs when
17521         flag_check_data_deps is passed.
17522         (analyze_all_data_dependences): Uncomment.
17523         (tree_check_data_deps): New.
17524         * tree-data-ref.h: Include omega.h.
17525         (DR_ACCESS_FNS_ADDR): Removed.
17526         (data_dependence_relation): Add inner_loop.
17527         (DDR_INNER_LOOP): New.
17528         * common.opt (fcheck-data-deps): New.
17529         * tree-flow.h (tree_check_data_deps): Declare.
17530         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
17531         (OBJS-common): Depend on omega.o.
17532         (omega.o): Define.
17533         * passes.c (pass_check_data_deps): Scheduled.
17534         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
17535         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
17536         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
17537         PARAM_VECT_MAX_VERSION_CHECKS,
17538         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
17539
17540 2007-03-09  Richard Guenther  <rguenther@suse.de>
17541
17542         PR tree-optimization/30904
17543         PR middle-end/31058
17544         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
17545         the same way as *_DIV_EXPR.
17546
17547 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
17548
17549         * recog.c (decode_asm_operands): No mixed declarations and code.
17550
17551 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
17552
17553         * rtl.def (ASM_INPUT): Add location.
17554         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
17555         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
17556         (decode_asm_operands): Add loc operand.
17557         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
17558         * stmt.c (expand_asm): Rename to...
17559         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
17560         gen_rtx_ASM_INPUT_loc.
17561         (expand_asm_expr): Adjust.
17562         * recog.c (decode_asm_operands): Add loc operand.
17563         (check_asm_operands, extract_insn): Adjust.
17564         * reload1.c (maybe_fix_stack_asms): Likewise.
17565         * final.c (asm_insn_count): Likewise.
17566         (final_scan_insn): Output # line before and after asm.
17567
17568 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
17569
17570         * tree-ssa-structalias.c (variable_info): Remove
17571         finished_solution.
17572         (new_var_info): Ditto.
17573         (shared_bitmap_info_t): New structure.
17574         (shared_bitmap_table): New variable.
17575         (shared_bitmap_hash): New function.
17576         (shared_bitmap_eq): Ditto
17577         (shared_bitmap_lookup): Ditto.
17578         (shared_bitmap_add): Ditto.
17579         (merge_smts_into): Change to take bitmap directly.
17580         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
17581         (init_alias_vars): Init shared bitmap hashtable.
17582         (delete_points_to_sets): Delete shared bitmap hashtable.
17583         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
17584         is_aliased removal as a change that was still necessary was
17585         deleted.
17586
17587 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
17588
17589         * config/i386/i386.h (override_options): Conditionally disable
17590         x86_sahf for 64bit targets only.
17591
17592 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17593
17594         PR C/31072
17595         * c-decl.c (merge_decls): Don't call make_var_volatile.
17596         * varasm.c (make_var_volatile): Remove.
17597         * output.h (make_var_volatile): Remove.
17598
17599 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
17600
17601         PR tree-optimization/31085
17602         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
17603
17604 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17605
17606         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
17607         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
17608         ATTR_CONST_NOTHROW_LIST.
17609
17610         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
17611         FIX_TRUNC_EXPR.
17612
17613 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
17614
17615         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
17616
17617 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
17618
17619         PR 31013
17620         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
17621         is declared.
17622         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
17623         passed, use shared libgcc.
17624
17625 2007-03-08  Roger Sayle  <roger@eyesopen.com>
17626
17627         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
17628         instead of calling build2 with a GIMPLE_MODIFY_STMT.
17629         (honor_protect_cleanup_actions, lower_try_finally_switch):
17630         Likewise.
17631         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
17632         ifc_temp_var): Likewise.
17633         * tree-inline.c (setup_one_parameter): Likewise.
17634         * tree-mudflap.c (mf_decl_cache_locals,
17635         mf_build_check_statement_for): Likewise.
17636         * tree-nested.c (init_tmp_var, save_tmp_var,
17637         finalize_nesting_tree_1): Likewise.
17638         * tree-outof-ssa.c (insert_copy_on_edge,
17639         insert_backedge_copies): Likewise.
17640         * tree-profile.c (tree_gen_edge_profiler,
17641         tree_gen_ic_profiler): Likewise.
17642         * tree-scalar-evolution.c (scev_const_prop): Likewise.
17643         * tree-sra.c (sra_build_assignment): Likewise.
17644         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
17645         * tree-ssa-math-opts.c (insert_reciprocals,
17646         execute_cse_sincos_1): Likewise.
17647         * tree-tailcall.c (adjust_accumulator_values,
17648         adjust_return_value): Likewise.
17649         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
17650         * tree-vect-transform.c (vect_create_data_ref_ptr,
17651         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
17652         vect_create_epilog_for_reduction, vectorizable_reduction,
17653         vectorizable_call, vectorizable_conversion,
17654         vectorizable_assignment, vectorizable_operation,
17655         vectorizable_type_demotion, vect_gen_widened_results_half,
17656         vect_permute_store_chain, vectorizable_store,
17657         vect_setup_realignment, vect_permute_load_chain,
17658         vectorizable_load, vectorizable_condition,
17659         vect_create_cond_for_align_checks): Likewise.
17660         * tree-vrp.c (build_assert_expr_for): Likewise.
17661
17662 2007-03-08  Ian Lance Taylor  <iant@google.com>
17663
17664         * tree-vrp.c: Include "intl.h".
17665         (usable_range_p): New static function.
17666         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
17667         overflowed values, juts set *strict_overflow_p.
17668         (compare_values): Only return -2 if one of the operands is not a
17669         constant.
17670         (compare_ranges): Call usable_range_p.
17671         (compare_range_with_value): Likewise.
17672         (vrp_evaluate_conditional_warnv): Rename from
17673         vrp_evaluate_conditional.  Make static.  Change all callers.
17674         (vrp_evaluate_conditional): New function.
17675         (simplify_div_or_mod_using_ranges): Issue warning about reliance
17676         on signed overflow.
17677         (simplify_abs_using_ranges): Likewise.
17678         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
17679         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
17680         within_stmt parameter.
17681         * tree-ssa-propagate.c (fold_predicate_in): Update call to
17682         vrp_evaluate_conditional.
17683         * tree-ssa-threadedge.c
17684         (record_temporary_equivalences_from_stmts_at_dest): Change
17685         simplify parameter to take a second tree parameter.
17686         (simplify_control_stmt_condition): Likewise.
17687         (thread_across_edge): Likewise.
17688         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
17689         (thread_across_edge): Likewise.
17690         * Makefile.in (tree-vrp.o): Depend upon intl.h.
17691
17692 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
17693
17694         * config/i386/i386.h (TARGET_SAHF): New define.
17695         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
17696         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
17697         (x86_sahf): New global variable.
17698         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
17699         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
17700         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
17701         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
17702         for 64-bit.
17703         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
17704         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
17705         when expanding fcomi/sahf based tests.
17706         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
17707         expanding sahf based alternative. Emit sahf based sequence when
17708         optimizing for code size.
17709         * config/i386/i386.md (x86_sahf_1): Do not disable for
17710         TARGET_64BIT, enable for TARGET_SAHF.
17711
17712 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
17713
17714         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
17715         spurious whitespace from error message.
17716
17717 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
17718
17719         PR c++/30852
17720         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
17721
17722 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
17723
17724         * c-decl.c (grokdeclarator): Disable warnings for anonymous
17725         bitfields.
17726         * tree-sra.c (instantiate_element): Propagate disabled warnings
17727         from the element itself to the created variable.
17728
17729 2007-03-07  Richard Henderson  <rth@redhat.com>
17730
17731         PR target/30848
17732         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
17733         silently fix up the stack in the case of a missing register.
17734
17735 2007-03-07  Paul Brook  <paul@codesourcery.com>
17736
17737         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
17738
17739 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
17740
17741         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
17742         New.
17743         (phase1_vrs): Use them.
17744         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
17745         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
17746         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
17747         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
17748         __gnu_Unwind_Restore_WMMXC if required.
17749         (_Unwind_VRS_Pop): Implement iWMMXt support.
17750         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
17751         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
17752         gnu_Unwind_Save_WMMXC): Define.
17753
17754 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
17755
17756         * config/vxworks.h (vxworks_override_options): Declare.
17757         (VXWORKS_OVERRIDE_OPTIONS): Use it.
17758         * config/vxworks.c: Include target.h and toplev.h.
17759         (vxworks_override_options): New function.
17760         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
17761
17762 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
17763
17764         * config/s390/s390.c (override_options): Don't emit an error when
17765         -mstack-size is used without providing -mstack-guard.
17766         (s390_emit_prologue): Choose stack_guard value automatically if not
17767         provided via command line.
17768         * doc/invoke.texi: Adjust description of -mstack-guard and
17769         -mstack-size.
17770
17771 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
17772
17773         * config/i386/i386.c (output_set_got): Add a GOT initialization
17774         sequence for VxWorks PIC.
17775         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
17776         around labels as well as symbols.  Use gotoff_operand instead
17777         of local_symbolic_operand.
17778         (legitimize_pic_address): Use gotoff_operand instead of
17779         local_symbolic_operand.  Use @GOT accesses for labels as
17780         well as symbols.
17781         (ix86_output_addr_diff_elt): Use PC-relative rather than
17782         GP-relative offsets for VxWorks PIC.
17783         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
17784         no_new_pseudos.  Check whether the returned register is op0.
17785         * config/i386/i386.md (tablejump): Use PC-relative rather than
17786         GP-relative offsets for VxWorks PIC.
17787         * config/i386/predicates.md (gotoff_operand): New predicate.
17788
17789 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17790
17791         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
17792         before defining.
17793         * config/vxworks-dummy.h: New file.
17794         * config/i386/i386.h: Include it.
17795
17796 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
17797
17798         * dwarf2out.c (is_inlined_entry_point): New
17799         (add_high_low_attributes): Emit DW_AT_entry_pc along with
17800         DW_AT_ranges if the first subblock is the entry point.
17801
17802 2007-03-06  David Daney  <ddaney@avtrex.com>
17803
17804         * doc/install.texi (mips-*-*): Change recommended binutils
17805         version.
17806
17807 2007-03-06  Anatoly Sokolov <aesok@post.ru>
17808
17809         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
17810         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
17811         devices.
17812         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
17813         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
17814
17815 2007-03-06  Jan Hubicka  <jh@suse.cz>
17816
17817         * errors.h (warning, error, fatal, internal_error): Mark as cold.
17818         * predict.c (maybe_hot_bb): Cold functions are never hot; hot
17819         functions are hot.
17820         (probably_cold_bb_p): Cold functions are cold.
17821         (probably_never_executed_bb_p): Cold functions are cold.
17822         (tree_bb_level_predictions): Predict calls to cold functions as not
17823         taken.
17824         (compute_function_frequency): Check hot/cold attributes.
17825         * function.h (function_frequency): Update comments.
17826         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
17827         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
17828         (c_common_att): Add cold and hot.
17829
17830         * doc/extend.texi (hot,cold attributes): Document.
17831
17832 2007-03-06  Andrew Haley  <aph@redhat.com>
17833
17834         * function.c (expand_function_end): Move blockage to just after we
17835         emit the label for the naked return from the function.
17836
17837 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17838
17839         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
17840         before redefining.
17841
17842 2007-03-06  Jan Hubicka  <jh@suse.cz>
17843
17844         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
17845         loaded for constant large models.  Non-large 64bit PIC can do.
17846         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
17847         * cmodel.h: Add LARGE PIC.
17848         * i386.md (UNSPEC_PLTOFF): New.
17849         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other
17850         unspecs as needed.
17851         (*call_1_rex64): Disable for large models.
17852         (*call_1_rex64_large): New.
17853         (*call_value_1_rex64): Disable for large models.
17854         (*call_value_1_rex64_large): New.
17855         (set_rip_rex4): New.
17856         (set_got_offset_rex64): New.
17857         * predicates.md (constant_call_address_operand): For large model
17858         constant calls are not possible.
17859         * i386-protos.h (construct_plt_address): Declare.
17860         * i386.c (override_options): Accept large models.
17861         (ix86_expand_prologue): Expand large PIC GOT pointer load.
17862         (legitimate_constant_p): Add new UNSPECs.
17863         (legitimate_pic_operand_p): Likewise.
17864         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
17865         (legitimize_pic_address): Do easy RIP relative way for TLS only for
17866         non-large model.
17867         (output_pic_addr_const): Add PLTOFF.
17868         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
17869         (ix86_expand_move): Legitimize pic address when in PIC mode.
17870         (construct_plt_address): New function.
17871         (ix86_expand_call): Offload the address to register and use GOT
17872         pointer for large model.
17873         * invoke.texi (mcmodel=large): Update documentation.
17874
17875 2007-03-06  Richard Henderson  <rth@redhat.com>
17876
17877         * config/i386/i386.c (x86_use_leave, x86_push_memory,
17878         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
17879         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
17880         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
17881         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
17882         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
17883         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
17884         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
17885         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
17886         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
17887         x86_partial_reg_dependency, x86_memory_mismatch_stall,
17888         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
17889         x86_sse_partial_reg_dependency, x86_sse_split_regs,
17890         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
17891         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
17892         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
17893         x86_schedule, x86_use_bt, x86_pad_returns,
17894         x86_use_xchgb): Merge into ...
17895         (ix86_tune_features): ... here.  New array.
17896         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
17897         x86_bswap): Merge into ...
17898         (ix86_arch_features): ... here.  New array.
17899         (x86_3dnow_a): Remove.
17900         (x86_accumulate_outgoing_args): Make static.
17901         (x86_arch_always_fancy_math_387): Make static.
17902         (ix86_tune_mask, ix86_arch_mask): Move ...
17903         (override_options): ... to local variables here.  Apply the
17904         appropriate mask to each element of ix86_arch_features and
17905         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
17906         as were done in the old macros.
17907         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
17908         * config/i386/i386.h (x86_use_leave, x86_push_memory,
17909         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
17910         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
17911         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
17912         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
17913         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
17914         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
17915         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
17916         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
17917         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
17918         x86_partial_reg_dependency, x86_memory_mismatch_stall,
17919         x86_accumulate_outgoing_args, x86_prologue_using_move,
17920         x86_epilogue_using_move, x86_decompose_lea,
17921         x86_arch_always_fancy_math_387, x86_shift1,
17922         x86_sse_partial_reg_dependency, x86_sse_split_regs,
17923         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
17924         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
17925         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
17926         x86_use_incdec, x86_pad_returns, x86_bswap,
17927         x86_partial_flag_reg_stall): Remove.
17928         (enum ix86_tune_indices): New.
17929         (ix86_tune_features): New.
17930         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
17931         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
17932         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
17933         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
17934         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
17935         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
17936         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
17937         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
17938         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
17939         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
17940         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
17941         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
17942         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
17943         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
17944         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
17945         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
17946         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
17947         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
17948         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
17949         TARGET_EXT_80387_CONSTANTS): Use it.
17950         (enum ix86_arch_indices): New.
17951         (ix86_arch_features): New.
17952         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
17953         TARGET_BSWAP): Use it.
17954         (ix86_tune_mask, ix86_arch_mask): Remove.
17955
17956 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
17957
17958         PR bootstrap/31020
17959         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
17960         Define using $${sysroot_headers_suffix}.
17961         * configure: Regenerate.
17962         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
17963         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
17964         defined.
17965         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
17966         * gcc.c (print_sysroot_headers_suffix): New.
17967         (option_map): Include --print-sysroot-headers-suffix.
17968         (display_help): Mention -print-sysroot-headers-suffix.
17969         (process_command): Handle -print-sysroot-headers-suffix.
17970         (do_spec_1): Append multilib directory to include-fixed path if
17971         sysroot suffixes in use.
17972         (main): Handle -print-sysroot-headers-suffix.
17973         * Makefile.in (start.encap): Don't depend on xlimits.h
17974         (xlimits.h): Remove.
17975         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
17976         limits.h for each multilib in fixinc_list.
17977         (fixinc_list, s-fixinc_list): New.
17978         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
17979         generate them for each multilib in fixinc_list.
17980         (stmp-fixproto): Use include-fixed.  Run fixproto for each
17981         multilib in fixinc_list.
17982         (mostlyclean): Don't remove xlimits.h.
17983         (clean): Remove include-fixed.
17984         (real-install-headers-tar, real-install-headers-cpio,
17985         real-install-headers-cp): Don't copy include, only include-fixed.
17986         (install-mkheaders): Depend on fixinc_list.  Don't depend on
17987         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
17988         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
17989         SYSTEM_HEADER_DIR setting in mkheaders.conf.
17990
17991 2007-03-06  Jan Hubicka  <jh@suse.cz>
17992
17993         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
17994         NANs easilly.
17995
17996 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17997
17998         * configure.ac: Allow tm_file to contain build-directory files.
17999         * configure: Regenerate.
18000         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
18001         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
18002         * config/m68k/print-sysroot-suffix.sh: New file.
18003
18004 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18005
18006         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
18007         of pic_offset_table_rtx if reload_completed.
18008         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
18009         PIC_OFFSET_TABLE_REGNUM.
18010         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
18011         return true.
18012         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
18013         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
18014
18015 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18016
18017         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
18018         functions that call eh_return.
18019
18020 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18021
18022         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
18023         functions that need a constant pool.
18024
18025 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18026
18027         PR target/28181
18028         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
18029         (m68k_preferred_reload_class): Likewise.
18030         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
18031         (SECONDARY_RELOAD_CLASS): Define.
18032         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
18033         (LIMIT_RELOAD_CLASS): Delete.
18034         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
18035         registers from storing bytes.
18036         (m68k_secondary_reload_class): New function.
18037         (m68k_preferred_reload_class): Likewise.
18038
18039 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18040
18041         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
18042         leaf functions.
18043         (m68k_expand_prologue): Likewise.
18044
18045 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18046
18047         * config/m68k/m68k-protos.h (output_sibcall): Declare.
18048         (mips_expand_epilogue): Add a bool parameter.
18049         (m68k_legitimize_sibcall_address): Declare.
18050         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
18051         (m68k_expand_epilogue): Add a parameter to select between sibling
18052         and normal epilogues.  Only generate a return for the latter.
18053         (m68k_ok_for_sibcall_p): New function.
18054         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
18055         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
18056         (sibcall_value, *sibcall_value): Likewise.
18057         (*call, *call_value): Require !SIBLING_CALL_P.
18058         (epilogue): Update call to m68k_expand_epilogue.
18059         (sibcall_epilogue): New pattern.
18060         * config/m68k/predicates.md (const_call_operand): Say that this
18061         predicate applies to sibling calls too.
18062         (sibcall_operand): New predicate.
18063
18064 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18065
18066         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
18067         alternatives as movsi_cf.
18068         (movsf_cf_hard): Add commentary.
18069
18070 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
18071             Richard Sandiford  <richard@codesourcery.com>
18072
18073         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
18074         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
18075         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
18076         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
18077         as being live on exit from an interrupt function.
18078         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
18079         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
18080         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
18081         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
18082         (m68k_interrupt_function_p): Globalize.
18083         (m68k_compute_frame_layout): Remove reverse mask code.
18084         (m68k_emit_movem, m68k_set_frame_related): New functions.
18085         (m68k_output_function_prologue): Delete in favor of...
18086         (m68k_expand_prologue): ...this new function.
18087         (m68k_output_function_epilogue): Delete in favor of...
18088         (m68k_expand_epilogue): ...this new function.
18089         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
18090         functions.
18091         (print_operand): Handle %?.
18092         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
18093         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
18094         (prologue, epilogue): New patterns.
18095         (return): Turn into a define_expand.
18096         (*return): New pattern, derived from old "return" pattern.  Use rte
18097         rather than rts for interrupt functions.  Only use rtd if the pop
18098         count is nonzero.
18099         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
18100         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
18101         (link, *link, unlink, *unlink, load_got): Likewise.
18102
18103 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18104
18105         PR target/23482
18106         PR target/17114
18107         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
18108         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
18109         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
18110         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
18111         and m68k_matches_u_p.
18112         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
18113         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
18114         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
18115         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
18116         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
18117         (REG_STRICT_P): New macro.
18118         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
18119         PCREL_GENERAL_OPERAND_OK.
18120         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
18121         m68k_legitimate_base_reg_p.
18122         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
18123         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
18124         (PIC_CASE_VECTOR_ADDRESS): Update comment.
18125         * config/m68k/m68k.c (m68k_address): New structure.
18126         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
18127         (m68k_decompose_index, m68k_legitimate_constant_address_p)
18128         (m68k_jump_table_ref_p, m68k_decompose_address)
18129         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
18130         (m68k_matches_u_p): New functions.
18131         (print_operand_address): Rewrite to use m68k_decompose_index.
18132
18133 2007-03-05  David Taylor  <dtaylor@emc.com>
18134
18135         * gcc.c: Correct copyright date in --version output.
18136
18137 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18138
18139         * pa.md: In unamed move patterns, disparge copies between general
18140         and floating point registers using '?' modifier.  Don't include 'f'
18141         constraint for register preferences in DImode, SImode, HImode and
18142         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
18143         Remove constraints for copies between general and floating registers
18144         in soft-float DFmode pattern.
18145         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
18146         floating register.
18147         (movsf): Likewise.
18148
18149 2007-03-05  Mike Stump  <mrs@apple.com>
18150
18151         * c-common.c (targetcm): Add.
18152         * c-opts.c (c_common_handle_option): Handle language specific
18153         target options.
18154         * opts.c (handle_option): Verify language for target options, if
18155         any are given.
18156         * opth-gen.awk: Add CL_LANG_ALL.
18157         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
18158         (TARGETCM_INITIALIZER): Add.
18159         * target.h (struct gcc_targetcm): Add.
18160         (targetcm): Add.
18161         * targhooks.c (default_handle_c_option): Add.
18162         * targhooks.h (default_handle_c_option): Add.
18163         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
18164
18165         * config/darwin.opt (iframework): Add.
18166         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
18167         * config/darwin-c.c (handle_c_option): Add.
18168         (TARGET_HANDLE_C_OPTION): Add.
18169         (targetcm): Add.
18170         * doc/invoke.texi (Darwin Options): Add -iframework.
18171
18172 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18173
18174         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
18175         conversion.
18176
18177 2007-03-05  Ian Lance Taylor  <iant@google.com>
18178
18179         * c.opt (fgnu89-inline): New option.
18180         * c-opts.c (c_common_post_options): Set default value for
18181         flag_gnu89_inline.
18182         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
18183         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
18184         inline functions.
18185         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
18186         (grokdeclarator, start_function): Likewise.
18187         * c-cppbuiltin.c (c_cpp_builtins): Define either
18188         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
18189         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
18190         (C Dialect Options): Document -fgnu89-inline.
18191         * doc/extend.texi (Function Attributes): Explain what the
18192         gnu_inline attribute does.
18193         * doc/cpp.texi (Common Predefined Macros): Document
18194         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
18195
18196 2007-03-05  Ian Lance Taylor  <iant@google.com>
18197
18198         PR tree-optimization/31034
18199         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
18200         half-range if the other side is an overflow infinity.
18201
18202 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
18203
18204         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
18205         (bfin*-linux-uclibc*): New configuration.
18206         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
18207         defining.
18208         * config/bfin/linux.h: New file.
18209         * config/bfin/libgcc-bfin.ver: New file.
18210         * config/bfin/t-bfin-uclinux: New file.
18211         * config/bfin/t-bfin-linux: New file.
18212         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
18213         (TARGET_OS_CPP_BUILTINS): New macro.
18214
18215 2007-03-05  Richard Guenther  <rguenther@suse.de>
18216
18217         * fold-const.c (fold_binary): Remove duplicate folding
18218         of comparison of non-null ADDR_EXPR against null.
18219
18220 2007-03-05  Richard Guenther  <rguenther@suse.de>
18221             Dorit Nuzman  <dorit@il.ibm.com>
18222
18223         PR tree-optimization/26420
18224         * tree-vectorizer.c (vectorize_loops): Bail out early if there
18225         are no loops in the function.  Only print the number of
18226         vectorized loops if it is greater than zero or we are supposed
18227         to print information about unvectorized loops.
18228
18229 2007-03-05  Revital Eres  <eres@il.ibm.com>
18230
18231         * gcc.dg/var-expand1.c: New test.
18232         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
18233         when an accumulator is expanded.
18234
18235 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18236
18237         PR other/30465
18238         * c-common.c (convert_and_check): Don't give warnings for
18239         conversion if 'expr' already overflowed.
18240
18241 2007-03-04  Roger Sayle  <roger@eyesopen.com>
18242
18243         PR middle-end/30744
18244         * fold-const.c (fold_comparison): Enforce type consistency when
18245         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
18246
18247 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
18248
18249         * tree-ssa-address.c (create_mem_ref): Do not put an expression
18250         containing a cast to the base of TARGET_MEM_REF.
18251
18252 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
18253
18254         * tree.c (tree_contains_struct_check_failed): Remove spurious
18255         whitespace from error message.
18256
18257 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
18258
18259         PR target/30406
18260         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
18261         instead of precision.
18262
18263 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
18264             Nathan Sidwell  <nathan@codesourcery.com>
18265
18266         * emit-rtl.c (find_auto_inc): New.
18267         (try_split): recreate REG_INC notes,
18268         Use regular for loops rather than whiles.
18269
18270 2007-03-03  Andreas Schwab  <schwab@suse.de>
18271
18272         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
18273         * configure: Regenerate.
18274
18275 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18276
18277         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
18278         flag_rounding_math, not flag_unsafe_math_optimizations.
18279
18280         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
18281         fold_build2.
18282         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
18283         alpha_fold_vector_minmax): Likewise.
18284         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
18285         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
18286
18287 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
18288
18289         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
18290         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
18291         if the lhs has side-effects.
18292         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
18293
18294 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
18295
18296         * config/i386/i386.h (TUNEMASK): Remove define.
18297         (ARCHMASK): Remove define.
18298         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
18299          Use ix86_arch_mask variable instead of ARCHMASK.
18300         * config/i386/i386.c (override_options): Ditto.
18301         (standard_80387_constant_p): Ditto.
18302
18303 2007-03-02  Ian Lance Taylor  <iant@google.com>
18304
18305         Used signed infinities in VRP.
18306         * tree-vrp.c (uses_overflow_infinity): New static function.
18307         (supports_overflow_infinity): New static function.
18308         (make_overflow_infinity): New static function.
18309         (negative_overflow_infinity): New static function.
18310         (positive_overflow_infinity): New static function.
18311         (is_negative_overflow_infinity): New static function.
18312         (is_positive_overflow_infinity): New static function.
18313         (is_overflow_infinity): New static function.
18314         (overflow_infinity_range_p): New static function.
18315         (compare_values_warnv): New function split out of compare_values.
18316         (compare_value): Call it.
18317         (set_value_range_to_nonnegative): Add overflow_infinity
18318         parameter.  Change caller.
18319         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
18320         Change callers.
18321         (vrp_expr_computes_nonzero): Likewise.
18322         (compare_ranges, compare_range_with_value): Likewise.
18323         (compare_name_with_value, compare_names): Likewise.
18324         (vrp_evaluate_conditional): Likewise.
18325         (set_value_range): Handle infinity
18326         (vrp_operand_equal_p, operand_less_p): Likewise.
18327         (extract_range_from_assert): Likewise.
18328         (vrp_int_const_binop): Likewise.
18329         (extract_range_from_binary_expr): Likewise.
18330         (extract_range_from_unary_expr): Likewise.
18331         (extract_range_from_comparison): Likewise.
18332         (extract_range_from_expr): Likewise.
18333         (dump_value_range): Likewise.
18334         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
18335         (test_for_singularity): Likewise.
18336         (vrp_int_const_binop): Remove inline qualifier.
18337         (adjust_range_with_scev): Add comment.
18338         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
18339
18340 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
18341
18342         * tree-ssa-structalias.c (could_have_pointers): Tidy.
18343         (get_constraint_for): Likewise.
18344         (do_structure_copy): Likewise.
18345         (find_func_aliases): Fix references to MODIFY_EXPR.
18346         (intra_create_variable_infos): Tidy.
18347         * tree-ssa-operands.c (add_virtual_operand): Add argument
18348         IS_CALL_SITE.
18349         When adding members of alias sets, if IS_CALL_SITE is true and
18350         the symbol is not call-clobbered, skip it.
18351         Adjust all callers.
18352
18353 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
18354
18355         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
18356         entry by means of emit_insn_at_entry.
18357
18358 2007-03-02  Richard Henderson  <rth@redhat.com>
18359
18360         * expr.h (promoted_input_arg): Remove decl.
18361         * function.c (promoted_input_arg): Merge into ...
18362         * combine.c (setup_incoming_promotions): ... only caller.
18363         Rearrange to avoid double loop.
18364
18365 2007-03-02  Ben Elliston  <bje@au.ibm.com>
18366             Peter Bergner  <bergner@vnet.ibm.com>
18367             Janis Johnson  <janis187@us.ibm.com>
18368
18369         * config/rs6000/dfp.md: New file.
18370         * config/rs6000/rs6000.md: Include dfp.md.
18371         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
18372         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
18373         and TDmode decimal float modes in FP registers.
18374         (num_insns_constant): Likewise.
18375         (rs6000_legitimate_offset_address_p): Likewise.
18376         (rs6000_legitimize_address): Likewise.
18377         (rs6000_legitimize_reload_address): Likewise.
18378         (rs6000_legitimate_address): Likewise.
18379         (rs6000_emit_move): Likewise.
18380         (function_arg_boundary): Likewise.
18381         (function_arg_advance): Likewise.
18382         (rs6000_darwin64_record_arg_recurse): Likewise.
18383         (function_arg): Likewise.
18384         (rs6000_gimplify_va_arg): Likewise.
18385         (rs6000_split_multireg_move): Likewise.
18386         (rs6000_output_function_epilogue): Likewise.
18387         (rs6000_output_function_epilogue): Likewise.
18388         (rs6000_register_move_cost): Likewise.
18389         (rs6000_function_value): Likewise.
18390         (rs6000_libcall_value): Likewise.
18391
18392 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
18393
18394         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
18395
18396 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
18397
18398         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
18399         Use $MULTIDIR to choose between the kernel and RTP headers,
18400         and use $WIND_BASE and $WIND_USR to locate them.
18401
18402 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
18403
18404         * config/i386/i386.c (override_options): Put initialization of
18405         ix86_tune_mask and ix86_arch_mask to the correct place.
18406
18407 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
18408             Michael Meissner  <michael.meissner@amd.com>
18409
18410         PR target/31019
18411         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
18412         (ARCHMASK): Define.
18413         (TARGET_CMOVE): Use ARCHMASK.
18414         (TARGET_CMPXCHG): Ditto.
18415         (TARGET_CMPXCHG8B): Ditto.
18416         (TARGET_XADD): Ditto.
18417         (TARGET_BSWAP): Ditto.
18418         * config/i386/i386.c (ix86_tune_mask): New global variable.
18419         (ix86_arch_mask): Ditto.
18420         (override_options): Initialize ix86_tune_mask and
18421         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
18422         target_flags.
18423
18424 2007-03-02  Ben Elliston  <bje@au.ibm.com>
18425
18426         PR 30992
18427         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
18428
18429 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
18430
18431         * target.h (init_dwarf_reg_sizes_extra): New target hook.
18432         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
18433         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
18434         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
18435         hook.
18436         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
18437         rs6000_init_dwarf_reg_sizes_extra): New.
18438         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
18439         SPE register high parts.
18440
18441 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
18442
18443         * Makefile.in: Add install-pdf target as
18444         copied from automake v1.10 rules.
18445         * configure.ac: Add install-pdf to target list.
18446         * configure: Regenerate.
18447
18448 2007-03-01  Paul Brook  <paul@codesourcery.com>
18449
18450         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
18451         modes to LDRD for DImode.
18452         (output_move_double): Fixup out of range ldrd/strd.
18453         (vfp_secondary_reload_class): Rename...
18454         (coproc_secondary_reload_class): ... to this.  Add wb argument.
18455         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
18456         coproc_secondary_reload_class for CLASS_IWMMXT.
18457         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
18458         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
18459
18460 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
18461
18462         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the
18463         unroll factor by the estimated number of iterations.
18464         (loop_prefetch_arrays): Do not prefetch in loops that iterate less
18465         than prefetch latency.
18466
18467         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
18468         decode_caches_intel, detect_caches_intel): New functions.
18469         (host_detect_local_cpu): Use detect_caches_amd and
18470         detect_caches_intel.
18471
18472 2007-03-01  Richard Henderson  <rth@redhat.com>
18473
18474         * expr.c (emit_move_complex_push): Export.
18475         (emit_move_complex_parts): Split out from ...
18476         (emit_move_complex): ... here.
18477         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
18478         * config/i386/i386.md (movcdi): New.
18479
18480 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
18481
18482         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
18483         size of mode1 to check for tieable modes in MMX case.
18484
18485 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
18486
18487         * Makefile.in (rtlanal.o): Depend on tree.h.
18488         * rtl.h (offset_within_section_p, split_const): Declare.
18489         * rtlanal.c: Include tree.h.
18490         (offset_within_block_p): New function, taken from
18491         mips_offset_within_object_p.
18492         (split_const): New function, taken from mips_split_const.
18493         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
18494         Declare.
18495         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
18496         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
18497         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
18498         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
18499         (m68k_illegitimate_symbolic_constant_p): New function.
18500         * config/m68k/m68k.md (movsi): Remove misleading predicates.
18501         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
18502         symbolic constant that might be outside the symbol's section,
18503         move the symbol first and then add the offset.
18504         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
18505         Override.
18506         * config/mips/mips.c (mips_split_const): Delete.
18507         (mips_offset_within_object_p): Delete.
18508         (mips_symbolic_constant_p): Use offset_within_section_p and
18509         split_const instead of mips_offset_within_object_p and
18510         mips_split_const.
18511         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
18512         (mips_legitimize_const_move, print_operand_reloc)
18513         (mips_dangerous_for_la25_p): Use split_const instead of
18514         mips_split_const.
18515
18516 2007-02-28  Eric Christopher  <echristo@apple.com>
18517
18518         * Makefile.in (install-include-dir): Don't rm -rf include.
18519
18520 2007-02-28  Richard Guenther  <rguenther@suse.de>
18521
18522         PR middle-end/30364
18523         * fold-const.c (fold_binary): Do not associate expressions
18524         with more than one variable for integer types that do not wrap.
18525
18526 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
18527
18528         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
18529         Delete, and replace with...
18530         (fold_builtin_call_array): This.  Update callers to use it.
18531         * fold-const.c (fold_build_call_list): Delete, and replace with...
18532         (fold_build_call_array): This.
18533         (fold_build_call_list_initializer): Delete, and replace with...
18534         (fold_build_call_array_initializer): This.
18535         * tree.h: Update declarations to reflect above changes.
18536
18537         * c-typeck.c (build_function_call): Store converted arguments
18538         in a stack-allocated array instead of building a list.
18539         (convert_arguments): Store arguments in the array passed in as an
18540         argument, and return the actual number of arguments.
18541         * c-format.c: (check_function_format): Pass arguments in an
18542         array instead of a list.
18543         * c-common.c (check_function_nonnull): Likewise.
18544         (check_function_sentinel): Likewise.
18545         (check_function_arguments): Likewise.
18546         * c-common.h: Update declarations to reflect above changes.
18547
18548 2007-02-28  Jan Hubicka  <jh@suse.cz>
18549
18550         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
18551         PRED_NEGATIVE_RETURN): Update outcomes.
18552
18553 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
18554
18555         * calls.c (emit_library_call_value_1): Handle partial registers
18556         correctly when building up CALL_INSN_FUNCTION_USAGE.
18557
18558 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18559
18560         * pa/predicates.md (move_src_operand): Allow zero for mode.
18561         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
18562         move pattern.
18563
18564 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
18565
18566         PR target/30970
18567         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
18568         *movv2df_internal): Enable pattern only for valid operand
18569         combinations.
18570         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
18571         tie only 128bit modes. For MMX registers, tie only 64bit modes.
18572
18573 2007-02-27  Mike Stump  <mrs@apple.com>
18574
18575         * config/darwin-crt3.c: Avoid compilation when compiling for a
18576         kext multilib.
18577
18578 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
18579
18580         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
18581         FIXED_INCLUDE_DIR.
18582         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
18583         for fixed headers and limits.h.
18584         (install-include-dir, install-headers-tar, install-headers-cpio,
18585         install-headers-cp, real-install-headers-tar,
18586         real-install-headers-cpio, real-install-headers-cp): Handle
18587         include-fixed as well as include.
18588         (install-mkheaders): Don't install files that go only in include
18589         not include-fixed.
18590         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
18591         from GCC_INCLUDE_DIR.
18592         * gcc.c (process_command): Remove special -BstageN/ handling.
18593         (do_spec_1): Add include-fixed directories.
18594
18595 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
18596
18597         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
18598         _smulsi3_highpart.
18599         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
18600         New functions.
18601         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
18602         patterns.
18603
18604 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
18605
18606         * c-common.c (get_priority): Add check for
18607         SUPPORTS_INIT_PRIORITY.
18608
18609 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
18610
18611         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
18612
18613         * config/bfin/bfin.c: Include "cfglayout.h".
18614         (MAX_LSETUP_DISTANCE): New macro.
18615         (struct loop_info): New members incoming, incoming_src and
18616         incoming_dest.  Delete member predecessor.
18617         (length_for_loop): New function.
18618         (bfin_optimize_loop): Handle more different loop structures.
18619         (bfin_discover_loop): Rework detection of predecessor blocks by
18620         examining incoming edges.
18621         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
18622         bfin_reorg_loops.
18623         (bfin_reorder_loops): New function.
18624         (bfin_reorg_loops): Use these three new functions.
18625
18626         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
18627         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
18628         (CONSTRAINT_LEN): Add entry for 'q'.
18629         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
18630         Add 'q' constraints.
18631         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
18632         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
18633
18634         * config/bfin/bfin.md (add_with_carry): New pattern.
18635         (s_or_u, su_optab, su_modifier): New code macros/attrs.
18636         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
18637         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
18638         support unsigned multiplies too.  Removed incorrect commutativity from
18639         operand 1 constraint where appropriate.
18640         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
18641         patterns.
18642         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
18643         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
18644         New patterns.
18645         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
18646         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
18647         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
18648         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
18649         usmulhisi_hh_huh): New patterns.
18650
18651         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
18652         lshifthi3): Fix output template to use half reg for operand 2.
18653
18654         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
18655         instead of R2.
18656
18657         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
18658
18659 2007-02-27  Andreas Schwab  <schwab@suse.de>
18660
18661         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
18662
18663 2007-02-27  Jan Hubicka  <jh@suse.cz>
18664
18665         * predict.c (last_basic_block_p): Remove.
18666         (tree_estimate_probability): Update return heuristic for commonized
18667         return blocks.
18668
18669 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
18670
18671         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
18672
18673 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
18674
18675         * doc/include/gcc-common.texi (versionsubtitle): New macro.
18676         * doc/cpp.texi: Standardize title page.
18677         * doc/cppinternals.texi: Likewise.
18678         * doc/gcc.texi: Standardize title page, remove version number
18679         from copyright page.
18680         * doc/gccint.texi: Likewise.
18681         * doc/install.texi: Standardize title page, add table of
18682         contents.
18683
18684 2007-02-26  Jan Hubicka  <jh@suse.cz>
18685
18686         * predict.def: Set outcomes according to more recent results.
18687         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
18688         Remove dead predictors.
18689         * predict.c (return_prediction): Fix pasto.
18690
18691 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
18692
18693         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
18694         change; avoid a memory leak when returning early.
18695
18696 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
18697
18698         * c-decl.c (static_ctors): Move to c-common.c.
18699         (static_dtors): Likewise.
18700         (finish_function): Use c_record_cdtor_fn.
18701         (build_cdtor): Move to c-common.c.
18702         (c_write_global_declarations): Use c_build_cdtor_fns.
18703         * c-common.h (static_ctors): Declare.
18704         (static_dtors): Likewise.
18705         (c_record_cdtor_fn): Likewise.
18706         (c_build_cdtor_fns): Likewise.
18707         * c-common.c (static_ctors): New variable.
18708         (static_dtors): Likewise.
18709         (c_record_cdtor_fn): New function.
18710         (build_cdtor): Move from c-decl.c
18711         (c_build_cdtor_fns): New function.
18712
18713         * output.h (assemble_addr_to_section): Declare.
18714         (get_cdtor_priority_section): Likewise.
18715         * varasm.c (assemble_addr_to_section): New function.
18716         (get_cdtor_priority_section): Likewise.
18717         (default_named_section_asm_out_destructor): Use them.
18718         (destor_dtor_section_asm_out_destructor): Likewise.
18719         (default_named_section_asm_out_constructor): Likewise.
18720         (default_ctor_section_asm_out_constructor): Likewise.
18721         * config.gcc (*-*-vxworks*): Include vxworks.o.
18722         * config/t-vxworks (vxworks.o): New target.
18723         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
18724         (TARGET_ASM_CONSTRUCTOR): Define.
18725         (TARGET_ASM_DESTRUCTOR): Likewise.
18726         (vxworks_asm_out_constructor): Declare.
18727         (vxworks_asm_out_destructor): Likewise.
18728
18729         * c-common.c (get_priority): Check that we have not just an
18730         INTEGER_CST, but an integer constant with integeral type.
18731
18732 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
18733
18734         PR tree-optimization/30938
18735         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
18736         use &dt[nargs-1] instead of &dt[nargs] in the call to
18737         vect_is_simple_use().
18738
18739 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
18740
18741         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
18742         from register elimination as PRE_MODIFY / POST_MODIFY increments.
18743         Do not attempt to handle MEM inside auto-inc expressions.
18744         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
18745         of a register modified by an auto-inc expression.  However, do handle
18746         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
18747         (elimination_effects): Prohibit elimination of a register modified
18748         by an auto-inc expression.  Disable register elimination rules whose
18749         target register is modified by an auto-inc expression with variable
18750         increment.
18751
18752 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
18753
18754         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
18755         off-by-one error.
18756         (array_at_struct_end_p): New function.
18757         (idx_infer_loop_bounds): Use it.
18758         (estimate_numbers_of_iterations_loop): Export.
18759         * predict.c (predict_loops): Use estimated_loop_iterations_int.
18760         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
18761         (tree_estimate_probability): Call record_loop_exits.
18762         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
18763         (estimated_loop_iterations, estimated_loop_iterations_int,
18764         estimated_loop_iterations_tree): New functions.
18765         (analyze_siv_subscript_cst_affine,
18766         compute_overlap_steps_for_affine_1_2,
18767         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
18768         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
18769         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
18770         (PRED_LOOP_ITERATIONS_GUESSED): New.
18771         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
18772         * cfgloop.h (estimate_numbers_of_iterations_loop,
18773         estimated_loop_iterations_int): Declare.
18774
18775 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
18776
18777         * doc/extend.texi: Document optional priority argument to
18778         constructors and destructors.
18779         * tree.c (init_priority_for_decl): Adjust GTY markers.
18780         (init_ttree): Use priority-info hash functions for
18781         init_priority_for_decl.
18782         (tree_map_eq): Rename to ...
18783         (tree_map_base_eq): ... this.
18784         (tree_map_marked_p): Rename to ...
18785         (tree_map_base_marked_p): ... this.
18786         (tree_map_base_hash): New function.
18787         (decl_init_priority_lookup): Rework.
18788         (decl_fini_priority_lookup): New function.
18789         (decl_priority_info): New function.
18790         (decl_init_priority_insert): Use it.
18791         (decl_fini_priority_insert): Likewise.
18792         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
18793         hierarchy.
18794         (decl_restrict_base_insert): Likewise.
18795         (decl_debug_expr_insert): Likewise.
18796         (decl_value_expr_lookup): Likewise.
18797         (decl_value_expr_insert): Likewise.
18798         * tree.h (priority_type): New type.
18799         (decl_init_priority_lookup): Use priority_type.
18800         (decl_fini_priority_lookup): New function.
18801         (decl_init_priority_insert): Use priority_type.
18802         (decl_fini_priority_insert): New function.
18803         (DECL_HAS_INIT_PRIORITY): Tweak comments.
18804         (DECL_INIT_PRIORITY): Likewise.
18805         (SET_DECL_INIT_PRIORITY): Add comment.
18806         (DECL_FINI_PRIORITY): New macro.
18807         (SET_DECL_FINI_PRIORITY): Likewise.
18808         (DEFAULT_INIT_PRIORITY): Document.
18809         (MAX_INIT_PRIORITY): Likewise.
18810         (MAX_RESERVED_INIT_PRIORITY): Likewise.
18811         (tree_map_base): New type.
18812         (tree_map_base_eq): New function.
18813         (tree_map_base_hash): Likewise.
18814         (tree_map_base_marked_p): Likewise.
18815         (tree_map): Inherit from tree_map_base.
18816         (tree_map_eq): Make it a macro.
18817         (tree_map_marked_p): Likewise.
18818         (tree_int_map): Inherit from tree_map_base.
18819         (tree_int_map_eq): Make it a macro.
18820         (tree_int_map_hash): Likewise.
18821         (tree_int_map_marked_p): Likewise.
18822         (tree_priority_map): New type.
18823         (tree_priority_map_eq): New macro.
18824         (tree_priority_map_hash): Likewise.
18825         (tree_priority_map_marked_p): Likewise.
18826         * varasm.c (emults_decl): Adjust for refactoring of tree_map
18827         hierarchy.
18828         (emutls_common_1): Likewise.
18829         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
18830         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
18831         of tree_map hierarchy.
18832         * tree-cfg.c (move_stmt_r): Likewise.
18833         (new_label_mapper): Likewise.
18834         * c-tree.h (c_expand_body): Move to ...
18835         * c-common.h (c_expand_body): ... here.
18836         * c-decl.c (c_expand_body): Move to ...
18837         * c-common.c (c_expand_body): ... here.
18838         (c_common_attribute_table): Allow 1 argument for the constructor
18839         and destructor attributes.
18840         (get_priority): New function.
18841         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
18842         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
18843
18844 2007-02-24  Jan Hubicka  <jh@suse.cz>
18845
18846         PR middle-end/30509
18847         * tree-inline.c (copy_bb): Produce exact copy of EH info when
18848         copying for inlining.
18849
18850 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
18851             Jan Hubicka  <jh@suse.cz>
18852
18853         PR target/30778
18854         * i386.c (counter_mode): New function.
18855         (expand_set_or_movmem_via_loop): Use it.
18856         (expand_movmem_epilogue): Likewise; fix pasto.
18857         (ix86_expand_movmem): Do emit guard even for constant counts.
18858         (ix86_expand_setmem): Likewise.
18859
18860 2007-02-25  Nick Clifton  <nickc@redhat.com>
18861
18862         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
18863         (JUMP_TABLES_IN_TEXT_SECTION): Define.
18864
18865 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
18866
18867         PR target/30770
18868         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
18869         count argument with 0x10, not with 0x16.
18870         (expand_setmem_epilogue): Ditto.
18871
18872 2007-02-24  Mike Stump  <mrs@apple.com>
18873
18874         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
18875         symbols.
18876
18877 2007-02-24  Richard Guenther  <rguenther@suse.de>
18878
18879         PR middle-end/30951
18880         * fold-const.c (fold_binary): Fold x +- CST op x for
18881         EQ_EXPR and NE_EXPR.
18882
18883 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18884
18885         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
18886
18887 2007-02-24  Jan Hubicka  <jh@suse.cz>
18888
18889         * cgraphunit.c (decide_is_function_needed): Honor
18890         -fkeep-inline-functions.
18891
18892 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18893
18894         * builtins.c (fold_builtin_modf): New.
18895         (fold_builtin_2): Use it.
18896
18897 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
18898
18899         * loop-iv.c (implies_p): Detect additional cases where A implies B.
18900         (determine_max_iter): Take additional LOOP arg; all callers changed.
18901         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
18902         one using simplifications.
18903         (simplify_using_initial_values): Return if the expression becomes
18904         invalid due to altered regs.
18905
18906 2007-02-23  DJ Delorie  <dj@redhat.com>
18907
18908         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
18909
18910 2007-02-23  Mike Stump  <mrs@apple.com>
18911
18912         * tlink.c (scan_linker_output): Parse linker messages from
18913         darwin9's linker better.
18914
18915 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
18916
18917         PR debug/29614
18918         * varpool.c (varpool_assemble_pending_decls):  Set
18919         varpool_last_needed_node to null.
18920
18921 2007-02-23  DJ Delorie  <dj@redhat.com>
18922
18923         * config/i386/i386.c (ix86_data_alignment): Don't specify an
18924         alignment bigger than the object file can handle.
18925
18926 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
18927
18928         PR target/30825
18929         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
18930         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
18931         (*movsf_1): Penalize MMX moves.
18932
18933 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
18934
18935         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
18936         2^32-1 or more times unless flag_unsafe_loop_optimizations.
18937
18938         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
18939
18940 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18941
18942         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
18943         (fold_builtin_1): Use them.
18944         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
18945         BUILT_IN_SIGNIFICAND.
18946
18947 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
18948
18949         * config/i386/i386.c (bdesc_1arg): Initialize
18950         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
18951         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
18952         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
18953         and IX86_BUILTIN_MOVSLDUP.
18954
18955 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
18956
18957         PR rtl-optimization/30841
18958         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
18959
18960 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18961
18962         * builtins.c (fold_builtin_frexp): New.
18963         (fold_builtin_2): Use it.
18964
18965 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
18966
18967         * doc/invoke.texi (Spec Files): Document getenv spec function.
18968
18969         * gcc.c (getenv_spec_function): New function.
18970         (static_spec_functions): Add it.
18971         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
18972         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
18973         header files.
18974
18975 2007-02-22  Michael Matz  <matz@suse.de
18976
18977         PR c++/29433
18978         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
18979         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
18980
18981 2007-02-22  Ian Lance Taylor  <iant@google.com>
18982
18983         PR debug/30898
18984         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
18985         (mem_loc_descriptor): Call it.
18986
18987 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
18988             Ira Rosen  <irar@il.ibm.com>
18989
18990         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
18991
18992 2007-02-22  Ira Rosen  <irar@il.ibm.com>
18993
18994         PR tree-optimization/30843
18995         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
18996         stores only after all the group is vectorized.
18997
18998 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
18999
19000         PR tree-optimization/30858
19001         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
19002         in the reduction cycle have a single use in the loop.
19003         * tree-vectorizer.h (relevant): Add documentation.
19004
19005 2007-02-20  Mike Stump  <mrs@apple.com>
19006
19007         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
19008         * configure: Regenerate.
19009
19010 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
19011
19012         Change the defaults of some parameters and options.
19013         * config/spu/spu-protos.h (spu_optimization_options): Declare.
19014         * config/spu/spu.c (spu_optimization_options): Add.
19015         (spu_override_options): Change params in spu_optimization_options.
19016         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
19017
19018         Register 127 is only 16 byte aligned when used as a frame pointer.
19019         * config/spu/spu-protos.h (spu_init_expanders): Declare.
19020         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
19021         HARD_FRAME_POINTER_REGNUM.
19022         (spu_legitimate_address):  Use regno_aligned_for_reload.
19023         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
19024         aligned when frame_pointer_needed is true.
19025         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
19026         to 8 bits.
19027         * config/spu/spu.h (INIT_EXPANDERS): Define.
19028
19029         Make sure shift and rotate instructions have valid immediate operands.
19030         * config/spu/predicates.md (spu_shift_operand): Remove.
19031         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
19032         * config/spu/constraints.md (W, O): Extend range.
19033         * config/spu/spu.md (umask, nmask): Define.
19034         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
19035         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
19036         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
19037         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
19038         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
19039         (lshr<mode>3_reg):  Fix rtl description.
19040
19041         Make sure mulhisi immediate operands are valid.
19042         * config/spu/predicates.md (imm_K_operand): Add.
19043         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
19044
19045         Generate constants using fsmbi and andi.
19046         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
19047         (print_operand, spu_split_immediate, classify_immediate,
19048         fsmbi_const_p): Handle IC_FSMBI2.
19049
19050         Correctly handle a CONST_VECTOR containing symbols.
19051         * config/spu/spu.c (print_operand): Handle HIGH correctly.
19052         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
19053         (immediate_load_p): Allow symbols that use 2 instructions to create.
19054         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
19055         with symbols when flag_pic is set.
19056         (const_vector_immediate_p): New.
19057         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
19058         accept a CONST_VECTOR with symbols.
19059         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
19060         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
19061         correctly.
19062         * config/spu/spu.md (high, low): Delete.
19063         (low_<mode>): Define.
19064
19065         Remove INTRmode and INTR_REGNUM, which didn't work.
19066         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
19067         of INTR_REGNUM.
19068         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
19069         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
19070         peephole2 pattern): Don't use INTR or 131.
19071         (movintrcc): Delete.
19072         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
19073         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
19074         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
19075         (UNSPEC_SET_INTR): Add.
19076         * config/spu/spu-modes.def (INTR): Remove.
19077
19078         More accurate warnings about run-time relocations.
19079         * config/spu/spu.c (reloc_diagnostic): Test in_section.
19080
19081         Correctly warn about immediate arguments to specific intrinsics.
19082         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
19083         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
19084         the instruction predicate.
19085
19086         Fix tree check errors with latest update.
19087         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
19088         CALL_EXPR_ARG.
19089         (spu_expand_builtin): Use CALL_EXPR_FN.
19090
19091         Add missing specific intrinsics.
19092         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
19093         si_bislede.
19094         * config/spu/spu_internals.h: Ditto.
19095
19096         Fix incorrect operand modifiers.
19097         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
19098         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
19099
19100         Optimize one case of zero_extend of a vec_select.
19101         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
19102
19103         Accept any immediate for hbr.
19104         * config/spu/spu.md (hbr):  Change s constraints to i.
19105
19106 2007-02-21  Paul Brook  <paul@codesourcery.com>
19107
19108         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
19109         condexec_count when skipping USE and CLOBBER.
19110
19111 2007-02-21  Nick Clifton  <nickc@redhat.com>
19112
19113         * common.opt (Warray-bounds): Add Warning attribute.
19114         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
19115         Likewise.
19116         (fsized-zeroes): Add Optimization attribute.
19117         (fsplit-wide-types, ftree-scev-cprop): Likewise.
19118         * c.opt (Wc++0x-compat): Add Warning attribute.
19119
19120 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
19121
19122         PR middle-end/30761
19123         * reload1.c (eliminate_regs_in_insn): In the single_set special
19124         case, attempt to re-recognize the insn before falling back to
19125         having reload fix it up.
19126
19127 2007-02-20  Eric Christopher  <echristo@gmail.com>
19128
19129         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
19130         Rewrite accordingly.
19131         (frv_read_iacc_argument): Ditto.
19132         (frv_expand_set_builtin): Take a call instead of arglist, update for
19133         above changes.
19134         (frv_expand_unop_builtin): Ditto.
19135         (frv_expand_binop_builtin): Ditto.
19136         (frv_expand_cut_builtin): Ditto.
19137         (frv_expand_binopimm_builtin): Ditto.
19138         (frv_expand_voidbinop_builtin): Ditto.
19139         (frv_expand_int_void2arg): Ditto.
19140         (frv_expand_prefetches): Ditto.
19141         (frv_expand_voidtriop_builtin): Ditto.
19142         (frv_expand_voidaccop_builtin): Ditto.
19143         (frv_expand_load_builtin): Ditto.
19144         (frv_expand_store_builtin): Ditto.
19145         (frv_expand_mdpackh_builtin): Ditto.
19146         (frv_expand_mclracc_builtin): Ditto.
19147         (frv_expand_mrdacc_builtin): Ditto.
19148         (frv_expand_mwtacc_builtin): Ditto.
19149         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
19150         calls for above.
19151
19152 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
19153
19154         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
19155         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
19156         cmpb instruction.
19157         (HAVE_GAS_DFP): Check for assembler support of decimal floating
19158         point instructions.
19159         * configure: Regenerate.
19160         * config.in: Regenerate.
19161         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
19162         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
19163         masks to power6 and power6x and to POWERPC_MASKS.
19164         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
19165         _ARCH_PWR6.
19166         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
19167         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
19168         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
19169         Access PROTOTYPE as variable, not mask.
19170
19171 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
19172
19173         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
19174         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
19175         * combine.c (adjust_for_new_dest): Use it.
19176         * postreload.c (reload_combine): Likewise.
19177
19178 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
19179
19180         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
19181         notes on an insn with multiple sets, even if single_set returns
19182         non-NULL for that insn.
19183
19184 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19185
19186         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
19187         scalbn and scalbln.
19188
19189 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
19190
19191         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
19192         if user didn't pass it.
19193         * config/i386/darwin.h (CC1_SPEC): Likewise.
19194         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
19195         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
19196         -mmacosx-version-min.
19197
19198 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19199             Uros Bizjak  <ubizjak@gmail.com>
19200
19201         * optabs.h (enum optab_index): Add new OTI_scalb.
19202         (scalb_optab): Define corresponding macro.
19203         * optabs.c (init_optabs): Initialize scalb_optab.
19204         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
19205         patterns.
19206         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
19207         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
19208         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
19209         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
19210         flag_unsafe_math_optimizations is set.
19211
19212         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
19213         to implement scalbf, scalb and scalbl built-ins as inline x87
19214         intrinsics.
19215
19216 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19217             DJ Delorie <dj@redhat.com>
19218
19219         PR other/30824
19220         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
19221         (diagnostic_report_diagnostic): ... here, and turn them into real
19222         errors. If warnings are inhibited, no need to do anything.
19223
19224 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
19225
19226         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
19227         better code generation.
19228
19229 2007-02-20  Ben Elliston  <bje@au.ibm.com>
19230
19231         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
19232
19233 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
19234
19235         * config/alpha/alpha.c, config/alpha/alpha.md,
19236         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
19237         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
19238         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
19239         config/arm/lib1funcs.asm: Follow spelling conventions.
19240
19241         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
19242         config/fr30/fr30.md, config/i386/i386.h,
19243         config/iq2000/iq2000.h, config/iq2000/predicates.md,
19244         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
19245         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
19246         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
19247         config/rs6000/altivec.md, config/rs6000/rs6000.c,
19248         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
19249         config/sparc/sparc.c, config/sparc/sparc.h,
19250         config/sparc/sparc.md, config/spu/constraints.md,
19251         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
19252         conventions.
19253
19254 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
19255
19256         PR target/29943
19257         * varasm.c (use_blocks_for_decl_p): Return false for decls with
19258         alias attribute.
19259
19260 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
19261
19262         * doc/invoke.texi (-ftree-lrs): Remove.
19263
19264 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
19265
19266         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
19267         NULL.
19268
19269 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
19270
19271         * config/ia64/ia64.c (ia64_expand_builtin): Use the
19272         new CALL_EXPR_FN macro for retrieving the function
19273         declaration of the input expression.
19274
19275 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19276
19277         * c.opt (Waddress): New.
19278         * common.opt (Walways-true): Delete.
19279         (Wstring-literal-comparison): Delete.
19280         * doc/invoke.texi (Warning Options): Delete -Walways-true and
19281         -Wstring-literal-comparison. Add -Waddress.
19282         (Waddress): New.
19283         (Walways-true): Delete.
19284         (Wstring-literal-comparison): Delete.
19285         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
19286         consistently instead of -Walways-true in example.
19287         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
19288         * c-typeck.c (parser_build_binary_op): Replace
19289         -Wstring-literal-comparison and -Walways-true with -Waddress.
19290         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
19291         with -Waddress.
19292
19293 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
19294
19295         * tree-cfg.c (dump_function_to_file): Be prepared for functions
19296         without DECL_STRUCT_FUNCTION initialized.
19297
19298 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
19299
19300         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
19301         due to calls to functions taking pointers as parameters.
19302
19303 2007-02-19  Richard Henderson  <rth@redhat.com>
19304
19305         PR debug/29558
19306         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
19307         in memory.
19308
19309 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
19310
19311         * config/s390/s390.c (s390_call_saved_register_used,
19312         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
19313         accessed to the new scheme.
19314
19315 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
19316
19317         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
19318         (cris_print_index, cris_print_operand, cris_print_operand_address)
19319         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
19320         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
19321         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
19322         GET_CODE () == xxx.
19323         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
19324         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
19325         GO_IF_LEGITIMATE_ADDRESS): Ditto.
19326         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
19327         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
19328         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
19329         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
19330         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
19331         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
19332         (uminsi3, call, call_value): Ditto.
19333         (define_split: indir_to_reg_split, unnamed): Ditto.
19334
19335 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
19336
19337         PR tree-optimization/30975
19338         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
19339         wrong assert.
19340
19341 2007-02-18  Eric Christopher  <echristo@gmail.com>
19342
19343         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
19344         Remove use of arglist.
19345         (mips_expand_builtin): Remove use of arglist, pass in expr.
19346         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
19347         (mips_expand_builtin_movtf): Ditto.
19348         (mips_expand_builtin_compare): Ditto.
19349
19350 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
19351
19352         * tree-sra.c (sra_build_assignment): Replace assertion
19353         checking with a comment explaining why it can't be done.
19354
19355 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
19356
19357         PR middle-end/30833
19358         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
19359         during CALL_EXPR representation conversion.
19360         * tree-ssa-propagate.c (set_rhs): Likewise.
19361
19362 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
19363
19364         * tree-sra.c (sra_build_assignment): Disable assertion checking
19365         for now.
19366
19367 2007-02-18  Roger Sayle  <roger@eyesopen.com>
19368
19369         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
19370         instead of calling build2 with a GIMPLE_MODIFY_STMT.
19371         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
19372         Likewise.
19373         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
19374         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
19375         gimplify_init_ctor_eval_range, gimple_push_cleanup,
19376         gimplify_omp_for, gimplify_omp_atomic_pipeline,
19377         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
19378         force_gimple_operand): Likewise.
19379         * ipa-cp.c (constant_val_insert): Likewise.
19380         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
19381         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
19382         perfect_nestify): Likewise.
19383         * langhooks.c (lhd_omp_assignment): Likewise.
19384         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
19385         lower_copyprivate_clauses, lower_send_clauses,
19386         lower_send_shared_vars, expand_parallel_call,
19387         expand_omp_for_generic, expand_omp_for_static_nochunk,
19388         expand_omp_for_static_chunk, expand_omp_sections,
19389         lower_omp_single_copy, lower_omp_for_lastprivate,
19390         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
19391         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
19392         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
19393         Likewise.
19394
19395 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
19396
19397         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
19398         config/sh/sh.md: Follow spelling conventions.
19399
19400         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
19401         config/frv/predicates.md: Follow spelling conventions.
19402
19403         * config/m68k/linux-unwind.h: Fix a comment typo.
19404         * target.h: Follow spelling conventions.
19405
19406 2007-02-18  Roger Sayle  <roger@eyesopen.com>
19407
19408         PR rtl-optimization/28173
19409         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
19410         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
19411         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
19412         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
19413         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
19414
19415 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19416
19417         * builtins.c (fold_builtin_load_exponent): New.
19418         (fold_builtin_2): Use it.
19419
19420 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
19421
19422         PR rtl-optimization/30773
19423         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
19424         if we fail to attach a REG_EQUIV note.
19425
19426 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
19427             Roger Sayle  <roger@eyesopen.com>
19428
19429         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
19430
19431 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
19432
19433         * calls.c (initialize_argument_information): Pass original EXP
19434         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
19435         code to split complex arguments here, as part of initializing the
19436         ARGS array.
19437         (expand_call): Remove code that builds a list of arguments and
19438         inserts implicit arguments into it.  Instead, just count how many
19439         implicit arguments there will be so we can determine the size of
19440         the ARGS array, and let initialize_argument_information do the work.
19441         (split_complex_values): Delete unused function.
19442
19443 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
19444
19445         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
19446
19447 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
19448
19449         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
19450         for arg pointer based indexed addressing.
19451
19452 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
19453
19454         * config/ia64/ia64.h, config/ia64/ia64.md,
19455         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
19456         spelling conventions.
19457
19458 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
19459
19460         * config/m68k/m68k.c (split_di): New.
19461         * config/m68k/m68k-protos.h: Declare split_di.
19462         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
19463           Improve predicate handling and split constant shifts.
19464
19465 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
19466
19467         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
19468         parameter for register bitfield operations, general predicates
19469         cleanup
19470
19471 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
19472
19473         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
19474         * config/m68k/linux-unwind.h: New file.
19475
19476 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
19477
19478         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
19479         config/i386/athlon.md, config/ia64/ia64.md,
19480         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
19481         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
19482         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
19483         tree-ssa-loop-niter.c, tree-vect-analyze.c,
19484         tree-vect-transform.c: Fix comment typos.
19485
19486 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
19487
19488         * sched-deps.c (find_insn_list): Remove.
19489         * sched-int.h: Remove the prototype for find_insn_list.
19490
19491 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
19492
19493         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
19494         to linker.
19495         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
19496         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
19497         darwin_rs6000_override_options.
19498         (C_COMMON_OVERRIDE_OPTIONS): Expect
19499         darwin_macosx_version_min to be non-NULL always.
19500         (TARGET_C99_FUNCTIONS): Likewise.
19501         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
19502         (DARWIN_MINVERSION_SPEC): New.
19503         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
19504         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
19505         to cc1*.
19506         (DARWIN_MINVERSION_SPEC): New.
19507         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
19508         value.
19509         * config/darwin-c.c (darwin_cpp_builtins): Expect
19510         darwin_macosx_version_min to be non-NULL always.
19511
19512         * config/rs6000/rs6000.c: Clean up trailing whitespace.
19513
19514 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
19515
19516         * config/i386/i386.h (x86_use_xchgb): New.
19517         (TARGET_USE_XCHGB): New macro.
19518         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
19519         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
19520         Split after reload into bswaphi for shifts of 8.
19521         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
19522         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
19523         or when optimizing for size.
19524
19525 2007-02-16  Richard Guenther  <rguenther@suse.de>
19526             Christian Bruel  <christian.bruel@st.com>
19527
19528         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
19529         DECLs but prefer SSA_NAMEs over DECLs.
19530
19531 2007-02-16  Richard Guenther  <rguenther@suse.de>
19532
19533         * tree-flow-inline.h (single_imm_use_p): Remove.
19534         (zero_imm_uses_p): Likewise.
19535         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
19536         instead of single_imm_use_p.
19537         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
19538         zero_imm_uses_p.
19539
19540 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19541
19542         PR other/27843
19543         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
19544         nested double- and backquotes.
19545
19546 2007-02-15  Roger Sayle  <roger@eyesopen.com>
19547
19548         PR middle-end/30391
19549         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
19550         should be unreachable.
19551         (build2_stat): Allow construction of MODIFY_EXPR at any time.
19552         For the time being redirect GIMPLE_MODIFY_STMT to the new
19553         (renamed) build_gimple_modify_stmt_stat.
19554         (build2_gimple_stat): Rename to...
19555         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
19556         Always build a GIMPLE_MODIFY_STMT node.
19557         * tree.h (build2_gimple, build2_gimple_stat): Delete.
19558         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
19559         declarations.
19560
19561         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
19562         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
19563         * tree-complex.c (set_component_ssa_name, expand_complex_move,
19564         expand_complex_div_wide): Likewise.
19565         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
19566         * tree-ssa-loop-im.c (schedule_sm): Likewise.
19567         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
19568         * tree-ssa-loop-manip.c (create_iv): Likewise.
19569         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
19570         abs_replacement): Likewise.
19571         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
19572         realify_fake_stores): Likewise.
19573
19574         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
19575         node rather than a GIMPLE_MODIFY_STMT node.
19576         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
19577         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
19578         Likewise.
19579         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
19580         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
19581         GIMPLE_MODIFY_STMT.
19582
19583 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19584
19585         PR middle-end/30433
19586         * fold-const.c (fold_comparison): Add back the
19587         folding of constant complex comparisions.
19588
19589 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19590
19591         PR middle-end/30729
19592         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
19593         effects unknown to this function, return early.
19594
19595 2007-02-15  Ian Lance Taylor  <iant@google.com>
19596
19597         * lower-subreg.c (move_eh_region_note): New static function.
19598         (resolve_simple_move): Call it.
19599         (decompose_multiword_subregs): Track blocks for which we resolve a
19600         simple move which is also a control flow insn.  Pass them to
19601         find_many_sub_basic_blocks.
19602         (pass_lower_subreg): Add TODO_verify_flow.
19603         (pass_lower_subreg2): Likewise.
19604
19605 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
19606             Brooks Moses  <brooks.moses@codesourcery.com>
19607             Lee Millward  <lee.millward@codesourcery.com>
19608
19609         * tree.h (enum tree_code_class): Add tcc_vl_exp.
19610         (VL_EXP_CLASS_P): New.
19611         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
19612         TREE_CODE_LENGTH.
19613         (TREE_OPERAND_CHECK_CODE): Likewise.
19614         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
19615         (TREE_RTL_OPERAND_CHECK): Likewise.
19616         (tree_operand_check_failed): Make second parameter the whole tree
19617         instead of its code.  Fixed callers.
19618         (VL_EXP_CHECK): New.
19619         (TREE_OPERAND_LENGTH): New.
19620         (VL_EXP_OPERAND_LENGTH): New.
19621         (CALL_EXPR_FN): New.
19622         (CALL_EXPR_STATIC_CHAIN): New.
19623         (CALL_EXPR_ARGS): New.
19624         (CALL_EXPR_ARG): New.
19625         (call_expr_nargs): New.
19626         (CALL_EXPR_ARGP): New.
19627         (build_nt_call_list): Declare.
19628         (build_vl_exp_stat): Declare.
19629         (build_vl_exp): New.
19630         (build_call_list): Declare.
19631         (build_call_nary): Declare.
19632         (build_call_valist): Declare.
19633         (build_call_array): Declare.
19634         (call_expr_arg): Declare.
19635         (call_expr_argp): Declare.
19636         (call_expr_arglist): Declare.
19637         (fold_build_call_list): Declare.
19638         (fold_build_call_list_initializer): Declare.
19639         (fold_call_expr): Declare to replace fold_builtin.
19640         (fold_builtin_fputs): Update to agree with modified definition.
19641         (fold_builtin_strcpy): Likewise.
19642         (fold_builtin_strncpy): Likewise.
19643         (fold_builtin_memory_chk): Likewise.
19644         (fold_builtin_stxcpy_chk): Likewise.
19645         (fold_builtin_strncpy_chk): Likewise.
19646         (fold_builtin_next_arg): Likewise.
19647         (fold_build_call_expr): Declare.
19648         (fold_builtin_call_list): Declare.
19649         (fold_builtin_call_valist): Declare.
19650         (build_call_expr): Declare.
19651         (validate_arglist): Update to agree with modified definition.
19652         (tree_operand_length): New.
19653         (call_expr_arg_iterator): New.
19654         (init_call_expr_arg_iterator): New.
19655         (next_call_expr_arg): New.
19656         (first_call_expr_arg): New.
19657         (more_call_expr_args_p): New.
19658         (FOR_EACH_CALL_EXPR_ARG): New.
19659
19660         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
19661         and tcc_gimple_stmt.
19662         (tree_code_size): Update documentation.  Use sizeof (tree) rather
19663         than sizeof (char *).
19664         (tree_size): Likewise.  Add case for tcc_vl_exp.
19665         (tree_node_structure): Add case for tcc_vl_exp.
19666         (contains_placeholder_p): Likewise.
19667         (substitute_in_expr): Likewise.
19668         (substitute_placeholder_in_expr): Likewise.
19669         (stabilize_reference_1): Likewise.
19670         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
19671         to diagnose breakage of this interface for constructing CALL_EXPRs.
19672         (build_nt): Add similar assertion here.
19673         (build_nt_call_list): New.
19674         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
19675         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
19676         TREE_CODE_LENGTH.
19677         (get_callee_fndecl): Use new CALL_EXPR accessors.
19678         (tree_operand_check_failed): Change parameters to pass entire node
19679         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
19680         (process_call_operands): New.
19681         (build_vl_exp_stat): New.
19682         (build_call_list): New.
19683         (build_call_nary): New.
19684         (build_call_valist): New.
19685         (build_call_array): New.
19686         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19687         (call_expr_arglist): New.
19688
19689         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
19690         tcc_vl_exp instead of a fixed-size tcc_expression.
19691
19692         * doc/c-tree.texi (CALL_EXPR): Document new representation and
19693         accessors for CALL_EXPRs.
19694         (AGGR_INIT_EXPR): Likewise.
19695
19696 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
19697             Brooks Moses  <brooks.moses@codesourcery.com>
19698             Lee Millward  <lee.millward@codesourcery.com>
19699
19700         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
19701         (expand_builtin_nonlocal_goto): Change parameter to be entire
19702         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
19703         (expand_builtin_prefetch): Likewise.
19704         (expand_builtin_classify_type): Likewise.
19705         (mathfn_built_in): Return NULL_TREE instead of 0.
19706         (expand_errno_check): Use new CALL_EXPR accessors.
19707         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
19708         Return NULL_RTX instead of 0.
19709         (expand_builtin_mathfn_2): Likewise.
19710         (expand_builtin_mathfn_3): Likewise.
19711         (expand_builtin_interclass_mathfn): Likewise.
19712         (expand_builtin_sincos): Likewise.
19713         (expand_builtin_cexpi): Likewise.
19714         (expand_builtin_int_roundingfn): Likewise.
19715         (expand_builtin_int_roundingfn_2): Likewise.
19716         (expand_builtin_pow): Likewise.
19717         (expand_builtin_powi): Likewise.
19718         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
19719         of arglist, fixing callers appropriately.  Use new CALL_EXPR
19720         accessors and constructors.  Return NULL_RTX instead of 0.
19721         (expand_builtin_strstr): Likewise.
19722         (expand_builtin_strchr): Likewise.
19723         (expand_builtin_strrchr): Likewise.
19724         (expand_builtin_strpbrk): Likewise.
19725         (expand_builtin_memcpy): Likewise.
19726         (expand_builtin_mempcpy): Likewise.
19727         (expand_builtin_mempcpy_args): New.
19728         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
19729         (expand_builtin_memmove_args): New.
19730         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
19731         (expand_movstr): Likewise.
19732         (expand_builtin_strcpy): Likewise.
19733         (expand_builtin_strcpy_args): New.
19734         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
19735         (expand_builtin_strncpy): Likewise.
19736         (expand_builtin_memset): Likewise.
19737         (expand_builtin_memset_args): New.
19738         (expand_builtin_bzero): Similarly to expand_builtin_memset.
19739         (expand_builtin_memcmp): Likewise.
19740         (expand_builtin_strcmp): Likewise.
19741         (expand_builtin_strncmp): Likewise.
19742         (expand_builtin_strcat): Likewise.
19743         (expand_builtin_strncat): Likewise.
19744         (expand_builtin_strspn): Likewise.
19745         (expand_builtin_strcspn): Likewise.
19746         (expand_builtin_args_info): Likewise.
19747         (expand_builtin_va_start): Likewise.
19748         (gimplify_va_arg_expr): Likewise.
19749         (expand_builtin_va_end): Likewise.
19750         (expand_builtin_va_copy): Likewise.
19751         (expand_builtin_frame_address): Likewise.
19752         (expand_builtin_alloca): Likewise.
19753         (expand_builtin_bswap): Likewise.
19754         (expand_builtin_unop): Likewise.
19755         (expand_builtin_fputs): Likewise.
19756         (expand_builtin_expect): Likewise.
19757         (expand_builtin_fabs): Likewise.
19758         (expand_builtin_copysign): Likewise.
19759         (expand_builtin_printf): Likewise.
19760         (expand_builtin_fprintf): Likewise.
19761         (expand_builtin_sprintf): Likewise.
19762         (expand_builtin_init_trampoline): Likewise.
19763         (expand_builtin_signbit): Likewise.
19764         (expand_builtin_fork_or_exec): Likewise.
19765         (expand_builtin_sync_operation): Likewise.
19766         (expand_builtin_compare_and_swap): Likewise.
19767         (expand_builtin_lock_test_and_set): Likewise.
19768         (expand_builtin_lock_release): Likewise.
19769         (expand_builtin): Likewise.
19770         (builtin_mathfn_code): Likewise.
19771
19772         (fold_builtin_constant_p): Pass call arguments individually instead
19773         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
19774         accessors and constructors.  Return NULL_TREE instead of 0.
19775         (fold_builtin_expect): Likewise.
19776         (fold_builtin_classify_type): Likewise.
19777         (fold_builtin_strlen): Likewise.
19778         (fold_builtin_nan): Likewise.
19779         (integer_valued_real_p): Likewise.
19780         (fold_trunc_transparent_mathfn): Likewise.
19781         (fold_fixed_mathfn): Likewise.
19782         (fold_builtin_cabs): Likewise.
19783         (fold_builtin_sqrt): Likewise.
19784         (fold_builtin_cbrt): Likewise.
19785         (fold_builtin_cos): Likewise.
19786         (fold_builtin_cosh): Likewise.
19787         (fold_builtin_tan): Likewise.
19788         (fold_builtin_sincos): Likewise.
19789         (fold_builtin_cexp): Likewise.
19790         (fold_builtin_trunc): Likewise.
19791         (fold_builtin_floor): Likewise.
19792         (fold_builtin_ceil): Likewise.
19793         (fold_builtin_round): Likewise.
19794         (fold_builtin_int_roundingfn): Likewise.
19795         (fold_builtin_bitop): Likewise.
19796         (fold_builtin_bswap): Likewise.
19797         (fold_builtin_logarithm): Likewise.
19798         (fold_builtin_hypot): Likewise.
19799         (fold_builtin_pow): Likewise.
19800         (fold_builtin_powi): Likewise.
19801         (fold_builtin_exponent): Likewise.
19802         (fold_builtin_memset): Likewise.
19803         (fold_builtin_bzero): Likewise.
19804         (fold_builtin_memory_op): Likewise.
19805         (fold_builtin_bcopy): Deleted; call site changed to invoke
19806         fold_builtin_memory_op directly.
19807         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
19808         (fold_builtin_strncpy): Likewise.
19809         (fold_builtin_memcmp): Likewise.
19810         (fold_builtin_strcmp): Likewise.
19811         (fold_builtin_strncmp): Likewise.
19812         (fold_builtin_signbit): Likewise.
19813         (fold_builtin_copysign): Likewise.
19814         (fold_builtin_isascii): Likewise.
19815         (fold_builtin_toascii): Likewise.
19816         (fold_builtin_isdigit): Likewise.
19817         (fold_builtin_fabs): Likewise.
19818         (fold_builtin_abs): Likewise.
19819         (fold_builtin_fmin_fmax): Likewise.
19820         (fold_builtin_carg): Likewise.
19821         (fold_builtin_classify): Likewise.
19822         (fold_builtin_unordered_cmp): Likewise.
19823
19824         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
19825         New functions split out from fold_builtin_1.
19826         (fold_builtin_n): New.
19827         (fold_builtin_varargs): New.
19828         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
19829         instead.
19830         (fold_call_expr): New.
19831         (build_function_call_expr): Rewrite to use new helper function.
19832         (fold_builtin_call_list): New.
19833         (build_call_expr): New.
19834         (fold_builtin_call_valist): New.
19835         (rewrite_call_expr): New.
19836         (validate_arg): New.
19837         (validate_arglist): Change parameter to be entire CALL_EXPR instead
19838         of an arglist.  Change return type to bool.  Use new CALL_EXPR
19839         accessors.
19840
19841         (fold_builtin_strstr):  Pass call arguments individually instead
19842         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
19843         accessors and constructors.  Return NULL_TREE instead of 0.
19844         (fold_builtin_strchr): Likewise.
19845         (fold_builtin_strrchr): Likewise.
19846         (fold_builtin_strpbrk): Likewise.
19847         (fold_builtin_strcat): Likewise.
19848         (fold_builtin_strncat): Likewise.
19849         (fold_builtin_strspn): Likewise.
19850         (fold_builtin_strcspn): Likewise.
19851         (fold_builtin_fputs): Likewise.
19852         (fold_builtin_next_arg): Likewise.
19853         (fold_builtin_sprintf): Likewise.
19854
19855         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
19856         NULL_RTX instead of 0.
19857         (expand_builtin_memory_chk): Likewise.
19858         (maybe_emit_chk_warning): Likewise.
19859         (maybe_emit_sprintf_chk_warning): Likewise.
19860
19861         (fold_builtin_object_size): Pass call arguments individually instead
19862         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
19863         accessors and constructors.  Return NULL_TREE instead of 0.
19864         (fold_builtin_memory_chk): Likewise.
19865         (fold_builtin_stxcpy_chk): Likewise.
19866         (fold_builtin_strncpy_chk): Likewise.
19867         (fold_builtin_strcat_chk): Likewise.
19868         (fold_builtin_strcat_chk): Likewise.
19869         (fold_builtin_strncat_chk): Likewise.
19870         (fold_builtin_sprintf_chk): Likewise.
19871         (fold_builtin_snprintf_chk): Likewise.
19872         (fold_builtin_printf): Likewise.
19873         (fold_builtin_vprintf): Likewise.
19874
19875         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
19876         constructors.
19877         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
19878         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19879         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
19880         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
19881         (fold_unary): Likewise.
19882         (fold_binary): Likewise.
19883         (fold_ternary): Remove CALL_EXPR case, since they are no longer
19884         ternary expressions.
19885         (fold): Add logic for tcc_vl_exp.
19886         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
19887         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19888         (fold_build3_stat): Add assertion to flag broken interface for
19889         constructing CALL_EXPRs.
19890         (fold_build_call_list): New.
19891         (fold_build_call_list_initializer): New.
19892         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
19893         constructors.
19894         (fold_strip_sign_ops): Likewise.
19895
19896 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
19897             Brooks Moses  <brooks.moses@codesourcery.com>
19898             Lee Millward  <lee.millward@codesourcery.com>
19899
19900         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
19901         accessors and dump arguments explicitly.
19902
19903         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
19904         TREE_CODE_LENGTH.
19905         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
19906         explicitly.
19907         (print_call_name): Use new CALL_EXPR accessors.
19908
19909         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
19910         CALL_EXPR arguments explicitly instead of as a list.  Use
19911         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19912
19913         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
19914         (vrp_visit_stmt): Likewise.
19915
19916         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
19917         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
19918         TREE_CODE_LENGTH.
19919         (force_move_till_expr): Likewise.
19920
19921         * targhooks.c (default_external_stack_protect_fail): Use
19922         build_call_expr instead of build_function_call_expr.
19923         (default_hidden_stack_protect_fail): Likewise.
19924
19925         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
19926         build the call.
19927
19928         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
19929         and walk arguments explicitly.
19930
19931         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
19932         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19933         (expand_simple_operations): Likewise.
19934         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
19935
19936         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
19937         of TREE_CODE_LENGTH.
19938         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
19939
19940         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
19941         instead of TREE_CODE_LENGTH.
19942
19943         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
19944         (tree_ic_transform): Likewise.
19945         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
19946         parameter instead of arglist.  Fix callers.
19947         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
19948         (tree_stringops_transform): Likewise.
19949         (tree_indirect_call_to_profile): Likewise.
19950         (tree_stringops_values_to_profile): Likewise.
19951
19952         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
19953         (eliminate_tail_call): Likewise.
19954
19955         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
19956
19957         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
19958         Use TREE_OPERAND_LENGTH and generalize to handle any number of
19959         operands.
19960         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
19961
19962         * omp-low.c (build_omp_barrier): Use build_call_expr.
19963         (lower_rec_input_clauses): Likewise.
19964         (lower_reduction_clauses): Likewise.
19965         (expand_parallel_call): Likewise.
19966         (maybe_catch_exception): Likewise.
19967         (expand_omp_for_generic): Likewise.
19968         (expand_omp_for_static_nochunk): Likewise.
19969         (expand_omp_sections): Likewise.
19970         (lower_omp_single_simple): Likewise.
19971         (lower_omp_single_copy): Likewise.
19972         (lower_omp_master): Likewise.
19973         (lower_omp_ordered): Likewise.
19974         (lower_omp_critical): Likewise.
19975
19976         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
19977         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
19978
19979         * tree-gimple.c (is_gimple_call_addr): Fix doc.
19980         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
19981         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
19982
19983         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
19984         and generalize to handle any number of operands.
19985         (chrec_contains_undetermined): Likewise.
19986         (tree_contains_chrecs): Likewise.
19987         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
19988
19989         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
19990
19991         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
19992         fold_call_expr instead of fold_builtin.
19993         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
19994         match declarations there.
19995         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
19996         updates.
19997
19998         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
19999         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
20000
20001         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
20002         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
20003
20004         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
20005         accessors.
20006
20007         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
20008         (execute_cse_sincos): Use new CALL_EXPR accessors.
20009
20010         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
20011
20012         * gimple-low.c (lower_function_body): Use build_call_expr.
20013         (lower_builtin_setjmp): Likewise.
20014
20015         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
20016         (set_storage_via_libcall): Likewise.
20017         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
20018         instead of TREE_CODE_LENGTH.
20019         (expand_expr_real_1): Use new CALL_EXPR accessors.
20020
20021         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
20022         generalize to handle any number of operands.
20023         (TB_parent_eq): Likewise.
20024
20025         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
20026         (strip_builtin_expect): Likewise.
20027
20028         * function.c (gimplify_parameters): Use build_call_expr.
20029
20030         * tree-vectorizer.c (vect_is_simple_reduction): Use
20031         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
20032
20033         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
20034         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
20035
20036         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
20037         iterators.
20038
20039         * gimplify.c (build_stack_save_restore): Use build_call_expr.
20040         (gimplify_decl_expr): Likewise.
20041         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
20042         Use new CALL_EXPR iterators.
20043         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
20044         (gimplify_modify_expr_to_memset): Likewise.
20045         (gimplify_variable_sized_compare): Likewise.
20046         (gimplify_omp_atomic_fetch_op): Likewise.
20047         (gimplify_omp_atomic_pipeline): Likewise.
20048         (gimplify_omp_atomic_mutex): Likewise.
20049         (gimplify_function_tree): Likewise.
20050
20051         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
20052         (call_expr_flags): Likewise.
20053         (expand_call): Likewise.
20054
20055         * except.c (expand_builtin_eh_return_data_regno): Pass entire
20056         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
20057         accessors.
20058
20059         * coverage.c (create_coverage): Use build_call_expr.
20060
20061         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
20062         (temp_call_expr_obstack): New.
20063         (pool_copy_list): Delete.
20064         (temp_copy_call_expr): New.
20065         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
20066         CALL_EXPR accessors.  Get rid of special goo for copying argument
20067         lists and use temp_copy_call_expr instead.
20068         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
20069         CALL_EXPR accessors.
20070         (create_expression_by_pieces): Likewise.  Use build_call_array
20071         to construct the result instead of fold_build3.
20072         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
20073         dealing with argument lists.
20074         (init_pre): Remove references to expression_node_pool and
20075         list_node_pool.  Init temp_call_expr_obstack instead.
20076         (fini_pre): Remove references to expression_node_pool and
20077         list_node_pool.
20078
20079         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
20080         and walk arguments explicitly instead of as a list.
20081
20082         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
20083         (mx_register_decls): Likewise.
20084         (mudflap_register_call): Likewise.
20085         (mudflap_finish_file): Likewise.
20086
20087         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
20088         (ipa_callsite_compute_param): Likewise.
20089
20090         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
20091         accessors and constructor.
20092
20093         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
20094         accessors and constructor.
20095         (convert_tramp_reference): Likewise.
20096         (convert_call_expr): Likewise.
20097         (finalize_nesting_tree_1): Likewise.
20098
20099         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
20100         accessors.
20101
20102         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
20103
20104         * tree-inline.c (initialize_inlined_parameters): Pass entire
20105         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
20106         accessors.
20107         (estimate_num_insns_1): Use new CALL_EXPR accessors.
20108         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
20109
20110         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
20111         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
20112         (vectorizable_reduction): Likewise.
20113         (vectorizable_call): Use new CALL_EXPR iterators.
20114         (vectorizable_conversion): Use build_call_expr.
20115         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
20116         (vect_gen_widened_results_half): Use build_call_expr.
20117         (vect_setup_realignment): Likewise.
20118         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
20119
20120         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
20121         (pass_through_call): Likewise.
20122         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
20123         fold_builtin.
20124
20125         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
20126         (tree_gen_pow2_profiler): Likewise.
20127         (tree_gen_one_value_profiler): Likewise.
20128         (tree_gen_ic_func_profiler): Likewise.
20129         (tree_gen_average_profiler): Likewise.
20130         (tree_gen_ior_profiler): Likewise.
20131
20132         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
20133         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
20134         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
20135
20136         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
20137         of TREE_CODE_LENGTH.
20138
20139         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
20140         of TREE_CODE_LENGTH.
20141
20142         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
20143         constructor.
20144         (convert_to_integer): Likewise.
20145
20146         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
20147         accessors.
20148
20149 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
20150             Brooks Moses  <brooks.moses@codesourcery.com>
20151             Lee Millward  <lee.millward@codesourcery.com>
20152
20153         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
20154         accessors.
20155         * config/frv/frv.c (frv_expand_builtin): Likewise.
20156         * config/s390/s390.c (s390_expand_builtin): Likewise.
20157
20158         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
20159         (sparc_expand_builtin): Use new CALL_EXPR accessors.
20160
20161         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
20162         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
20163         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
20164         (ix86_expand_store_builtin): Likewise.
20165         (ix86_expand_unop_builtin): Likewise.
20166         (ix86_expand_unop1_builtin): Likewise.
20167         (ix86_expand_sse_compare): Likewise.
20168         (ix86_expand_sse_comi): Likewise.
20169         (ix86_expand_vec_init_builtin): Likewise.
20170         (ix86_expand_vec_ext_builtin): Likewise.
20171         (ix86_expand_vec_set_builtin): Likewise.
20172         (ix86_expand_builtin): Use new CALL_EXPR accessors.
20173
20174         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
20175         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
20176
20177         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
20178         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
20179         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
20180
20181         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
20182         build_call_expr.
20183         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
20184         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
20185         arglist.  Use new CALL_EXPR accessors.  Fix callers.
20186         (altivec_expand_abs_builtin): Likewise.
20187         (rs6000_expand_binop_builtin): Likewise.
20188         (altivec_expand_predicate_builtin): Likewise.
20189         (altivec_expand_lv_builtin): Likewise.
20190         (spe_expand_stv_builtin): Likewise.
20191         (altivec_expand_stv_builtin): Likewise.
20192         (rs6000_expand_ternop_builtin): Likewise.
20193         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
20194         (altivec_expand_st_builtin): Likewise.
20195         (altivec_expand_dst_builtin): Likewise.
20196         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
20197         arglist.  Use new CALL_EXPR accessors.  Fix callers.
20198         (altivec_expand_vec_set_builtin): Likewise.
20199         (altivec_expand_vec_ext_builtin): Likewise.
20200         (altivec_expand_builtin): Use new CALL_EXPR accessors.
20201         (spe_expand_builtin): Likewise.
20202         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
20203         arglist.  Use new CALL_EXPR accessors.  Fix callers.
20204         (spe_expand_evsel_builtin): Likewise.
20205         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
20206         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
20207
20208         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
20209         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
20210         (arm_expand_unop_builtin): Likewise.
20211         (arm_expand_builtin): Use new CALL_EXPR accessors.
20212
20213         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
20214         accessors.
20215
20216         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire
20217         CALL_EXPR instead of arglist.  Use new CALL_EXPR accessors.
20218         Fix callers.
20219         (bfin_expand_unop_builtin): Likewise.
20220         (bfin_expand_builtin): Use new CALL_EXPR accessors.
20221
20222 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
20223             Brooks Moses  <brooks.moses@codesourcery.com>
20224             Lee Millward  <lee.millward@codesourcery.com>
20225
20226         * c-semantics.c (build_stmt): Add internal diagnostic check.
20227
20228         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
20229         accessors.  Print arguments explicitly instead of as a list.
20230
20231         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
20232
20233         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
20234         (c_finish_omp_flish): Likewise.
20235
20236         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
20237         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
20238         instead of TREE_CODE_LENGTH.
20239         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
20240         (c_warn_unused_result): Likewise.
20241
20242 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20243
20244         PR c/26494
20245         * doc/invoke.texi (Warning Options): Remove
20246         -Werror-implicit-function-declaration.
20247         (Wimplicit-function-declaration): Update description.
20248         * opts.c (common_handle_option): Move handling of -Werror=* to...
20249         (enable_warning_as_error): ...here.
20250         * opts.h (enable_warning_as_error): Declare.
20251         * c-decl.c (implicit_decl_warning): Unless
20252         -Wno-implicit-function-declaration is given, emit a pedwarn if
20253         -std=c99 or emit a warning if -Wimplicit-function-declaration.
20254         * c.opt (Wimplicit-function-declaration): Replace
20255         mesg_implicit_function_declaration with
20256         warn_implicit_function_declaration.
20257         * c-opts.c (c_common_handle_option):
20258         -Werror-implicit-function-declaration is exactly equal as
20259         -Werror=implicit-function-declaration.
20260         (set_Wimplicit): Replace mesg_implicit_function_declaration with
20261         warn_implicit_function_declaration.
20262         (c_common_post_options): -Wimplict-function-declaration is enabled
20263         by default by -std=c99, otherwise is disabled by default.
20264         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
20265
20266 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
20267
20268         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
20269         DECL on the rhs to a DECL on the lhs for debug info purposes if the
20270         former is ignored but not the latter.
20271
20272 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
20273
20274         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
20275         is made and the reference doesn't use the alias set of its type,
20276         do not create the temporary using that type.
20277
20278 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
20279
20280         * jump.c: Remove prototypes for delete_computation and
20281         delete_prior_computation.
20282
20283 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
20284
20285         * jump.c (get_label_after): Delete.
20286         (get_label_before, delete_computation, delete_jump,
20287         delete_prior_computation, follow_jumps): Move...
20288         * reorg.c (delete_computation, delete_prior_computation): ... here...
20289         (get_label_before, delete_jump): ... making these static ...
20290         (follow_jumps): ... and simplifying this since it only runs after
20291         reload.
20292         * rtl.h (get_label_after, get_label_before, delete_jump,
20293         follow_jumps): Delete prototypes.
20294
20295 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
20296
20297         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
20298
20299 2007-02-15  Nick Clifton  <nickc@redhat.com>
20300
20301         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
20302         order to prevent it from being munged by the target.
20303
20304 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
20305
20306         * config/i386/i386.md: Remove misleading comment.
20307
20308 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
20309
20310         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
20311         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
20312         invalid patterns.
20313
20314 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
20315
20316         * tree-sra.c (instantiate_missing_elements): Canonicalize
20317         bit-field types.
20318         (sra_build_assignment): New.
20319         (generate_copy_inout, generate_element_copy,
20320         generate_element_zero, generate_one_element_init): Use it.
20321
20322 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
20323
20324         * tree-sra.c (instantiate_missing_elements): Canonicalize
20325         bit-field types.
20326         (sra_build_assignment): New.
20327         (generate_copy_inout, generate_element_copy,
20328         generate_element_zero, generate_one_element_init): Use it.
20329
20330 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
20331
20332         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
20333         limbo die nodes.
20334
20335 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
20336
20337         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
20338         types as aggregates not scalars.
20339         * function.c (assign_stack_temp_for_type): Likewise.
20340
20341 2007-02-14  Roger Sayle  <roger@eyesopen.com>
20342             Zdenek Dvorak  <dvorakz@suse.cz>
20343
20344         * tree-dump.c (dump_switch_p_1): Require exact match of the option
20345         name.
20346
20347 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
20348
20349         * passes.c (next_pass_1): Clear the next field of the copied
20350         pass structure.
20351
20352 2007-02-14  Richard Henderson  <rth@redhat.com>
20353
20354         * tree-sra.c (early_sra): New.
20355         (decl_can_be_decomposed_p): Deny va_list if early_sra.
20356         (tree_sra_early, pass_sra_early): New.
20357         * tree-pass.h (pass_sra_early): Declare.
20358         * passes.c (init_optimization_passes): Use it.
20359
20360 2007-02-14  Richard Guenther  <rguenther@suse.de>
20361
20362         * flags.h (issue_strict_overflow_warning): Convert to a macro.
20363
20364 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
20365
20366          PR tree-optimization/30771
20367         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
20368         also phi nodes.
20369         (vect_analyze_operations): Induction phis can now be marked as
20370         used_in_loop.
20371         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
20372         Update documentation accordingly.
20373
20374 2007-02-14  Nick Clifton  <nickc@redhat.com>
20375
20376         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
20377         most 3 arguments are supported.
20378         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
20379
20380 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
20381
20382         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
20383         Ensure dst->current is valid.
20384
20385 2007-02-13  Paul Brook  <paul@codesourcery.com>
20386
20387         * config.gcc: Add arm*-*-uclinux-*eabi.
20388         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
20389         (SUBTARGET_EXTRA_LINK_SPEC): Define.
20390         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
20391         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
20392         (LINK_SPEC): Define.
20393         (LIB_SPEC): Define.
20394         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
20395         register.
20396         * config/arm/uclinux-eabi.h: New file.
20397         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
20398         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
20399         based targets.
20400
20401 2007-02-13  Ian Lance Taylor  <iant@google.com>
20402
20403         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
20404         * flags.h (warn_strict_overflow): Declare.
20405         (enum warn_strict_overflow_code): Define.
20406         (issue_strict_overflow_warning): New static inline function.
20407         * opts.c (warn_strict_overflow): New variable.
20408         (common_handle_option): Handle OPT_Wstrict_overflow and
20409         OPT_Wstrict_overflow_.
20410         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
20411         OPT_Wall.
20412         * fold-const.c: Include intl.h.
20413         (fold_deferring_overflow_warnings): New static variable.
20414         (fold_deferred_overflow_warning): New static variable.
20415         (fold_deferred_overflow_code): New static variable.
20416         (fold_defer_overflow_warnings): New function.
20417         (fold_undefer_overflow_warnings): New function.
20418         (fold_undefer_and_ignore_overflow_warnings): New function.
20419         (fold_deferring_overflow_warnings_p): New function.
20420         (fold_overflow_warning): New static function.
20421         (make_range): Add strict_overflow_p parameter.  Change all
20422         callers.
20423         (extract_muldiv, extract_muldiv_1): Likewise.
20424         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
20425         tree_expr_nonnegative_p.
20426         (fold_negate_expr): Call fold_overflow_warning.
20427         (fold_range_test): Likewise.
20428         (fold_comparison): Likewise.
20429         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
20430         instead of tree_expr_nonnegative_p.
20431         (tree_expr_nonnegative_warnv_p): Rename from
20432         tree_expr_nonnegative_p, add strict_overflow_p parameter.
20433         (tree_expr_nonnegative_p): New function.
20434         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
20435         strict_overflow_p parameter.
20436         (tree_expr_nonzero_p): New function.
20437         * passes.c (verify_interpass_invariants): New static function.
20438         (execute_one_pass): Call it.
20439         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
20440         warnings.
20441         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
20442         (estimate_numbers_of_iterations): Likewise.
20443         (scev_probably_wraps_p): Likewise.
20444         * tree-ssa-ccp.c: Include "toplev.h".
20445         (evaluate_stmt): Defer fold overflow warnings until we know we are
20446         going to optimize.
20447         (struct fold_stmt_r_data): Add stmt field.
20448         (fold_stmt_r): Defer fold overflow warnings until we know we
20449         optimized.
20450         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
20451         (fold_stmt_inplace): Likewise.
20452         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
20453         (cleanup_control_expr_graph): Defer fold overflow warnings until
20454         we know we are going to optimize.
20455         * tree-cfg.c (fold_cond_expr_cond): Likewise.
20456         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
20457         Likewise.
20458         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
20459         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
20460         * tree-ssa-loop-manip.c (create_iv): Likewise.
20461         * c-typeck.c (build_conditional_expr): Likewise.
20462         (build_binary_op): Likewise.
20463         * tree-vrp.c (vrp_expr_computes_nonzero): Call
20464         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
20465         (extract_range_from_unary_expr): Likewise.
20466         * simplify-rtx.c (simplify_const_relational_operation): Warn when
20467         assuming that signed overflow does not occur.
20468         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
20469         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
20470         (fold_defer_overflow_warnings): Declare.
20471         (fold_undefer_overflow_warnings): Declare.
20472         (fold_undefer_and_ignore_overflow_warnings): Declare.
20473         (fold_deferring_overflow_warnings_p): Declare.
20474         (tree_expr_nonzero_warnv_p): Declare.
20475         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
20476         of warning options.
20477         (Warning Options): Document -Wstrict-overflow.
20478         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
20479         (tree-ssa-ccp.o): Likewise.
20480         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
20481         (fold-const.o): Depend on intl.h.
20482
20483 2007-02-13  Ian Lance Taylor  <iant@google.com>
20484
20485         PR middle-end/30751
20486         * lower-subreg.c (resolve_simple_move): Decompose subregs in
20487         addresses.
20488
20489 2007-02-13  Stuart Hastings  <stuart@apple.com>
20490
20491         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
20492
20493 2007-02-13  Richard Henderson  <rth@redhat.com>
20494
20495         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
20496         handled_component_p before looking for the indirect_ref.
20497
20498 2007-02-13  Richard Henderson  <rth@redhat.com>
20499
20500         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
20501         remove flags clobber.
20502         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
20503         (bswaphi_lowpart): New.
20504         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
20505         remove TARGET_BSWAP test.  Delete expander of the same name.
20506
20507         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
20508         (expand_unop): Use them.
20509
20510 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
20511
20512         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
20513         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
20514         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
20515         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
20516         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
20517         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
20518         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
20519         assembler dialect choice from asm templates.
20520
20521 2007-02-12  Richard Henderson  <rth@redhat.com>
20522
20523         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
20524         (fixuns_trunc<SSEMODEF>si2): Use it.
20525         * config/i386/sse.md (vec_setv4sf_0): Export.
20526         * config/i386/i386.c (ix86_build_const_vector): Export.
20527         (ix86_split_convert_uns_si_sse): Rename from
20528         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
20529         * config/i386/i386-protos.h: Update.
20530
20531 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20532
20533         PR c/29521
20534         * c-typeck.c (c_finish_return): Improve warning message.
20535
20536 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20537
20538         * alias.c (find_symbolic_term): Delete unused function.
20539
20540 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
20541
20542         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
20543         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
20544         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
20545
20546 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
20547
20548         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
20549         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
20550         the function, temporarily point the debug interface to the null one.
20551
20552 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
20553
20554         * dwarf2out.c (round_up_to_align): New static function.
20555         (field_byte_offset): Use it to round the offset.
20556
20557 2007-02-12  Richard Henderson  <rth@redhat.com>
20558
20559         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
20560         (inswl_const): Export.
20561
20562 2007-02-12  Richard Henderson  <rth@redhat.com>
20563
20564         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
20565         result mode of the libcall, convert back to outmode.
20566
20567 2007-02-12  Roger Sayle  <roger@eyesopen.com>
20568
20569         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
20570         (bswapdi2): New define_expand to implement 32-bit implementation.
20571
20572 2007-02-12  Nick Clifton  <nickc@redhat.com>
20573
20574         * doc/invoke.texi (Overall Options): Document --help=.
20575         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
20576         (cc1_options): Pass --help= on to cc1.
20577         (display_help): Add description of --help=.
20578         (process_command): Add code to handle --help=.  Allow translated
20579         --help and --target-help switches to be passed on to compiler
20580         sub-process.
20581         (main): Remove unused if statement.
20582         * opts.c (columns): Remove.
20583         (LEFT_COLUMN): Define.
20584         (wrap_help): Add columns argument.
20585         (print_filtered_help): Change parameters to be an include bitmask,
20586         an exclude bitmask, an any bitmask and the column width.  Move the
20587         code to display the params list here.  Add code to display the
20588         status of options rather than their descriptions if the quiet flag
20589         is not active.
20590         (print_specific_help): Change parameters to be an include bitmask,
20591         an exclude bitmask and an any bitmask.  Move code to look up the
20592         column width here.  Decide upon the title for an options listing.
20593         (common_handle_options): Add code to handle --help=.  Adapt code
20594         for --help and --target-help to use the revised form of the
20595         print_specific_help function.
20596         (print_help): Delete.
20597         (print_param_help): Delete.
20598         (print_switch): Delete.
20599         * opts.h (cl_lang_count): Add prototype.
20600         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
20601         CL_MAX_OPTION_CLASS): New defines.
20602         * optc-gen.awk: Add construction of cl_lang_count.
20603         * c.opt: Add Warning attribute to warning options and Optimization
20604         attribute to optimization options.
20605         * common.opt: Likewise.
20606         Add --help=.
20607         Add -fhelp and -ftarget-help as aliases for the transformed --help
20608         and --target-help options.
20609         * opt-functions.awk: Add code to handle Warning and Optimization
20610         attributes.
20611
20612 2007-02-12  Richard Henderson  <rth@redhat.com>
20613
20614         * config/alpha/constraints.md: New file.
20615         * config/alpha/alpha.c: Include tm-constrs.h.
20616         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
20617         alpha_extra_constraint): Remove.
20618         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
20619         * config/alpha/alpha-protos.h: Update.
20620         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
20621         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
20622         (EXTRA_CONSTRAINT): Remove.
20623         * config/alpha/alpha.md: Include constraints.md.
20624         (adddi splitter): Use satisfies_constraint_*.
20625         * config/alpha/predicates.md (add_operand): Likewise.
20626         (sext_add_operand, addition_operation): Likewise.
20627
20628 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
20629
20630         PR tree-optimization/29145
20631         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
20632         in our handling of restrict qualified pointers.
20633
20634 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20635
20636         PR middle-end/7651
20637         * doc/invoke.texi (Wunused-value): Update description.
20638         (Wextra): Delete item.
20639         * opts.c (set_Wextra): Don't use the value of Wextra to set the
20640         value of Wunused-value.
20641         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
20642         (c_finish_stmt_expr): Don't check extra_warnings.
20643         (emit_side_effect_warnings): The caller is responsible to check
20644         warn_unused_value.
20645
20646 2007-02-11  Roger Sayle  <roger@eyesopen.com>
20647             Matt Thomas  <matt@3am-software.com>
20648
20649         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
20650
20651 2007-02-11  Roger Sayle  <roger@eyesopen.com>
20652
20653         * simplify-rtx.c (simplify_relational_operation_1): Optimize
20654         comparisons of POPCOUNT against zero.
20655         (simplify_const_relational_operation): Likewise.
20656
20657 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20658
20659         * doc/invoke.texi (Wextra): Delete outdated paragraph.
20660
20661 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20662
20663         * dwarf2out.c (root_type): Delete unused function.
20664
20665 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20666
20667         * genattrtab.c (contained_in_p): Delete unused function.
20668         (write_expr_attr_cache): Likewise.
20669
20670 2007-02-11  Jan Hubicka  <jh@suse.cz>
20671
20672         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
20673         previous patch.
20674
20675 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
20676
20677         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
20678         to add the REG_EQ* note.
20679         * see.c (see_merge_one_use_extension): Likewise.
20680         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
20681         turn REG_EQUAL notes into REG_EQUIV notes if the target
20682         register may have more than one set.
20683         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
20684         * gcse.c (try_replace_reg): Likewise.
20685         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
20686         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
20687         more than one REG_EQUIV note.
20688         * reload1.c (gen_reload): Use set_unique_reg_note.
20689
20690 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
20691
20692         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
20693         (ix86_builtin_conversion): New function.
20694
20695 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
20696
20697         PR target/29487
20698         * tree.h (DECL_REPLACEABLE_P): New macro.
20699         * except.c (set_nothrow_function_flags): Likewise.
20700
20701 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
20702             Ira Rosen  <irar@il.ibm.com>
20703             Dorit Nuzman  <dorit@il.ibm.com>
20704
20705         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
20706         * targhooks.c (default_builtin_vectorized_conversion): New.
20707         * targhooks.h (default_builtin_vectorized_function): New declaration.
20708         * target.h (struct vectorize): Add builtin_conversion field.
20709         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
20710         stmt_vec_info_type value.
20711         (vectorizable_conversion): New declaration.
20712         * tree-vect-analyze.c (vect_analyze_operations): Add
20713         vectorizable_conversion call.
20714         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
20715         * tree-vect-transform.c (vectorizable_conversion): New function.
20716         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
20717         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
20718         mode.
20719         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
20720         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
20721         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
20722         or ALTIVEC_BUILTIN_VCFSX.
20723
20724 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20725
20726         PR target/30634
20727         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
20728         CONST_DOUBLE and operand 0 is a hard register.
20729         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
20730         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
20731         is a hard floating-point register.
20732
20733 2007-02-10  Richard Henderson  <rth@redhat.com>
20734             Jakub Jelinek  <jakub@redhat.com>
20735             Alexandre Oliva  <aoliva@redhat.com>
20736
20737         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
20738         * builtin-types.def (BT_WORD): Make unsigned.
20739         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
20740         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
20741         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
20742         * c-decl.c (grokdeclarator): Don't error if !have_tls.
20743         * c-parser.c (c_parser_omp_threadprivate): Likewise.
20744         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
20745         emulated tls.
20746         * expr.c (emutls_var_address): New.
20747         (expand_expr_real_1): Expand emulated tls.
20748         (expand_expr_addr_expr_1): Likewise.
20749         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
20750         * output.h (emutls_finish): Declare.
20751         * toplev.c (compile_file): Call it.
20752         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
20753         address before wrapping in CONST.
20754         * varasm.c (emutls_htab, emutls_object_type): New.
20755         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
20756         (get_emutls_object_name, get_emutls_object_type): New.
20757         (get_emutls_init_templ_addr, emutls_decl): New.
20758         (emutls_common_1, emutls_finish): New.
20759         (assemble_variable): When emulating tls, swap decls; generate
20760         constructor for the emutls objects.
20761         (do_assemble_alias): When emulating tls, swap decl and target name.
20762         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
20763         for emulated tls.
20764         * varpool.c (decide_is_variable_needed): Look at force_output.
20765         Recurse for emulated tls.
20766         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
20767         with decide_is_variable_needed.
20768         * emutls.c: New file.
20769         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
20770         tls_object for real tls.
20771
20772 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
20773
20774         PR rtl-optimization/29599
20775         * reload1.c (eliminate_regs_in_insn): Take the destination
20776         mode into account when computing the offset.
20777
20778 2007-02-09  Stuart Hastings  <stuart@apple.com>
20779             Richard Henderson  <rth@redhat.com>
20780
20781         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
20782         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
20783         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
20784         fixuns_truncdfhi2): New.
20785         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
20786         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
20787         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
20788         (floatunssidf2): Allow nonimmediate source.
20789         * config/i386/sse.md (movdi_to_sse): New.
20790         (vec_concatv2di): Drop '*'.
20791         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
20792         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
20793         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
20794         New.
20795         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
20796         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
20797         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
20798         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
20799         (ix86_build_signbit_mask): Fix decl of v, refactor to call
20800         ix86_build_const_vector.
20801         (x86_emit_floatuns): Rewrite.
20802
20803 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20804
20805         * genautomata.c (longest_path_length): Delete unused function.
20806         (struct state): Delete unused longest_path_length.
20807         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
20808         (get_free_state): Delete unused.
20809
20810 2007-02-09  Jan Hubicka  <jh@suse.cz>
20811
20812         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
20813         * doc/invoke.texi (inline-unit-growth): Update default value.
20814
20815         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
20816         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
20817         (rebuild_cgraph_edges): Likewise.
20818         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
20819         (dump_cgraph_node): Dump frequencies.
20820         (cgraph_clone_edge): Add frequency scales.
20821         (cgraph_clone_node): Add freuqnecy.
20822         * cgraph.h (cgraph_edge): Add freuqnecy argument.
20823         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
20824         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
20825         * tree-pass.h (TODO_rebuild_frequencies): New constant.
20826         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
20827         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
20828         (save_inline_function_body): Likewise.
20829         * ipa-inline.c: inluce rtl.h
20830         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
20831         (cgraph_edge_badness): Use frequencies.
20832         (cgraph_decide_recursive_inlining): Update clonning.
20833         (cgraph_decide_inlining_of_small_function): Dump frequency.
20834         * predict.c (estimate_bb_frequencies): Export.
20835         * predict.h (estimate_bb_frequencies): Declare.
20836         * tree-inline.c (copy_bb): Watch overflows.
20837         (expand_call_inline): Update call of cgraph_create_edge.
20838         (optimize_inline_calls): Use TODO flags to update frequnecies.
20839         * passes.h: Include predict.h
20840         (init_optimization_passes): Move profile ahead.
20841         (execute_function_todo): Handle TODO_rebuild_frequencies.
20842
20843 2007-02-09  Roger Sayle  <roger@eyesopen.com>
20844
20845         * config/alpha/alpha.c (emit_insxl): Force the first operand of
20846         the insbl or inswl pattern into a register.
20847
20848 2007-02-09  Roger Sayle  <roger@eyesopen.com>
20849
20850         * config/ia64/ia64.md (bswapdi2): New define_insn.
20851
20852 2007-02-09  Richard Henderson  <rth@redhat.com>
20853
20854         * config/i386/constraints.md (Ym): New constraint.
20855         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
20856         (movdi_1_rex64): Split sse and xmm general register moves from
20857         memory move alternatives.  Use conditional register constraints.
20858         (movsf_1, movdf_integer): Likewise.
20859         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
20860         (movdf_integer_rex64): New.
20861         (pushsf_rex64): Fix output constraints.
20862         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
20863         (sse2_stored): Likewise.
20864         (sse2_storeq_rex64): New.
20865         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
20866         amd and not generic.
20867         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
20868         for optimize_size.  Remove SF/DFmode hack.
20869
20870 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
20871
20872         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
20873         (bit_SSE4a): New.
20874
20875 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
20876             Richard Sandiford  <richard@codesourcery.com>
20877
20878         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
20879         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
20880         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
20881         m68k/t-mlib to tmake_file.
20882         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
20883         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
20884         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
20885         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
20886         variable is not empty, add t-$m68k_arch_family to tmake_file.
20887         Add t-mlibs to tmake_file.
20888         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
20889         * config/m68k/t-cf: New file.
20890         * config/m68k/t-m68k: Likewise.
20891         * config/m68k/t-mlibs: Likewise.
20892         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
20893         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
20894         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
20895         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
20896         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
20897         Delete.
20898         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
20899         (INSTALL_LIBGCC): Delete.
20900         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
20901         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
20902         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
20903         (M68K_MLIB_CPU): Define.
20904         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
20905         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
20906         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
20907
20908 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
20909             Richard Guenther  <rguenther@suse.de>
20910
20911         PR middle-end/23361
20912         * fold-const.c (fold_comparison): Handle obfuscated comparisons
20913         against INT_MIN/INT_MAX.
20914         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
20915         file if a loop is removed.
20916
20917 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
20918
20919         * calls.c (store_one_arg): Pass correct alignment to
20920         emit_push_insn for non-BLKmode values.
20921         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
20922         unaligned stack slot via a suitably aligned slot.
20923
20924 2007-02-08  DJ Delorie  <dj@redhat.com>
20925
20926         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
20927         warnings.
20928         (legal_subregs): Use unsigned char, make const.
20929         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
20930
20931 2007-02-08  Paul Brook  <paul@codesourcery.com>
20932
20933         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
20934         special interworking needed.
20935
20936 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
20937
20938         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
20939         conditional to __SSE2__.
20940         (Entries below should have been added to first ChangeLog
20941         entry for amdfam10 dated 2007-02-05)
20942         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
20943         defined.
20944         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
20945         defined.
20946         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
20947         defined.
20948
20949 2007-02-08  DJ Delorie  <dj@redhat.com>
20950
20951         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
20952         * config/m32c/m32c.c (legal_subregs): New.
20953         (m32c_illegal_subreg_p): New.
20954         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
20955         unsupported subregs of hard regs.
20956
20957 2007-02-08  Jan Hubicka  <jh@suse.cz>
20958
20959         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
20960         the same one; always update histograms.
20961
20962 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
20963
20964         * passes.c (init_optimization_passes): Tidy comment.
20965
20966 2007-02-08  Roger Sayle  <roger@eyesopen.com>
20967
20968         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
20969         strip zero_extend, bswap and rotates from POCOUNT's argument.
20970         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
20971         zero_extend and rotates from PARITY's argument.
20972         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
20973         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
20974         of an integer constant at compile-time.
20975
20976 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
20977
20978         PR 30562
20979         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
20980         Update all users.
20981         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
20982         users.
20983         (init_alias_info):
20984         * tree-ssa-live.c (remove_unused_locals): Do not remove
20985         TREE_ADDRESSABLE variables.
20986         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
20987         * tree-ssa-operands.c (add_virtual_operand): Remove argument
20988         FOR_CLOBBER.  Update all users.
20989         If VAR has an associated alias set, add a virtual operand for
20990         it if no alias is found to conflict with the memory reference.
20991
20992 2007-02-07  Jan Hubicka  <jh@suse.cz>
20993             Robert Kidd <rkidd@crhc.uiuc.edu>
20994
20995         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
20996
20997 2007-02-07  Ian Lance Taylor  <iant@google.com>
20998
20999         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
21000
21001 2007-02-07  Roger Sayle  <roger@eyesopen.com>
21002
21003         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
21004         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
21005         tablejumpdi, movsi_to_cr_one): Remove constraints from
21006         define_expand's match_operands.
21007
21008 2007-02-07  Roger Sayle  <roger@eyesopen.com>
21009
21010         * global.c (compute_regsets): Move declatation of "i" inside of
21011         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
21012
21013 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
21014
21015         PR c++/30703
21016         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
21017         of INDIRECT_REF <RESULT_DECL>.
21018
21019         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
21020
21021 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
21022             Kaz Kojima  <kkojima@gcc.gnu.org>
21023
21024         PR target/29746
21025         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
21026         properly.
21027         (sh_initialize_trampoline): Add parentheses to avoid a warning.
21028
21029 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
21030
21031         * doc/loop.texi: Document possibility not to perform disambiguation
21032         of loops with multiple latches.
21033         * cfgloopmanip.c (alp_enum_p): Removed.
21034         (add_loop): Handle subloops.  Use get_loop_body_with_size.
21035         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
21036         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
21037         the new forwarder block.
21038         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
21039         Handle the case latch is NULL.
21040         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg
21041         modifications when marking loop exits.
21042         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
21043         be modified.
21044         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
21045         disambiguate_loops_with_multiple_latches.
21046         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
21047         before fix_loop_structure.
21048         * cfgloop.c: Include pointer-set.h and output.h.
21049         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
21050         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
21051         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
21052         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
21053         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
21054         disambiguate_multiple_latches, get_loop_body_with_size,
21055         disambiguate_loops_with_multiple_latches): New functions.
21056         (flow_loop_dump): Dump multiple latch edges.
21057         (flow_loop_nodes_find): Handle loops with multiple latches.
21058         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
21059         (glb_enum_p): Modified.
21060         (get_loop_body): Use get_loop_body_with_size.
21061         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
21062         (AVOID_CFG_MODIFICATIONS): New constant.
21063         (disambiguate_loops_with_multiple_latches, add_loop,
21064         get_loop_body_with_size): Declare.
21065         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
21066
21067 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
21068
21069         PR inline-asm/28686
21070         * global.c (compute_regsets): New function.
21071         (global_alloc): Refactored ELIMINABLE_REGSET
21072         and NO_GLOBAL_ALLOC_REGS computation out.
21073         (rest_of_handle_global_alloc): Call compute_regsets()
21074         for non-optimizing case.
21075
21076 2007-02-06  Richard Henderson  <rth@redhat.com>
21077
21078         * config/i386/constraints.md (Y2): Rename from Y.
21079         (Yi): New constraint.
21080         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
21081         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
21082         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
21083         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
21084         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
21085         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
21086         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
21087         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
21088         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
21089         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
21090         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
21091         vec_extractv2si_1): Change Y constraints to Y2.
21092         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
21093         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
21094         Change Y constraints to Y2.
21095         (sse2_loadld): Change Y constraints to x.
21096
21097 2007-02-06  Roger Sayle  <roger@eyesopen.com>
21098
21099         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
21100         (parity<mode>2): New define_expand using rs6000_emit_parity.
21101         * config/rs6000/rs6000.c (rs6000_emit_popcount,
21102         rs6000_emit_parity): New functions.
21103         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
21104         rs6000_emit_parity): Prototype here.
21105
21106 2007-02-06  Ian Lance Taylor  <iant@google.com>
21107
21108         * lower-subreg.c (simple_move_operand): Reject CONST.
21109         (resolve_clobber): Call validate_change rather than directly
21110         assigning to XEXP (pat, 0).
21111
21112 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
21113
21114         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
21115         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
21116         (tree-cfg.o): Remove hashtab.h dependency.
21117
21118         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
21119         (struct ivopts_data): Change niters to pointer_map_t.
21120         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
21121         (niter_for_exit): Create pointer_map on demand.  Change for
21122         pointer_map API.
21123         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
21124         (free_loop_data): Destroy data->niters if created and reset field.
21125         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
21126         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
21127
21128         * tree-ssa-reassoc.c: Include pointer-set.h.
21129         (bb_rank): Change to long *.
21130         (operand_rank): Change to pointer_map_t.
21131         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
21132         (insert_operand_rank): Accept long.
21133         (operand_entry_hash, operand_entry_eq): Remove.
21134         (get_rank): Return long.  Adjust for changes above.
21135         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
21136         and operand_rank.
21137         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
21138
21139         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
21140         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
21141         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
21142         is not NULL.
21143         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
21144         directly since it cannot be NULL.
21145         (get_vi_for_tree): Rewrite for pointer_map API.
21146         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
21147         (init_alias_vars): Create vi_for_tree as pointer_map.
21148         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
21149
21150         * tree-cfg.c: Don't include hashtab.h.
21151         (edge_to_cases): Declare as pointer_map.
21152         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
21153         Delete.
21154         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
21155         (start_recording_case_labels): Create edge_to_cases as pointer_map.
21156         (end_recoding_case_labels): Cleanup edge_to_cases manually before
21157         destroying it.
21158         (record_switch_edge): Delete.
21159         (get_cases_for_edge): Adjust for pointer_map API, inline
21160         record_switch_edge (rewritten for new API), remove goto.
21161
21162 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
21163
21164         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
21165         * tree-nested.c: Include pointer-set.h.
21166         (var_map_elt, var_map_eq, var_map_hash): Delete.
21167         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
21168         to pointer_map_t's.
21169         (nesting_info_bitmap_obstack): New.
21170         (lookup_field_for_decl): Adjust for pointer_map API.
21171         (lookup_tramp_for_decl): Adjust for pointer_map API.
21172         (get_nonlocal_debug_decl): Adjust for pointer_map API.
21173         (get_local_debug_decl): Adjust for pointer_map API.
21174         (convert_nl_goto_reference): Adjust for pointer_map API.
21175         (convert_nl_goto_receiver): Adjust for pointer_map API.
21176         (create_nesting_tree): Create outside GGC space.  Create bitmap on
21177         the new obstack.  Create field_map and var_map as pointer_maps.
21178         (free_nesting_tree): Adjust for changes to create_nesting_tree.
21179         (root): Delete.
21180         (lower_nested_functions): Move root here, no need to NULL it.
21181         Initialize and release the obstack.
21182
21183 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
21184
21185         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
21186         Remove prototypes and make them non-static.
21187         (struct tree_int_map): Remove.
21188         * tree.h (struct tree_int_map): Move here, turning TO into an
21189         unsigned int.
21190         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
21191
21192         * tree.h (TREE_COMPLEXITY): Remove.
21193         (struct tree_exp): Remove complexity field.
21194         * tree.c (build1_stat): Don't set it.
21195
21196 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
21197             Victor Kaplansky  <victork@il.ibm.com>
21198
21199         * tree-vectorizer.c (vect_is_simple_use): Support induction.
21200         (vect_is_simple_reduction): Support reduction with induction as
21201         one of the operands.
21202         (vect_is_simple_iv_evolution): Fix formatting.
21203         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
21204         formatting.  Don't mark induction phis for vectorization.
21205         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
21206         * tree-vect-transform.c (get_initial_def_for_induction): New function.
21207         (vect_get_vec_def_for_operand): Support induction.
21208         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
21209         induction case.
21210         (vectorizable_reduction): Support reduction with induction as one of
21211         the operands.
21212         (vectorizable_type_demotion): Use def-type of stmt argument rather
21213         than dummy def-type.
21214
21215         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
21216         flag_tree_scev_cprop.
21217         * common.opt (tree-scev-cprop): New flag.
21218
21219         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
21220         call to vect_get_new_vect_var.
21221
21222 2007-02-06  Ira Rosen  <irar@il.ibm.com>
21223
21224         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
21225         vectype is not NULL.
21226         (vect_pattern_recog_1): Likewise.
21227
21228 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21229
21230         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
21231         (fold_negate_expr): Likewise.
21232
21233 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
21234
21235         PR debug/30189
21236         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
21237         even if cv-qualification is the same.
21238
21239 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
21240
21241         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
21242         __enable_execute_stack on completion.
21243
21244 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21245
21246         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
21247         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
21248         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
21249         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
21250         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
21251         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
21252         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
21253         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
21254
21255 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21256
21257         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
21258         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
21259         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
21260         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
21261         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
21262         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
21263         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
21264         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
21265         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
21266         umuldi3_highpart_rex64, umulsi3_highpart_insn,
21267         umulsi3_highpart_zext, smuldi3_highpart_rex64,
21268         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
21269         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
21270         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
21271         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
21272         sqrtextenddfxf2_i387): Added amdfam10_decode.
21273
21274         * config/i386/athlon.md (athlon_idirect_amdfam10,
21275         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
21276         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
21277         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
21278         athlon_ivector_store_amdfam10): New define_insn_reservation.
21279         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
21280         amdfam10.
21281
21282 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21283
21284         * config/i386/athlon.md (athlon_call_amdfam10,
21285         athlon_pop_amdfam10, athlon_lea_amdfam10): New
21286         define_insn_reservation.
21287         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
21288         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
21289         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
21290
21291 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21292
21293         * config/i386/athlon.md (athlon_sseld_amdfam10,
21294         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
21295         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
21296
21297 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21298
21299         * config/i386/athlon.md (athlon_sseins_amdfam10): New
21300         define_insn_reservation.
21301         * config/i386/i386.md (sseins): Added sseins to define_attr type
21302         and define_attr unit.
21303         * config/i386/sse.md: Set type attribute to sseins for insertq
21304         and insertqi.
21305
21306 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21307
21308         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
21309         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
21310         ssecomi_load_amdfam10, ssecomi_amdfam10,
21311         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
21312         define_insn_reservation.
21313         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
21314
21315 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21316
21317         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
21318         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
21319         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
21320         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
21321         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
21322         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
21323         define_insn_reservation.
21324
21325         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
21326         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
21327         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
21328         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
21329         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
21330
21331 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21332
21333         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
21334         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
21335         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
21336         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
21337         athlon_ssemul_load_k8): Added amdfam10.
21338
21339 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21340
21341         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
21342         (x86_sse_unaligned_move_optimal): New variable.
21343
21344         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
21345         m_AMDFAM10.
21346         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
21347         for unaligned vector SSE double/single precision loads for AMDFAM10.
21348
21349 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21350
21351         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
21352         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
21353         Define TARGET_CPU_DEFAULT_amdfam10.
21354         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
21355         (processor_type): Add PROCESSOR_AMDFAM10.
21356
21357         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
21358         processor_type in config/i386/i386.h.
21359         Enable imul peepholes for TARGET_AMDFAM10.
21360
21361         * config.gcc: Add support for --with-cpu option for amdfam10.
21362
21363         * config/i386/i386.c (amdfam10_cost): New variable.
21364         (m_AMDFAM10): New macro.
21365         (m_ATHLON_K8_AMDFAM10): New macro.
21366         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
21367         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
21368         x86_promote_QImode, x86_integer_DFmode_moves,
21369         x86_partial_reg_dependency, x86_memory_mismatch_stall,
21370         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
21371         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
21372         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
21373         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
21374         Enable/disable for amdfam10.
21375         (override_options): Add amdfam10_cost to processor_target_table.
21376         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
21377         processor_alias_table.
21378         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
21379         (ix86_adjust_cost): Add code for amdfam10.
21380
21381 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21382
21383         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
21384         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
21385         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
21386         * config/i386/i386.h: Add builtin definition for SSE4A.
21387         * config/i386/i386.md: Add support for ABM instructions
21388         (popcnt and lzcnt).
21389         * config/i386/sse.md: Add support for SSE4A instructions
21390         (movntss, movntsd, extrq, insertq).
21391         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
21392         Add -march=amdfam10 flag.
21393         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
21394         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
21395         and amdfam10.
21396         * doc/extend.texi: Add documentation for SSE4A builtins.
21397
21398 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
21399
21400         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
21401
21402 2007-02-05  Richard Guenther  <rguenther@suse.de>
21403
21404         * tree-vectorizer.h (vectorizable_function): Add argument type
21405         argument, change return type.
21406         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
21407         * tree-vect-transform.c (vectorizable_function): Handle extra
21408         argument, return vectorized function decl.
21409         (build_vectorized_function_call): Remove.
21410         (vectorizable_call): Handle calls with result and argument types
21411         differing.  Handle loop vectorization factor correctly.
21412         * targhooks.c (default_builtin_vectorized_function): Adjust for
21413         extra argument.
21414         * targhooks.h (default_builtin_vectorized_function): Likewise.
21415         * target.h (builtin_vectorized_function): Add argument type
21416         argument.
21417         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
21418         extra argument, allow vectorizing of lrintf.
21419         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
21420         documentation of target hook.
21421
21422 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
21423
21424         PR target/30665
21425         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
21426         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
21427         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
21428
21429 2007-02-05  Roger Sayle  <roger@eyesopen.com>
21430
21431         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
21432         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
21433         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
21434         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
21435         before canonicalizing sincos to cexpi.
21436         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
21437
21438 2007-02-05  Roger Sayle  <roger@eyesopen.com>
21439
21440         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
21441         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
21442         (alpha_init_builtins): Use alpha_add_builtins to process tables.
21443
21444 2007-02-05  Roger Sayle  <roger@eyesopen.com>
21445
21446         * mips-tfile.c (initialize_init_file): Correct endianness test.
21447
21448 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
21449
21450         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
21451         the 'y' constraint.
21452
21453 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
21454
21455         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
21456         saves in a PARALLEL before the register assignments.
21457
21458 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
21459
21460         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
21461         DWARF_FRAME_RETURN_COLUMN to be a general register.
21462         * dwarf2out.c (init_return_column_size): New function, split from...
21463         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
21464         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
21465         to be nongeneral registers.
21466         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
21467         integer registers.
21468         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
21469         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
21470
21471 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
21472
21473         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
21474
21475 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
21476
21477         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
21478         (remove_path): Use can_remove_branch_p and remove_branch instead
21479         of loop_delete_branch_edge.
21480         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
21481         (tree_transform_and_unroll_loop): Remove dead branches immediately.
21482         Update profile using scale_dominated_blocks_in_loop.
21483         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
21484         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
21485         (can_remove_branch_p, remove_branch): Declare.
21486         * tree-cfg.c (tree_can_remove_branch_p): New function.
21487         (tree_cfg_hooks): Add tree_can_remove_branch_p.
21488         * cfgrtl.c (rtl_can_remove_branch_p): New function.
21489         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
21490
21491 2007-02-05  Jan Hubicka  <jh@suse.cz>
21492
21493         PR middle-end/30696
21494         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
21495         nodes in cgraph, don't remove offline copy of the function.
21496
21497 2007-02-04  Jan Hubicka  <jh@suse.cz>
21498
21499         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
21500         vectors might cause maybe_lookup_element_for_expr to be called
21501         on non-sra-candidate.
21502
21503 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
21504
21505         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
21506         config/bfin/bfin.md, config/bfin/predicates.md: Follow
21507         spelling conventions.
21508
21509 2007-02-04  Richard Guenther  <rguenther@suse.de>
21510
21511         PR middle-end/30636
21512         * fold-const.c (try_move_mult_to_index): Make sure to not
21513         overflow one dimension of a multi-dimensional array access.
21514
21515 2007-02-04  Jan Hubicka  <jh@suse.cz>
21516
21517         * passes.c (init_optimization_passes): Reindent.
21518
21519 2007-02-04  Jan Hubicka  <jh@suse.cz>
21520             Eric Botcazou  <ebotcazou@adacore.com>
21521
21522         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
21523         (execute_fixup_cfg): Break out the abnormal goto code.
21524         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
21525         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
21526         (optimize_inline_calls): Call make_nonlocal_label_edges.
21527
21528 2007-02-04  Jan Hubicka  <jh@suse.cz>
21529
21530         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
21531         true when something was changed.
21532         (rename_ssa_copies): When something was changed, do
21533         TODO_remove_unused_locals.
21534         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
21535         add TODO_remove_unused_locals when instruction was removed.
21536
21537 2007-02-04  Jan Hubicka  <jh@suse.cz>
21538
21539         * ipa-inline.c (try_inline): Improve debug output; work on already
21540         inline edges too.
21541         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
21542         call try_inline for already inlined edges too when flattening;
21543         inline also functions that make callee growth but overall unit size
21544         reduce.
21545
21546 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
21547
21548         * config/m32c/bitops.md, config/m32c/jump.md,
21549         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
21550         config/m32r/m32r.h, config/m32r/m32r.md,
21551         config/m32r/predicates.md, config/m68hc11/larith.asm,
21552         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
21553         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
21554         config/mips/mips-protos.h, config/mips/mips.c,
21555         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
21556         config/mn10300/mn10300.h, config/mn10300/predicates.md,
21557         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
21558         spelling conventions.
21559
21560         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
21561         Follow spelling conventions.
21562
21563 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
21564
21565         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
21566         warn about C++0x compatibility.
21567
21568 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
21569
21570         * config/h8300/h8300.c, config/h8300/h8300.h,
21571         config/h8300/h8300.md: Follow spelling conventions.
21572
21573 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
21574
21575         PR middle-end/30667
21576         * combine.c (try_combine): Do not substitute source operand
21577         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
21578
21579 2007-02-03  Jan Hubicka  <jh@suse.cz>
21580
21581         PR gcov-profile/30650
21582         * value-prof.c (stringop_block_profile): Fix handling of size counter;
21583         do not divide by zero for never executed counters.
21584         (tree_find_values_to_profile): Fix counters.
21585         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
21586
21587 2007-02-03  Ian Lance Taylor  <iant@google.com>
21588
21589         * lower-subreg.c (simple_move_operand): New static function,
21590         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
21591         operands.
21592         (simple_move): Call simple_move_operand.
21593         (find_decomposable_subregs): Add special handling of MEMs.
21594         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
21595         meaning of return value.  If we see a hard register, test whether
21596         it can store a word_mode value.  Change all callers.
21597
21598 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21599
21600         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
21601         ftrapv insns and expanders.
21602         (subdi3): Change define_expand operand 1 to arith11_operand, and
21603         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
21604         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
21605         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
21606         respectively.
21607
21608         PR middle-end/30174
21609         * varasm.c (notice_global_symbol): Treat global objects as weak when
21610         flag_shlib is true.
21611
21612 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21613
21614         * emit-rtl.c (dconstpi): Delete.
21615         (dconstsqrt2): New.
21616         (init_emit_once): Delete dconstpi and init dconstsqrt2.
21617         * real.h (dconstpi): Delete.
21618         (dconstsqrt2): New.
21619         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
21620         (fold_builtin_hypot): Likewise.
21621
21622 2007-02-03  Tom Tromey  <tromey@redhat.com>
21623
21624         PR driver/30246
21625         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
21626         -gcoff3, -gxcoff3, -gvms3 implies -dD.
21627
21628 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
21629
21630         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
21631         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
21632         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
21633         config/rs6000/cell.md, config/rs6000/darwin.h,
21634         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
21635         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
21636         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
21637         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
21638         typos.  Follow spelling conventions.
21639         * doc/invoke.texi: Follow spelling conventions.
21640
21641 2007-02-03  Roger Sayle  <roger@eyesopen.com>
21642
21643         * simplify-rtx.c (simplify_relational_operation_1): Implement some
21644         canonicalization transformations that attempt to simplify integer
21645         constant comparisons to become comparisons against zero.
21646
21647 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21648
21649         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
21650         fabs(x)*sqrt(2).
21651         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
21652         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
21653
21654 2007-02-02  Mike Stump  <mrs@apple.com>
21655
21656         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
21657         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
21658         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
21659         generate a branch island.
21660
21661 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
21662
21663         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
21664         (xtensa_legitimate_address_p): New.
21665         (xtensa_legitimize_address): New.
21666         (xtensa_output_addr_const_extra): New.
21667         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
21668         (BASE_REG_P): New.
21669         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
21670         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
21671         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
21672         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
21673         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
21674         (xtensa_legitimize_address): New.
21675         (xtensa_output_addr_const_extra): New.
21676
21677 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
21678
21679         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
21680
21681 2007-02-02  Ian Lance Taylor  <iant@google.com>
21682
21683         * expmed.c (expand_divmod): Add comment.
21684
21685 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
21686
21687         * emit-rtl.c (renumber_insns): Remove.
21688         * flags.h: Remove the extern for flag_renumber_insns.
21689         * rtl.h: Remove the prototype for renumber_insns.
21690         * toplev.c (flag_renumber_insns): Remove.
21691
21692 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
21693
21694         Revert for x86 darwin:
21695         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
21696
21697         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
21698         code before the following patch under TARGET_MACHO.
21699         (ix86_function_value_regno_p): Likewise.
21700
21701 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21702
21703         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
21704         COMPLEX_EXPR.
21705
21706 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
21707
21708         PR target/29682
21709         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory
21710         loads to general or fp registers.  Add comments.
21711         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
21712
21713 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
21714
21715         * pointer-set.c (insert_aux): Only return insertion slot.
21716         (pointer_set_insert): Adjust.
21717         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
21718         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
21719         pointer_map_traverse): New.
21720         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
21721         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
21722         pointer_map_contains, pointer_map_traverse): Declare.
21723
21724 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
21725
21726         PR middle-end/30473
21727         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
21728         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
21729
21730 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
21731
21732         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
21733
21734         (struct _dep): New type.
21735         (dep_t): New typedef.
21736         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
21737         (DEP_STATUS): New access macro.  The macro with the same name was
21738         renamed to DEP_LINK_STATUS.
21739         (dep_init): Declare function
21740
21741         (struct _dep_link): New type.
21742         (dep_link_t): New typedef.
21743         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
21744         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
21745         (DEP_LINK_STATUS): New macro.
21746         (debug_dep_links): New debug function.
21747
21748         (struct _deps_list): New type.
21749         (deps_list_t): New typedef.
21750         (DEPS_LIST_FIRST): New access macro.
21751         (FOR_EACH_DEP_LINK): New cycle macro.
21752         (create_deps_list, free_deps_list, delete_deps_list): Declare
21753         functions.
21754         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
21755         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
21756         (copy_deps_list_change_con): Ditto.
21757
21758         (move_dep_link): Declare function.
21759
21760         (struct _dep_node): New type.
21761         (dep_node_t): New typedef.
21762         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
21763
21764         (struct haifa_insn_data.back_deps): New field to hold backward
21765         dependencies of the insn.
21766         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
21767         to deps_list_t.
21768         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
21769         Change its type to deps_list_t.
21770         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
21771         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
21772         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
21773
21774         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
21775
21776         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
21777
21778         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration
21779         and all callers.
21780         (dep_cost): Declare.
21781
21782         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
21783         (ds_to_dk, dk_to_ds): New functions.
21784
21785         (init_dep_1): New static function.
21786         (init_dep): New function.
21787         (copy_dep): New static function.
21788
21789         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
21790         functions.
21791         (detach_dep_link): New static function.
21792         (move_dep_link): New function.
21793
21794         (dep_links_consistent_p, dump_dep_links): New static functions.
21795         (debug_dep_links): New debugging function.
21796
21797         (deps_obstack, dl_obstack, dn_obstack): New static variables.
21798
21799         (alloc_deps_list, init_deps_list): New static functions.
21800         (create_deps_list): New function.
21801         (clear_deps_list): New static function.
21802         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
21803         (deps_list_consistent_p, dump_deps_list): New static functions.
21804         (debug_deps_list): New function.
21805         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
21806         functions.
21807         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
21808
21809         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
21810         use new scheduler dependencies lists.
21811         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
21812         (sched_analyze): Ditto.  Initialize dependencies lists.
21813         (add_forw_dep, compute_forward_dependences): Update to use new
21814         scheduler dependencies lists.
21815
21816         (init_dependency_caches): Init deps_obstack.
21817         (free_dependency_caches): Free deps_obstack.
21818
21819         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
21820         new scheduler dependencies lists.
21821         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
21822         (add_back_forw_dep, delete_back_forw_dep): Ditto.
21823
21824         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
21825         Update to use new scheduler dependencies lists.
21826         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
21827         (debug_dependencies): Ditto.
21828         (schedule_region): Update comments.
21829
21830         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
21831         scheduler dependencies lists.
21832         (schedule_ebb): Update comments.
21833
21834         * rtl.def (DEPS_LIST): Remove.
21835
21836         * lists.c (unused_deps_list): Remove.
21837         (free_list): Update assertions.
21838
21839         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
21840         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
21841
21842         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
21843         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
21844
21845         * haifa-sched.c (comments): Update.
21846         (insn_cost1): Remove.  Inline the code into insn_cost ().
21847         (insn_cost): Update to use new scheduler dependencies lists.  Move
21848         processing of the dependency cost to dep_cost ().
21849         (dep_cost): New function.  Use it instead of insn_cost () when
21850         evaluating cost of the dependency.  Use compatible interface to
21851         interact with the target.
21852         (priority): Update to use new scheduler dependencies lists.
21853         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
21854         with greater number of insns that depend on the insn.
21855         (schedule_insn): Update to use new scheduler dependencies lists.  Add
21856         code to free backward dependencies lists.  Inline and optimize code
21857         from resolve_dep () - see PR28071.
21858         (ok_for_early_queue_removal): Update to use new scheduler dependencies
21859         lists.  Update call to targetm.sched.is_costly_dependence hook.
21860
21861         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
21862         scheduler dependencies lists.
21863
21864         (resolve_dep): Remove.  Move the logic to schedule_insn ().
21865         (init_h_i_d): Initialize dependencies lists.
21866
21867         (process_insn_depend_be_in_spec): Rename to
21868         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
21869         dependencies lists.
21870         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
21871         Update to use new scheduler dependencies lists.
21872         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
21873
21874         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
21875         new scheduler dependencies lists.
21876         (build_intra_loop_deps): Ditto.
21877
21878         * target.h (struct _dep): Declare to use in
21879         gcc_target.sched.is_costly_dependence.
21880         (struct gcc_target.sched.adjust_cost): Fix typo.
21881         (struct gcc_target.sched.is_costly_dependence): Change signature to
21882         use single dep_t parameter instead of an equivalent triad.
21883         (struct gcc_target.sched.adjust_cost_2): Remove.
21884
21885         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
21886
21887         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
21888
21889         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
21890         documentation.
21891         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
21892
21893         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
21894         (REG_DEP_TRUE): Document.
21895
21896         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
21897         Change signature to correspond to the targetm.sched.adjust_cost hook.
21898         Update use in TARGET_SCHED_ADJUST_COST_2.
21899         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
21900         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
21901         new scheduler dependencies lists.
21902         (ia64_gen_check): Ditto.
21903
21904         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new
21905         scheduler dependencies lists.
21906
21907         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
21908         signature to correspond to the targetm.sched.is_costly_dependence hook.
21909         (is_costly_group): Update to use new scheduler dependencies lists.
21910
21911         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
21912         instead of INSN_COST () macro.
21913
21914 2007-02-01  Ian Lance Taylor  <iant@google.com>
21915
21916         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
21917
21918 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
21919
21920         * pa.md (tp_load): Correct mfctl instruction syntax.
21921
21922 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
21923
21924         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
21925         altivec_padding_size calculation on AIX.  Improve comment, add
21926         assert to verify that it's right.
21927
21928         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
21929         64-bit.
21930
21931 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
21932
21933         PR inline-asm/28686
21934         * global.c (global_alloc): Add mising initialization of
21935         ELIMINABLE_REGSET.
21936
21937 2007-02-01  Roger Sayle  <roger@eyesopen.com>
21938
21939         * alias.c (init_alias_analysis): Correct whitespace.
21940         * bb-reorder.c (fix_edges_for_rarely_executed_code,
21941         partition_hot_cold_basic_blocks): Likewise.
21942         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
21943         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
21944         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
21945         fold_builtin_snprintf_chk, fold_builtin_printf,
21946         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
21947         do_mpfr_arg3, do_mpfr_sincos): Likewise.
21948         * cfgcleanup.c (cleanup_cfg): Likewise.
21949         * cfgexpand.c (tree_expand_cfg): Likewise.
21950         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
21951         * function.c (get_next_funcdef_no): Likewise.
21952         * gengtype.c (main): Likewise.
21953         * genmodes.c (main): Likewise.
21954         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
21955         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
21956         * ifcvt.c (noce_emit_move_insn): Likewise.
21957         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
21958         Likewise.
21959         * stor-layout.c (get_best_mode): Likewise.
21960         * tree-ssa-loop-niter.c (get_val_for): Likewise.
21961         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
21962         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
21963         perform_var_substitution, solve_graph): Likewise.
21964         * tree-vrp.c (vrp_finalize): Likewise.
21965
21966 2007-02-01  Ian Lance Taylor  <iant@google.com>
21967
21968         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
21969         high part of a paradoxical subreg, return a constant zero.
21970
21971 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
21972
21973         * toplev.c (lang_dependent_init): Call init_set_costs.
21974         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
21975
21976 2007-02-01  Richard Guenther  <rguenther@suse.de>
21977
21978         PR middle-end/30656
21979         * fold-const.c (fold_negate_expr): Allow negating a
21980         constant if overflow does not change.
21981
21982 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21983
21984         * doc/c-tree.texi (Expression trees): Improve markup.
21985         * doc/tm.texi (Register Classes, Addressing Modes)
21986         (Floating Point): Fix spacing after abbreviations.  Fix some
21987         typos.
21988
21989 2007-02-01  Ben Elliston  <bje@au.ibm.com>
21990
21991         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
21992         * doc/contrib.texi: Likewise.
21993         * doc/install.texi: Likewise.
21994
21995 2007-01-31  Richard Henderson  <rth@redhat.com>
21996             Ian Lance Taylor  <iant@google.com>
21997
21998         * lower-subreg.c: New file.
21999         * rtl.def (CONCATN): Define.
22000         * passes.c (init_optimization_passes): Add pass_lower_subreg and
22001         pass_lower_subreg2.
22002         * emit-rtl.c (update_reg_offset): New static function, broken out
22003         of gen_rtx_REG_offset.
22004         (gen_rtx_REG_offset): Call update_reg_offset.
22005         (gen_reg_rtx_offset): New function.
22006         * regclass.c: Revert patch of 2006-03-05, restoring
22007         reg_scan_update.
22008         (clear_reg_info_regno): New function.
22009         * dwarf2out.c (concatn_loc_descriptor): New static function.
22010         (loc_descriptor): Handle CONCATN.
22011         * common.opt (fsplit_wide_types): New option.
22012         * opts.c (decode_options): Set flag_split_wide_types when
22013         optimizing.
22014         * timevar.def (TV_LOWER_SUBREG): Define.
22015         * rtl.h (gen_reg_rtx_offset): Declare.
22016         (reg_scan_update): Declare.
22017         * regs.h (clear_reg_info_regno): Declare.
22018         * tree-pass.h (pass_lower_subreg): Declare.
22019         (pass_lower_subreg2): Declare.
22020         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
22021         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
22022         -fsplit-wide-types.
22023         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
22024         * Makefile.in (OBJS-common): Add lower-subreg.o.
22025         (lower-subreg.o): New target.
22026
22027 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
22028
22029         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
22030
22031 2007-01-31  Anatoly Sokolov <aesok@post.ru>
22032
22033         PR target/19087
22034         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
22035
22036 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22037
22038         PR middle-end/29335
22039         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
22040
22041 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
22042
22043         * cfgloop.h: Include vec-prim.h.
22044         (enum li_flags): Remove LI_ONLY_OLD.
22045         (loop_iterator): Changed.
22046         (fel_next, fel_init): Iterate over loop tree.
22047         (FOR_EACH_LOOP_BREAK): New macro.
22048         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
22049         FOR_EACH_LOOP.
22050         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
22051         * modulo-sched.c (sms_schedule): Ditto.
22052         * tree-vectorizer.c (vectorize_loops): Ditto.
22053         * doc/loop.texi: Update information on loop numbering and behavior of
22054         FOR_EACH_LOOP wrto new loops.
22055         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
22056         add_to_evolution_1): Test nestedness of loops instead of comparing
22057         their numbers.
22058         * tree-chrec.c (chrec_fold_plus_poly_poly,
22059         chrec_fold_multiply_poly_poly, chrec_evaluate,
22060         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
22061         reset_evolution_in_loop): Ditto.
22062         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
22063
22064 2007-01-31  Dirk Mueller  <dmueller@suse.de>
22065
22066         * c-common.c (warn_about_parentheses): Separate warning about
22067         un-parenthized sequence of comparison operators from the one
22068         which is supposed to warn about x <= y <= z.
22069
22070 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
22071
22072         * optabs.h (enum optab_index): Add new OTI_isinf.
22073         (isinf_optab): Define corresponding macro.
22074         * optabs.c (init_optabs): Initialize isinf_optab.
22075         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
22076         patterns.
22077         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
22078         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
22079         using isinf_optab.
22080         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
22081         expand_builtin_interclass_mathfn.
22082         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
22083         * config/i386/i386.md (UNSPEC_FXAM): New constant.
22084         (fxam<mode>2_i387): New insn pattern.
22085         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
22086         built-in functions as x87 inline asm.
22087
22088 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
22089
22090         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
22091
22092 2007-01-30  Eric Christopher  <echristo@apple.com>
22093
22094         * config.gcc: Add geode.
22095
22096 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
22097
22098         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
22099         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
22100         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
22101         value-prof.c: Fix comment typos.
22102
22103 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22104
22105         PR c++/24745
22106         * doc/invoke.texi (Wpointer-arith): Document warning.
22107
22108 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
22109
22110         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
22111         the list of discrepancies from the draft TR.
22112
22113 2007-01-30  Dirk Mueller  <dmueller@suse.de>
22114
22115         PR c++/30601
22116         * doc/invoke.texi (-Wreturn-type): Update description to
22117         match new behavior.
22118
22119 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
22120
22121         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
22122
22123 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
22124
22125         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
22126         to handle optabs that operate on floating point input argument and
22127         output to integer output.
22128         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
22129         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
22130         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
22131         expand_builtin_interclass_mathfn ().
22132         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
22133         (ilogbsi2): Remove.
22134         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
22135         ilogbl built-in functions as x87 intrinsics.
22136
22137 2007-01-30  Richard Guenther  <rguenther@suse.de>
22138
22139         PR middle-end/27657
22140         * dwarf2out.c (reference_to_unused): Query varpool if the
22141         variable was output.
22142
22143 2007-01-30  Richard Guenther  <rguenther@suse.de>
22144
22145         PR middle-end/30313
22146         * passes.c (execute_one_pass): Reset in_gimple_form to not
22147         confuse non-unit-at-a-time mode.
22148
22149 2007-01-29  Roger Sayle  <roger@eyesopen.com>
22150             Richard Guenther  <rguenther@suse.de>
22151
22152         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
22153         avoid undefined behaviour on overflow.  Use force_fit_type_double
22154         to construct the constant with the specified TREE_OVERFLOW.
22155
22156 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
22157
22158         * config/dfp-bit.c: Add parameterized support for fp exceptions.
22159         * config/dfp-bit.h: Ditto.
22160
22161 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22162
22163         * c-decl.c (pop_scope): Replace warnings with call to
22164         warn_for_unused_label.
22165         * c-common.h (warn_for_unused_label): Declare.
22166         * c-common.c (warn_for_unused_label): Define.
22167
22168 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22169
22170         * tree-optimize.c (update_inlined_to_pointers): Delete unused
22171         function.
22172
22173 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
22174
22175         * Makefile.in (USER_H): Remove decfloat.h.
22176         * ginclude/decfloat.h: Delete, moving contents to ...
22177         * ginclude/float.h: Add support for decimal floating point,
22178         guarded by __STDC_WANT_DEC_FP__.
22179
22180 2007-01-29  Mike Stump  <mrs@apple.com>
22181
22182         * doc/gccint.texi (Top): Rename Loop Representation to Loop
22183         Analysis and Representation to resolve case insensitive conflict.
22184         * doc/loop.texi (Loop Analysis and Representation): Likewise.
22185
22186 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
22187
22188         * tree.h (struct tree_memory_tag): Add aliases member.
22189         (MTAG_ALIASES): New macro.
22190         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
22191         (add_may_alias): Remove pointer-set. Update for may_aliases being
22192         a bitmap.
22193         (mark_aliases_call_clobbered): Update for may_aliases being a
22194         bitmap.
22195         (compute_tag_properties): Ditto.
22196         (create_partition_for): Ditto.
22197         (compute_memory_partitions): Ditto.
22198         (dump_may_aliases_for): Ditto.
22199         (is_aliased_with): Ditto.
22200         (add_may_alias_for_new_tag): Ditto.
22201         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
22202         (compute_is_aliased): New function.
22203         (compute_may_aliases): Call compute_is_aliased).
22204         (init_alias_info): Initialize alias_bitmap_obstack.
22205         (union_alias_set_into): New function.
22206         (compute_flow_sensitive_aliasing): Use union_aliases_into.
22207         (have_common_aliases_p): Rewrite to take two bitmaps and use
22208         intersection.
22209         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
22210         Update for bitmaps.
22211         (finalize_ref_all_pointers): Update for add_may_alias changes.
22212         (new_type_alias): Ditto.
22213         * tree-flow-inline.h (may_aliases): Return a bitmap.
22214         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
22215         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
22216         may_aliases being a bitmap.
22217         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
22218         may_aliases now returns a bitmap.
22219         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
22220         being a bitmap.
22221         * tree-ssa-operands.c (add_virtual_operand): Update for
22222         may_aliases being a bitmap.
22223
22224 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
22225
22226         PR tree-optimization/30630
22227         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
22228         variable as changed.
22229
22230 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
22231
22232         PR c++/28266
22233         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
22234         expanded only once even if an error occurs.
22235
22236 2007-01-29  Ben Elliston  <bje@au.ibm.com>
22237
22238         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
22239         (__gcov_average_profiler): Likewise.
22240         (__gcov_ior_profiler): Likewise.
22241         (__gcov_merge_ior): Likewise.
22242
22243 2007-01-28  Jan Hubicka  <jh@suse.cz>
22244
22245         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
22246         * value-prof.c (stringop_block_profile): Likewise.
22247
22248 2007-01-28  Jan Hubicka  <jh@suse.cz>
22249
22250         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall):
22251         Add variant handling histograms; add wrapper.
22252         (clear_storage_via_libcall): Export.
22253         (emit_block_move_hints): Break out from ...; add histograms.
22254         (emit_block_move): ... this one.
22255         (clear_storage_hints): Break out from ...; add histograms.
22256         (clear_storage): ... this one.
22257         (set_storage_via_memset): Handle histogram.
22258         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
22259         (clear_storage_hints, clear_storage_via_libcall): Declare.
22260         (set_storage_via_setmem): Update prototype.
22261         * doc/md.texi (movmem, setmem): Document new arguments.
22262
22263         * value-prof.c (dump_histogram_value, tree_find_values_to_profile):
22264         Add new histograms.
22265         (stringop_block_profile): New global function.
22266         (tree_stringops_values_to_profile): Profile block size and alignment.
22267         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
22268         HIST_TYPE_IOR.
22269         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
22270         (stringop_block_profile): Declare.
22271         * builtins.c: Include value-prof.h.
22272         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
22273         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
22274         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
22275         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
22276         * profile.c (instrument_values): Add new counters.
22277         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
22278         calls.
22279         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
22280         (tree_init_edge_profiler): Build new profilers.
22281         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
22282         (pass_tree_profile): Add dump.
22283         (tree_profile_hooks): Update.
22284         * Makefile.in (LIBGCOV): Add new constants.
22285         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
22286         __gcov_ior_profiler): New.
22287         * i386.md (movmem/setmem expanders): Add new optional arguments.
22288
22289 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
22290
22291         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
22292
22293 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
22294
22295         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
22296         (tree_unswitch_single_loop): Pass eni_size_weights to
22297         tree_num_loop_insns.
22298         * tree-ssa-loop-manip.c: Include tree-inline.h.
22299         (can_unroll_loop_p): Pass eni_size_weights to
22300         tree_num_loop_insns.
22301         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
22302         Pass eni_size_weights to estimate_num_insns.
22303         * tree.h (init_inline_once): Export.
22304         * toplev.c (backend_init): Call init_inline_once.
22305         * cgraphunit.c (cgraph_process_new_functions,
22306         cgraph_analyze_function): Pass eni_inlining_weights to
22307         estimate_num_insns.
22308         * ipa-inline.c (compute_inline_parameters): Ditto.
22309         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
22310         to estimate_num_insns.
22311         (try_unroll_loop_completely): Pass eni_size_weights to
22312         tree_num_loop_insns.
22313         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
22314         ot estimate_num_insns.
22315         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
22316         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
22317         * tree-inline.c (eni_inlining_weights, eni_size_weights,
22318         eni_time_weights): New variables.
22319         (init_inline_once): Initialize them.
22320         (struct eni_data): Mew.
22321         (estimate_num_insns_1, estimate_num_insns): Use weights.
22322         * tree-inline.h (struct eni_weights_d): New.
22323         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
22324         (estimate_num_insns): Declaration changed.
22325         * cfgloop.h (tree_num_loop_insns): Declaration changed.
22326         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
22327         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
22328
22329 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
22330
22331         * tree-data-ref.c (conflict_fn): Assert that the number of affine
22332         relations in the conflict function is valid.
22333
22334 2007-01-27  Ian Lance Taylor  <iant@google.com>
22335
22336         * common.opt: Add fstrict-overflow.
22337         * opts.c (decode_options): Set flag_strict_overflow if -O2.
22338         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
22339         (TYPE_OVERFLOW_UNDEFINED): Define.
22340         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
22341         Replace all uses.
22342         * tree.h (TYPE_TRAP_SIGNED): Don't define.
22343         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
22344         (fold_negate_expr): Likewise.
22345         (make_range): Likewise.
22346         (extract_muldiv_1): Likewise.
22347         (maybe_canonicalize_comparison): Likewise.
22348         (fold_comparison): Likewise.
22349         (fold_binary): Likewise.
22350         (tree_expr_nonnegative_p): Likewise.
22351         (tree_expr_nonzero_p): Likewise.
22352         * tree-vrp.c (compare_values): Likewise.
22353         (extract_range_from_binary_expr): Likewise.
22354         (extract_range_from_unary_expr): Likewise.
22355         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
22356         Likewise.
22357         (nowrap_type_p): Likewise.
22358         * tree-scalar-evolution.c (simple_iv): Likewise.
22359         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
22360         (build_range_check): Likewise.
22361         (extract_muldiv_1): Likewise.
22362         (fold_comparison): Likewise.
22363         * tree-vrp.c (vrp_int_const_binop): Likewise.
22364         (extract_range_from_unary_expr): Likewise.
22365         * convert.c (convert_to_integer): Likewise.
22366         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
22367         (fold_comparison): Likewise.
22368         (fold_binary): Likewise.
22369         * optabs.c (optab_for_tree_code): Likewise.
22370         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
22371         * simplify-rtx.c (simplify_const_relational_operation): Check
22372         flag_strict_overflow and flag_trapv.
22373         (simplify_const_relational_operation): Likewise.
22374         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
22375         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
22376         -fstrict-overflow.
22377
22378 2007-01-27  Roger Sayle  <roger@eyesopen.com>
22379
22380         * tree.c (tree_fold_gcd): Delete.
22381         * tree.h (tree_fold_gcd): Remove prototype.
22382         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
22383         test whether one constant integer is a multiple of another.  Instead
22384         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
22385         * fold-const.c (multiple_of_p):  We've determined both TOP and
22386         BOTTOM are integer constants so we can call int_const_binop directly
22387         instead of the more generic const_binop.
22388
22389 2007-01-27  Roger Sayle  <roger@eyesopen.com>
22390
22391         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
22392         1*X check that the constant hasn't overflowed, to preserve the
22393         TREE_OVERFLOW bit.
22394         (round_up): Provide an efficient implementation when rouding-up an
22395         INTEGER_CST to a power-of-two.
22396
22397 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22398
22399         * doc/sourcebuild.texi: Add comma for clarity.
22400         * doc/extend.texi: Fix some typos.
22401         * doc/passes.texi: Likewise.
22402         * doc/cppinternals.texi: Likewise.
22403         * doc/c-tree.texi: Likewise.
22404         * doc/tree-ssa.texi: Likewise.
22405         * doc/install.texi: Likewise.
22406
22407 2007-01-27  Jan Hubicka  <jh@suse.cz>
22408
22409         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
22410         (pass_sra): Do not require alias information.
22411         * passes.c (init_optimization_passes): Add SRA
22412
22413 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
22414
22415         * tracer.c (rest_of_handle_tracer): We already cleaned
22416         up the CFG in tracer() so don't do it here again.
22417         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
22418         cleanup_cfg here, either.  And don't call renumber_insns.
22419
22420         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
22421         and BB_HEAD are in the insn stream here.  Instead make sure
22422         that BB_INSN is valid on all insns.  Also, do check here that
22423         there are no pending branch predictions...
22424         (rtl_verify_flow_info): ...instead of doing it here.  Checks
22425         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
22426         here.
22427
22428 2007-01-26  Roger Sayle  <roger@eyesopen.com>
22429
22430         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
22431         function to simplify/factorize operand order canonicalization.
22432         (ix86_fixup_binary_operands): Reorganize using the above function.
22433         (ix86_binary_operator_ok): Likewise.
22434
22435 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
22436
22437         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
22438         file scope from optimize_attrs.
22439         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
22440         up search.
22441         (optimize_attrs): Clear insn_code_values after freeing it.
22442
22443 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
22444
22445         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
22446         a parts.base assignment.
22447
22448 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
22449
22450         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
22451         (compute_subscript_distance, initialize_data_dependence_relation,
22452         finalize_ddr_dependent, analyze_ziv_subscript,
22453         analyze_siv_subscript_cst_affine,
22454         compute_overlap_steps_for_affine_univar,
22455         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
22456         analyze_siv_subscript, analyze_miv_subscript,
22457         analyze_overlapping_iterations, subscript_dependence_tester_1,
22458         compute_self_dependence, free_dependence_relation): Work
22459         with affine_fn instead of chrecs.
22460         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
22461         common_affine_function, affine_function_base,
22462         affine_function_constant_p, affine_fn_op, affine_fn_plus,
22463         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
22464         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
22465         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
22466         (all_chrecs_equal_p): Removed.
22467         * tree-data-ref.h (affine_fn, conflict_function): New types.
22468         (struct subscript): Change type of conflicting_iterations_in_a
22469         and conflicting_iterations_in_b.
22470
22471 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
22472
22473         PR other/30182
22474         * config/pa/pa.h (TARGET_HPUX_11): New.
22475         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
22476         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
22477
22478 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
22479         Richard Guenther  <rguenther@suse.de>
22480
22481         * tree-ssa-structalias.c (solve_graph): Handle case
22482         we merged the variable to another.
22483
22484 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22485
22486         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
22487         functions.
22488
22489         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
22490         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
22491
22492 2007-01-25  DJ Delorie  <dj@redhat.com>
22493
22494         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
22495         allow changes to modes which don't fit in those registers.
22496
22497         * reload1.c (choose_reload_regs): Check for invalid subregs before
22498         computing their locations, not after.
22499
22500 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
22501
22502         PR 25127
22503         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
22504         save Altivec registers in an eh_return function.
22505         (compute_vrsave_mask): Likewise.
22506         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
22507         for saving Altivec registers.
22508         (rs6000_emit_prologue): Don't allocate stack twice in
22509         eh_return function.  Correct expected value of altivec_save_offset
22510         when using save_world.  Describe save of R0 to stack when using
22511         save_world.  Describe stack pointer adjustment when using
22512         save_world.  Remove duplicated eh_return parameter register saving.
22513         Update sp_offset variable after save_world.
22514         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
22515         darwin-world.asm.
22516         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
22517         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
22518         implies Altivec.
22519
22520 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
22521
22522         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
22523
22524 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
22525
22526         PR other/30182
22527         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
22528         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
22529
22530 2007-01-25  Richard Guenther  <rguenther@suse.de>
22531
22532         * doc/invoke.texi (-Wcoverage-mismatch): Document.
22533         * common.opt (-Wcoverage-mismatch): New warning option.
22534         * coverage.c (get_coverage_counts): Ignore coverage mismatch
22535         if -Wcoverage-mismatch is given.
22536
22537 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
22538
22539         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
22540         (ipcp_driver): Change to static definition.
22541         Add dumping of the ifunctions.
22542         (constant_val_insert): Remove unused parameter. Support for SSA.
22543         (ipcp_propagate_const): Support for SSA.
22544         (ipcp_profile_bb_print): Print only analyzed nodes.
22545         (ipcp_replace_map_create): Remove support for Fortran constant
22546         for now.
22547         * ipa-prop.c (ipa_method_modify_stmt,
22548         ipa_callsite_compute_param): Support for SSA.
22549         * ipa-prop.h (ipcp_driver): Remove declaration.
22550         (IS_VALID_TREE_MAP_INDEX): Add define.
22551
22552 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
22553
22554         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
22555
22556 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22557
22558         PR middle-end/30447
22559         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
22560         constant argument to cabs and do it without checking for
22561         -funsafe-math-optimizations.
22562
22563 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
22564
22565         * c-common.h (RID_FIRST_CXX0X): New.
22566         (RID_LAST_CXX0X): New.
22567         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
22568         by -Wall.
22569         * c.opt (Wc++0x-compat): New.
22570         * doc/invoke.texi (-Wc++0x-compat): Document.
22571
22572 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22573
22574         * builtins.c (fold_builtin_carg): New.
22575         (fold_builtin_1): Use it.
22576
22577 2007-01-24  Jan Hubicka  <jh@suse.cz>
22578
22579         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
22580
22581         * ipa-inline.c (initial_insns, max_insns): Delete.
22582         (compute_max_insns): New function.
22583         (cgraph_decide_inlining_of_small_function): Use it; take minimal
22584         amount of insns as base for code growth.
22585         (cgraph_decide_inlining): Make initial_insns local; do not compute
22586         max_insns.
22587         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
22588         * doc/invoke.texi (inline-unit-growth): Update docs.
22589
22590 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
22591
22592         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
22593         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
22594         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
22595         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
22596         for CPUs that have PTA_CX16 set.
22597
22598         PR middle-end/27416
22599         * gimplify.c (omp_check_private): New function.
22600         (gimplify_scan_omp_clauses): Use it for
22601         firstprivate/lastprivate/reduction.
22602
22603         PR middle-end/30494
22604         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
22605         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
22606
22607         PR middle-end/30421
22608         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
22609         If lower_lastprivate_clauses emits some statements, append them
22610         to dlist rather than body_p and to body_p append an initializer.
22611         (lower_omp_for): Adjust caller.
22612
22613 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
22614
22615         * target.h (globalize_decl_name): New.
22616         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
22617         * output.h (default_globalize_decl_name): New.
22618         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
22619         globalize_label.
22620         (globalize_decl): Ditto.
22621         (default_globalize_decl_name): New.
22622         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
22623         (ia64_handle_version_id_attribute): New.
22624         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
22625         (ia64_asm_output_external): Use globalize_decl_name instead
22626         of globalize_label.
22627         * doc/extend.texi (version_id): New pragma.
22628         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
22629
22630 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
22631
22632         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
22633         _uleb128_t and _Unwind_SWord with _sleb128_t.
22634         * unwind-dw2.c (extract_cie_info, execute_stack_op,
22635         execute_cfa_program, uw_frame_state_for, uw_update_context_1):
22636         Likewise.
22637         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
22638         * unwind-pe.h (read_uleb128, read_sleb128,
22639         read_encoded_value_with_base): Likewise.
22640         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
22641
22642 2007-01-24  Richard Guenther  <rguenther@suse.de>
22643
22644         * builtins.c (expand_builtin_cexpi): Get the fndecl
22645         for cexp in the correct way.
22646
22647 2007-01-24  Jan Hubicka  <jh@suse.cz>
22648
22649         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS
22650         of calls.
22651
22652 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
22653
22654         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
22655         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
22656         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
22657         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
22658         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
22659         __SIZEOF_PTRDIFF_T__.
22660         * doc/cpp.texi: Documentation for the new builtin macros added.
22661
22662 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
22663
22664         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
22665         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
22666         instead of operands[2] to avoid access past the end of array.
22667
22668 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
22669
22670         * reload1.c (emit_reload_insns): Pass the reload register
22671         for a non-spill output reload through forget_old_reloads_1.
22672
22673 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
22674
22675         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
22676         _SOFT_DOUBLE if doubles use software floating-point.
22677         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
22678         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
22679         * config/rs6000/darwin-ldouble.c: Also compile functions for
22680         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
22681         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
22682         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
22683         commented-out long double override.
22684         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
22685         * config/rs6000/eabispe.h: Likewise.
22686         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
22687         long double for non-SPE.
22688         (rs6000_handle_option): Likewise.
22689         (invalid_e500_subreg): Disallow more subregs involding DImode,
22690         DFmode, TImode or TFmode.
22691         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
22692         E500 double.
22693         (legitimate_lo_sum_address_p): Also check for TFmode for E500
22694         double.
22695         (rs6000_legitimize_address): Also handle TFmode for E500 double.
22696         (rs6000_legitimize_reload_address): Also handle TFmode for E500
22697         double.
22698         (rs6000_legitimate_address): Also check for TFmode for E500
22699         double.
22700         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
22701         (spe_build_register_parallel): Handle TFmode and TCmode.
22702         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
22703         double.
22704         (function_arg): Handle TFmode and TCmode for E500 double.
22705         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
22706         in general.
22707         (print_operand): Handle TFmode and TImode for %y.
22708         (rs6000_generate_compare): Handle TFmode comparisons for E500
22709         double.
22710         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
22711         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
22712         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
22713         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
22714         TFmode for E500 double.
22715         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
22716         (floatsidf2): Enable for E500 double.
22717         (movtf_softfloat): Use rs6000_nonimmediate_operand.
22718         (extenddftf2): Change to extenddftf2_fprs.
22719         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
22720         depending on TARGET_E500_DOUBLE.
22721         (extendsftf2): Enable for E500 double.
22722         (trunctfdf2): Enable for E500 double.
22723         (trunctfsf2): Change to trunctfsf2_fprs.
22724         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
22725         depending on TARGET_E500_DOUBLE.
22726         (floatsitf2): Enable for E500 double.
22727         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
22728         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
22729         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
22730         (negtf2): Change to negtf2_internal.
22731         (negtf2): New expander.
22732         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
22733         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
22734         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
22735         (movdi_internal32): Use rs6000_nonimmediate_operand.
22736         (unnamed splitter): Likewise.
22737         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
22738         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
22739         (SPE64TF, DITI): New mode macros.
22740         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
22741         modes.
22742         (frob_tf_ti): New.
22743         (frob_<mode>_di_2): New.
22744         (frob_tf_di_8_2): New.
22745         (frob_di_df): Change to frob_di_<mode>; allow more modes.
22746         (frob_ti_tf): New.
22747         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
22748         more modes.
22749         (frob_ti_<mode>_8_2): New.
22750         (frob_ti_tf_2): New.
22751         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
22752         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
22753         TFmode.
22754         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
22755         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
22756         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
22757         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
22758         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
22759         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
22760         tsttflt_gp): New.
22761
22762 2007-01-23  Ian Lance Taylor  <iant@google.com>
22763
22764         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
22765         insn-*.o first.
22766         (OBJS-archive): Reformat, alphabetize.
22767         (OBJS): Change out_object_file to OBJS-md.
22768
22769 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
22770
22771         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
22772         JUMP_P and CALL_P predicates where applicable.
22773         * config/i386/i386.c: Ditto.
22774         * config/i386/i386.md: Ditto.
22775         * config/i386/mmx.md: Ditto.
22776         * config/i386/predicates.md: Ditto.
22777
22778 2007-01-22  Andreas Schwab  <schwab@suse.de>
22779
22780         * config/m68k/m68k.h: Fix comment.
22781
22782 2007-01-22  Jan Hubicka  <jh@suse.cz>
22783
22784         * passes.c (init_optimization_passes): Do not rerun
22785         pass_early_warn_uninitialized.
22786
22787 2007-01-22  Richard Guenther  <rguenther@suse.de>
22788
22789         PR tree-optimization/30038
22790         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
22791         function.
22792         (execute_cse_sincos_1): Likewise.
22793         (execute_cse_sincos): Likewise.
22794         (gate_cse_sincos): Likewise.
22795         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
22796         the cexpi() canonicalization of sincos().
22797         * tree-pass.h (pass_cse_sincos): Declare.
22798         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
22799
22800 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
22801
22802         PR rtl-optimization/29329
22803         * combine.c (replaced_rhs_insn): Rename to i2mod.
22804         (replaced_rhs_value): Rename to i2mod_new_rhs.
22805         (i2mod_old_rhs): New global variable.
22806         (combine_instructions): Adjust for above change.  Save a copy of
22807         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
22808         note are substituted in the second instruction.
22809         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
22810         ditch the note if it pertains to the second eliminated register
22811         and this register is mentioned in i2mod_old_rhs.
22812
22813         Revert:
22814         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
22815
22816         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
22817         the insn to which the note was originally attached.
22818
22819 2007-01-21  Jan Hubicka  <jh@suse.cz>
22820
22821         * ipa-inline.c (inlining_mode): Comment, move up.
22822         (cgraph_decide_inlining_incrementally): Do not perform inlining
22823         itself; fix handling of flattening of self recursive functions.
22824         (cgraph_find_cycles): Remove.
22825         (cgraph_flatten_node): Remove.
22826         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
22827         (try_inline): New function.
22828         (cgraph_early_inlining): Update call of
22829         cgraph_decide_inlining_incrementally.  Apply inlining here.
22830         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
22831
22832 2007-01-21  Dirk Mueller  <dmueller@suse.de>
22833
22834         PR bootstrap/30511
22835         * tree-vrp.c (check_array_bounds): do not warn
22836         about ADDR_EXPR's of ARRAY_REF's which are immediately
22837         used in binary expressions.
22838
22839 2007-01-21  Ira Rosen  <irar@il.ibm.com>
22840
22841         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
22842         read_write_dep and macros for its access.
22843         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
22844         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
22845         argument, call vect_check_interleaving for every independent pair of
22846         data-refs. Mark loads that access the same memory location as a store
22847         in the loop.
22848         (vect_check_dependences): Remove.
22849         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
22850         call, fix the call to vect_analyze_data_ref_dependence.
22851         (vect_analyze_data_ref_access): For statements that access the same
22852         data-ref, check that they are not stores; for loads, check that there
22853         is no store that access the same location.
22854
22855 2007-01-20  Roger Sayle  <roger@eyesopen.com>
22856             Joseph Myers  <joseph@codesourcery.com>
22857
22858         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
22859         (-fdump-rtl-stack): Likewise.
22860         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
22861         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
22862         (-mpt-fixed): Use @minus{} for minus sign.
22863         (Using Precompiled Headers): Fix under/overfull hbox.
22864
22865 2007-01-20  Jan Hubicka  <jh@suse.cz>
22866
22867         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
22868         place within annotation.
22869
22870 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22871
22872         * pa.c (output_move_double): Change array size of xoperands to 4.
22873
22874 2007-01-20  Jan Hubicka  <jh@suse.cz>
22875
22876         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
22877         as temporary.
22878
22879 2007-01-19  Ian Lance Taylor  <iant@google.com>
22880
22881         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
22882         constant to unsigned HOST_WIDE_INT before negating.
22883
22884 2007-01-19  Ian Lance Taylor  <iant@google.com>
22885
22886         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
22887         to unsigned.
22888         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
22889         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
22890         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
22891         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
22892         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
22893         (realloc_vdef, realloc_vuse): Change second parameter to
22894         unsigned.
22895         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
22896         fields to unsigned.
22897         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
22898         unsigned. Change x and lim locals to unsigned.
22899         (realloc_vdef, realloc_vuse): Change num_elem parameter to
22900         unsigned.
22901         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
22902         (copy_virtual_operands): Change i and n locals to unsigned.
22903
22904 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22905
22906         PR middle-end/29335
22907         * builtins.c (fold_builtin_1): Handle builtin fdim.
22908
22909 2007-01-20  Jan Hubicka  <jh@suse.cz>
22910
22911         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
22912         * tree-ssa-structalias.c (compute_points_to_sets): Do call
22913         init_alias_heapvars.
22914         (init_alias_heapvars): Initialize only when not already initialized.
22915         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
22916
22917 2007-01-19  Roger Sayle  <roger@eyesopen.com>
22918
22919         * common.opt (fsigned-zeros): New command line option.
22920         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
22921         of flag_unsafe_math_optimizations.
22922         * opts.c (set_fast_math_flags): The -ffast-math command line option
22923         implies -fno-signed-zeros.
22924         (fast_math_flags_set_p): Likewise.
22925
22926         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
22927         the documentation of -ffast-math appropriately.  Wrap long lines.
22928
22929 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
22930
22931         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
22932         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
22933
22934 2007-01-19  Tomas Bily  <tbily@suse.cz>
22935
22936         * cgraphunit.c (cgraph_finalize_function): Updating of pid
22937         * tree-profile.c:
22938         (tree_init_ic_make_global_vars): New function
22939         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
22940         (tree_gen_ic_profiler): New function
22941         (tree_gen_ic_func_profiler): New function
22942         (tree_profiling): Added calling of tree_gen_ic_func_profiler
22943         (tree_profile_hooks): Added hook for indirec/virtual calls
22944         * value-prof.c (tree_find_values_to_profile): New case for
22945         indirect calls
22946         (tree_values_to_profile): Call for determining indirect/virtual
22947         counters
22948         (tree_indirect_call_to_profile): New function
22949         (tree_ic_transform): New function
22950         (tree_ic): New function
22951         (find_func_by_pid): New function
22952         (init_pid_map): New function
22953         (tree_value_profile_transformations): Added check for
22954         indirect/virtual call transformation
22955         * value-prof.h (enum hist_type): New counter type for
22956         indirect/virtual calls
22957         (profile_hooks): Added new hook for profiling indirect/virtual
22958         calls
22959         * profile.c (instrument_values): New case for indirect/virtual
22960         call added
22961         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
22962         (GCOV_COUNTER_V_INDIR): New counter type
22963         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
22964         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
22965         call added
22966         * cgraph.c: Definition of cgraph_max_pid
22967         (cgraph_create_node): Default init of pid attribute
22968         * cgraph.h: Declaration of cgraph_max_pid
22969         (struct cgraph_node): Added pid attribute
22970         * libgcov.c (__gcov_indirect_call_profiler): New function
22971         (__gcov_one_value_profiler_body): New function
22972         (__gcov_one_value_profiler): Body was moved to
22973         __gcov_one_value_profiler_body and calls it
22974
22975 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
22976
22977         * doc/gty.texi (Options): Document the mark_hook option to GTY.
22978         * gengtype.c (write_types_data, write_func_for_structure,
22979         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
22980         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
22981         (walk_type, write_func_for_structure): Generate the mark_hook if
22982         needed.
22983
22984 2007-01-19  Jan Hubicka  <jh@suse.cz>
22985
22986         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
22987         'early' argument take inlining mode argument specifying whether to
22988         inline for size/speeed or all functions; add support for flattening;
22989         improve dumpting.
22990         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
22991
22992 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22993
22994         PR c++/17947
22995         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
22996         the name of the declared identifier.
22997
22998 2007-01-19  Dirk Mueller  <dmueller@suse.de>
22999
23000         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
23001         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
23002         duplicate evaluation.
23003
23004 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
23005
23006         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
23007         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
23008         to XFMode, use acosxf2 and truncate result to requested mode.
23009         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
23010         (asin<mode>2): Similarly, with asin expanders.
23011         (*fscalexf4_i387): Rename from *fscalexf4.
23012         (expNcorexf3): New expander.
23013         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
23014         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
23015         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
23016         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
23017         patterns for SSE math.
23018         (exp10<mode>2): Similarly, with exp10 expanders.
23019         (exp2<mode>2): Similarly, with exp2 expanders.
23020         (expm1<mode>2): Similarly, with expm1 expanders.
23021         (ldexp<mode>3): Similarly, with ldexp expanders.
23022         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
23023         Use gen_truncxf<mode>2_i387_noop to truncate result.
23024
23025 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
23026
23027         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
23028         for ColdFire targets.
23029
23030 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
23031             Richard Sandiford  <richard@codesourcery.com>
23032
23033         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
23034         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
23035         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
23036         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
23037         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
23038         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
23039
23040 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
23041
23042         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
23043         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
23044         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
23045         (*adddi_dilshr32_cf): New pattern.
23046         (adddi3, subdi3): Remove first alternatives.
23047
23048 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
23049
23050         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
23051         implemented using move.l, do not use its cc result for floating-point
23052         comparisons.
23053
23054 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
23055
23056         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
23057         from accepting 's' constraints if flag_pic.
23058
23059 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
23060
23061         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
23062         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
23063         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
23064         condition from TARGET_68881 to TARGET_HARD_FLOAT.
23065
23066 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
23067
23068         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
23069         ColdFire alternatives.
23070         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
23071         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
23072         architectures that support ff1 instruction.
23073
23074 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
23075             Julian Brown  <julian@codesourcery.com>
23076
23077         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
23078         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
23079         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
23080         Add commentary.
23081
23082 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
23083
23084         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
23085         and return a bool.
23086         (output_move_const_into_data_reg, output_move_simode_const): Delete.
23087         * config/m68k/m68k.c (const_method, const_int_cost): Take a
23088         HOST_WIDE_INT instead of an rtx.
23089         (m68k_rtx_costs): Update call accordingly.
23090         (output_move_const_into_data_reg): Likewise.  Fix formatting.
23091         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
23092         Return a bool.
23093         (output_move_simode_const): Update calls after above changes.
23094         Rework to use automatic variables and predicates like MEM_P.
23095         * config/m68k/m68k.md (pushexthisi_const): Update call to
23096         valid_mov3q_const.
23097
23098 2007-01-19  Dirk Mueller  <dmueller@suse.de>
23099
23100         * tree-ssa-alias.c (perform_var_substitution): Fix typo
23101         in dump_flags test.
23102
23103 2007-01-19  Richard Guenther  <rguenther@suse.de>
23104
23105         * builtins.c (expand_builtin_cexpi): Fall back to expanding
23106         via cexp in case sincos is not available.
23107
23108 2007-01-19  Richard Guenther  <rguenther@suse.de>
23109
23110         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
23111         * defaults.h (TARGET_HAS_SINCOS): Default to off.
23112         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
23113         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
23114         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
23115         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
23116         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
23117         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
23118
23119 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
23120
23121         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
23122         New insn patterns.
23123         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
23124         (atan2xf3): Directly generate RTL pattern.
23125         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
23126         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
23127         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
23128         disable patterns for SSE math.
23129         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
23130         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
23131         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
23132         disable patterns for SSE math.
23133
23134 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
23135
23136         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
23137
23138 2007-01-18  Roger Sayle  <roger@eyesopen.com>
23139
23140         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
23141         VIEW_CONVERT_EXPR to the same type as it's operand.
23142
23143 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
23144
23145         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
23146         configured for long double 128.
23147
23148 2007-01-18  Mike Stump  <mrs@apple.com>
23149
23150         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
23151         error.
23152
23153 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
23154
23155         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
23156         type correct.
23157
23158 2007-01-18  Jan Hubicka  <jh@suse.cz>
23159
23160         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
23161         greater than NUM_VOP_FREE_BUCKETS.
23162
23163 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
23164
23165         * tree-ssa-structalias.c: Update comments.
23166         (ptabitmap_obstack): Removed.
23167         (pta_obstack): New.
23168         (oldpta_obstack): Ditto.
23169         (stats): Add a few members.
23170         (struct variable_info): Remove node, complex, address_taken, and
23171         indirect_target members. Add oldsolution member.
23172         (new_var_info): Do not initialize removed members.
23173         (constraint_expr_type): Remove INCLUDES.
23174         (constraint_graph): Add size, implicit_preds, rep,
23175         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
23176         (FIRST_REF_NODE): New macro.
23177         (LAST_REF_NODE): Ditto.
23178         (FIRST_ADDR_NODE): Ditto.
23179         (find): New function.
23180         (unite): Ditto.
23181         (dump_constraint): Do not handle INCLUDES.
23182         (insert_into_complex): Do not insert duplicate constraints.
23183         (condense_varmap_nodes): Renamed and rewritten into ...
23184         (merge_node_constraints): This. Also fix bug in handling of
23185         offseted copy constraints.
23186         (clear_edges_for_node): No longer need to deal with preds at all,
23187         or removing associated preds/succs.
23188         (merge_graph_nodes): Deal with indirect_cycles.
23189         Don't deal with predecessors.
23190         (add_implicit_graph_edge): New function.
23191         (add_pred_graph_edge): Ditto.
23192         (add_graph_edge): Don't deal with predecessors.
23193         (build_constraint_graph): Removed.
23194         (build_pred_graph): New function.
23195         (build_succ_graph): Ditto.
23196         (struct scc_info): Removed in_component. Added roots, dfs, and
23197         node_mapping. Remove visited_index, unification_queue.
23198         (scc_visit): Deal with union-find we do now.
23199         Deal with cycles with REF nodes.
23200         (collapse_nodes): Renamed and rewritten to ...
23201         (unify_nodes): This.
23202         (process_unification_queue): Removed.
23203         (topo_visit): Cleanup
23204         (do_da_constraint): Use find.
23205         (do_sd_constraint): Ditto.
23206         (do_ds_constraint): Ditto.
23207         (do_complex_constraint): Ditto.
23208         (init_scc_info): Update for removed and added members.
23209         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
23210         (find_indirect_cycles): This.
23211         (equivalence_class): New variable.
23212         (label_visit): New function.
23213         (perform_variable_substitution): Rewritten.
23214         (free_var_substitution_info): New function.
23215         (find_equivalent_node): Ditto.
23216         (move_complex_constraints): Ditto.
23217         (eliminate_indirect_cycles): Ditto.
23218         (solve_graph): Only propagate changed bits.
23219         Use indirect cycle elimination.
23220         Use find.
23221         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
23222         (tree_id_eq): Renamed to ...
23223         (tree_vi_eq): This. Update for member change
23224         (insert_id_for_tree): Renamed and rewritten to ...
23225         (insert_vi_for_tree): This.
23226         (lookup_id_for_tree): Renamed and rewritten to ...
23227         (lookup_vi_for_tree): This.
23228         (get_id_for_tree): Renamed and rewritten to ...
23229         (get_vi_for_tree): Ditto.
23230         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
23231         (process_constraint): Don't handle INCLUDES.
23232         Remove special ADDRESSOF case.
23233         (find_func_aliases): Rewrite to use vi functions instead of id
23234         ones.
23235         (create_function_info_for): Ditto.
23236         (create_variable_info_for): Ditto.
23237         (intra_create_variable_infos): Ditto.
23238         (merge_smts_into): Ditto.
23239         (find_what_p_points_to): Ditto.
23240         (init_base_vars): Ditto.
23241         (init_alias_vars): Ditto.
23242         (remove_preds_and_fake_succs): New function.
23243         (dump_sa_points_to_info): Dump new stats.
23244         (dump_solution_for_var): Use find.
23245         (set_used_smts): Fix formatting.
23246         (compute_points_to_sets): Updated for new functions.
23247         (ipa_pta_execute): Ditto.
23248
23249 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
23250             Richard Sandiford  <richard@codesourcery.com>
23251
23252         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
23253         parallels.
23254         * calls.c (expand_call): If the return value is a PARALLEL,
23255         extract its first member.
23256         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
23257         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
23258         use FUNCTION_EXTRA_EPILOGUE.
23259         (m68k_function_value): Return a PARALLEL if the return value
23260         is of a pointer type.
23261         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
23262         (FUNCTION_EXTRA_EPILOGUE): Remove.
23263         * config/m68k/m68k.md (D0_REG): New constant.
23264
23265 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
23266
23267         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
23268         output a NOP for empty epilogues.
23269
23270 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23271
23272         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
23273         before function.  Extend register save check to include all
23274         registers, not just integer ones.
23275
23276 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
23277
23278         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
23279         (m68k_use_return_insn): ...this.
23280         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
23281         * config/m68k/m68k.c (use_return_insn): Rename to...
23282         (m68k_use_return_insn): ...this.
23283         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
23284         of USE_RETURN_INSN.
23285
23286 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
23287
23288         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
23289         nearest even, fix denormal rounding overflow.
23290
23291 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23292
23293         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
23294         f%$smove and f%$move.
23295         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
23296         (extendsfdf2_cf): Use fdmove instead of f%&move.
23297         (truncdfsf2_cf): Use fsmove instead of f%$smove.
23298         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
23299
23300 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23301
23302         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
23303         GPR<-GPR moves.
23304
23305 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23306
23307         * real.h (real_format): Add a canonical_nan_lsbs_set field.
23308         (coldfire_single_format): Declare.
23309         (coldfire_double_format): Likewise.
23310         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
23311         of qnan_msb_set to determine the lower bits of a canonical
23312         NaN significand.
23313         (encode_ieee_double): Likewise.
23314         (encode_ieee_quad): Likewise.
23315         (ieee_single_format): Initialize canonical_nan_lsbs_set.
23316         (mips_single_format): Likewise.
23317         (ieee_double_format): Likewise.
23318         (mips_double_format): Likewise.
23319         (ieee_extended_motorola_format): Likewise.
23320         (ieee_extended_intel_96_format): Likewise.
23321         (ieee_extended_intel_128_format): Likewise.
23322         (ieee_extended_intel_96_round_53_format): Likewise.
23323         (ibm_extended_format): Likewise.
23324         (mips_extended_format): Likewise.
23325         (ieee_quad_format): Likewise.
23326         (mips_quad_format): Likewise.
23327         (vax_f_format): Likewise.
23328         (vax_d_format): Likewise.
23329         (vax_g_format): Likewise.
23330         (i370_single_format): Likewise.
23331         (i370_double_format): Likewise.
23332         (decimal_single_format): Likewise.
23333         (decimal_double_format): Likewise.
23334         (decimal_quad_format): Likewise.
23335         (c4x_single_format): Likewise.
23336         (c4x_extended_format): Likewise.
23337         (real_internal_format): Likewise.
23338         (coldfire_single_format): New real_format.
23339         (coldfire_double_format): Likewise.
23340         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
23341         canonical_nan_lsbs_set.
23342         (pdp11_d_format): Likewise.
23343         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
23344         if TARGET_COLDFIRE_CPU.
23345
23346 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23347
23348         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
23349         (output_call, m68k_legitimize_call_address): Declare.
23350         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
23351         parenthesees.  Add support for a 'W' constraint.
23352         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
23353         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
23354         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
23355         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
23356         variables.
23357         (override_options): Initialize them.  Do not set flag_no_function_cse
23358         for TARGET_ID_SHARED_LIBRARY.
23359         (m68k_output_pic_call): Delete.
23360         (m68k_legitimize_call_address): New function.
23361         (print_operand): Remove the %o prefix.  Handle the %p prefix.
23362         (output_call): New function.
23363         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
23364         target address from the GOT if symbolic jumps are not allowed.
23365         * config/m68k/m68k.md (call, general_operand): Do not set
23366         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
23367         Merge separate flag_pic and !flag_pic define_insns into...
23368         (*call, *call_value): ...these new patterns.  Match the address
23369         rather than the containing MEM and require it to be a call_operand.
23370         Use output_call to generate the asm template.
23371         * config/m68k/predicates.md (const_call_operand): New predicate.
23372         (call_operand): Likewise.
23373
23374 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
23375
23376         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
23377         (STACK_GROWS_DOWNWARD): Define to 1.
23378         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
23379         comments, emphasizing that these values are only defaults.
23380         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
23381         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
23382
23383 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23384
23385         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
23386
23387 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
23388             Richard Sandiford  <richard@codesourcery.com>
23389
23390         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
23391         (FP_REGNO_P): New macros.
23392         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
23393         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
23394         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
23395         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
23396
23397 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
23398
23399         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
23400         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
23401         to $tmake_file.
23402         * config/m68k/t-floatlib: New file, extracting common code from...
23403         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
23404         * config/m68k/t-uclinux: Here.
23405         * config/m68k/fpgnulib.c: Do not compile extendeed precision
23406         routines on ColdFire targets.
23407
23408 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
23409
23410         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
23411         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
23412         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
23413         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
23414         explicitly set MOTOROLA to 1.
23415         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
23416
23417 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23418             Nathan Sidwell  <nathan@codesourcery.com>
23419
23420         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
23421         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
23422         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
23423         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
23424         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
23425         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
23426         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
23427         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
23428         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
23429         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
23430         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
23431         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
23432         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
23433         (DBX_REGISTER_NUMBER): Delete.
23434         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
23435         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
23436         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
23437
23438 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23439
23440         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
23441         * config/flat.h: New file.
23442         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
23443         OBJECT_FORMAT_FLAT.
23444         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
23445         indirect references for -msep-data or -mid-shared-library.
23446         Do not use PC-relative code addresses either.
23447         * config/m68k/m68k.c (override_options): Restrict -fPIC error
23448         to -mpcrel.
23449         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
23450         for shared libraries and crt1.o for executables.  Use crti.o and
23451         crtbegin.o.
23452         (ENDFILE_SPEC): Use crtend.o and crtn.o.
23453         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
23454         Do not add -elf2flt or -shared-lib-id options here.
23455         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
23456         Pass -shared-lib-id if -mid-shared-library, taking the library
23457         identifier from -mshared-library-id if given, otherwise
23458         defaulting to 0.
23459         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
23460         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
23461         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
23462         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
23463         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
23464         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
23465         and crtend.o.
23466         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
23467         jump sequence for ISA A and ISA A+.
23468         (PICJUMP): Likewise.
23469
23470 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23471
23472         * config.gcc (m68k-*-uclinux*): Base the port on the common
23473         and m68k GNU/Linux files rather than on the generic ELF ones.
23474         * config/m68k/uclinux.h (TARGET_VERSION): Override.
23475         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
23476
23477 2007-01-18  Julian Brown  <julian@codesourcery.com>
23478             Richard Sandiford  <richard@codesourcery.com>
23479
23480         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
23481         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
23482         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
23483         before redefining.
23484         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
23485         80 unconditionally.
23486         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
23487
23488 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23489
23490         * doc/install.texi: Document m68k-uclinuxoldabi.
23491         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
23492         * config/m68k/uclinux-oldabi.h: New file, copied from
23493         config/m68k/uclinux.h.
23494
23495 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
23496
23497         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
23498         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
23499         (m32r_compute_frame_size): Use unsigned for regno.
23500         (m32r_reload_lr): Use gen_frame_mem.
23501         (pop): New.
23502         (m32r_output_function_epilogue): Don't output the function epilogue
23503         textually here.
23504         (m32r_expand_epilogue): New.
23505         (direct_return): Return false if the function has the interrupt
23506         attribute.
23507         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
23508         * config/m32r/m32r.md (epilogue): New expander.
23509         (return_lr, return_rte): New insns.
23510         (return): Make it expander.
23511         (return_normal): New expander.
23512
23513 2007-01-18  Josh Conner  <jconner@apple.com>
23514
23515         PR target/30485
23516         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
23517         support for UNLE, UNLT, UNGE, and UNGT.
23518
23519 2007-01-18  Jan Hubicka  <jh@suse.cz>
23520
23521         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
23522         * tree-tailcall (add_virtual_phis): Likewise.
23523         (optimize_tail_call): Return TODOs.
23524         (execute_tail_calls): Return TODOs.
23525         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
23526         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
23527         changed.
23528         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
23529         Cleanup cfg using TODO.
23530         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
23531         * passes.c (execute_function_todo): When cleanup did something, remove
23532         unused locals.
23533         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
23534         (make_edges): Don't cleanup_cfg.
23535
23536 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
23537
23538         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
23539         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
23540         operate on the top of stack.
23541         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
23542         register handling of instructions that output to the second
23543         stack slot.
23544         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
23545         (move_for_stack_reg): Special-case check for dead destination
23546         stack slot for constant load of 1.0 inside UNSPEC_TAN.
23547
23548         * config/i386/i386.md (UNSPEC_TAN): New constant.
23549         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
23550         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
23551         to correctly model move of constant 1.0 to top stack slot.
23552         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
23553         (unnamed peephole2 pattern): Remove corresponding peephole2
23554         pattern that optimizes tan insn and loading of constant 1.0.
23555         (tanxf2): Use fptanxf4_i387.
23556         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
23557         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
23558         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
23559         disable patterns for SSE math.
23560         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
23561         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
23562
23563 2007-01-18  Dirk Mueller  <dmueller@suse.de>
23564             Richard Guenther <rguenther@suse.de>
23565
23566         PR diagnostic/8268
23567         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
23568         * common.opt (Warray-bounds): Add new warning option.
23569         * c-opts.c (c_common_handle_option): Define -Warray-bounds
23570         if -Wall is given.
23571         * Makefile.in: make tree-vrp.o depend on toplev.h
23572         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
23573         is enabled.
23574         (check_array_refs, check_array_bounds, check_array_ref): New.
23575
23576 2007-01-18  Jan Hubicka  <jh@suse.cz>
23577
23578         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
23579         (execute_ssa_ccp): Return flags conditionally.
23580         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
23581         changed.
23582         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
23583
23584 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
23585
23586         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
23587         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
23588
23589         * Makefile.c (GTFILES): Add cfglayout.h.
23590         * gengtype.c (open_base_files): Likewise.
23591         * cfglayout.c (cfg_layout_function_footer,
23592         cfg_layout_function_header) Reindent to make gengtype happy.
23593         * cfglayout.h (cfg_layout_function_footer,
23594         cfg_layout_function_header): Add GTY(()) marker.
23595
23596         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
23597
23598 2007-01-18  Ben Elliston  <bje@au.ibm.com>
23599
23600         * genautomata.c (write_automata): Include xstrerror output in the
23601         error message if writing the DFA description file fails.
23602
23603 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
23604
23605         * config/mips/mips-protos.h (mips_output_external): Make it
23606         return void.
23607         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
23608         * config/mips/mips.c (irix_output_external_libcall): Likewise.
23609         (extern_list): Likewise.
23610         (extern_head): Likewise.
23611         (TARGET_ASM_FILE_END): Likewise.
23612         (mips_file_end): Likewise.
23613         (mips_output_external): Rewritten.
23614
23615 2007-01-18  Ben Elliston  <bje@au.ibm.com>
23616
23617         * genpreds.c (write_insn_preds_c): Only write out the function
23618         body for regclass_for_constraint if we have register constraints.
23619
23620 2007-01-17  Tom Tromey  <tromey@redhat.com>
23621
23622         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
23623         * doc/install.texi (Testing): Use sourceware.org.
23624         (Binaries): Likewise.
23625         (Specific): Likewise.
23626         * doc/contrib.texi (Contributors): Use sourceware.org.
23627
23628 2007-01-17  Anatoly Sokolov <aesok@post.ru>
23629
23630         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
23631         (AVR_ENHANCED): Rename to ...
23632         (AVR_HAVE_MUL): ... new.
23633         (avr_enhanced_p): Rename to ...
23634         (avr_have_mul_p): ... new.
23635         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
23636         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
23637         * config/avr/avr.c (avr_enhanced_p): Rename to ...
23638         (avr_have_mul_p): ... new.
23639         (base_arch_s): Rename 'enhanced' to 'have_mul'.
23640         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
23641         'avr_enhanced_p' and 'enhanced'.
23642         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
23643         AVR_HAVE_MUL instead of AVR_ENHANCED.
23644         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
23645         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
23646         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
23647         instead of AVR_ENHANCED.
23648         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
23649         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
23650         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
23651
23652 2007-01-17  Ian Lance Taylor  <iant@google.com>
23653
23654         * vec.h (VEC_reserve_exact): Define.
23655         (vec_gc_p_reserve_exact): Declare.
23656         (vec_gc_o_reserve_exact): Declare.
23657         (vec_heap_p_reserve_exact): Declare.
23658         (vec_heap_o_reserve_exact): Declare.
23659         (VEC_OP (T,A,reserve_exact)): New static inline function, three
23660         versions.
23661         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
23662         negative parameter.
23663         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
23664         (VEC_OP (T,A,copy)) [all versions]: Likewise.
23665         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
23666         * vec.c (calculate_allocation): Add exact parameter.  Change all
23667         callers.
23668         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
23669         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
23670         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
23671         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
23672         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
23673         (vec_heap_p_reserve_exact): New function.
23674         (vec_heap_o_reserve_exact): New function.
23675
23676 2007-01-17  Jan Hubicka  <jh@suse.cz>
23677
23678         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
23679
23680 2007-01-17  Eric Christopher  <echristo@apple.com>
23681
23682         * config.gcc: Support core2 processor.
23683
23684 2007-01-16  Jan Hubicka  <jh@suse.cz>
23685
23686         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
23687         the names, just unlink the chain so we don't crash on dangling
23688         pointers
23689         to dead SSA names.
23690
23691 2007-01-16  Jan Hubicka  <jh@suse.cz>
23692
23693         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
23694         * tree-pass.h: Reorder to make IPA passes appear toegher.
23695         (pass_early_inline, pass_inline_parameters, pass_apply_inline):
23696         Declare.
23697         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
23698         parameters, do not call early inliner.
23699         * ipa-inline.c: Update comments.  Include tree-flow.h
23700         (cgraph_decide_inlining): Do not compute inlining parameters.
23701         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
23702         be called with function context set up.
23703         (pass_ipa_inline): Remove unreachable functions before pass.
23704         (cgraph_early_inlining): Simplify assuming to be called from the
23705         PM as local pass.
23706         (pass_early_inline): New pass.
23707         (cgraph_gate_ipa_early_inlining): New gate.
23708         (pass_ipa_early_inline): Turn into simple wrapper.
23709         (compute_inline_parameters): New function.
23710         (gate_inline_passes): New gate.
23711         (pass_inline_parameters): New pass.
23712         (apply_inline): Move here from tree-optimize.c
23713         (pass_apply_inline): New pass.
23714         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
23715         transforming.
23716         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
23717         doing them by hand.
23718         (tree_function_versioning): Do not allocate dummy struct function.
23719         * tree-inline.h (optimize_inline_calls): Update prototype.
23720         * tree-optimize.c (execute_fixup_cfg): Export.
23721         (pass_fixup_cfg): Remove
23722         (tree_rest_of_compilation): Do not apply inlines.
23723         * tree-flow.h (execute_fixup_cfg): Declare.
23724         * Makefile.in (gt-passes.c): New.
23725         * passes.c: Include gt-passes.h
23726         (init_optimization_passes): New passes.
23727         (nnodes, order): New static vars.
23728         (do_per_function_toporder): New function.
23729         (execute_one_pass): Dump current pass here.
23730         (execute_ipa_pass_list): Don't dump current pass here.
23731
23732 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
23733
23734         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
23735         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
23736
23737 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
23738
23739         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
23740         (strong_alias): Define.
23741         (__gcc_qmul): Provide non-FMA for soft-float.
23742         (__gcc_qdiv): Same.
23743         (__gcc_qneg): New.
23744         (__gcc_qeq): New.
23745         (__gcc_qle): New.
23746         (__gcc_qge): New.
23747         (__gcc_qunord): New.
23748         (__gcc_stoq): New.
23749         (__gcc_dtoq): New.
23750         (__gcc_qtos): New.
23751         (__gcc_qtod): New.
23752         (__gcc_qtoi): New.
23753         (__gcc_qtou): New.
23754         (__gcc_itoq): New.
23755         (__gcc_utoq): New.
23756         (fmsub): New.
23757         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
23758         soft-float functions.
23759         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
23760         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
23761         about long double soft float.
23762
23763 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
23764             Tehila Meyzels  <tehila@il.ibm.com>
23765
23766         * tree-vectorizer.h (is_pattern_stmt_p): New.
23767         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
23768         formatting (tabs instead of spaces). Cleanup and clarify setting
23769         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
23770         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
23771         (vectorizable_type_demotion): Check that types are integral.
23772         (vectorizable_type_promotion): Likewise.
23773         (vectorizable_store): Fix typo.  Eliminate new-line at end of
23774         comments.
23775
23776 2007-01-16  Jan Hubicka  <jh@suse.cz>
23777
23778         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
23779         cgraph edges too.
23780
23781 2007-01-15  Eric Christopher  <echristo@apple.com>
23782
23783         * ifcvt.c: Include vec.h, vecprim.h.
23784         (check_cond_move_block): New argument regs.
23785         Reorganize. Add registers used to regs.
23786         (cond_move_process_if_block): Use regs set above as
23787         loop bounds.
23788
23789 2007-01-15  Eric Christopher  <echristo@apple.com>
23790
23791         * config/darwin.h: Update copyright.
23792         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
23793         (LINK_COMMAND_SPEC): Add -u.
23794         (LINK_SPEC): Fix umbrella for above.
23795
23796 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
23797
23798         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
23799         glibc CVS.
23800
23801 2007-01-15  Tom Tromey  <tromey@redhat.com>
23802
23803         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
23804         * doc/install.texi (Testing): Don't mention jacks.
23805         (Configuration): Document --enable-java-maintainer-mode.  Move
23806         --with-java-home to libgcj-specific section.  Document
23807         --with-ecj-jar.
23808         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
23809
23810 2007-01-15  Jan Hubicka  <jh@suse.cz>
23811
23812         * tree-ssa-dce.c (DCE_TODOs): New.
23813         (propagate_necessity): Return if something changed.
23814         (eliminate_unnecessary_stmts): Likewise.
23815         (perform_tree_ssa_dce): Return TODO flags when needed.
23816         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
23817
23818 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
23819
23820         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
23821         (fyl2x_extend<mode>xf3_i387): New insn pattern.
23822         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
23823         patterns using X87MODEF12 mode macro.  Extend operand 1
23824         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
23825         (log10<mode>2): Ditto.
23826         (log2<mode>2): Ditto.
23827         (log1p<mode>2): Ditto.
23828         (logb<mode>2): Ditto.
23829         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
23830         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
23831         (*fxtractxf3_i387): Rename from *fxtractxf3.
23832         (fxtract_extend<mode>xf3_i387): New insn pattern.
23833         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
23834         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
23835         and gen_fyl2xxf3_i387().
23836
23837 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
23838
23839         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
23840         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
23841         get_loop_exit_edges.  Changed return type to bool.
23842         * cfgloop.h (fix_loop_placement): Declaration removed.
23843
23844 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
23845
23846         * param.h (MIN_VECT_LOOP_BOUND): New.
23847         * params.def (MIN_VECT_LOOP_BOUND): New.
23848         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
23849         argument - minimum threshold for number of iterations.
23850         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
23851         argument to declaration.
23852         * tree-vect-analyze.c (vect_analyze_operations): Check value of
23853         MIN_VECT_LOOP_BOUND.
23854         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
23855         slpeel_tree_peel_loop_to_edge with additional argument.
23856         (vect_do_peeling_for_alignment): Likewise.
23857         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
23858
23859 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
23860
23861         PR target/30413
23862         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
23863         operands of size 1.
23864
23865 2007-01-14  Jan Hubicka  <jh@suse.cz>
23866
23867         * tree-dfa.c (remove_referenced_var): New function.
23868         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
23869         prune referenced vars list too.
23870         * tree-flow.h (remove_referenced_var): Declare.
23871
23872 2007-01-14  Jan Hubicka  <jh@suse.cz>
23873
23874         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
23875         separately.
23876         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
23877         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
23878         * except.h (verify_eh_throw_table_statements): Kill prototype.
23879         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
23880         into call exrepssions.
23881         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
23882         eh trhow verifier.
23883         * tree-cfg.c: Include pointer-set.h.
23884         (verify_node_sharing): Work on pointer set.
23885         (verify_eh_throw_stmt_node): New.
23886         (verify_stmts): Use pointers sets, verify throw_stmt.
23887
23888 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
23889
23890         * ipa-reference.c (analyze_function): Consider also addresses taken
23891         in phi nodes.
23892
23893 2007-01-12  Roger Sayle  <roger@eyesopen.com>
23894
23895         * c-typeck.c (null_pointer_constant_p): Replace use of
23896         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
23897         (build_c_cast): Likewise.
23898
23899 2007-01-12  Roger Sayle  <roger@eyesopen.com>
23900
23901         * tree.h (force_fit_type_double): Remove unused final argument.
23902         * c-common.c (constant_expression_warning): Replace use of
23903         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
23904         (convert_and_check): Likewise.
23905         (shorten_compare): Update call to force_fit_type_double.
23906         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
23907         * convert.c (convert_to_pointer): Update call to
23908         force_fit_type_double.
23909         * fold-const.c (force_fit_type_double): Remove overflowed_const
23910         argument.
23911         (int_const_binop, fold_convert_const_int_from_int,
23912         fold_convert_const_int_from_real, fold_div_compare,
23913         fold_sign_changed_comparison, fold_unary, fold_negate_const,
23914         fold_abs_const, fold_not_const): Remove the final argument from
23915         calls to force_fit_type_double.
23916
23917 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23918
23919         * configure.ac: Set insn to "nop" for spu-*-* also.
23920         * configure: Regenerate.
23921
23922 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
23923
23924         * builtins.def : Add BUILT_IN_FREE.
23925
23926 2007-01-12  Jan Hubicka  <jh@suse.cz>
23927
23928         PR tree-optimization/30443
23929         * tree-inline.c (tree_function_versioning): Do not optimize when
23930         cloning for inlining.
23931
23932 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
23933
23934         * doc/loop.texi: Document recording of loop exits.
23935         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
23936         (update_single_exits_after_duplication,
23937         update_single_exit_for_duplicated_loop,
23938         update_single_exit_for_duplicated_loops): Removed.
23939         (duplicate_loop_to_header_edge): Do not call
23940         update_single_exits_after_duplication and
23941         update_single_exit_for_duplicated_loops.
23942         (loop_version): Do not update single_exit information.
23943         (fix_loop_structure): Use record_loop_exits instead of
23944         mark_single_exit_loops.
23945         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
23946         the lists of loop exits.
23947         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
23948         split_edge, merge_blocks): Update the lists of loop exits.
23949         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
23950         loop_optimizer_init.
23951         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
23952         of mark_single_exit_loops.
23953         (loop_optimizer_finalize): Call release_recorded_exits.
23954         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
23955         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
23956         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
23957         update single exit information.
23958         * lambda-code.c (perfect_nestify): Ditto.
23959         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
23960         (mark_single_exit_loops): Removed.
23961         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
23962         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
23963         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
23964         functions.
23965         (get_loop_exit_edges, single_exit): Use recorded exit lists.
23966         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
23967         (verify_loop_structure): Verify consistency of the exit lists.
23968         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
23969         (set_single_exit): Removed.
23970         * cfgloop.h (struct loop_exit): New function.
23971         (struct loop): single_exit_ field replaced by exits field.
23972         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by
23973         LOOPS_HAVE_RECORDED_EXITS.
23974         (struct loops): Added exits hash.
23975         (mark_single_exit_loops, set_single_exit): Declaration removed.
23976         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
23977
23978 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
23979
23980         * doc/invoke.texi: Avoid use of @headitem.
23981
23982 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
23983
23984         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
23985
23986 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
23987
23988         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
23989         list of targets.
23990
23991 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
23992             Richard Sandiford  <richard@codesourcery.com>
23993
23994         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
23995         * config/m68k/m68k.opt: Resort options.
23996         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
23997
23998 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
23999             Richard Sandiford  <richard@codesourcery.com>
24000
24001         * doc/invoke.texi: Document the macros that are defined by
24002         m68k's -mtune and -mhard-float options.
24003         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
24004         (m68k_cpp_cpu_family): Likewise.
24005         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
24006         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
24007         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
24008         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
24009         (m68k_cpp_cpu_family): Likewise.
24010
24011 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
24012
24013         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
24014         macros besides mc68000 as tuning macros.  Use a switch statement
24015         to set them and mcpu32.
24016
24017 2007-01-12  Julian Brown  <julian@codesourcery.com>
24018
24019         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
24020         (TARGET_68040_ONLY): Rename to...
24021         (TARGET_68040): ...this.
24022         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
24023         * config/m68k/m68k.md: Likewise.
24024
24025 2007-01-12  Julian Brown  <julian@codesourcery.com>
24026             Nathan Sidwell  <nathan@codesourcery.com>
24027             Richard Sandiford  <richard@codesourcery.com>
24028
24029         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
24030         the -mcpu= argument associated with the --with-cpu setting.
24031         Define M68K_DEFAULT_TUNE to the default -mtune= option,
24032         if different from the one implied by the -mcpu setting.
24033         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
24034         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
24035         * doc/invoke.texi: Mention ColdFire in the introduction to the
24036         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
24037         -mno-div and -mhard-float options.  Make -m68881 a synonym for
24038         -mhard-float.  Document the previously-undocumented -m5206e,
24039         -m528x, -m5307 and -m5407 options.  Tweak the existing option
24040         documentation for consistency.
24041         * doc/install.texi: Mention new --with-cpu arguments.
24042         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
24043         default CPU if neither -mcpu nor -march are specified.
24044         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
24045         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
24046         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
24047         using m68k_tune to decide between families that implement the
24048         same ISA.  Use m68k_tune to set __mcfv4e__.
24049         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
24050         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
24051         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
24052         (FL_ISA_C, FL_ISA_MMU): New macros.
24053         (MASK_COLDFIRE): Delete.
24054         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
24055         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
24056         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
24057         (TARGET_HARD_FLOAT): Do not define here.
24058         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
24059         (TUNE_68000): New macro.
24060         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
24061         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
24062         (TUNE_CFV2): Redefine in terms of m68k_tune.
24063         (uarch_type, target_device, fpu_type): New enums.
24064         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
24065         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
24066         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
24067         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
24068         (FL_FOR_isa_c): New macros.
24069         (m68k_isa): New enum.
24070         (m68k_target_selection): New structure.
24071         (all_devices, all_isas, all_microarchs): New tables.
24072         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
24073         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
24074         (MASK_ALL_CPU_BITS): Delete.
24075         (m68k_find_selection): New function.
24076         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
24077         Map the legacy target options to a combination of the new ones.
24078         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
24079         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
24080         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
24081         settings.
24082         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
24083         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
24084         properties.
24085         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
24086         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
24087         * config/m68k/m68k-devices.def: New file.
24088
24089 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
24090             Nathan Sidwell  <nathan@codesourcery.com>
24091
24092         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
24093         (SUBTARGET_EXTRA_SPECS): New macros.
24094         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
24095         use %(asm_cpu_spec) instead.
24096         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
24097         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
24098         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
24099         (EXTRA_SPECS): Rename to...
24100         (SUBTARGET_EXTRA_SPECS): ...this.
24101
24102 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
24103             Richard Sandiford  <richard@codesourcery.com>
24104             Julian Brown  <julian@codesourcery.com>
24105
24106         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
24107         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
24108         to the configuration's default CPU.
24109         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
24110         Remove default masks.
24111         (m680[012]0-*-*): Set the default with_cpu to the first part of
24112         the target name.
24113         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
24114         (m68k*-*-linux): Extend the --with-cpu handling to...
24115         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
24116         and m68010.  Don't set target_cpu_default2.
24117         * doc/install.texi: Document --with-cpu for m68k.
24118         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
24119         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
24120         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
24121         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
24122         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
24123         (ASM_SPEC): Remove use of %(asm_cpu_default).
24124         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
24125         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
24126         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
24127         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
24128         __HAVE_FPU__ if TARGET_HARD_FLOAT.
24129         (TARGET_DEFAULT): Delete.
24130         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
24131         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
24132         (CPP_CPU_SPEC): Delete.
24133         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
24134         the appropriate string.
24135         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
24136         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
24137         (ASM_SPEC): Don't use %(asm_default_spec).
24138         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
24139         TARGET_DEFAULT and add MASK_68881.
24140         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
24141
24142 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
24143
24144         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
24145         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
24146         MASK_68010 alongside MASK_68020.
24147         * doc/invoke.texi: Document -m68010.
24148         * config/m68k/m68k.opt (m68010): New.
24149         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
24150         if TUNE_68010.
24151         (TUNE_68010): New macro.
24152         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
24153         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
24154         (M68K_CPU_m68332): Add MASK_68010.
24155         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
24156         fallback definition.
24157         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
24158         defines.
24159         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
24160         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
24161         to all entries that use MASK_68020.
24162         (output_move_simode_const, output_move_himode, output_move_qimode)
24163         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
24164         instead of TARGET_68020 to select clr behavior.  Remove comment
24165         about there being no TARGET_68010.
24166         * config/m68k/m68k.md: Likewise throughout.
24167
24168 2007-01-12  Julian Brown  <julian@codesourcery.com>
24169
24170         * config/m68k/m68k.h (TARGET_ISAB): New macro.
24171         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
24172         * config/m68k/m68k.md: Likewise.
24173
24174 2007-01-12  Julian Brown  <julian@codesourcery.com>
24175
24176         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
24177         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
24178
24179 2007-01-12  Julian Brown  <julian@codesourcery.com>
24180
24181         * config/m68k/m68k.h (TUNE_68040_60): New macro.
24182         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
24183         * config/m68k/m68k.md: Likewise.
24184
24185 2007-01-12  Julian Brown  <julian@codesourcery.com>
24186             Richard Sandiford  <richard@codesourcery.com>
24187
24188         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
24189         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
24190         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
24191         TARGET_CPU32.
24192         (TARGET_CPU32): Rename to...
24193         (TUNE_CPU32): ...this.
24194         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
24195         (TUNE_CFV2): New macros.
24196         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
24197         remove conditions that are implied by TARGET_68020.
24198         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
24199         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
24200         (m68k_output_function_epilogue): Likewise.
24201         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
24202         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
24203         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
24204         non-68000 timings.  Refactor multiplication and division costs.
24205         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
24206         TUNE_CPU32 instead of TARGET_CPU32.
24207         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
24208         and TUNE_68060 instead of TARGET_68060.
24209         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
24210         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
24211         TARGET_CPU32.
24212         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
24213         && !TARGET_COLDFIRE" to choose between moveq and clr.
24214         Likewise in the unnamed movsf pattern.
24215         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
24216         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
24217         ashiftrt pattern.
24218
24219 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
24220
24221         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
24222         of tabbing before backslashes.
24223
24224 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24225
24226         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
24227         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
24228         (ASM_OUTPUT_INTERNAL_LABEL): Define.
24229
24230 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
24231
24232         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
24233         find_interesting_uses_cond.
24234         (find_interesting_uses_cond): Use extract_cond_operands.
24235         (rewrite_use_compare): Use extract_cond_operands and
24236         force_gimple_operand_bsi.  Do not call update_stmt.
24237         (determine_use_iv_cost_condition): Use extract_cond_operands.
24238         Return cheaper of using original bound and changing the exit bound.
24239
24240 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
24241
24242         PR tree-optimization/29516
24243         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
24244         most_expensive_mult_to_index, addr_to_parts,
24245         create_mem_ref, maybe_fold_tmr): Make the type of
24246         fields of TARGET_MEM_REF sizetype.
24247         (move_fixed_address_to_symbol, move_pointer_to_base):
24248         New functions.
24249         * tree.def (TARGET_MEM_REF): Add comment on types of
24250         the operands.
24251
24252 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
24253
24254         * c-common.c (vector_types_convertible_p): Treat opaque types as
24255         always convertible if they have the same size, but not otherwise.
24256
24257 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
24258
24259         * ifcvt.c (struct noce_if_info): Add comments to the fields.
24260         Remove the b_unconditional field.
24261         (noce_try_sign_mask): Do not look at b_unconditional.
24262         (noce_process_if_block): Do not use merge_if_blocks.  Update
24263         the CFG here.  Do not set b_unconditional.
24264         (cond_move_process_if_block): Likewise.
24265         (find_cond_trap): Likewise.
24266         (check_cond_move_block): Require simple jump insns at the end
24267         of the basic block.
24268
24269 2007-01-11  Jan Hubicka  <jh@suse.cz>
24270
24271         PR tree-optimization/1046
24272         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
24273         when alias info is not ready.
24274         (pass_tail_recursion): Do not require aliasing.
24275         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
24276         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
24277         * tree-ssa-copy.c (pass_copy_prop): Likewise.
24278         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
24279         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
24280         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
24281         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
24282         before inlining.
24283         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
24284         When aliasing is not build, mark statement as volatile.
24285
24286 2007-01-11  Tom Tromey  <tromey@redhat.com>
24287
24288         PR preprocessor/15185, PR preprocessor/20989:
24289         * doc/cppopts.texi <-MT>: Update description of algorithm for
24290         computing default target.
24291         <-M, -MD>: Reword "basename" text.
24292
24293 2007-01-11  Roger Sayle  <roger@eyesopen.com>
24294
24295         * builtins.c (expand_builtin_pow, expand_builtin_powi,
24296         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
24297         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
24298         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
24299         fold_builtin_bswap, real_constp, fold_builtin_pow,
24300         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
24301         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
24302         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
24303         * convert.c (convert_to_pointer): Likewise.
24304         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
24305         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
24306         const_binop, fold_convert_const_int_from_int,
24307         fold_convert_const_int_from_real,
24308         fold_convert_const_real_from_real, sign_bit_p,
24309         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
24310         fold_sign_changed_comparison, fold_unary, fold_comparison,
24311         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
24312         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
24313         * print-tree.c (print_node_brief, print_node): Likewise.
24314         * stor-layout.c (place_field, layout_type): Likewise.
24315         * tree-chrec.c (keep_cast): Likewise.
24316         * tree.c (build_vector, build_real, build_real_from_int_cst,
24317         build_complex): Likewise.
24318
24319 2007-01-11  Roger Sayle  <roger@eyesopen.com>
24320
24321         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
24322         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
24323
24324 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
24325
24326         * configure.ac (strict1_warn): Rename to strict_warn.
24327         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
24328         cc_set_by_configure, quoted_cc_set_by_configure,
24329         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
24330         all_boot_languages, all_stagestuff): Remove.
24331         (target_list): Remove bootstrap targets.
24332         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
24333         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
24334         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
24335         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
24336         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
24337         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
24338         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
24339         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
24340         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
24341         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
24342         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
24343         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
24344         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
24345         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
24346         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
24347         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
24348         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
24349         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
24350         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
24351         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
24352         (mostlyclean): Adjust.
24353         (clean, distclean): Don't mention bootstrap stuff.
24354         * configure: Regenerate.
24355         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
24356         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
24357         treelang/config-lang.in (stagestuff): Remove.
24358         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
24359         stageprofile, stagefeedback, stagestuff): Remove mention.
24360
24361 2007-01-11  Nick Clifton  <nickc@redhat.com>
24362
24363         * config/mcore/predicates.md (mcore_general_movesrc_operand):
24364         Accept CONSTs.
24365         (mcore_general_movdst_operand): Do not accept CONST_INTs.
24366         (mcore_arith_K_S_operand): Run the test for the S constraint not
24367         the test for the M constraint.
24368         (mcore_addsub_operand): Do not accept integer values that are
24369         larger than 32 bits.
24370         * config/mcore/mcore.md: Remove unused constraints from split.
24371         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
24372         (addsi3): Likewise.
24373         (allocate_stack): Likewise.
24374         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
24375         operands to 32 bits.
24376         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
24377         INTVAL.
24378         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
24379         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
24380         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
24381         mcore_output_bclri, mcore_output_andn, output_inline_const,
24382         mcore_output_move, mcore_output_movedouble): Likewise.
24383         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
24384         (output_inline_const): Likewise.
24385         (output_inline_const): Fix format strings used in sprintf
24386         statements.
24387         * config/mcore/mcore-protos.h: Update prototypes for changed
24388         functions in mcore.c.
24389         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
24390         HOST_WIDE_INT and not int.
24391         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
24392         CONST_OK_FOR_N): Likewise.
24393         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
24394         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
24395         an INTVAL.
24396
24397 2007-01-10  Jan Hubicka  <jh@suse.cz>
24398
24399         * tree-vrp.c (remove_range_assertions): Release defs.
24400         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
24401         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
24402
24403 2007-01-10  Paul Brook  <paul@codesourcery.com>
24404
24405         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
24406         * config/arm/arm.md (mulsi3subsi): New insn.
24407
24408 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
24409
24410         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
24411         (tree_transform_and_unroll_loop): New.
24412         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
24413         Declare.
24414
24415 2007-01-10  Robert Kennedy <jimbob@google.com>
24416
24417         * fold-const.c (fold_comparison): Fold comparisons like (x *
24418         1000 < 0) to (x < 0).
24419
24420 2007-01-10  Ian Lance Taylor  <iant@google.com>
24421
24422         * tree-pretty-print.c (dump_generic_node): Print parentheses when
24423         operands have the same priority.
24424
24425 2007-01-10  Tom Tromey  <tromey@redhat.com>
24426
24427         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
24428         (fold_binary): Likewise.
24429         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
24430         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
24431         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
24432         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
24433         * langhooks.h (struct lang_hooks): Removed field
24434         'can_use_bit_fields_p'.
24435
24436 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
24437
24438         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
24439
24440 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
24441
24442         * function.c (get_last_funcdef_no): New function.
24443         * function.h (get_last_funcdef_no): Declare.
24444         * tree-inline.c (initialize_cfun): Add initialization.
24445         (tree_function_versioning): Cleanup.
24446
24447 2007-01-10  Jan Hubicka  <jh@suse.cz>
24448
24449         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
24450         PHIs.
24451
24452 2007-01-10  Sa Liu  <saliu@de.ibm.com>
24453             Ben Elliston  <bje@au.ibm.com>
24454
24455         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
24456         for SAVE_NONLOCAL and Pmode for any other save level.
24457         * spu-protos.h (spu_restore_stack_block): Declare.
24458         * spu.md (save_stack_block): Remove.
24459         (restore_stack_block): Call spu_restore_stack_block.
24460         * spu.c (spu_restore_stack_block): New function.
24461         (spu_expand_epilogue): Remove old comment.
24462
24463 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
24464
24465         PR tree-optimization/30322
24466         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
24467         (cand_value_at): Return the value as aff_tree.
24468         (may_eliminate_iv): Convert the bound from aff_tree to tree.
24469         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
24470         aff_combination_mult): New functions.
24471         (aff_combination_add): Use aff_combination_add_cst.
24472         (aff_combination_convert): Allow conversions to a wider type.
24473         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
24474         * tree-affine.h (aff_combination_mult): Declare.
24475
24476 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
24477
24478         * doc/tm.texi: Update documentation to reflect reality of exec
24479         and start file search behaviours. Update copyright year.
24480         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
24481         header file directories.
24482
24483 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
24484
24485         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
24486         (*cosxf2): Rename to cosxf2_i387.
24487         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
24488         using X87MODEF12 mode macro. Rename patterns to
24489         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
24490         for SSE math.
24491         (*cosdf2, *cossf2): Ditto.
24492         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
24493         to match extended input operands.
24494         (sincos<mode>3): New expander.
24495         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
24496         insn patterns and corresponding splitters.
24497
24498 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
24499
24500         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
24501         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
24502
24503 2007-01-09  Nicolas Pitre  <nico@cam.org>
24504
24505         PR target/30173
24506         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
24507
24508 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
24509
24510         * target.h (struct gcc_target): New field library_rtti_comdat.
24511         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
24512         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
24513         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
24514         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
24515
24516 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
24517
24518         * doc/invoke.texi (Optimize Options): Correct description of -O0.
24519
24520 2007-01-08  Richard Guenther  <rguenther@suse.de>
24521
24522         * tree.h (force_fit_type_double): Export.
24523         (force_fit_type): Remove.
24524         * fold-const.c (force_fit_type_double): New function.
24525         (force_fit_type): Remove.
24526         (int_const_binop): Use it.
24527         (fold_convert_const_int_from_int): Likewise.
24528         (fold_convert_const_int_from_real): Likewise.
24529         (fold_div_compare): Likewise.
24530         (fold_sign_changed_comparison): Likewise.
24531         (fold_unary): Likewise.
24532         (fold_negate_const): Likewise.
24533         (fold_abs_const): Likewise.
24534         (fold_not_const): Likewise.
24535         * c-common.c (shorten_compare): Use force_fit_type_double.
24536         * convert.c (convert_to_pointer): Likewise.
24537
24538 2007-01-08  Richard Guenther  <rguenther@suse.de>
24539
24540         * tree.h (build_int_cst_wide_type): Export.
24541         * tree.c (build_int_cst_wide_type): New function.
24542         (build_int_cst_wide): Fix comment.
24543         * builtins.c (fold_builtin_object_size): Use build_int_cst
24544         to build -1 or 0 of the correct type.  Use fit_double_type
24545         to check for overflow.
24546         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
24547         to build the mask.
24548         (decode_field_reference): Likewise.
24549         (all_ones_mask_p): Likewise.
24550         (native_interpret_int): Use build_int_cst_wide_type.
24551         (fold_binary): Use build_int_cst_type to build an all-ones
24552         value.
24553         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
24554
24555 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
24556
24557         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
24558
24559 2007-01-09  Ben Elliston  <bje@au.ibm.com>
24560
24561         * genautomata.c (STATS_OPTION): New option.
24562         (stats_flag): New flag.
24563         (gen_automata_option): Handle it.
24564         (initiate_automaton_gen): Ditto.
24565         (write_automata): Output statistics only if stats_flag is
24566         set. Likewise, output time statistics only if time_flag is set.
24567         * doc/md.texi (Processor pipeline description): Document new flag.
24568
24569 2007-01-08  Richard Guenther  <rguenther@suse.de>
24570
24571         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
24572         * tree.c (build_int_cst_type): Likewise.
24573         (size_in_bytes): Don't call force_fit_type on the result.
24574         (int_fits_type_p): Use fit_double_type.
24575         * fold-const.c (fit_double_type): New function.
24576         (force_fit_type): Use it.
24577         * tree.h (fit_double_type): Export.
24578
24579 2007-01-08  Jan Hubicka  <jh@suse.cz>
24580
24581         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
24582         * ipa.c (function_and_variable_visibility): Fix return type.
24583
24584 2007-01-08  Richard Guenther  <rguenther@suse.de>
24585
24586         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
24587         of offset to build the index.
24588         * tree-pretty-print.c (dump_generic_node): Don't build negated
24589         const just for printing.
24590         * c-pretty-print.c (pp_c_integer_constant): Likewise.
24591         * builtins.c (fold_builtin_int_roundingfn): Check if result
24592         fits the type by using force_fit_type and comparing the result.
24593         * predict.c (predict_loops): Use compare_tree_int for comparison.
24594         * tree.c (build_int_cst): Fall back to integer_type_node for
24595         NULL_TREE type.
24596         (build_int_cst_wide): Assert type is non-null.
24597
24598 2007-01-08  Roberto Costa  <roberto.costa@st.com>
24599
24600         * tree-vrp.c (extract_range_from_cond_expr): New.
24601         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
24602         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
24603         as expressions.
24604         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
24605         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
24606         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
24607         used as expressions.
24608         * tree-object-size.c (cond_expr_object_size): New.
24609         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
24610
24611 2007-01-08  Jan Hubicka  <jh@suse.cz>
24612
24613         * tree-ssa-forwprop.c (forward_propagate_into_cond,
24614         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
24615         statement.
24616
24617 2007-01-08  Richard Guenther  <rguenther@suse.de>
24618
24619         PR tree-optimization/23603
24620         * tree-vrp.c (set_value_range_to_truthvalue): New function.
24621         (extract_range_from_binary): Fall back to truthvalue instead of
24622         varying for TRUTH_*_EXPR.
24623         (extract_range_from_comparison): Fall back to truthvalue instead of
24624         varying.
24625         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
24626         if all visited PHI values were constant.
24627
24628 2007-01-08  Jan Hubicka  <jh@suse.cz>
24629
24630         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
24631         (cgraph_analyze_function): break out from ...
24632         (cgraph_finalize_compilation_unit): ... here.
24633         (cgraph_expand_function): Remove forgoten commented out line.
24634         (cgraph_optimize): Analyze functions.
24635
24636 2007-01-08  Jan Hubicka  <jh@suse.cz>
24637
24638         * tree-pas.h (TODO_remove_function): New flag.
24639         (TODO_update*): Renumber.
24640         (pass_ipa_increase_alignment,
24641         pass_ipa_function_and_variable_visibility): New passes.
24642         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
24643         (cgraph_function_and_variable_visibility): Move to ipa.c
24644         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
24645         cgraph_increase_alignment.
24646         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
24647         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
24648         calling tree-inline.
24649         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
24650         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
24651         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
24652         (gate_increase_alignment): New function.
24653         (pass_ipa_increase_alignment): New pass.
24654         * ipa.c: Inline tree-pass.h and timevar.h
24655         (function_and_variable_visibility): Move here from cgraphunit.c
24656         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
24657         * passes.c (init_optimization_passes): Add the two new passes.
24658         (execute_todo): Handle cgraph_remove_functions.
24659
24660 2007-01-08  Nick Clifton  <nickc@redhat.com>
24661
24662         * config/frv/predicates.md (reg_or_0_operand): Accept
24663         CONST_DOUBLEs.
24664
24665 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
24666
24667         * config/bfin/rtems.h, config/bfin/t-rtems: New.
24668         * config.gcc: Add bfin*-rtems*.
24669
24670 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
24671
24672         * c.opt: Add -flax-vector-conversions.
24673         * c-typeck.c (convert_for_assignment): Pass flag to
24674         vector_types_convertible_p to allow emission of note.
24675         (digest_init): Likewise.
24676         * c-opts.c: Handle -flax-vector-conversions.
24677         * c-common.c (flag_lax_vector_conversions): New.
24678         (vector_types_convertible_p): Unless -flax-vector conversions
24679         has been passed, disallow conversions between vectors with
24680         differing numbers of subparts and/or element types.  If such
24681         a conversion is disallowed, possibly emit a note on the first
24682         occasion only to inform the user of -flax-vector-conversions.
24683         The new last argument specifies this.
24684         * c-common.h (flag_lax_vector_conversions): New.
24685         (vector_types_convertible_p): Add extra argument.
24686         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
24687         char_type_node for V*QI type vectors.
24688         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
24689         Update to satisfy new typechecking rules.
24690         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
24691         C and C++ variants.
24692         * doc/invoke.texi (C Dialect Options): Document
24693         -flax-vector-conversions.
24694
24695 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
24696
24697         PR tree-optimization/29877
24698         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
24699         a register variable on the RHS to not be replaceable.
24700
24701 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
24702         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
24703         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
24704         const_simm15, const_pow2, const_npow2): Added.
24705         * config/score/misc.md (insv, extv, extzv, movmemsi,
24706         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
24707         * config/score/score.c (score_address_cost, score_select_cc_mode):
24708         Added.
24709         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
24710         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
24711         Update score_print_operand.
24712         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
24713         Adjust register allocate order and update some macro define.
24714         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
24715         mdx_block_move_straight, mdx_block_move_loop_head,
24716         mdx_block_move_loop_body, mdx_block_move_loop_foot,
24717         mdx_block_move_loop, mdx_block_move): Added.
24718         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
24719         mdp_limm): Updated and fix some bug and typo.
24720         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
24721         (movsf, movdf, doloop_end): Added.
24722
24723 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
24724
24725         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
24726         config/arm/thumb2.md: Fix comment typos.
24727         * doc/extend.texi: Fix a typo.
24728
24729 2007-01-07  Eric Christopher  <echristo@apple.com>
24730
24731         * configure.ac: Check for __stack_chk_fail for darwin.
24732         * configure: Regenerate.
24733
24734 2007-01-07  Richard Guenther  <rguenther@suse.de>
24735
24736         * tree-vrp.c (extract_range_from_assert): CSE calls to
24737         compare_values where possible.
24738         (extract_range_from_unary_expr): Likewise.
24739
24740 2007-01-07  Anatoly Sokolov <aesok@post.ru>
24741
24742         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
24743         * config/avr/avr.c (call_insn_operand): Delete function.
24744         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
24745         instead of register number. Use predicates.
24746         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
24747         call_insn_operand): Add.
24748
24749 2007-01-06  Jan Hubicka  <jh@suse.cz>
24750
24751         * tree-pass.h (pass_build_cgraph_edges): Declare.
24752         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
24753         (visited_nodes): Remove.
24754         (cgraph_create_edges): Move to cgraphbuild.c; rename to
24755         build_cgrpah_edges; make visited_nodes local.
24756         (cgraph_process_new_functions): DO not call initialize_inline_failed.
24757         (record_references_in_initializer): Move to cgraphbuild.c
24758         (initialize_inline_failed, rebuild_cgraph_edges,
24759         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
24760         (verify_cgraph_node): Make visited_nodes local.
24761         (cgraph_analyze_function): Do not call cgraph_create_edges and
24762         initialize_inline_failed.
24763         (cgraph_expand_function): Do not call cgraph_lower_function;
24764         assert that function is already lowered.
24765         * Makefile.in (cgraphbuild.o): New.
24766         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
24767         at the end of lowering passes.
24768
24769 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
24770
24771         * ifcvt.c (cond_move_convert_if_block): New function, code
24772         factored out from...
24773         (cond_move_process_if_block): ...here.  Call the new function
24774         on the THEN and ELSE blocks.
24775         (merge_if_block): Do not copy global_live_at_end, merge_blocks
24776         already takes care of this.
24777
24778 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24779
24780         PR c/19978
24781         * tree.h (TREE_OVERFLOW_P): New.
24782         * c-typeck.c (parser_build_unary_op): Warn only if result
24783         overflowed and operands did not.
24784         (parser_build_binary_op): Likewise.
24785         (convert_for_assignment): Remove redundant overflow_warning.
24786         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
24787
24788 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24789
24790         * c-typeck.c (store_init_value): Split over two lines to follow
24791         the GNU coding style.
24792
24793 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
24794
24795         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
24796         __GXX_EXPERIMENTAL_CXX0X__.
24797         * doc/cpp.texi: Same.
24798
24799 2007-01-05  Richard Guenther  <rguenther@suse.de>
24800
24801         PR middle-end/27826
24802         * tree.c (get_narrower): Do not construct COMPONENT_REFs
24803         with mismatched types.  Instead explicitly build a
24804         conversion NOP_EXPR.
24805
24806 2007-01-05  Ian Lance Taylor  <iant@google.com>
24807
24808         * c-common.c (decl_with_nonnull_addr_p): New function.
24809         (c_common_truthvalue_conversion): Call it.
24810         * c-typeck.c (build_binary_op): Likewise.
24811         * c-common.h (decl_with_nonnull_addr_p): Declare.
24812
24813 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
24814
24815         PR c/30360
24816         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
24817         denom against 0.0.
24818
24819 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
24820
24821         * doc/install.texi (Final install): Document the fact that
24822         the GNAT runtime should not be stripped.
24823
24824 2007-01-04  Jan Hubicka  <jh@suse.cz>
24825
24826         * tree-inline.c (fold_marked_statements): Update operand caches
24827         and EH after folding
24828
24829 2007-01-04  Ian Lance Taylor  <iant@google.com>
24830
24831         * c-common.c (check_function_nonnull): Whitespace fix.
24832
24833 2007-01-04  Jan Hubicka  <jh@suse.cz>
24834
24835         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
24836         comitted older version of patch.
24837         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
24838         function, celanup cfg and collect garbage.
24839
24840 2007-01-04  Mike Stump  <mrs@apple.com>
24841
24842         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
24843         (clean): Likewise.
24844
24845 2007-01-04  Eric Christopher  <echristo@apple.com>
24846
24847         * libgcc2.c (__bswapsi2): Use SItype.
24848         (__bswapdi2): Use DItype.
24849         * libgcc2.h: Update for above.
24850
24851 2007-01-04  Paul Brook  <paul@codesourcery.com>
24852
24853         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
24854         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
24855         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
24856         umulsidi3, umulsidi3adddi, smulsi3_highpart,
24857         umulsi3_highpart): Make conditional on !arm_arch6.
24858         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
24859         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
24860         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
24861         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
24862         umulsi3_highpart_v6): New insns.
24863
24864 2007-01-04  Roger Sayle  <roger@eyesopen.com>
24865
24866         * fold-const.c (fold_convert): When casting an expression to void,
24867         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
24868         have a type.  Instead of attempting to build a NOP_EXPR, return
24869         these "special" trees directly.
24870
24871 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
24872
24873         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
24874         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
24875         rs6000_cost->fp not 0 as adjustment for outer NEG.
24876
24877 2007-01-04  Jan Hubicka  <jh@suse.cz>
24878
24879         * cgraph.c (cgraph_release_function_body): New function.
24880         (cgraph_remove_node): Use it.
24881         * cgraph.h (cgraph_release_function_body): Declare.
24882         * cgraphunit.c (cgraph_expand_function): Use it.
24883         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
24884         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
24885         is initialized and while compilation of other function is running.
24886         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
24887         statement CFG annotations from here to ...
24888         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
24889
24890 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
24891
24892         * cfgloop.h (enum li_flags): Make the constants powers of two.
24893
24894 2007-01-04  Jan Hubicka  <jh@suse.cz>
24895
24896         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
24897         set.
24898         (fold_marked_statements): New function.
24899         (optimize_inline_calls, tree_function_versioning): Fold new statements.
24900         * tree-inline.h (copy_body_data): Add statements_to_fold.
24901
24902 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
24903
24904         * config.gcc: Mention libgcc/config.host.
24905         * Makefile.in: Update comments mentioning libgcc.
24906         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
24907         (all.cross, start.encap, rest.encap, rest.cross): Update
24908         dependencies for libgcc move.
24909         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
24910         (clean-target, clean-target-libgcc): Delete.
24911         (srcdirify, GCC_EXTRA_PARTS): New macros.
24912         (libgcc-support, libgcc.mvars): New rules.
24913         (distclean): Remove mention of mklibgcc.
24914         (install): Don't reference INSTALL_LIBGCC.
24915         (install-common): Don't reference EXTRA_PARTS.
24916         (install-libgcc, install-multilib): Delete rules.
24917         * mklibgcc.in: Delete file.
24918         * doc/configfiles.texi: Don't mention mklibgcc.
24919
24920         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
24921         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
24922         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
24923         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
24924         (mklibgcc, ldblspecs): Likewise.
24925
24926         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
24927         (posixpre.def): Use $(T).
24928         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
24929         (SHLIB_SRC, SHLIB_INSTALL): Delete.
24930         (SHLIB_LINK): Make dummy.
24931         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
24932
24933         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
24934
24935         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
24936         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
24937         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
24938         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
24939
24940         * configure.ac (all_outputs): Remove mklibgcc.
24941         * configure: Regenerated.
24942
24943 2007-01-03  Josh Conner  <jconner@apple.com>
24944
24945         PR middle-end/29683
24946         * calls.c (compute_argument_addresses): Set stack and stack_slot
24947         for partial args, too.
24948         (store_one_arg): Use locate.size.constant for the size when
24949         generating a save_area.
24950
24951 2007-01-03  Robert Kennedy <jimbob@google.com>
24952
24953         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
24954         whose definitions are deleted due to basic block merging.
24955
24956 2007-01-03  Paul Brook  <paul@codesourcery.com>
24957
24958         PR target/16634
24959         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
24960         functions.
24961         (use_return_insn): Return 0 for Thumb interrupt functions.
24962         (print_multi_reg): Add rfe argument for IRQ returns.
24963         (arm_output_epilogue): Pop interrupt return address directly into PC.
24964         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
24965
24966 2007-01-03  Paul Brook  <paul@codesourcery.com>
24967
24968         Merge from sourcerygxx-4_1.
24969         * config/arm/thumb2.md: New file.
24970         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
24971         Thumb-2.
24972         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
24973         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
24974         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
24975         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
24976         tables.
24977         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
24978         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
24979         comptibility.
24980         * config/arm/ieee754-sf.S: Ditto.
24981         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
24982         (thumb1_base_register_rtx_p): ... to this.
24983         (thumb_index_register_rtx_p): Rename...
24984         (thumb1_index_register_rtx_p): ... to this.
24985         (thumb_output_function_prologue): Rename...
24986         (thumb1_output_function_prologue): ... to this.
24987         (thumb_legitimate_address_p): Rename...
24988         (thumb1_legitimate_address_p): ... to this.
24989         (thumb_rtx_costs): Rename...
24990         (thumb1_rtx_costs): ... to this.
24991         (thumb_compute_save_reg_mask): Rename...
24992         (thumb1_compute_save_reg_mask): ... to this.
24993         (thumb_final_prescan_insn): Rename...
24994         (thumb1_final_prescan_insn): ... to this.
24995         (thumb_expand_epilogue): Rename...
24996         (thumb1_expand_epilogue): ... to this.
24997         (arm_unwind_emit_stm): Rename...
24998         (arm_unwind_emit_sequence): ... to this.
24999         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
25000         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
25001         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
25002         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
25003         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
25004         thumb2_output_casesi): New functions.
25005         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
25006         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
25007         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
25008         THUMB2_WORK_REGS): Define.
25009         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
25010         arm_condexec_mask, arm_condexec_masklen)): New variables.
25011         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
25012         (arm_override_options): Check new CPU capabilities.
25013         Set new architecture flag variables.
25014         (arm_isr_value): Handle v7m interrupt functions.
25015         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
25016         Thumb-2.
25017         (const_ok_for_arm): Handle Thumb-2 constants.
25018         (arm_gen_constant): Ditto.  Use movw when available.
25019         (arm_function_ok_for_sibcall): Return false for v7m interrupt
25020         functions.
25021         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
25022         (thumb_find_work_register, arm_load_pic_register,
25023         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
25024         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
25025         print_multi_reg, output_mov_long_double_fpa_from_arm,
25026         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
25027         output_mov_double_fpa_from_arm, output_move_double,
25028         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
25029         output_return_instruction, arm_output_function_prologue,
25030         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
25031         arm_output_mi_thunk, thumb_set_return_address): Ditto.
25032         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
25033         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
25034         (arithmetic_instr, shift_op): Use arm_shift_nmem.
25035         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
25036         '!' and 'L'.
25037         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
25038         (thumb_expand_prologue): Use thumb_set_frame_pointer.
25039         (arm_file_start): Output directive for unified syntax.
25040         (arm_unwind_emit_set): Handle stack alignment instruction.
25041         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
25042         Add v6t2, v7, v7a, v7r and v7m.
25043         (RETLDM): Add Thumb-2 code.
25044         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
25045         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
25046         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
25047         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
25048         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
25049         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
25050         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
25051         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
25052         ADJUST_INSN_LENGTH): Define.
25053         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
25054         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
25055         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
25056         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
25057         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
25058         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
25059         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
25060         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
25061         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
25062         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
25063         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
25064         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
25065         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
25066         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
25067         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
25068         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
25069         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
25070         cortex-m3.
25071         * config/arm/arm-tune.md: Regenerate.
25072         * config/arm/arm-protos.h: Update prototypes.
25073         * config/arm/vfp.md: Enable patterns for Thumb-2.
25074         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
25075         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
25076         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
25077         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
25078         * config/arm/libunwind.S: Add Thumb-2 code.
25079         * config/arm/constraints.md: Update include Thumb-2.
25080         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
25081         * config/arm/ieee754-df.S: Ditto.
25082         * config/arm/bpabi.S: Ditto.
25083         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
25084         * config/arm/predicates.md (low_register_operand,
25085         low_reg_or_int_operand, thumb_16bit_operator): New.
25086         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
25087         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
25088         * config/arm/t-arm-elf: Add armv7 multilib.
25089         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
25090         Include thumb2.md.
25091         (UNSPEC_STACK_ALIGN, ce_count): New.
25092         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
25093         arm_zero_extendsidi2, arm_zero_extendqidi2): New
25094         insns/expanders.
25095         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
25096         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
25097         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
25098         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
25099         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
25100         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
25101         insns.
25102         * doc/extend.texi: Document ARMv7-M interrupt functions.
25103         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
25104
25105 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
25106
25107         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
25108         (struct _Unwind_Context): Rename args_size to flags, remove
25109         signal_frame field, add a new args_size field and version field.
25110         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
25111         _Unwind_IsExtendedContext): New inline functions.
25112         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
25113         Assume by_value array is only present if _Unwind_IsExtendedContext.
25114         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
25115         _Unwind_IsSignalFrame.
25116         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
25117         (uw_update_context_1): Use _Unwind_SetSignalFrame.
25118         (uw_init_context_1): Initialize context->flags to
25119         EXTENDED_CONTEXT_BIT.
25120         * config/rs6000/linux-unwind.h (frob_update_context): Use
25121         _Unwind_SetSignalFrame.
25122
25123 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25124
25125         PR middle-end/30353
25126         * gimplify.c (gimplify_modify_expr_complex_part): Move below
25127         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
25128         the value.
25129
25130 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
25131
25132         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
25133         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
25134         RET, AT_SP): Remove.
25135         * config/i386/i386.md (*sse_prologue_save_insn): Use return
25136         instead of RET.
25137
25138         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
25139         * cfgbuild.c (find_basic_blocks): Likewise.
25140         * cfgrtl.c (rtl_create_basic_block): Likewise.
25141         * function.c (temp_slots_at_level): Likewise.
25142         * reg-stack.c (stack_regs_mentioned): Likewise.
25143         * regclass.c (allocate_reg_info): Likewise.
25144         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
25145         set_bb_for_stmt, move_block_to_fn): Likewise.
25146         * tree-complex.c (tree_lower_complex): Likewise.
25147         * vec.h (VEC_safe_grow_cleared): New.
25148
25149         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
25150
25151 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
25152
25153         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
25154         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
25155         to loop_version.
25156         * cfgloopmanip.c (scale_loop_frequencies): Export.
25157         (loopify): Scale the frequencies by prescribed coefficients.
25158         (set_zero_probability): New function.
25159         (duplicate_loop_to_header_edge): Improve updating of frequencies.
25160         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
25161         and frequencies according to arguments.
25162         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
25163         correctly.
25164         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
25165         * modulo-sched.c (sms_schedule): Set probabilities for entering
25166         versioned loop correctly.
25167         * tree-vect-transform.c (vect_transform_loop): Ditto.
25168         * cfgloop.h (loopify, loop_version): Declaration changed.
25169         (scale_loop_frequencies): Declared.
25170
25171 2007-01-02  Jan Hubicka  <jh@suse.cz>
25172
25173         * cgraph.c: Include tree-flow.h
25174         (cgraph_add_new-function): Handle IPA_SSA mode; execute
25175         early_local_passes.
25176         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
25177         * tree-pass.h (pass_all_early_optimizations): Declare.
25178         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
25179         early_local_passes.
25180         (cgraph_analyze_function): Do early_local_passes.
25181         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
25182         Do not add referenced vars.
25183         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
25184         SSA form.
25185         (gate_all_early_local_passes): New gate.
25186         (pass_early_local_passes): Use new gate.
25187         (execute_early_local_optimizations): New functions.
25188         (gate_all_early_optimizations): New gate.
25189         (pass_all_early_optimizations): New pass.
25190         (execute_free_datastructures): Free SSA only when initialized.
25191         (gate_init_datastructures): Init only when optimizing.
25192         (tree_lowering_passes): Do early local passes when called late.
25193         * tree-profile.c (do_tree_profiling): Don't profile functions added
25194         late.
25195         (do_early_tree_profiling, pass_early_tree_profile): Kill.
25196         * tree-cfg.c (update_modified_stmts): Do not update when operands are
25197         not active.
25198         * passes.c (init_optimizations_passes): Reorder so we go into SSA
25199         during early_local_passes.
25200         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
25201
25202
25203 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
25204
25205         * Makefile.in: Update copyright year.
25206
25207 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
25208
25209         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
25210         in $(lang_checks) and check-consistency targets.
25211
25212 2007-01-02  Jan Hubicka  <jh@suse.cz>
25213
25214         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
25215         Do not add referenced vars.
25216         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
25217         are not active.
25218         * passes.c (init_optimization_passes): Put mudflap_2 after
25219         free_datastructures.
25220
25221 2007-01-02  Jan Hubicka  <jh@suse.cz>
25222
25223         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
25224         Set NOTHROW flag on call statements proved to be nothrow.
25225         Update statement of local calls so new pure/const functions are
25226         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
25227         goto receivers.
25228         (tree_rest_of_compilation): Register hooks and initialize bitmap
25229         early. Do not set after_inlining flag.
25230
25231 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
25232
25233         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
25234         HOST_BITS_PER_LONGLONG
25235
25236 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
25237
25238         PR c/19977
25239         * c-typeck.c (store_init_value): Don't emit pedantic overflow
25240         warning for non-static initializers.
25241
25242 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
25243
25244         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
25245         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
25246         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
25247         Always use set_unique_reg_note to add REG_EQUAL notes.
25248
25249 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
25250
25251         Revert:
25252         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
25253
25254         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
25255         * cfgbuild.c (find_basic_blocks): Likewise.
25256         * cfgrtl.c (rtl_create_basic_block): Likewise.
25257         * function.c (temp_slots_at_level): Likewise.
25258         * reg-stack.c (stack_regs_mentioned): Likewise.
25259         * regclass.c (allocate_reg_info): Likewise.
25260         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
25261         set_bb_for_stmt, move_block_to_fn): Likewise.
25262         * tree-complex.c (tree_lower_complex): Likewise.
25263         * vec.h (VEC_safe_grow_cleared): New.
25264
25265 2007-01-02  Ian Lance Taylor  <iant@google.com>
25266
25267         * c-common.c (c_common_truthvalue_conversion): When warning about
25268         using an assignment as a truth value, set TREE_NO_WARNING.
25269
25270 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25271
25272         PR middle-end/7651
25273         * c.opt (Wold-style-declaration): New.
25274         * doc/invoke.texi (C-only Warning Options): New.
25275         (Wold-style-declaration): Document it.
25276         (Wextra): Enabled by -Wextra.
25277         * c-opts.c (c_common_post_options): Enabled by -Wextra.
25278         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
25279         -Wold-style-declaration.
25280
25281 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
25282
25283         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
25284         * cfgbuild.c (find_basic_blocks): Likewise.
25285         * cfgrtl.c (rtl_create_basic_block): Likewise.
25286         * function.c (temp_slots_at_level): Likewise.
25287         * reg-stack.c (stack_regs_mentioned): Likewise.
25288         * regclass.c (allocate_reg_info): Likewise.
25289         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
25290         set_bb_for_stmt, move_block_to_fn): Likewise.
25291         * tree-complex.c (tree_lower_complex): Likewise.
25292         * vec.h (VEC_safe_grow_cleared): New.
25293
25294 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
25295
25296         * c-common.c (c_common_nodes_and_builtins): Since variants of
25297         void_type_node get built before it is given a name, we need to
25298         give those variants the name, too.
25299         (complete_array_type): We need to work with the canonical main
25300         type of the array, from which we will build the qualified version.
25301         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
25302         * print-tree.c (print_node): Display canonical type information
25303         for each type.
25304         * stor-layout.c (layout_type): When we don't know the
25305         alignment of a type for which we're building an array, we end up
25306         guessing wrong, so make the type require structural equality.
25307         * tree.c (make_node_stat): When we build a new type, it is its
25308         own canonical type.
25309         (build_type_attribute_qual_variant): When building an attribute
25310         variant, its canonical type is the non-attribute variant. However,
25311         if the attributes are target-dependent and they differ, we need to
25312         use structural equality checks for this type.
25313         (build_qualified_type): A qualified type is not equivalent to its
25314         unqualified variant; set the canonical type appropriately.
25315         (build_distinct_type_copy): When building a distinct type from
25316         another type, the new type is its own canonical type.
25317         (build_variant_type_copy): When building a new type variant, we
25318         assume that it is equivalent to the original type.
25319         (build_pointer_type_for_mode): When building a pointer type, also
25320         build a canonical type pointer.
25321         (build_reference_type_for_mode): When building a reference type,
25322         also build a canonical type reference.
25323         (build_index_type): When we can't hash an index type (e.g.,
25324         because its maximum value is negative), the index type requires
25325         structural equality tests.
25326         (build_array_type): Build the canonical form of an array type.
25327         (build_function_type): Function types require structural equality,
25328         because they contain default arguments, attributes, etc.
25329         (build_method_type_directly): Ditto for method types.
25330         (build_offset_type): Build the canonical offset type.
25331         (build_complex_type): Build the canonical vector type.
25332         (make_vector_type): Build the canonical vector type.
25333         * tree.h (TYPE_CANONICAL): New.
25334         (TYPE_STRUCTURAL_EQUALITY_P): New.
25335         (SET_TYPE_STRUCTURAL_EQUALITY): New.
25336         (struct tree_type): Added "canonical" field.
25337         * params.h (VERIFY_CANONICAL_TYPES): New.
25338         * doc/c-tree.texi (TYPE_CANONICAL): Document.
25339         (TYPE_STRUCTURAL_EQUALITY_P): Document.
25340         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
25341         * doc/invoke.texi (verify-canonical-types): Document --param
25342         parameter for verifying canonical types.
25343
25344 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
25345
25346         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
25347         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
25348         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
25349         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
25350         tm_file.
25351         * config/rs6000/e500.h: New.
25352         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
25353         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
25354         Remove.
25355         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
25356         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
25357         TARGET_E500_DOUBLE): Remove.
25358         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
25359         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
25360         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
25361         * config/rs6000/rs6000.c (rs6000_override_options): Use
25362         CHECK_E500_OPTIONS.
25363
25364 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
25365
25366         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
25367         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
25368         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
25369         rs6000_emit_cmove): Don't check TARGET_E500.
25370         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
25371         sordered): Don't check TARGET_E500.
25372
25373 2007-01-01  Eric Christopher  <echristo@apple.com>
25374
25375         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
25376         HARD_REGISTER_NUM_P.
25377
25378 2007-01-01  Roger Sayle  <roger@eyesopen.com>
25379
25380         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
25381         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
25382         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
25383         eq/ne Y".
25384
25385 2007-01-01  Mike Stump  <mrs@apple.com>
25386
25387         * configure.ac: Remove support for building with Apple's gcc-3.1.
25388
25389 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
25390
25391         PR middle-end/30311
25392         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
25393         REG is a hard register.  Do not modify REG before calling
25394         subreg_nregs.
25395         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
25396         multiple of the size of YMODE for certain lowpart cases.
25397
25398 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
25399
25400         PR middle-end/30253
25401         * gimplify (voidify_wrapper_expr): Update for
25402         GIMPLE_MODIFY_STMT.
25403
25404 2007-01-01  Andreas Schwab  <schwab@suse.de>
25405
25406         PR target/29166
25407         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
25408         save of BR0 in extra_spill_size instead of spill_size.
25409         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
25410         area.
25411         (ia64_expand_epilogue): Restore BR0 from its new location.
25412
25413 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
25414
25415         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
25416         Use a temporary variable if the left hand side is not a gimple
25417         register.
25418
25419 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
25420
25421         * gimplify.c (gimplify_return_expr): Make the temporary variable
25422         for the return expression, a gimple register variable.
25423
25424 2007-01-01  Jan Hubicka  <jh@suse.cz>
25425
25426         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
25427         INSN_LIST.
25428
25429 2007-01-01  Mike Stump  <mrs@apple.com>
25430
25431         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
25432         .literal16.
25433         * config/darwin.c (machopic_select_rtx_section): Use
25434         HAVE_GAS_LITERAL16.
25435         (darwin_mergeable_constant_section): Likewise.
25436         * configure: Regenerate.
25437         * config.in: Regenerate.
25438
25439 2007-01-01  Jan Hubicka  <jh@suse.cz>
25440             Andrew Pinski  <pinskia@gmail.com>
25441
25442         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
25443         before starting IPA passes.