OSDN Git Service

PR target/28902
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-09-03  Anatoly Sokolov <aesok@post.ru>
2
3         PR target/28902
4         * config/avr/avr.h (TARGET_VTABLE_ENTRY_ALIGN): Define.
5
6 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
7
8         * optabs.c (expand_ffs): Initialize val and defined_at_zero
9         to avoid warnings.
10
11         * optabs.c: Remove unnecessary forward declarations.
12         (expand_unop_direct): New, broken out of expand_unop.
13         (expand_doubleword_clz): New.
14         (expand_ctz): Move above expand_ffs.  Use
15         start_sequence, end_sequence, add_equal_note, and
16         expand_unop_direct.  Add more commentary.
17         (expand_ffs): Try both ctz optab and expand_ctz.
18         Generate a test and branch if the hardware doesn't give us
19         a useful value for input zero.  Style improvements similar to
20         expand_ctz.
21
22         * config/arm/arm.md (ffssi2, ctzsi2): Delete.
23
24 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
25
26         * config.gcc: Delete stanza for arm-semi-aof and
27         armel-semi-aof targets.
28         * config/arm/arm-protos.h
29         * config/arm/arm.c
30         * config/arm/arm.h: Delete all #ifdef AOF_ASSEMBLER blocks;
31         make all #ifndef AOF_ASSEMBLER blocks unconditional.  Also
32         delete aof_pic_label and remove mention of AOF in comments.
33         * config/arm/arm.md: Delete patterns used only for AOF assembly.
34         * config/arm/aof.h
35         * config/arm/semiaof.h
36         * config/arm/t-semi: Delete file.
37
38 2007-09-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
39
40         * system.h (CONST_CAST2, CONST_CAST_TREE, CONST_CAST_RTX,
41         CONST_CAST_BB): New macros for type-specific casts.
42         (CONST_CAST): Add a TYPE parameter and define it in terms of
43         CONST_CAST2.
44
45         * c-decl.c (c_make_fname_decl): Supply a TYPE for CONST_CAST.
46         * c-lex.c (cb_ident, lex_string): Likewise,
47         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise,
48         * config/i386/i386.c (ix86_function_regparm,
49         ix86_function_sseregparm): Use CONST_CAST_TREE.
50         * config/mmix/mmix.c (mmix_encode_section_info): Supply a TYPE for
51         CONST_CAST.
52         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
53         give_switch, set_multilib_dir): Likewise,
54         * gengtype-parse.c (string_seq, typedef_name): Likewise,
55         * gimple-low.c (block_may_fallthru): Use CONST_CAST_TREE.
56         * jump.c (reversed_comparison_code_parts): Use CONST_CAST_RTX.
57         * passes.c (execute_one_pass): Supply a TYPE for CONST_CAST.
58         * prefix.c (update_path): Likewise,
59         * pretty-print.c (pp_base_destroy_prefix): Likewise,
60         * rtlanal.c (keep_with_call_p): Use CONST_CAST_RTX.
61         * tree-cfg.c (tree_can_merge_blocks_p,
62         tree_block_ends_with_condjump_p): Use CONST_CAST_BB.
63         * tree-eh.c (lookup_stmt_eh_region_fn): USe CONST_CAST_TREE.
64         * tree.c (build_string): Supply a TYPE for CONST_CAST.
65         (attribute_list_contained): Use CONST_CAST_TREE.
66
67 2007-09-03  Krister Walfridsson  <cato@df.lth.se>
68
69         * config/netbsd-elf.h (USE_LD_AS_NEEDED): Define.
70
71 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
72
73         PR middle-end/33290
74         * optabs.c (avoid_expensive_constant): Canonicalize CONST_INTs
75         before forcing them into a register.
76
77 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
78
79         * config/mips/mips.md (fetchop_bit): Use define_code_iterator
80         rather than define_code_macro.
81
82 2007-09-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
83
84         * gcc.c (xputenv): New function.
85         (putenv_from_prefixes): Use xputenv instead of putenv.
86         (process_command): Use xputenv instead of putenv.
87         (set_collect_gcc_options): Use xputenv instead of putenv.
88         (main): Use xputenv instead of putenv.
89
90 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
91
92         * config/cris/cris.h (TARGET_HAS_SWAP): Defined to describe
93         availability of swap instruction.
94         * config/cris/cris.md (bswapsi2): Implement using swap instruction.
95
96 2007-09-03  Revital Eres  <eres@il.ibm.com>
97
98         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Update
99         Documentation.
100
101 2007-09-03  Vladimir Yanovsky  <yanov@il.ibm.com>
102             Ayal Zaks  <zaks@il.ibm.com>
103             Revital Eres  <eres@il.ibm.com>
104
105         * modulo-sched.c (ps_insert_empty_row, verify_partial_schedule,
106         compute_split_row): New functions.
107         (ps_unschedule_node): Remove.
108         (normalize_sched_times): Iterate over the already scheduled
109         insns instead of the number of nodes.
110         (MAX_SPLIT_NUM): New definition.
111         (sms_schedule_by_order): Change the scheduling heuristic to
112         avoid useless increases of initiation interval ii.
113         (get_sched_window): Add dump printouts.
114
115 2007-09-02  David Daney  <ddaney@avtrex.com>
116
117         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP, UNSPEC_SYNC_OLD_OP,
118         UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE): New define_constants.
119         (optab, insn): Add more attributes.
120         (fetchop_bit): New code macro.
121         (immediate_insn): New code macro attribute.
122         (sync): Change condition to ISA_HAS_SYNC.
123         (rdhwr): Change predicate for operand 0 to register_operand.
124         (memory_barrier): New expand.
125         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
126         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
127         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
128         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
129         sync_new_nand<mode>, sync_lock_test_and_set<mode>): New insns.
130         * config/mips/mips.h (ISA_HAS_SYNC, ISA_HAS_LL_SC): New ISA predicates.
131         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
132         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
133         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): New Macros.
134         
135 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
136             Hans-Peter Nilsson  <hp@axis.com>
137
138         * config/cris/cris.h (TARGET_HAS_LZ, CLZ_DEFINED_VALUE_AT_ZERO):
139         Defined to describe availability and behavior of CLZ.
140         * config/cris/cris.md (clzsi2): Implement using lz instruction.
141         * config/cris/cris.opt: Tweak comment for "-metrax4".
142         * config/cris/arit.c (LZ): When defined, define as __builtin_clz.
143         * longlong.h [__CRIS__ && __CRIS_arch_version >= 3]
144         (count_leading_zeros): Define.
145
146 2007-09-01  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
147
148         * ggc-page.c (ggc_pch_read): Call validate_free_objects.
149
150 2007-09-02  Joseph Myers  <joseph@codesourcery.com>
151
152         PR middle-end/33272
153         * c-decl.c (grokdeclarator): Apply qualifiers to type of parameter
154         decayed from array.
155
156 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
157
158         * config/arm/arm.c, config/rs6000/ppu_intrinsics.h,
159         config/spu/spu.c, df-scan.c, fixed-value.c, fold-const.c,
160         ginclude/tgmath.h, haifa-sched.c, optabs.c, recog.c,
161         sched-deps.c, sched-int.h, system.h, target.h,
162         tree-ssa-live.c, tree-vect-transform.c, tree-vectorizer.c,
163         tree.def: Fix comment typos.
164
165 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
166
167         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove.
168         (override_options): Turn on -mstrict-align on non-ColdFire
169         targets.
170         * config/m68k/m68k.h (BIGGEST_ALIGNMENT): Update a comment.
171
172 2007-09-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
173
174         * c-common.c (const_strip_array_types): Delete.
175         * c-common.h (const_strip_array_types): Likewise.
176         * emit-rtl.c (const_next_insn, const_previous_insn,
177         const_next_nonnote_insn, const_prev_nonnote_insn,
178         const_next_real_insn, const_prev_real_insn,
179         const_next_active_insn, const_prev_active_insn, const_next_label,
180         const_prev_label): Delete.
181         * gimple-low.c (block_may_fallthru): Use expr_last.
182         * jump.c (reversed_comparison_code_parts): Use prev_nonnote_insn.
183         * rtl.h (const_previous_insn, const_next_insn,
184         const_prev_nonnote_insn, const_next_nonnote_insn,
185         const_prev_real_insn, const_next_real_insn,
186         const_prev_active_insn, const_next_active_insn, const_prev_label,
187         const_next_label): Delete.
188         * rtlanal.c (keep_with_call_p): Use next_nonnote_insn.
189         * system.h (CONST_CAST): Update comment.
190         * tree-cfg.c (tree_can_merge_blocks_p): Use last_stmt.
191         (const_first_stmt, const_last_stmt): Delete.
192         (tree_block_ends_with_condjump_p): Use last_stmt.
193         * tree-flow.h (const_first_stmt, const_last_stmt): Delete.
194         * tree-iterator.c (const_expr_first, const_expr_last,
195         const_expr_only): Delete.
196         * tree.c (const_lookup_attribute): Likewise.
197         (attribute_list_contained): Use lookup_attribute.
198         * tree.h (const_lookup_attribute, const_expr_first,
199         const_expr_last, const_expr_only): Delete.
200
201 2007-09-01  Richard Guenther  <rguenther@suse.de>
202
203         * tree-ssa-alias.c (create_name_tags): Use TYPE_VOLATILE
204         instead of TREE_THIS_VOLATILE.
205         * tree-ssa-operands.c (add_virtual_operand): Do not set
206         has_volatile_ops.  Do not check s_ann for NULL.
207         (get_indirect_ref_operands): Likewise.
208         (get_expr_operands): Likewise.  For all reference trees
209         set has_volatile_ops based on TREE_THIS_VOLATILE.  Also
210         check base of reference for TREE_THIS_VOLATILE.
211
212 2007-09-01  Richard Guenther  <rguenther@suse.de>
213
214         * tree-cfg.c (verify_gimple_expr): Fix check for conversions
215         between integral types.  Also allow conversions between
216         pointer types.
217
218 2007-08-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
219
220         * optabs.c (prepare_float_lib_cmp): Use
221         libgcc_cmp_return_mode instead of word_mode.
222         * config/dfp-bit.h: Likewise.
223         * config/fp-bit.h: Likewise.
224         * config/spu/spu.c (spu_libgcc_cmp_return_mode):
225         New function.
226         (spu_libgcc_shift_count_mode): New function.
227         (TARGET_LIBGCC_CMP_RETURN_MODE): Define.
228         (TARGET_LIBGCC_SHIFT_COUNT_MODE): Define.
229
230 2007-08-31  Joseph Myers  <joseph@codesourcery.com>
231
232         * tree-pretty-print.c: Include output.h.
233         (dump_decl_name, dump_generic_node): Use %wd with pp_printf, not
234         HOST_WIDE_INT_PRINT_DEC.
235         * Makefile.in (tree-pretty-print.o): Add dependency on output.h.
236
237 2007-08-31  Zdenek Dvorak  <ook@ucw.cz>
238
239         PR rtl-optimization/33224
240         * loop-iv.c (latch_dominating_def): Check that the definition belongs
241         to the analysed region.
242
243 2007-08-31  Richard Guenther  <rguenther@suse.de>
244
245         * function.c (allocate_struct_function): Do not set
246         current_function_returns_pointer.
247         * function.h (struct var_refs_queue): Remove.
248         (struct simple_obstack_stack): Likewise.
249         (struct function): Remove fixup_var_refs_queue member.
250         Remove returns_pointer flag.
251         (current_function_returns_pointer): Remove define.
252
253 2007-08-31  Nick Clifton  <nickc@redhat.com>
254
255         * tree-ssa-coalesce.c (compare_pairs): Use the elements as
256         secondary keys in order to obtain a stable sort.
257
258 2007-08-31  Nick Clifton  <nickc@redhat.com>
259
260         PR target/33132
261         * config/m32r/constraints.md: Add W constraint for integer zero.
262         * config/m32r/m32r.md (get_pc): Use W and i constraints.
263         Fix length calculation by using alternatives.
264
265 2007-08-31  Richard Sandiford  <richard@codesourcery.com>
266
267         * optabs.c (shift_optab_p, commutative_optab_p): New functions,
268         split out from expand_binop.
269         (avoid_expensive_constant): New function.
270         (expand_binop_directly): Remove commutative_op argument and
271         (expand_binop_directly): Remove commutative_op argument and
272         call cummutative_optab_p instead.  Do not change op0 or op1
273         when swapping xop0 and xop1.  Apply avoid_expensive_constant
274         to each argument after potential swapping.  Enforce the
275         canonical order of commutative operands.
276         (expand_binop): Use shift_optab_p and commutative_optab_p.
277         Update the calls to expand_binop_directly.  Only force constants
278         into registers when widening an operation.  Only swap operands
279         once a direct expansion has been rejected.
280         (expand_twoval_binop): Only force constants into registers when
281         using a direct expansion.
282
283 2007-08-31  Maxim Kuvyrkov  <maxim@codesourcery.com>
284
285         * sched-deps.c (update_dep): Mark arguments with ATTRIBUTE_UNUSED.
286         (sched_analyze_insn): Don't postprocess speculative dependencies when
287         target has no scheduling.
288         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Fix
289         'uninitialized' warning.
290
291 2007-08-31  Richard Guenther  <rguenther@suse.de>
292
293         * tree.c (build_complex_type): Always set TYPE_NAME for
294         comples types.
295
296 2007-08-31  Olivier Hainque  <hainque@adacore.com>
297
298         * config/rs6000/xcoff.h (XCOFF_CSECT_DEFAULT_ALIGNMENT_STR): New
299         internal macro. Default alignment factor for csect directives, chosen
300         to match what BIGGEST_ALIGNMENT allows.
301         (DATA_SECTION_ASM_OP): Use it.
302         * config/rs6000/rs6000.c
303         (rs6000_xcoff_output_readonly_section_asm_op):
304         Use XCOFF_CSECT_DEFAULT_ALIGNMENT_STR.
305         (rs6000_xcoff_output_readwrite_section_asm_op): Likewise.
306         
307 2007-08-31  Olivier Hainque  <hainque@adacore.com>
308
309         * dbxout.c (dbxout_block): Move declaration within the first
310         #if defined (DBX_DEBUGGING_INFO) block.  Rearrange another such
311         block to include the definition, together with the associated
312         helpers.
313
314 2007-08-31  David Edelsohn  <edelsohn@gnu.org>
315             Revital Eres  <eres@il.ibm.com>
316
317         * doc/invoke.texi (-mpaired): Document flag.
318         * config.gcc: Include paired.h in powerpc extra_headers and
319         750cl.h in powerpc-*-linux*paired*.
320         * config/rs6000/rs6000.opt (-mpaired): New flag.
321         * config/rs6000/rs6000.c (paired_init_builtins,
322         paired_expand_builtin, paired_expand_lv_builtin,
323         paired_expand_stv_builtin, paired_expand_predicate_builtin):
324         New functions to support the paired single builtin functions.
325         (rs6000_hard_regno_mode_ok): Handle PAIRED_VECTOR_MODE.
326         (def_builtin, bdesc_3arg, bdesc_2arg, bdesc_1arg): Add paired
327         single builtins.
328         (bdesc_paired_preds): New structure for paired predicate
329         instructions.
330         (rs6000_expand_builtin): Expand paired single builtins.
331         (rs6000_init_builtins): Init paired single builtins.
332         (rs6000_common_init_builtins): Add v2sf_ftype_v2sf_v2sf_v2sf.
333         Rename v2sf_ftype_v2sf_v2sf to v2sf_ftype_v2sf_v2sf_spe
334         and v2sf_ftype_v2sf_spe to v2sf_ftype_v2sf.  Add new types
335         v2sf_ftype_v2sf_v2sf and v2sf_ftype_v2sf.
336         (rs6000_vector_mode_supported_p): Support paired vector mode.
337         * config/rs6000/rs6000.h: (UNITS_PER_PAIRED_WORD,
338         PAIRED_VECTOR_MODE, PAIRED_SIMD_REGNO_P, TARGET_PAIRED_FLOAT):
339         New.
340         (LOCAL_ALIGNMENT): Handle PAIRED_VECTOR_MODE.
341         (DATA_ALIGNMENT): Likewise.
342         (UNITS_PER_SIMD_WORD): Handle PAIRED_VECTOR_MODE.
343         (rs6000_builtins): Add PAIRED builtins.
344         * config/rs6000/rs6000.md: Include paired.md.
345         * config/rs6000/paired.h: New.
346         * config/rs6000/paired.md: New.
347         * config/rs6000/750cl.h: New.
348         * config/rs6000/spe.md: Recognize movv2sf instruction for 750cl.
349
350 2007-08-30  Ollie Wild  <aaw@google.com>
351
352         * c-opts.c (c_common_handle_option): Support -fno-directives-only.
353         * gcc.c (default_compilers): Add -fno-directives-only to
354         @assembler-with-cpp.
355
356 2007-08-30  Sandra Loosemore  <sandra@codesourcery.com>
357
358         PR middle-end/33211
359
360         * regclass.c (initial_fixed_regs): Revert previous change and make
361         it const again.
362         (initial_call_used_regs): Likewise.
363         (initial_call_really_used_regs): Delete, reverting previous addition.
364         (initial_reg_names): Likewise.
365         (init_reg_sets): Revert previous change.
366         (saved_fixed_regs): New.
367         (saved_call_used_regs): New.
368         (saved_call_really_used_regs): New.
369         (saved_reg_names): New.
370         (save_register_info): New.
371         (restore_register_info): New.
372         (init_reg_sets_1): Replace reset of register info with call to
373         restore_register_info.
374         * rtl.h (save_register_info): Declare.
375         * toplev.c (backend_init): Call save_register_info.
376
377 2007-08-30  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
378
379         * tree-ssa-propagate.c (set_rhs): Remove the copied annotation
380         from the original statement.
381
382 2007-08-30  Chao-ying Fu  <fu@mips.com>
383
384         * c-lex.c (interpret_fixed): Declare.
385         (interpret_float): Process _Fract and _Accum.
386         (interpret_fixed): New function.
387         * final.c (output_addr_const): Process CONST_FIXED.
388         * simplify-rtx.c (simplify_const_unary_operation): Handle US_NEG.
389         (simplify_binary_operation_1): Handle US_ASHIFT, SS_MULT, US_MULT,
390         SS_DIV, US_DIV.
391         (simplify_const_binary_operation): Handle SS_MULT, US_MULT, SS_DIV,
392         US_DIV, US_ASHIFT.
393         (simplify_immed_subreg): Support CONST_FIXED.
394         Process MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
395         (simplify_subreg): Support CONST_FIXED.
396
397 2007-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
398
399         * config/rs6000/ppu_intrinsics.h: New file.
400         * config.gcc (powerpc*-*-* <extra_headers>): Install
401         ppu_intrinsics.h.
402
403 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
404
405         * cfg.c (dump_flow_info): Change to also print entry and exit
406         block info.
407         * print-rtl.c (print_rtl_single): Allow to print rtl with
408         -fdump-unnumbered.
409         
410 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
411
412         * df-core.h (df_dump_region): New function.
413         * df.h (df_dump_region): New function.
414         * loop-invariant.c (find_defs): Add call to df_dump_region.
415         * loop-iv.c (iv_analysis_loop_init): Changed call from df_dump to
416         df_dump_region.
417         
418 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
419
420         * decl.c (start_preparsed_function): Set
421         DECL_DISREGARD_INLINE_LIMITS for GNU_INLINE_P functions.
422
423         PR target/33168
424         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Return
425         true if any of the compare_section_name calls returned true,
426         rather than if any returned false.
427
428 2007-08-30  Richard Guenther  <rguenther@suse.de>
429
430         PR tree-optimization/33199
431         * tree-ssa-structalias.c (handle_lhs_call): New function.
432         (find_func_aliases): In non-IPA mode make sure that for
433         calls that return a pointer we add a constraint for the
434         result to point to anything.
435
436 2007-08-30  Richard Guenther  <rguenther@suse.de>
437
438         * doc/invoke.texi (-mveclibabi): Document new target option.
439         * config/i386/i386.opt (-mveclibabi): New target option.
440         * config/i386/i386.c (ix86_veclib_handler): Handler for
441         vectorization library support.
442         (override_options): Handle the -mveclibabi option, initialize
443         the vectorization library handler.
444         (ix86_builtin_vectorized_function): As fallback call the
445         vectorization library handler, if set.
446         (ix86_veclibabi_acml): New static function for ACML ABI style
447         vectorization support.
448
449 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
450
451         * config/rs6000/rs6000.c (rs6000_emit_sync): For QI or HI mode
452         used_m, even if it is 32-bit aligned, adjust used_m MEM to have
453         SImode and update m.  Don't run gen_lowpart_common on arbitrary
454         memory address, force it to register first.
455
456         PR middle-end/32758
457         * dce.c (dce_process_block): Don't delete setters of
458         artificially used registers.
459
460 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
461
462         * config/s390/s390.md ("*add<mode>3_alc_carry1_cc",
463         "*add<mode>3_alc_carry1_cconly", "*add<mode>3_alc_carry2_cc",
464         "*add<mode>3_alc_carry2_cconly"): New insn definitions.
465
466 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
467
468         * config/s390/s390.c (s390_expand_addcc): Emit canonical alc
469         pattern.
470         * config/s390/s390.md ("*add<mode>3_alc_cc", "*add<mode>3_alc",
471         "addti3", "*adddi3_31z", "*scond<mode>"): Make alc pattern canonical.
472
473 2007-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
474
475         * system.h: Activate -Wcast-qual as warning-only.
476
477 2007-08-29  Paolo Bonzini  <bonzini@gnu.org>
478
479         PR target/33168
480         * config/rs6000/rs6000.c (compare_section_name): New function.
481         (rs6000_elf_in_small_data_p): Compare section prefixes instead
482         of full name.
483
484 2007-08-29  Olivier Hainque  <hainque@adacore.com>
485
486         * xcoffout.c: #include debug.h.
487         * Makefile.in (xcoffout.o): Add debug.h dependency.
488
489 2007-08-29  Uros Bizjak  <ubizjak@gmail.com>
490
491         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
492         Change CONST_VECTOR_ELT to XVECEXP in elem calculation.
493
494 2007-08-29  Richard Guenther  <rguenther@suse.de>
495
496         * tree-pretty-print.c (dump_generic_node): Print
497         label DECL_UID as D.%u.
498         * tree-dfa.c (dump_variable): Print DECL_UID as D.%u.
499
500 2007-08-29  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
501
502         * gcc/builtin-types.def (BT_FN_PTR_PTR_SIZE): New type.
503         * gcc/builtins.def (BUILT_IN_REALLOC): New builtin.
504
505 2007-08-29  Douglas Gregor  <doug.gregor@gmail.com>
506
507         PR c++/33194
508         * tree.c (build_type_attribute_qual_variant): Set canonical types
509         on the final, unqualified attribute variant before building the
510         qualified version.
511
512 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
513
514         * config/bfin/bfin.c (bfin_expand_builtin): Fix the argument
515         order of __builtin_bfin_cmplx_mac and __builtin_bfin_cmplx_msu.
516
517 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
518
519         Revert
520         2007-08-29  Jie Zhang  <jie.zhang@analog.com>
521         * config/bfin/bfin.md (composev2hi): Put operands into vector
522         with correct order.
523
524 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
525
526         * config/bfin/bfin.md (composev2hi): Put operands into vector
527         with correct order.
528
529 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
530
531         * config/bfin/bfin.c (bfin_expand_call): Inline PLT with l1_text
532         attribute when appropriate.
533         (bfin_handle_l1_text_attribute): New.
534         (bfin_handle_l1_data_attribute): New.
535         (bfin_attribute_table): Add attributes: l1_text, l1_data,
536         l1_data_A and l1_data_B.
537         * doc/extend.texi (node Function Attributes): Document l1_text
538         function attribute.
539         (Variable Attributes): Add Blackfin subsection. Document l1_data,
540         l1_data_A and l1_data_B variable attributes.
541
542 2007-08-28  Jie Zhang  <jie.zhang@analog.com>
543
544         * config/bfin/bfin.opt (minline-plt): Add.
545         * config/bfin/bfin.c (bfin_expand_call): Inline PLT when emit
546         call to global functions.
547         * doc/invoke.texi (Option Summary): Mention -minline-plt.
548         (Blackfin Options): Document -minline-plt.
549
550 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
551
552         * config/m68k/m68k.c (m68k_get_function_kind): Assert we're never
553         given a non-function.
554         (m68k_ok_for_sibcall_p): Only sibcall functions of the same kind.
555
556 2007-08-28  DJ Delorie  <dj@redhat.com>
557
558         * config/sh/sh.c (sh_gimplify_va_arg_expr): Fix sh2a support.
559
560 2007-08-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
561
562         * system.h (CONST_CAST): Avoid union for gcc-4.0.x.
563
564 2007-08-28  Richard Guenther  <rguenther@suse.de>
565
566         * tree.h (struct tree_function_decl): Increase size of
567         function_code bitfield.
568
569 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
570             Kazu Hirata  <kazu@codesourcery.com>
571
572         * gcc/config/m68k/linux.h
573         (M68K_HONOR_TARGET_STRICT_ALIGNMENT): Redefine as 0.
574         * config/m68k/m68k.c (TARGET_RETURN_IN_MEMORY): New.
575         (m68k_return_in_memory): New.
576         * gcc/config/m68k/m68k.h (M68K_HONOR_TARGET_STRICT_ALIGNMENT):
577         New.
578
579 2007-08-28  Uros Bizjak  <ubizjak@gmail.com>
580
581         PR target/32661
582         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
583         Simplify nested VEC_SELECT (with optional VEC_CONCAT operator as
584         operand) when top VEC_SELECT extracts scalar element.
585         * config/i386/sse.md (*vec_extract_v4si_mem): New pattern.
586         (*vec_extract_v4sf_mem): Ditto.
587
588 2007-08-28  Jakub Jelinek  <jakub@redhat.com>
589
590         PR middle-end/32370
591         * passes.c (init_optimization_passes): Move pass_df_finish
592         after pass_postreload sublist.
593
594         PR rtl-optimization/33148
595         * simplify-rtx.c (simplify_unary_operation_1): Only optimize
596         (neg (lt X 0)) if X has scalar int mode.
597
598         PR debug/32914
599         * dwarf2out.c (rtl_for_decl_init): If vector decl has CONSTRUCTOR
600         initializer, use build_vector_from_ctor if possible to create
601         VECTOR_CST out of it.  If vector initializer is not VECTOR_CST
602         even after this, return NULL.
603
604 2007-08-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
605
606         * c-pretty-print.c (pp_c_constant): Handle COMPLEX_CST.
607
608 2007-08-28  Richard Guenther  <rguenther@suse.de>
609
610         * tree.h (DECL_DISREGARD_INLINE_LIMITS): New.
611         (struct tree_function_decl): Make function_code a bitfield.
612         Add disregard_inline_limits flag.
613         * cgraphunit.c (cgraph_process_new_functions): Check
614         DECL_DISREGARD_INLINE_LIMITS instead of disregard_inline_limits_p.
615         (cgraph_preserve_function_body_p): Likewise.
616         * ipa-inline.c (compute_inline_parameters): Likewise.
617         * c-decl.c (finish_function): Set DECL_DISREGARD_INLINE_LIMITS
618         for GNU C extern inline functions.
619         (merge_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
620         * tree-inline.c (disregard_inline_limits_p): Remove.
621         * tree-inline.h (disregard_inline_limits_p): Likewise.
622         * c-common.c (handle_always_inline_attribute): Set
623         DECL_DISREGARD_INLINE_LIMITS.
624         * langhooks.c (add_builtin_function): Verify the function code
625         fits in the bitfield.
626
627 2007-08-28  Mircea Namolaru  <namolaru@il.ibm.com>
628             Vladimir Yanovsky  <yanov@il.ibm.com>
629             Revital Eres  <eres@il.ibm.com>
630             Andrey Belevantsev  <abel@ispras.ru>
631
632         * config/spu/spu.md: Recognize doloop pattern when -fmodulo-sched
633         is set.
634         * modulo-sched.c: Add documentation regarding do-loop.
635         (doloop_register_get): Change number of arguments to support
636         the new do-loop pattern and check whether COUNT_REG has no other
637         occurences in the loop besides in the control part.
638         (duplicate_insns_of_cycles): Do not duplicate the insn which
639         changes count_reg as it is already adjusted.
640         (generate_prolog_epilog): New argument to support the new
641         do-loop pattern.  Change the subtract instruction to use
642         expand_simple_binop.  Call duplicate_insns_of_cycles with new
643         argument.
644         (sms_schedule): Call doloop_register_get and
645         generate_prolog_epilog with new argument.  Do not handle loops
646         with single sets insns with subreg in their lhs.
647         * loop-doloop.c (doloop_optimize): Support for another do-loop
648         pattern.
649         (doloop_condition_get): Gets an instruction instead of a pattern
650         and change the return condition when the do-loop pattern is
651         not parallel.
652         * ddg.c (create_ddg_dep_from_intra_loop_link): Handle only reg
653         deps when considering to not create edges.
654
655 2007-08-27  Alexandre Oliva  <aoliva@redhat.com>
656
657         * doc/extend.texi (gnu_inline funtion attribute): Document C++
658         behavior.
659
660 2007-08-27  Jason Merrill  <jason@redhat.com>
661
662         PR c++/31337
663         * gimplify.c (gimplify_modify_expr): Discard the assignment of 
664         zero-sized types after calling gimplify_modify_expr_rhs.
665
666 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
667
668         * regclass.c (init_reg_autoinc): Fix typo.
669
670 2007-08-27  Daniel Berlin  <dberlin@dberlin.org>
671         
672         Fix PR tree-optimization/33173
673         * tree-ssa-alias.c (find_used_portions): Fix reversed test.
674
675 2007-08-27  H.J. Lu  <hongjiu.lu@intel.com>
676
677         PR target/31385
678         * config/i386/i386.h (VALID_DFP_MODE_P): New.
679         * config/i386/i386.c (ix86_hard_regno_mode_ok): Allow DFP in
680         GPR.
681
682 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
683             David Ung  <davidu@mips.com>
684             Nigel Stephens <nigel@mips.com>
685
686         Separate target-specific initialization from general
687         back-end initialization.
688
689         * toplev.c (init_alignments): New, split out from...
690         (process_options): ...here.
691         (backend_init_target):  New, split out from...
692         (backend_init): ...here.
693         (lang_dependent_init_target):  New, split out from...
694         (lang_dependent_init): ...here.
695         (target_reinit): New.
696         * toplev.h (target_reinit): Declare.
697         * expr.c (init_expr_target): Renamed from init_expr_once, since it
698         now can be called more than once.  Update comments.
699         * expr.h (init_expr_target): Likewise.
700         * alias.c (init_alias_target): Renamed from init_alias_once, since it
701         now can be called more than once.  Explicitly zero
702         static_reg_base_value.
703         * emit-rtl.c (init_emit_regs): New, split out from...
704         (init_emit_once): Here.
705         * regclass.c (initial_fixed_regs, initial_call_used_regs): Make
706         non-const, so that changes from command-line arguments can overwrite
707         values provided by the static initializers.
708         (initial_call_really_used_regs): New, used similarly to the above.
709         (initial_reg_names): Likewise.
710         (last_mode_for_init_move_cost): Promoted function-local static to
711         file-scope static to make it accessible outside init_move_cost.
712         (init_reg_sets): Do not initialize fixed_regs and call_used_regs yet.
713         Do not initialize inv_reg_alloc_order yet, either.  Do initialize
714         reg_names since it is needed for parsing command-line options.
715         (init_move_cost): Use last_mode_for_init_move_cost instead of
716         function-local static.
717         (init_reg_sets_1): Initialize fixed_regs, call_used_regs, and
718         call_really_used_regs now.  Reinitialize reg_names.  Also
719         initialize inv_reg_alloc_order.  Zero reg_class_subunion and
720         reg_class_superunion.  Clear losing_caller_save_reg_set.
721         Preserve global registers if called more than once.  Reset
722         move cost, may_move_in_cost, may_move_out_cost, and
723         last_mode_for_init_move_cost.
724         (init_reg_modes_target): Renamed from init_reg_modes_once, since it
725         can now be invoked more than once.  Update comments.
726         (init_regs): Update comments.
727         (fix_register): Update initial_fixed_regs, initial_call_used_regs,
728         and initial_call_really_used_regs, instead of the non-initial 
729         variables.  This allows us to save the command-line register settings
730         after target reinitialization.
731         (init_reg_autoinc): Zero forbidden_inc_dec_classes.
732         * rtl.h (init_emit_regs): Declare.
733         (init_reg_modes_target, init_alias_target): Renamed as described
734         above.
735         * reload1.c (init_reload): Update comments.
736         * optabs.c (init_optabs): Likewise.
737         * cfgloopanal.c (init_set_costs): Explicitly zero target_avail_regs.
738         
739 2007-08-26  Chao-ying Fu  <fu@mips.com>
740
741         * rtl.h (XCNMPFV): Preserve const-ness of parameters through use of
742         __typeof().
743
744 2007-08-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
745
746         * alias.c (memory_modified_1, memory_modified_in_insn_p):
747         Constify.
748         * basic-block.h (tree_predicted_by_p, rtl_predicted_by_p):
749         Likewise.
750         * bb-reorder.c (copy_bb_p): Likewise.
751         * cfghooks.c (can_remove_branch_p, can_merge_blocks_p,
752         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
753         block_ends_with_condjump_p): Likewise.
754         * cfghooks.h (can_remove_branch_p, can_merge_blocks_p,
755         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
756         block_ends_with_condjump_p): Likewise.
757         * cfglayout.c (cfg_layout_can_duplicate_bb_p): Likewise.
758         * cfgrtl.c (can_delete_note_p, can_delete_label_p,
759         rtl_can_merge_blocks, cfg_layout_can_merge_blocks_p,
760         rtl_block_ends_with_call_p, rtl_block_ends_with_condjump_p,
761         need_fake_edge_p, rtl_can_remove_branch_p): Likewise.
762         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Use
763         debug_true_const_tree instad of debug_true_tree.
764         * debug.c (do_nothing_debug_hooks): Likewise.
765         * debug.h (ignore_block, debug_true_const_tree): Constify.
766         * dwarf2out.c (stack_adjust_offset, clobbers_queued_reg_save,
767         dwarf2out_ignore_block, is_pseudo_reg, is_tagged_type,
768         decl_ultimate_origin, block_ultimate_origin, lookup_decl_loc,
769         same_dw_val_p, add_ranges, is_subrange_type, type_is_enum,
770         dbx_reg_number, is_based_loc, field_type,
771         simple_type_align_in_bits, simple_decl_align_in_bits,
772         simple_type_size_in_bits, field_byte_offset, insert_float,
773         type_tag, member_declared_type, is_redundant_typedef,
774         secname_for_decl, is_inlined_entry_point): Likewise.
775         * emit-rtl.c (const_next_insn, const_previous_insn,
776         const_next_nonnote_insn, const_prev_nonnote_insn,
777         const_next_real_insn, const_prev_real_insn,
778         const_next_active_insn, const_prev_active_insn, const_next_label,
779         const_prev_label): Likewise.
780         * except.h (lookup_stmt_eh_region_fn, lookup_stmt_eh_region):
781         Likewise.
782         * haifa-sched.c (may_trap_exp, haifa_classify_insn,
783         find_set_reg_weight, no_real_insns_p, find_set_reg_weight,
784         sched_insn_is_legitimate_for_speculation_p): Likewise.
785         * jump.c (reversed_comparison_code_parts,
786         reversed_comparison_code, reversed_comparison, condjump_label):
787         Likewise.
788         * predict.c (rtl_predicted_by_p, tree_predicted_by_p): Likewise.
789         * reg-stack.c (stack_regs_mentioned_p, stack_regs_mentioned):
790         Likewise.
791         * rtl.h (const_previous_insn, const_next_insn,
792         const_prev_nonnote_insn, const_next_nonnote_insn,
793         const_prev_real_insn, const_next_real_insn,
794         const_prev_active_insn, const_next_active_insn, const_prev_label,
795         const_next_label, modified_between_p, modified_in_p,
796         const_note_storeskeep_with_call_p, condjump_label,
797         reversed_comparison, reversed_comparison_code,
798         reversed_comparison_code_parts, memory_modified_in_insn_p,
799         stack_regs_mentioned): Likewise.
800         * rtlanal.c (modified_between_p, modified_in_p, const_note_stores,
801         keep_with_call_p): Likewise.
802         * sched-deps.c (deps_may_trap_p, sched_get_condition,
803         conditions_mutex_p, sched_insns_conditions_mutex_psd_next_list,
804         sd_lists_size, sd_lists_empty_p): Likewise.
805         * sched-int.h (sched_insns_conditions_mutex_p,
806         haifa_classify_insn, no_real_insns_p,
807         sched_insn_is_legitimate_for_speculation_p, sd_next_list,
808         sd_lists_size, sd_lists_empty_p): Likewise.
809         * sdbout.c (sdb_debug_hooks): Likewise.
810         * tree-cfg.c (tree_can_merge_blocks_p, is_ctrl_altering_stmt,
811         stmt_ends_bb_p, tree_can_remove_branch_p, tree_can_duplicate_bb_p,
812         -tree_block_ends_with_call_p, tree_block_ends_with_condjump_p):
813         Likewise.
814         * tree-eh.c (lookup_stmt_eh_region_fn, lookup_stmt_eh_region,
815         tree_can_throw_internal): Likewise.
816         * tree-flow-inline.h (phi_nodes): Likewise.
817         * tree-flow.h (phi_nodesstmt_ends_bb_p, is_ctrl_altering_stmt,
818         tree_can_throw_internal, lookup_stmt_eh_region): Likewise.
819         * tree-gimple.c (const_get_call_expr_in): Likewise.
820         * tree-gimple.h (const_get_call_expr_in): Likewise.
821         * tree.c (const_lookup_attribute, attribute_list_equal,
822         attribute_list_contained): Likewise.
823         * tree.h (attribute_list_equal, attribute_list_contained,
824         const_lookup_attribute): Likewise.
825         * vmsdbgout.c (vmsdbgout_ignore_block): Likewise.
826
827 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
828
829         * tree-ssa-sccvn.c, tree-ssa-sccvn.h, tree-vn.c,
830         tree-ssa-pre.c: Remove unnecessary trailing whitespace.
831
832 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
833
834         PR target/32991
835         * config/alpha/constraints.md: Delete "svn:mime-type" property
836         with svn propdel "svn:mime-type".
837
838 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
839
840         PR middle-end/33181
841         * ifcvt.c (noce_get_alt_condition): Make sure that the previous
842         non NOTE insn doesn't cross basic block.
843         (noce_try_abs): Likewise.
844         (noce_process_if_block): Likewise.
845
846 2007-08-26  David Edelsohn  <edelsohn@gnu.org>
847
848         PR target/33151
849         * config/rs6000/predicates.md (offsettable_mem_operand): Memory
850         operand without auto-inc-dec.
851         * config/rs6000/rs6000.md (floatsidf2_internal): Use
852         offsettable_mem_operand.
853         (floatunssidf2_internal): Same.
854         (fix_truncdfsi2_internal): Same.
855         (floatsidf_ppc64): Same.
856         (floatunssidf_ppc64): Same.
857         (fix_trunctfsi2_internal): Same.
858
859 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
860
861         PR bootstrap/30620
862         * Makefile.in (libbackend.o): Add gcov-iov.h dependency and
863         pass defines needed for version.c.
864
865 2007-08-25  Joseph Myers  <joseph@codesourcery.com>
866
867         * configure.ac (--debug-prefix-map check): Change assembler
868         version presumed to have feature to 2.18.
869         * configure: Regenerate.
870
871 2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
872
873         * c-common.c (vector_types_convertible_p,
874         decl_with_nonnull_addr_p, c_promoting_integer_type_p,
875         self_promoting_args_p): Constify.
876         * c-common.h (has_c_linkage, decl_with_nonnull_addr_p,
877         c_promoting_integer_type_p, self_promoting_args_p,
878         anon_aggr_type_p, vector_types_convertible_p): Likewise.
879         * c-decl.c (anon_aggr_type_p): Likewise.
880         * * c-dump.c (dump_stmt): Likewise.
881         * c-objc-common.c (has_c_linkage): Likewise.
882         * c-tree.h (same_translation_unit_p): Likewise.
883         * c-typeck.c (null_pointer_constant_p,
884         tagged_types_tu_compatible_p, function_types_compatible_p,
885         type_lists_compatible_p, lvalue_or_else, lvalue_p,
886         comptypes_internal, struct tagged_tu_seen_cache,
887         same_translation_unit_p, alloc_tagged_tu_seen_cache,
888         c_size_in_bytes): Likewise.
889         * ggc-common.c (compare_ptr_data, hash_descriptor, eq_descriptor,
890         hash_ptr, eq_ptr): Likewise.
891         * langhooks-def.h (lhd_decl_ok_for_sibcall,
892         LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Likewise.
893         * langhooks.c (lhd_decl_ok_for_sibcall): Likewise.
894         * langhooks.h (ok_for_sibcall, omp_privatize_by_reference):
895         Likewise.
896         * optabs.c (optab_for_tree_code): Likewise.
897         * optabs.h (optab_for_tree_code): Likewise.
898         * rtl.h (simplify_rtx): Likewise.
899         * simplify-rtx.c (simplify_rtx): Likewise.
900         * tree-dump.c (queue, queue_and_dump_index, queue_and_dump_type,
901         dump_flag, dump_node): Likewise.
902         * tree-dump.h (struct dump_info, dump_stmt, queue_and_dump_index,
903         queue_and_dump_type, dump_flag): Likewise.
904         * tree-flow.h (vect_can_force_dr_alignment_p): Likewise.
905         * tree-pass.h (dump_node): Likewise.
906         * tree-vectorizer.c (vect_can_force_dr_alignment_p,
907         supportable_narrowing_operation): Likewise.
908         * tree-vectorizer.h (vect_can_force_dr_alignment_p,
909         supportable_narrowing_operation): Likewise.
910         * tree-vrp.c (needs_overflow_infinity, supports_overflow_infinity,
911         is_negative_overflow_infinity, is_positive_overflow_infinity,
912         is_overflow_infinity, vrp_val_is_max, vrp_val_is_min,
913         nonnull_arg_p, get_value_range, vrp_operand_equal_p,
914         update_value_range, add_equivalence, ssa_name_nonnegative_p,
915         ssa_name_nonzero_p, fp_predicate): Likewise.
916         * tree.c (auto_var_in_fn_p, empty_body_p): Likewise.
917         * tree.h (empty_body_p, auto_var_in_fn_p, ssa_name_nonzero_p,
918         ssa_name_nonnegative_p): Likewise.
919
920 2007-08-25  Hans Kester  <hans.kester@ellips.nl>
921
922         * config.gcc : Add x86_64-elf target.
923
924 2007-08-25  Jakub Jelinek  <jakub@redhat.com>
925
926         * expr.c (store_expr): Fix order of store_by_pieces arguments.
927
928 2007-08-24  Sandra Loosemore  <sandra@codesourcery.com>
929             Nigel Stephens <nigel@mips.com>
930
931         PR target/11787
932
933         * doc/tm.texi (SET_RATIO, SET_BY_PIECES_P): Document new macros.
934         (STORE_BY_PIECES_P): No longer applies to __builtin_memset.
935         * expr.c (SET_BY_PIECES_P): Define.
936         (can_store_by_pieces, store_by_pieces): Add MEMSETP argument; use
937         it to decide whether to use SET_BY_PIECES_P or STORE_BY_PIECES_P.
938         (store_expr): Pass MEMSETP argument to can_store_by_pieces and
939         store_by_pieces.
940         * expr.h (SET_RATIO): Define.
941         (can_store_by_pieces, store_by_pieces): Update prototypes.
942         * builtins.c (expand_builtin_memcpy): Pass MEMSETP argument to
943         can_store_by_pieces/store_by_pieces.
944         (expand_builtin_memcpy_args): Likewise.
945         (expand_builtin_strncpy): Likewise.
946         (expand_builtin_memset_args): Likewise.  Also remove special case
947         for optimize_size so that can_store_by_pieces/SET_BY_PIECES_P can
948         decide what to do instead.
949         * value-prof.c (tree_stringops_transform): Pass MEMSETP argument
950         to can_store_by_pieces.
951
952         * config/sh/sh.h (SET_BY_PIECES_P): Clone from STORE_BY_PIECES_P.
953         * config/s390/s390.h (SET_BY_PIECES_P): Likewise.
954
955         * config/mips/mips.opt (mmemcpy): Change from Var to Mask.
956         * config/mips/mips.c (override_options): Make -Os default to -mmemcpy.
957         * config/mips/mips.h (MIPS_CALL_RATIO): Define.
958         (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Define.
959         (STORE_BY_PIECES_P): Define.
960
961 2007-08-24  Tom Tromey  <tromey@redhat.com>
962
963         * varpool.c (varpool_last_needed_node): Fix comment typo.
964         * c-decl.c (duplicate_decls): Fix comment typo.
965         (clone_underlying_type): Update comment.
966
967 2007-08-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
968
969         * config/alpha/alpha.c (alpha_mangle_type, decl_has_samegp,
970         alpha_in_small_data_p, alpha_split_complex_arg,
971         alpha_stdarg_optimize_hook, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
972         Constify.
973         * config/arm/arm-protos.h (arm_mangle_type): Likewise.
974         * config/arm/arm.c (arm_comp_type_attributes, arm_mangle_type):
975         Likewise.
976         * config/bfin/bfin.c (funkind, bfin_comp_type_attributes,
977         TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
978         * config/darwin-protos.h (darwin_binds_local_p): Likewise.
979         * config/darwin.c (darwin_binds_local_p): Likewise.
980         * config/frv/frv.c (frv_string_begins_with, frv_in_small_data_p):
981         Likewise.
982         * config/i386/i386-protos.h (i386_pe_binds_local_p,
983         i386_pe_valid_dllimport_attribute_p): Likewise.
984         * config/i386/i386.c (ix86_function_regparm,
985         ix86_comp_type_attributes, ix86_ms_bitfield_layout_p,
986         x86_can_output_mi_thunk, ix86_mangle_type,
987         TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
988         * config/i386/winnt.c (i386_pe_valid_dllimport_attribute_p,
989         i386_pe_binds_local_p): Likewise.
990         * config/ia64/ia64.c
991         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec,
992         ia64_needs_block_p, ia64_in_small_data_p, ia64_mangle_type,
993         ia64_invalid_conversion, ia64_invalid_unary_op,
994         ia64_invalid_binary_op, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
995         Likewise.
996         * config/m32c/m32c.c (m32c_comp_type_attributes): Likewise.
997         * config/m32r/m32r.c (m32r_in_small_data_p): Likewise.
998         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
999         * config/mips/mips.c (mips_use_blocks_for_constant_p,
1000         mips_in_small_data_p, mips_use_anchors_for_symbol_p,
1001         mips_comp_type_attributes, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
1002         mips_near_type_p, mips_far_type_p, mips_global_symbol_p,
1003         mips_symbol_binds_local_p, mips_classify_symbol): Likewise.
1004         * config/pa/pa.c (pa_commutative_p): Likewise.
1005         * config/rs6000/rs6000-protos.h (rs6000_elf_in_small_data_p):
1006         Likewise.
1007         * config/rs6000/rs6000.c (rs6000_invalid_within_doloop,
1008         rs6000_ms_bitfield_layout_p, rs6000_mangle_type,
1009         rs6000_use_blocks_for_constant_p,
1010         rs6000_vector_alignment_reachable, rs6000_is_opaque_type,
1011         invalid_arg_for_unprototyped_fn, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
1012         TARGET_SPLIT_COMPLEX_ARG, rs6000_elf_in_small_data_p): Likewise.
1013         * config/s390/s390.c (s390_mangle_type,
1014         TARGET_ASM_CAN_OUTPUT_MI_THUNK, TARGET_INVALID_WITHIN_DOLOOP):
1015         Likewise.
1016         * config/score/score.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
1017         th_in_small_data_p): Likewise.
1018         * config/sh/sh.c (sh_ms_bitfield_layout_p,
1019         sh_dwarf_calling_convention, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
1020         Likewise.
1021         * config/sparc/sparc.c (sparc_can_output_mi_thunk,
1022         sparc_mangle_type): Likewise.
1023         * config/spu/spu.c (spu_vector_alignment_reachable): Likewise.
1024         * config/xtensa/xtensa.c (TARGET_SPLIT_COMPLEX_ARG): Likewise.
1025         * emit-rtl.c (const_fixed_htab_hash, const_fixed_htab_eq):
1026         Likewise.
1027         * hooks.c (hook_bool_mode_const_rtx_false,
1028         hook_bool_mode_const_rtx_true,
1029         hook_bool_const_tree_hwi_hwi_const_tree_false,
1030         hook_bool_const_tree_hwi_hwi_const_tree_true,
1031         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
1032         hook_constcharptr_const_tree_null,
1033         hook_constcharptr_const_rtx_null,
1034         hook_constcharptr_const_tree_const_tree_null,
1035         hook_constcharptr_int_const_tree_null,
1036         hook_constcharptr_int_const_tree_const_tree_null): New.
1037         (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
1038         hook_bool_tree_hwi_hwi_tree_false,
1039         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
1040         hook_int_tree_tree_1, hook_constcharptr_tree_null,
1041         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
1042         hook_constcharptr_int_tree_null,
1043         hook_constcharptr_int_tree_tree_null): Delete.
1044         (default_can_output_mi_thunk_no_vcall): Constify.
1045         * hooks.h (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
1046         hook_bool_tree_hwi_hwi_tree_false,
1047         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
1048         hook_int_tree_tree_1, hook_constcharptr_tree_null,
1049         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
1050         hook_constcharptr_int_tree_null,
1051         hook_constcharptr_int_tree_tree_null): Delete.
1052         (hook_bool_mode_const_rtx_false, hook_bool_mode_const_rtx_true,
1053         hook_bool_const_tree_hwi_hwi_const_tree_false,
1054         hook_bool_const_tree_hwi_hwi_const_tree_true,
1055         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
1056         hook_constcharptr_const_tree_null,
1057         hook_constcharptr_const_rtx_null,
1058         hook_constcharptr_const_tree_const_tree_null,
1059         hook_constcharptr_int_const_tree_null,
1060         hook_constcharptr_int_const_tree_const_tree_null): New.
1061         (default_can_output_mi_thunk_no_vcall): Constify.
1062         * integrate.c (function_attribute_inlinable_p): Likewise.
1063         * integrate.h (function_attribute_inlinable_p): Likewise.
1064         * jump.c (rtx_renumbered_equal_p): Likewise.
1065         * output.h (decl_readonly_section, categorize_decl_for_section,
1066         default_use_anchors_for_symbol_p, default_binds_local_p,
1067         default_binds_local_p_1): Likewise.
1068         * rtl.h (rtx_renumbered_equal_p, decl_default_tls_model):
1069         Likewise.
1070         * target-def.h (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
1071         TARGET_VALID_DLLIMPORT_ATTRIBUTE_P, TARGET_VECTOR_OPAQUE_P,
1072         TARGET_COMMUTATIVE_P, TARGET_USE_BLOCKS_FOR_CONSTANT_P,
1073         TARGET_COMP_TYPE_ATTRIBUTES,
1074         TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P,
1075         TARGET_MS_BITFIELD_LAYOUT_P, TARGET_MANGLE_TYPE,
1076         TARGET_IN_SMALL_DATA_P, TARGET_INVALID_CONVERSION,
1077         TARGET_INVALID_UNARY_OP, TARGET_INVALID_BINARY_OP,
1078         TARGET_DWARF_CALLING_CONVENTION): Likewise.
1079         * target.h (can_output_mi_thunk, needs_block_p,
1080         first_cycle_multipass_dfa_lookahead_guard_spec,
1081         vector_alignment_reachable, comp_type_attributes,
1082         function_attribute_inlinable_p, ms_bitfield_layout_p, mangle_type,
1083         commutative_p, use_blocks_for_constant_p,
1084         use_anchors_for_symbol_p, in_small_data_p, binds_local_p,
1085         vector_opaque_p, dwarf_calling_convention, stdarg_optimize_hook,
1086         invalid_within_doloop, valid_dllimport_attribute_p,
1087         split_complex_arg, invalid_arg_for_unprototyped_fn,
1088         invalid_conversion, invalid_unary_op, invalid_binary_op):
1089         Likewise.
1090         * targhooks.c (default_invalid_within_doloop,
1091         hook_invalid_arg_for_unprototyped_fn,
1092         default_builtin_vector_alignment_reachable): Likewise.
1093         (hook_bool_rtx_commutative_p): Delete.
1094         (hook_bool_const_rtx_commutative_p): New.
1095         * targhooks.h (default_invalid_within_doloop,
1096         default_builtin_vector_alignment_reachable,
1097         hook_invalid_arg_for_unprototyped_fn): Constify.
1098         (hook_bool_rtx_commutative_p): Delete.
1099         (hook_bool_const_rtx_commutative_p): New.
1100         * varasm.c (bss_initializer_p, decl_default_tls_model,
1101         categorize_decl_for_section, decl_readonly_section,
1102         default_use_anchors_for_symbol_p, default_binds_local_p,
1103         default_binds_local_p_1): Constify.
1104
1105 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
1106
1107         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
1108         __NO_BUILTIN if -fno-builtin.
1109
1110 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
1111
1112         * config/bfin/bfin.c (print_operand): Report error instead of
1113         ICE for wrong operand.
1114
1115 2007-08-24  Michael Matz  <matz@suse.de>
1116
1117         * Makefile.in (GTFILES_H): Use $(patsubst) instead of $(subst).
1118
1119 2007-08-24  Richard Guenther  <rguenther@suse.de>
1120
1121         PR middle-end/33166
1122         * tree-ssa.c (useless_type_conversion_p): Split into a
1123         recursive and a non-recursive part.
1124         (useless_type_conversion_p_1): New function.
1125         * tree-ssa-ccp.c (fold_stmt_r): Make sure that the result
1126         from maybe_fold_offset_to_reference is trivially convertible
1127         to the desired type before doing the simplification.
1128
1129 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
1130
1131         * expr.c (store_expr): Optimize initialization of an array
1132         with STRING_CST.
1133         * expr.h (builtin_strncpy_read_str): New prototype.
1134         * builtins.c (builtin_strncpy_read_str): Remove prototype.
1135         No longer static.
1136
1137 2007-08-24  Uros Bizjak  <ubizjak@gmail.com>
1138
1139         PR middle-end/33157
1140         * ifcvt.c (noce_find_if_block): Do not clear if_info.cond_earliest
1141         field when initializing if_info structure.
1142
1143 2007-08-24  Richard Guenther  <rguenther@suse.de>
1144
1145         * Makefile.in (tree-inline.o): Add $(TARGET_H) and $(INTEGRATE_H)
1146         dependencies.
1147         * c-objc-common.c (c_cannot_inline_tree_fn): Remove.
1148         * langhooks.c (lhd_tree_inlining_cannot_inline_tree_fn): Likewise.
1149         * tree-inline.c (inlinable_function_p): Fold in common parts of
1150         the cannot_inline_tree_fn langhook.
1151         * langhooks-def.h (lhd_tree_inlining_cannot_inline_tree_fn): Remove.
1152         (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN): Likewise.
1153         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
1154         cannot_inline_tree_fn langhook.
1155         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
1156         cannot_inline_tree_fn member.
1157
1158 2007-08-24  Richard Guenther  <rguenther@suse.de>
1159
1160         * expr.c (get_inner_reference): Do computation of bitoffset
1161         from offset in a way we can detect overflow reliably.
1162
1163 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
1164
1165         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define for uClibc.
1166
1167 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
1168
1169         * config/bfin/bfin.opt (mfast-fp): Add.
1170         * config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Let
1171         libbffastfp override libgcc if -mfast-fp.
1172         * config/bfin/bfin.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
1173         * doc/invoke.texi (Option Summary): Mention -mfast-fp.
1174         (Blackfin Options): Document -mfast-fp.
1175
1176 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
1177
1178         PR tree-optimization/32573
1179         PR middle-end/32946
1180         * tree-data-ref.c (initialize_data_dependence_relation): Clear
1181         DDR_SUBSCRIPTS, DDR_DIR_VECTS and DDR_DIST_VECTS at the beginning.
1182         (finalize_ddr_dependent): Clear DDR_SUBSCRIPTS after freeing it.
1183         (build_classic_dist_vector): Return false rather than true if
1184         DDR_ARE_DEPENDENT is non-NULL at the beginning.  Return false
1185         if either subscript_dependence_tester_1 or build_classic_dist_vector_1
1186         returned false.  Don't call save_dist_v before calling
1187         build_classic_dist_vector_1.
1188         (free_dependence_relation): Don't guard freeing DDR_SUBSCRIPTS
1189         with NULL DDR_ARE_DEPENDENT.  Also free DDR_DIST_VECTS and/or
1190         DDR_DIR_VECTS vectors.
1191
1192 2007-08-23  Brian Sidebotham  <brian.sidebotham@gmail.com>
1193
1194         * configure.ac (leb128): Modify sed statement to work with any
1195         binutils version string.
1196         * configure: Regenerate
1197
1198 2007-08-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1199
1200         * config/arc/arc-protos.h arc_select_cc_mode, gen_compare_reg):
1201         Wrap in RTX_CODE macro guard.
1202         * config/arm/pe.c (arm_dllexport_p, arm_dllimport_p,
1203         arm_dllexport_name_p, arm_dllimport_name_p, arm_mark_dllexport,
1204         arm_mark_dllimport, arm_pe_encode_section_info,
1205         arm_pe_unique_section): Use ISO-C function declarations.
1206         * config/c4x/c4x-c.c (c4x_parse_pragma, c4x_pr_CODE_SECTION,
1207         c4x_pr_DATA_SECTION, c4x_pr_FUNC_IS_PURE,
1208         c4x_pr_FUNC_NEVER_RETURNS, c4x_pr_INTERRUPT, c4x_pr_ignored):
1209         Likewise.
1210         * config/iq2000/iq2000.h (ASM_OUTPUT_SKIP): Fix format warning.
1211         * config/m68hc11/m68hc11.h (ASM_OUTPUT_EXTERNAL): Undef before
1212         defining.
1213         * config/mips/mips.h (ASM_DECLARE_OBJECT_NAME): Fix format
1214         warnings.
1215         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Likewise.
1216         * config/pdp11/pdp11.c (pdp11_output_function_epilogue): Likewise.
1217         (register_move_cost): Use ISO-C function declarations.
1218         * config/pdp11/pdp11.h (PRINT_OPERAND): Fix format warnings.
1219         * config/score/score-protos.h (score_declare_object): Add
1220         ATTRIBUTE_PRINTF_4.
1221         * config/score/score.h (ASM_DECLARE_OBJECT_NAME): Fix format
1222         warnings.
1223         * final.c (profile_function): Avoid empty if-bodies.
1224         
1225         
1226         * calls.c (must_pass_in_stack_var_size,
1227         must_pass_in_stack_var_size_or_pad): Constify.
1228         * config/alpha/alpha-protos.h (function_value): Likewise.
1229         * config/alpha/alpha.c (alpha_return_in_memory,
1230         alpha_pass_by_reference, function_value,
1231         unicosmk_must_pass_in_stack, TARGET_PROMOTE_FUNCTION_ARGS,
1232         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
1233         Likewise.
1234         * config/arc/arc.c (arc_return_in_memory, arc_pass_by_reference,
1235         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
1236         TARGET_PROMOTE_PROTOTYPES): Likewise.
1237         * config/arm/arm-protos.h (arm_return_in_memory,
1238         arm_pad_arg_upward, arm_function_value): Likewise.
1239         * config/arm/arm.c (arm_pass_by_reference,
1240         arm_promote_prototypes, arm_return_in_msb, arm_must_pass_in_stack,
1241         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
1242         arm_function_value, arm_return_in_memory, arm_pad_arg_upward):
1243         Likewise.
1244         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
1245         * config/avr/avr-protos.h (avr_function_value): Likewise.
1246         * config/avr/avr.c (avr_return_in_memory,
1247         gas_output_limited_string, gas_output_ascii, avr_function_value,
1248         avr_return_in_memory): Likewise.
1249         * config/bfin/bfin-protos.h (bfin_return_in_memory): Likewise.
1250         * config/bfin/bfin.c (bfin_pass_by_reference,
1251         bfin_return_in_memory, TARGET_PROMOTE_PROTOTYPES,
1252         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN):
1253         Likewise.
1254         * config/cris/cris.c (cris_pass_by_reference,
1255         TARGET_PROMOTE_FUNCTION_ARGS): Likewise.
1256         * config/crx/crx.c (crx_return_in_memory): Likewise.
1257         * config/darwin.c (function_base, machopic_function_base_name):
1258         Likewise.
1259         * config/fr30/fr30.c (fr30_must_pass_in_stack,
1260         TARGET_PROMOTE_PROTOTYPES): Likewise.
1261         * config/frv/frv.c (frv_must_pass_in_stack): Likewise.
1262         * config/h8300/h8300.c (h8300_return_in_memory): Likewise.
1263         * config/i386/i386-protos.h (ix86_return_in_memory,
1264         ix86_sol10_return_in_memory): Likewise.
1265         * config/i386/i386.c (ix86_function_value,
1266         ix86_function_sseregparm, ix86_must_pass_in_stack,
1267         type_natural_mode, classify_argument, examine_argument,
1268         construct_container, ix86_pass_by_reference, function_value_32,
1269         function_value_64, ix86_function_value_1, return_in_memory_32,
1270         return_in_memory_64, return_in_memory_ms_64,
1271         ix86_return_in_memory, ix86_sol10_return_in_memory,
1272         TARGET_PROMOTE_PROTOTYPES): Likewise.
1273         * config/ia64/ia64-protos.h (ia64_function_value,
1274         ia64_hpux_function_arg_padding): Likewise.
1275         * config/ia64/ia64.c (hfa_element_mode, ia64_return_in_memory,
1276         ia64_function_value, bundle_state_hash, bundle_state_eq_p,
1277         ia64_hpux_function_arg_padding): Likewise.
1278         * config/iq2000/iq2000-protos.h (function_arg,
1279         iq2000_function_value): Likewise.
1280         * config/iq2000/iq2000.c (iq2000_return_in_memory,
1281         iq2000_pass_by_reference, TARGET_PROMOTE_FUNCTION_ARGS,
1282         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
1283         function_arg, iq2000_function_value): Likewise.
1284         * config/m32c/m32c-protos.h (m32c_function_value,
1285         m32c_promote_function_return): Likewise.
1286         * config/m32c/m32c.c (m32c_pass_by_reference,
1287         m32c_promote_prototypes, m32c_promote_function_return,
1288         m32c_function_value): Likewise.
1289         * config/m32r/m32r.c (m32r_return_in_memory,
1290         m32r_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
1291         m32r_in_small_data_p): Likewise.
1292         * config/m68hc11/m68hc11-protos.h (m68hc11_function_arg_padding):
1293         Likewise.
1294         * config/m68hc11/m68hc11.c (m68hc11_return_in_memory,
1295         m68hc11_function_arg_padding): Likewise.
1296         * config/m68k/m68k-protos.h (m68k_function_value): Likewise.
1297         * config/m68k/m68k.c (TARGET_PROMOTE_PROTOTYPES,
1298         m68k_function_value): Likewise.
1299         * config/mcore/mcore-protos.h (mcore_num_arg_regs,
1300         mcore_function_value): Likewise.
1301         * config/mcore/mcore.c (handle_structs_in_regs,
1302         mcore_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
1303         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
1304         mcore_num_arg_regs, mcore_function_value): Likewise.
1305         * config/mips/mips-protos.h (mips_pad_arg_upward,
1306         mips_function_value): Likewise.
1307         * config/mips/mips.c (mips_fpr_return_fields, mips_return_in_msb,
1308         mips_return_in_memory, mips_pass_by_reference, mips_callee_copies,
1309         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
1310         TARGET_PROMOTE_PROTOTYPES, mips_pad_arg_upward,
1311         mips_function_value): Likewise.
1312         * config/mmix/mmix-protos.h (mmix_function_outgoing_value):
1313         Likewise.
1314         * config/mmix/mmix.c (mmix_pass_by_reference,
1315         TARGET_PROMOTE_FUNCTION_ARGS, mmix_function_outgoing_value,
1316         mmix_encode_section_info): Likewise.
1317         * config/mn10300/mn10300-protos.h (mn10300_function_value):
1318         Likewise.
1319         * config/mn10300/mn10300.c (mn10300_return_in_memory,
1320         mn10300_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
1321         mn10300_function_value): Likewise.
1322         * config/mt/mt-protos.h (mt_function_value): Likewise.
1323         * config/mt/mt.c (mt_pass_by_reference, mt_function_value,
1324         mt_pass_in_stack, TARGET_PROMOTE_PROTOTYPES): Likewise.
1325         * config/pa/pa-protos.h (function_arg_padding, function_value,
1326         pa_return_in_memory): Likewise.
1327         * config/pa/pa.c (pa_pass_by_reference,
1328         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
1329         function_arg_padding, function_value, pa_return_in_memory):
1330         Likewise.
1331         * config/pdp11/pdp11.c (pdp11_return_in_memory): Likewise.
1332         * config/rs6000/rs6000-protos.h (rs6000_function_value,
1333         function_arg_padding): Likewise.
1334         * config/rs6000/rs6000.c (rs6000_return_in_memory,
1335         rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
1336         rs6000_pass_by_reference, rs6000_must_pass_in_stack,
1337         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
1338         function_arg_padding, altivec_expand_dst_builtin,
1339         altivec_expand_builtin, rs6000_expand_builtin, spe_init_builtins,
1340         altivec_init_builtins, rs6000_common_init_builtins,
1341         rs6000_function_value): Likewise.
1342         * s390/s390-protos.h (s390_function_value): Likewise.
1343         * config/s390/s390.c (s390_function_arg_size,
1344         s390_pass_by_reference, s390_return_in_memory,
1345         s390_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
1346         TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
1347         * config/score/score-protos.h (score_function_value): Likewise.
1348         * config/score/score.c (score_arg_partial_bytes,
1349         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
1350         TARGET_PROMOTE_PROTOTYPES, score_return_in_memory,
1351         score_pass_by_reference, score_add_offset, score_function_value):
1352         Likewise.
1353         * config/sh/sh-protos.h (sh_attr_renesas_p,
1354         sh_promote_prototypes): Likewise.
1355         * config/sh/sh.c (sh_return_in_memory, sh_pass_by_reference,
1356         sh_callee_copies, sh_promote_prototypes, shcompact_byref,
1357         sh_attr_renesas_p): Likewise.
1358         * config/sparc/sparc-protos.h (function_value,
1359         function_arg_padding): Likewise.
1360         * config/sparc/sparc.c (sparc_promote_prototypes,
1361         sparc_return_in_memory, sparc_pass_by_reference,
1362         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
1363         function_arg_record_value_2, function_arg_record_value_1,
1364         function_arg_record_value, function_arg_record_value,
1365         function_arg_padding, function_value): Likewise.
1366         * config/spu/spu-protos.h (spu_function_value): Likewise.
1367         * config/spu/spu.c (spu_pass_by_reference, spu_return_in_memory,
1368         spu_function_value): Likewise.
1369         * config/stormy16/stormy16-protos.h (xstormy16_function_value):
1370         Likewise.
1371         * config/stormy16/stormy16.c (xstormy16_return_in_memory,
1372         xstormy16_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
1373         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
1374         Likewise.
1375         * config/v850/v850.c (v850_return_in_memory,
1376         v850_pass_by_reference, TARGET_PROMOTE_PROTOTYPES): Likewise.
1377         * config/vax/vax.c (TARGET_PROMOTE_PROTOTYPES): Likewise.
1378         * config/xtensa/xtensa.c (xtensa_return_in_msb,
1379         xtensa_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
1380         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
1381         Likewise.
1382         * explow.c (promote_mode, hard_function_value): Likewise.
1383         * expr.h (hard_function_value, promote_mode): Likewise.
1384         * function.c (aggregate_value_p): Likewise.
1385         * hooks.c (hook_bool_const_tree_true): New.
1386         * hooks.h (hook_bool_const_tree_true): New.
1387         * sdbout.c (SET_KNOWN_TYPE_TAG, plain_type_1): Constify.
1388         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
1389         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
1390         TARGET_RETURN_IN_MSB): Likewise.
1391         * target.h (promote_function_args, promote_function_return,
1392         promote_prototypes, return_in_memory, return_in_msb,
1393         pass_by_reference, must_pass_in_stack, callee_copies,
1394         function_value): Likewise.
1395         * targhooks.c (default_return_in_memory,
1396         hook_pass_by_reference_must_pass_in_stack,
1397         hook_callee_copies_named,
1398         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
1399         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
1400         default_function_value): Likewise. 
1401         * targhooks.h (default_return_in_memory,
1402         hook_pass_by_reference_must_pass_in_stack,
1403         hook_callee_copies_named,
1404         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
1405         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
1406         default_function_value): Likewise.
1407         * tree-ssa-structalias.c (const_equiv_class_label_t): New.
1408         (equiv_class_label_hash, equiv_class_label_eq): Constify.
1409         * tree-vectorizer.c (bb_in_loop_p): Likewise.
1410         * tree.c (needs_to_live_in_memory): Likewise.
1411         * tree.h (struct tree_type, needs_to_live_in_memory,
1412         aggregate_value_p, must_pass_in_stack_var_size,
1413         must_pass_in_stack_var_size_or_pad): Likewise.
1414         * vmsdbgout.c (write_debug_addr, write_debug_delta4,
1415         write_debug_string, ASM_OUTPUT_DEBUG_STRING, write_rtnbeg,
1416         lookup_filename): Likewise.
1417
1418 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
1419
1420         PR target/17390
1421         * config/i386/i386.c (ix86_expand_fp_compare): Expand fp comparison to
1422         fake fcomi i387 instruction for !TARGET_CMOVE.
1423         (ix86_expand_branch): Expand natural sequence with one jump for
1424         all targets, not only TARGET_CMOVE.
1425         * config/i386/i386.md (*cmpfp_0_cc): New define_insn_and_split
1426         pattern to implement fake fcomi sequence.  Split instruction after
1427         reload to correct compare sequences.
1428         (*cmpfp_xf_cc): Ditto.
1429         (*cmpfp_<mode>_cc): Ditto.
1430         (*cmpfp_u_cc): Ditto.
1431         (*cmpfp_<mode>_cc): Ditto.
1432
1433 2007-08-23  Richard Guenther  <rguenther@suse.de>
1434
1435         * tree-pretty-print.c (dump_generic_node): Annotate
1436         GIMPLE_MODIFY_STMTs with volatile ops with "{v}".
1437
1438 2007-08-23  Richard Guenther  <rguenther@suse.de>
1439
1440         * builtins.c (expand_builtin_mathfn): Wrap argument in
1441         save_expr directly instead of re-building the call.
1442         (expand_builtin_mathfn_2): Likewise.
1443         (expand_builtin_mathfn_3): Likewise.
1444         (expand_builtin_interclass_mathfn): Likewise.
1445         (expand_builtin_int_roundingfn): Set arg.
1446         (expand_builtin_int_roundingfn_2): Likewise.
1447
1448 2007-08-23  Paolo Bonzini  <bonzini@gnu.org>
1449
1450         * config/i386/sse.md (*sse_and<mode>3, *sse_ior<mode>3,
1451         *sse_nand<mode>3, *sse_xor<mode>3): New.
1452
1453 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
1454
1455         * config/i386/i386.h (PRINT_OPERAND_PUNCT_VALID_P): Add ';' code.
1456         * config/i386/i386.c (print_operand): Handle ';' code.  Output
1457         semicolon for TARGET_MACHO.
1458         * config/i386/sync.md (*sync_compare_and_swap<mode>): Use '%;' to
1459         emit semicolon after 'lock' prefix.
1460         (sync_double_compare_and_swap<mode>): Ditto.
1461         (*sync_double_compare_and_swapdi_pic): Ditto.
1462         (*sync_compare_and_swap_cc<mode>): Ditto.
1463         (sync_double_compare_and_swap_cc<mode>): Ditto.
1464         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
1465         (sync_old_add<mode>): Ditto.
1466         (sync_add<mode>): Ditto.
1467         (sync_sub<mode>): Ditto.
1468         (sync_ior<mode>): Ditto.
1469         (sync_and<mode>): Ditto.
1470         (sync_xor<mode>): Ditto.
1471
1472 2007-08-22  Chao-ying Fu  <fu@mips.com>
1473
1474         * rtl.c (rtx_code_size): Check CONST_FIXED to calcualte correct sizes
1475         in DEF_RTL_EXPR.
1476         (copy_rtx): Handle CONST_FIXED.
1477         (rtx_equal_p): Likewise.
1478         * rtl.h (fixed_value.h): New include.
1479         (rtx_def): Add a new field of fixed_value to u.
1480         (XCNMPFV): Define for accessing fixed_value.
1481         (CONST_FIXED_VALUE, CONST_FIXED_VALUE_HIGH, CONST_FIXED_VALUE_LOW):
1482         Define.
1483         * rtl.def (CONST_FIXED): New constant.
1484         (SS_MULT, US_MULT, SS_DIV, US_DIV, FRACT_CONVERT,
1485         UNSIGNED_FRACT_CONVERT, SAT_FRACT, UNSIGNED_SAT_FRACT, US_NEG,
1486         US_ASHIFT): New codes.
1487         * doc/rtl.texi (Expressions): Document const_fixed, us_neg, ss_mult,
1488         us_mult, ss_div, us_div, us_ashift, fract_convert, sat_fract,
1489         unsigned_fract_convert, unsigned_sat_fract): Document them.
1490         * varasm.c (assemble_integer): Extend to support fixed-point constants
1491         by using different machine classes.
1492         (decode_addr_const): Handle FIXED_CST.
1493         (const_hash_1): Likewise.
1494         (compare_constant): Likewise.
1495         (copy_constant): Likewise.
1496         (const_rtx_hash_1): Handle CONST_FIXED.
1497         (output_constant_pool_2): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
1498         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
1499         MODE_VECTOR_UACCUM.
1500         (initializer_constant_valid_p): Handle FIXED_CST.
1501         (output_constant): Support FIXED_POINT_TYPE.
1502         * gengenrtl.c (excluded_rtx): Check CONST_FIXED to exclude.
1503         * cse.c (hash_rtx): Support CONST_FIXED.
1504         (exp_equiv_p): Likewise.
1505         (cannon_reg): Likewise.
1506         (fold_rtx): Likewise.
1507         (equiv_constant): Likewise.
1508         (cse_process_notes_1): Likewise.
1509         (count_reg_usage): Likewise.
1510         * cselib.c (entry_and_rtx_equal_p): Check CONST_FIXED.
1511         (rtx_equal_for_cselib_p): Handle CONST_FIXED.
1512         (wrap_constant): Check CONST_FIXED.
1513         (cselib_hash_rtx): Support CONST_FIXED.
1514         (cselib_subst_to_values): Likewise.
1515         * df-scan.c (df_uses_record): Likewise.
1516         * gcse.c (want_to_gcse_p): Likewise.
1517         (oprs_unchanged_p): Likewise.
1518         (oprs_not_set_p): Likewise.
1519         (compute_transp): Likewise.
1520         (extract_mentioned_regs_helper): Likewise.
1521         * genemit.c (gen_exp): Likewise.
1522         * local-alloc.c (equiv_init_varies_p): Likewise.
1523         (contains_replace_regs): Likewise.
1524         (memref_referenced_p): Likewise.
1525         * loop-invariant.c (check_maybe_invariant): Likewise.
1526         (hash_invariant_expr_1): Likewise.
1527         (invariant_expr_equal_p): Likewise.
1528         * postreload-gcse.c (oprs_unchanged_p): Likewise.
1529         * regclass.c (reg_scan_mark_refs): Likewise.
1530         * regrename.c (scan_rtx): Likewise.
1531         * resource.c (mark_referenced_resources): Likewise.
1532         (mark_set_resources): Likewise.
1533         * rtlanal.c (rtx_unstable_p): Likewise.
1534         (rtx_varies_p): Likewise.
1535         (count_occurrences): Likewise.
1536         (reg_mentioned_p): Likewise.
1537         (modified_between_p): Likewise.
1538         (modified_in_p): Likewise.
1539         (volatile_insn_p): Likewise.
1540         (volatile_refs_p): Likewise.
1541         (side_effects_p): Likewise.
1542         (may_trap_p_1): Likewise.
1543         (inequality_comparisons_p): Likewise.
1544         (computed_jump_p_1): Likewise.
1545         (commutative_operand_precedence): Likewise.
1546         * sched-deps.c (sched_analyze_2): Likewise.
1547         * sched-vis.c (print_value): Likewise.
1548         * reload.c (operands_match_p): Likewise.
1549         (subst_reg_equivs): Likewise.
1550         * reload1.c (eliminate_regs_1): Likewise.
1551         (elimination_effects): Likewise.
1552         (scan_paradoxical_subregs): Likewise.
1553         * alias.c (rtx_equal_for_memref_p): Likewise.
1554         * Makefile.in (RTL_BASE_H): Add fixed-value.h.
1555         * emit-rtl.c (const_fixed_htab): New hash table.
1556         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed):
1557         Declare.
1558         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed,
1559         const_fixed_from_fixed_value): New functions.
1560         (verify_rtx_sharing): Handle CONST_FIXED.
1561         (copy_rtx_if_shared_1): Likewise.
1562         (reset_used_flags): Likewise.
1563         (set_used_flags): Likewise.
1564         (copy_insn_1): Likewise.
1565         (init_emit_once): Create const_fixed_htab.
1566         Store fixed-point scalar and vector zero and one to const_tiny_rtx.
1567
1568 2007-08-22  Zdenek Dvorak  <ook@ucw.cz>
1569
1570         PR tree-optimization/32949
1571         * tree-ssa-loop-niter.c (scev_probably_wraps_p): Test nowrap_type_p
1572         before failing for ivs with non-constant step.
1573
1574 2007-08-22  Hans-Peter Nilsson  <hp@axis.com>
1575
1576         * doc/md.texi (Iterators): Renamed from Macros.  All contents
1577         changed to reflect rename of respectively define_code_macro and
1578         define_mode_macro to define_code_iterator and define_mode_iterator.
1579         (Mode Iterators, Code Iterators): Similar.
1580         * read-rtl.c (struct iterator_group, struct iterator_traverse_data)
1581         (uses_mode_iterator_p, apply_mode_iterator, uses_code_iterator_p)
1582         (apply_iterator_to_string, uses_iterator_p, apply_iterator_traverse)
1583         (initialize_iterators, find_iterator, check_code_iterator)
1584         (map_attr_string, apply_mode_maps, apply_iterator_to_rtx, add_mapping)
1585         (read_mapping, read_rtx_1): Similar.
1586         * config/alpha/sync.md, config/alpha/alpha.md, config/frv/frv.md,
1587         config/s390/s390.md, config/m32c/blkmov.md, config/m32c/m32c.md,
1588         config/spu/spu.md, config/sparc/sparc.md, config/sparc/sync.md,
1589         config/i386/i386.md, config/i386/mmx.md, config/i386/sse.md,
1590         config/i386/sync.md, config/crx/crx.md, config/xtensa/xtensa.md,
1591         config/cris/cris.c, config/cris/cris.md, config/ia64/sync.md,
1592         config/ia64/div.md, config/ia64/vect.md, config/ia64/ia64.md,
1593         config/m68k/m68k.md, config/rs6000/spe.md, config/rs6000/altivec.md,
1594         config/rs6000/sync.md, config/rs6000/rs6000.md,
1595         config/arm/vec-common.md, config/arm/neon.md, config/arm/iwmmxt.md,
1596         config/arm/arm.md, config/mips/mips-dsp.md, config/mips/mips.md,
1597         config/vax/vax.md, config/bfin/bfin.md: Similar.
1598
1599 2007-08-22  David Daney  <ddaney@avtrex.com>
1600
1601         * doc/install.texi (Testing): Mention testing on a simulator.
1602
1603 2007-08-22  Janis Johnson  <janis187@us.ibm.com>
1604
1605         * config/dfp-bit.c (DFP_TO_DFP): Check for overflow.
1606
1607         * doc/libgcc.texi (Decimal float library routines): Fix formatting
1608         and rearrange floating point conversion functions into different
1609         categories.
1610
1611 2007-08-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
1612
1613         * target.h (struct gcc_target.sched: dfa_pre_advance_cycle,
1614         dfa_post_advance_cycle): New scheduler hooks.
1615         * target-def.h (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
1616         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): New macros to initialize
1617         new hooks.
1618         (TARGET_SCHED): Use them.
1619         * doc/tm.texi (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
1620         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Document new hooks.
1621         * haifa-sched.c (advance_one_cycle): Invoke new hooks.
1622
1623         * genautomata.c (insn_has_dfa_reservation_p): New DFA interface
1624         function to facilitate debugging.
1625         (INSN_HAS_DFA_RESERVATION_P_FUNC_NAME): New macro.
1626         (output_insn_has_dfa_reservation_p): New static function to output
1627         insn_has_dfa_reservation_p ().
1628         (write_automata): Use it.
1629         * genattr.c (main): Output declaration for
1630         insn_has_dfa_reservation_p ().
1631
1632 2007-08-22  Christian Bruel  <christian.bruel@st.com>   
1633             Richard Guenther <rguenther@suse.de>
1634         
1635         * fold-const.c (fold_binary): Optimize A-A if -ffinite-math-only.
1636         * simplify_rtx (simplify_binary_operation_1): Likewise.
1637                 
1638 2007-08-22  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1639
1640         PR rtl-optimization/32557
1641         * df-problems.c (df_note_bb_compute): Use mws->start_regno instead
1642         of REGNO (mws->mw_reg).
1643
1644 2007-08-22  Richard Guenther  <rguenther@suse.de>
1645
1646         PR middle-end/33007
1647         * builtins.c (expand_builtin_int_roundingfn): Replace call
1648         argument wrapped with SAVE_EXPR directly.
1649         (expand_builtin_int_roundingfn_2): Likewise.
1650
1651 2007-08-22  Richard Guenther  <rguenther@suse.de>
1652
1653         * tree-inline.c (inlinable_function_p): Restore disregarding
1654         inline limits for GNU extern inline functions.
1655
1656 2007-08-22  Richard Guenther  <rguenther@suse.de>
1657
1658         PR middle-end/32563
1659         * tree.c (host_integerp): Treat sizetype as signed as it is
1660         sign-extended.
1661
1662 2007-08-21  Ian Lance Taylor  <iant@google.com>
1663
1664         PR tree-optimization/33134
1665         * tree-vrp.c (adjust_range_with_scev): Call
1666         set_value_range_to_value.
1667
1668 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
1669
1670         * value-prof.h (gimple_remove_histogram_value): Remove duplicate
1671         prototype.
1672         
1673 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
1674
1675         * tree-flow-inline.h (next_imm_use_stmt): Remove unecessary
1676         whitespace.
1677
1678 2007-08-21  Nathan Froyd  <froydnj@codesourcery.com>
1679
1680         * config/rs6000/rs6000.c (expand_block_clear): Add TARGET_SPE
1681         cases to set eight bytes at a time.
1682         (expand_block_move): Likewise.
1683         
1684 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
1685
1686         PR debug/32610
1687         * dwarf2out.c (gen_decl_die): Don't call
1688         gen_tagged_type_instantiation_die if decl doesn't have tagged type.
1689
1690 2007-08-21  Paul Brook  <paul@codesourcery.com>
1691             Nathan Sidwell  <nathan@codesourcery.com>
1692             Mark Mitchell  <mark@codesourcery.com>
1693             Joseph Myers  <joseph@codesourcery.com>
1694
1695         * configure.ac: Add --with-pkgversion and --with-bugurl.
1696         * configure: Regenerate.
1697         * doc/install.texi: Document them.
1698         * version.c (version_string): Remove VERSUFFIX.
1699         (VERSUFFIX): Remove.
1700         (pkgversion_string): New.
1701         (bug_report_url): Do not hard-code initializer.
1702         * version.h (pkgversion_string): Declare.
1703         * Makefile.in (PKGVERSION_s, BUGURL_s, PKGVERSION, BUGURL_TEXI):
1704         Define.
1705         (version.o): Define PKGVERSION and BUGURL.
1706         (gcc-vers.texi): Define VERSION_PACKAGE and BUGURL.
1707         (%.pod): Define BUGURL.
1708         * gcc.c (process_command, main): Use pkgversion_string.
1709         * toplev.c (compile_file, print_version): Likewise.
1710         * protoize.c (main): Likewise.
1711         * gcov.c (print_version): Likewise.  Update copyright date.
1712         * gcov-dump.c (print_version): Likewise.  Update copyright date.
1713         * mips-tdump.c (main): Likewise.  Update copyright date.
1714         * mips-tfile.c (main): Likewise.  Update copyright date.
1715         * doc/include/gcc-common.texi: Include VERSION_PACKAGE as subtitle.
1716         * doc/bugreport.texi: Use BUGURL for bug-reporting instructions;
1717         shorten description.
1718         * doc/gcc.texi: Include VERSION_PACKAGE in version description.
1719         * doc/gccint.texi: Likewise.
1720         * doc/invoke.texi: Use BUGURL for bug-reporting instructions.
1721         Update copyright date.
1722
1723 2007-08-21  Uros Bizjak  <ubizjak@gmail.com>
1724
1725         * config/i386/i386.c (ix86_expand_clear): Use FLAGS_REG.
1726         (ix86_expand_strlensi_unroll_1): Ditto.
1727         (ix86_expand_branch): Use FLAGS_REG and FPSR_REG.
1728         (ix86_expand_carry_flag_compare): Update comment.
1729
1730 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
1731
1732         PR middle-end/32912
1733         * fold-const.c (fold_unary): Optimize BIT_NOT_EXPR of VECTOR_CST.
1734         (fold_binary): Handle vectors in X | ~X and X ^ ~X optimizations.
1735
1736 2007-08-21  Richard Guenther  <rguenther@suse.de>
1737
1738         * fold-const.c (fold_binary): Revert removing of index +p PTR folding.
1739
1740 2007-08-21  Richard Guenther  <rguenther@suse.de>
1741
1742         PR middle-end/33122
1743         * fold-const.c (fold_binary): Remove index +p PTR folding.
1744         Fix types of POINTER_PLUS_EXPR generated by folding of
1745         (PTR +p B) +p A.
1746
1747 2007-08-20  Chao-ying Fu  <fu@mips.com>
1748
1749         * c-common.h (enum rid): Add new enumeration values of RID_SAT,
1750         RID_FRACT, and RID_ACCUM.  RID_SAT needs to be inserted before
1751         RID_ONEWAY, so that it can be checked in declspecs_add_type.
1752         (c_common_fixed_point_type_for_size): Declare.
1753         * c-parser.c (reswords): Add _Fract, _Accum, and _Sat.
1754         (c_token_starts_typename): Handle RID_FRACT, RID_ACCUM, and RID_SAT.
1755         (c_token_starts_declspecs): Likewise.
1756         (c_parser_declspecs): Likewise.
1757         (c_parser_attributes): Likewise.
1758         * c-tree.h (enum c_typespec_keyword): Add cts_fract and cts_accum.
1759         (c_declspecs): Add saturating_p.
1760         * c-decl.c (build_null_declspecs): Initialize saturating_p.
1761         (declspecs_add_type): Avoid using complex with _Fract, _Accum, or
1762         _Sat.  Handle RID_SAT.
1763         Avoid using void, bool, char, int, float, double, _Decimal32,
1764         _Decimal64, _Decimal128, and complex with _Sat.
1765         Handle RID_FRACT and RID_ACCUM.
1766         Make sure _Sat is used with _Fract or _Accum.
1767         (finish_declspecs): Handle cts_fract and cts_accum.
1768         * c-common.c (fixed-value.h): New include.
1769         (constant_expression_warning): Handle FIXED_CST.
1770         (overflow_warning): Likewise.
1771         (warnings_for_convert_and_check): Likewise.
1772         (c_common_fixed_point_type_for_size): New.
1773         (c_common_type_for_mode): Handle fixed-point modes to
1774         return various saturating/non-saturating, signed/unsigned types.
1775         (c_common_signed_or_unsigned_type): Support fixed-point types.
1776         (shorten_compare): Check fixed-point zero.
1777         Handle FIXED_POINT_TYPE.
1778         (c_common_truthvalue_conversion): Handle FIXED_CST.
1779         Handle FIXED_POINT_TYPE.
1780         (c_common_nodes_and_builtins): Record builtin types for fixed-point
1781         types.
1782         (handle_mode_attribute): Handle fixed-point modes.  Need to check
1783         if the signness of base type and fixed-point modes are consistent.
1784         (handle_vector_size_attribute): Handle fixed-point modes.
1785         (same_scalar_type_ignoring_signedness): Handle FIXED_POINT_TYPE.
1786         (warn_for_div_by_zero): Check fixed-point zero.
1787         * c-typeck.c (c_common_type): Check FIXED_POINT_TYPE.  Build
1788         a common fixed-point type based on fbit, ibit, sign, and saturation.
1789         (build_unary_op): Allow FIXED_POINT_TYPE for CONVERT_EXPR,
1790         NEGATE_EXPR, TRUTH_NOT_EXPR, PREINCREMENT_EXPR, POSTINCREMENT_EXPR,
1791         PREDECREMENT_EXPR, and POSTDECREMENT_EXPR.
1792         (convert_for_assignment): Support FIXED_POINT_TYPE.
1793         (digest_init): Handle FIXED_POINT_TYPE.
1794         (build_binary_op): Support FIXED_POINT_TYPE in *_DIV_EXPR,
1795         TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR, TRUTH_AND_EXPR, TRUTH_OR_EXPR,
1796         TRUTH_XOR_EXPR, RSHIFT_EXPR, LSHIFT_EXPR, EQ_EXPR, NE_EXPR, LE_EXPR,
1797         GE_EXPR, LT_EXPR, GT_EXPR.
1798         * target-def.h (TARGET_FIXED_POINT_SUPPORTED_P): New.
1799         (TARGET_INITIALIZER): Add TARGET_FIXED_POINT_SUPPORTED_P.
1800         * target.h (gcc_target): Add fixed_point_supported_p.
1801         * targhooks.c (default_scalar_mode_supported_p): Handle MODE_FRACT,
1802         MODE_UFRACT, MODE_ACCUM, and MODE_UACCUM.
1803         (default_fixed_point_supported_p): Define.
1804         * targhooks.h (default_fixed_point_supported_p): Declare.
1805         * doc/tm.texi (TARGET_FIXED_POINT_SUPPORTED_P): Add.
1806         * doc/install.texi (Configuration): Add --enable-fixed-point.
1807         * configure.ac (--enable-fixed-point): New to enable fixed-point
1808         arithmetic extension to C.  For mips targets, we enable it by default.
1809         * configure, config.in: Regenerate.
1810
1811 2007-08-20  Pawel Sikora  <pluto@pld-linux.org>
1812
1813         * doc/invoke.texi (-Wnon-virtual-dtor): Update documentation.
1814
1815 2007-08-20  David Edelsohn  <edelsohn@gnu.org>
1816
1817         * dwarf2out.c (text_section_used): Move declaration outside ifdef
1818         DWARF2_DEBUGGING_INFO.
1819         (cold_text_section_used): Same.
1820         (cold_text_section): Same.
1821
1822 2007-08-20  Richard Guenther  <rguenther@suse.de>
1823
1824         * c-typeck.c (convert_for_assignment): Use the type of
1825         the member for the initialization.
1826
1827 2007-08-20  Richard Guenther  <rguenther@suse.de>
1828
1829         * c-objc-common.c (c_disregard_inline_limits): Remove.
1830         * c-objc-common.h (c_disregard_inline_limits): Likewise.
1831         * cgraphunit.c (cgraph_process_new_functions): Call
1832         disregard_inline_limits_p.
1833         (cgraph_preserve_function_body_p): Likewise.
1834         * ipa-inline.c (compute_inline_parameters): Likewise.
1835         * langhooks-def.h (lhd_tree_inlining_disregard_inline_limits):
1836         Remove.
1837         (LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS): Remove.
1838         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
1839         disregard_inline_limits langhook.
1840         * langhooks.c (lhd_tree_inlining_disregard_inline_limits):
1841         Remove.
1842         * langhooks.h (lang_hooks_for_tree_inlining): Remove
1843         disregard_inline_limits langhook.
1844         * tree-inline.c (disregard_inline_limits_p): New function.
1845         * tree-inline.h (disregard_inline_limits_p): Declare.
1846
1847 2007-08-20  Richard Guenther  <rguenther@suse.de>
1848
1849         * langhooks-def.h (lhd_tree_inlining_auto_var_in_fn_p): Remove.
1850         (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P): Likewise.
1851         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
1852         auto_var_in_fn_p langhook.
1853         * langhooks.c (lhd_tree_inlining_auto_var_in_fn_p): Rename and
1854         move ...
1855         * tree.c (auto_var_in_fn_p): ... here.
1856         (find_var_from_fn): Call auto_var_in_fn_p directly.
1857         * langhooks.h (lang_hooks_for_tree_inlining): Remove
1858         auto_var_in_fn_p langhook.
1859         * tree-inline.c (remap_decls): Call auto_var_in_fn_p directly.
1860         (copy_body_r): Likewise.
1861         (self_inlining_addr_expr): Likewise.
1862         * tree.h (auto_var_in_fn_p): Declare.
1863
1864 2007-08-20  Richard Guenther  <rguenther@suse.de>
1865
1866         * tree.c (WALK_SUBTREE): Call walk_tree_1.
1867         (walk_type_fields): Take lh parameter.
1868         (walk_tree): Rename to ...
1869         (walk_tree_1): ... this.  Do not call the walk_subtrees
1870         langhook but the now passed callback.  Pass lh on recursion.
1871         (walk_tree_without_duplicates): Rename to ...
1872         (walk_tree_without_duplicates_1): ... this.  Take lh parameter
1873         and call walk_tree_1.
1874         * tree.h (walk_tree_lh): New typedef.
1875         (walk_tree_1): Declare.
1876         (walk_tree_without_duplicates_1): Likewise.
1877         (walk_tree): New define to walk_tree_1 with NULL lh parameter.
1878         (walk_tree_without_duplicates): New define to
1879         walk_tree_without_duplicates_1 with NULL lh parameter.
1880         * langhooks.c (lhd_tree_inlining_walk_subtrees): Remove.
1881         * langhooks.h (lang_hooks_for_tree_inlining): Remove walk_subtrees
1882         langhook.
1883         * langhooks-def.h (lhd_tree_inlining_walk_subtrees): Remove.
1884         (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Likewise.
1885         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove walk_subtrees
1886         initializer.
1887
1888 2007-08-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1889
1890         PR middle-end/30564
1891         * tree-inline.c (optimize_inline_calls): Move the cgraph checking
1892         code in front of the compacting of basic blocks.
1893         Move the folding of statements inbetween the cgraph checking
1894         and compacting of basic blocks.
1895
1896 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1897            Serge Belyshev  <belyshev@depni.sinp.msu.ru>
1898
1899         PR target/32522
1900         * config/alpha/alpha.c (va_list_skip_additions): Check for
1901         POINTER_PLUS_EXPR in addition to PLUS_EXPR.
1902         (alpha_stdarg_optimize_hook): Look for POINTER_PLUS_EXPR instead of
1903         PLUS_EXPR when checking ap.__base.
1904         (alpha_va_start): Create POINTER_PLUS_EXPR instead of PLUS_EXPR
1905         when doing addition on pointer types.  Use size_int instead of
1906         build_int_cst.
1907         (alpha_gimplify_va_arg_1): Likewise, but use sizetype instead of
1908         ptr_type in the second operand.
1909
1910 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
1911
1912         PR target/33115
1913         * config/i386/darwin.h (CC1_SPEC): Add %(cc1_cpu) in front.
1914
1915 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1916
1917         PR middle-end/32940
1918         * cfgexpand.c  (expand_one_register_var): Mark pointer
1919         DECL_ARTIFICIAL as REG_POINTER also.
1920         * stmt.c (expand_decl): Likewise.
1921
1922 2007-08-19  Daniel Berlin  <dberlin@dberlin.org>
1923
1924         Fix PR 32772
1925         Fix PR 32716
1926         Fix PR 32328
1927         Fix PR 32303
1928
1929         * tree-flow.h (struct stmt_ann_d): Remove makes_clobbering_call.
1930         * tree-ssa-alias.c (init_transitive_clobber_worklist): Add
1931         on_worklist argument and avoid adding things to worklist multiple
1932         times.
1933         (add_to_worklist): Ditto.
1934         (mark_aliases_call_clobbered): Mark entire structure clobbered if
1935         single SFT is clobbered.
1936         (set_initial_properties): Ditto.
1937         (compute_call_clobbered): Update for changes to function
1938         arguments.
1939         (create_overlap_variables_for): Always create SFT for offset 0.
1940         (create_structure_vars): Handle PHI's, since we are in SSA form at
1941         this point.
1942         * tree-ssa-loop-ivopts.c (get_ref_tag): Don't return subvars.
1943         * tree-ssa-operands.c (access_can_touch_variable): Don't handle
1944         TARGET_MEM_REF.
1945         (add_vars_for_offset): Figure out aliases from access + points-to.
1946         (add_virtual_operand): Use add_vars-for_offset.
1947         (get_tmr_operands): Update for NMT changes, rewrite to be correct.
1948         (add_call_clobber_ops): Remove makes_clobbering_call set.
1949         (get_expr_operands): Always pass through the INDIRECT_REF
1950         reference.
1951         * tree-ssa-structalias.c (struct constraint_graph): Remove
1952         variables member.
1953         Add pe, pe_rep, pointer_label, loc_label, pointed_by, points_to,
1954         address_taken, pt_used, number_incoming.
1955         (FIRST_ADDR_NODE): Removed.
1956         (merge_graph_nodes): Remove broken code for the moment.
1957         (init_graph): New function.
1958         (build_pred_graph): Remove code to init_graph.
1959         Add location equivalence support.
1960         (struct scc_info): Rename roots to deleted.
1961         (scc_visit): Ditto.
1962         (init_scc_info): Ditto
1963         (init_topo_info): Use graph->size.
1964         (compute_topo_order): Ditto.
1965         (do_da_constraint): Removed.
1966         (do_sd_constraint): Remove calls to find().
1967         set_union_with_increment should always get 0 as last arg here.
1968         (do_complex_constraint): Replace do_da_constraint with assert.
1969         Stop calling find.
1970         (struct equiv_class_label): New.
1971         (pointer_equiv_class_table): Ditto.
1972         (location_equiv_class_table): Ditto.
1973         (equiv_class_label_hash): Ditto.
1974         (equiv_class_label_eq): Ditto
1975         (equiv_class_lookup): Ditto.
1976         (equiv_class_ladd): Ditto.
1977         (pointer_equiv_class): Ditto.
1978         (location_equiv_class): Ditto.
1979         (condense_visit): Rename and rewrite from label_visit to do only
1980         SCC related stuff for HU.
1981         (label_visit): Do HU work for HU.
1982         (perform_var_substitution): Update to do HU and location
1983         equivalence.
1984         (free_var_substitution_info): Update to free HU and location
1985         equivalence structures.  */
1986         (find_equivalent_node): Update for pointer but not location
1987         equivalence.
1988         (unite_pointer_equivalences): New function.
1989         (move_complex_constraints): Rewrite to only do moving.
1990         (rewrite_constraints): Split out of move_complex_constraints.
1991         (solve_graph): Use graph->size.
1992         (process_constraint_1): Add from_call argument, use it.
1993         Split *a = &b into two constraints.
1994         (process_constraint): Use new process_constraint_1.
1995         (get_constraint_for_component_ref): Handle bitmaxsize == -1 case.
1996         (get_constraint_for): Handle non-pointer integers properly.
1997         Remove code that used to handle structures.
1998         (handle_ptr_arith): Fix a few bugs in pointer arithmetic handling
1999         with unknown addends.
2000         (handle_rhs_call): New function.
2001         (find_func_aliases): Use handle_rhs_call.
2002         (set_uids_in_ptset): Add an assert.
2003         (set_used_smts): Fix bug in not considering unified vars.
2004         (compute_tbaa_pruning): Stop initing useless iteration_obstack.
2005         (compute_points_to_sets): Update for other function changes.
2006         (delete_points_to_sets): Ditto.
2007         (ipa_pta_execute): Ditto.
2008         (pass_ipa_pta): We need to update SSA after ipa_pta.
2009         
2010 2007-08-19  Jan Hubicka  <jh@suse.cz>
2011
2012         * i386.md: Replace "rim" and "mri" constraints by "g".
2013
2014 2007-08-19  Joseph Myers  <joseph@codesourcery.com>
2015
2016         * dwarf2out.c (text_section_used, cold_text_section_used,
2017         cold_text_section, dwarf2out_note_section_used): New.
2018         (dwarf2out_init): Initialize cold_text_section.
2019         (dwarf2out_switch_text_section, dwarf2out_begin_function): Call
2020         dwarf2out_note_section_used.
2021         (size_of_aranges): Only count entry for text section if it was
2022         used.  Count entry for cold text section if it was used.
2023         (output_aranges): Only output entries for text section and cold
2024         text section if they were used.
2025
2026 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
2027
2028         * tree-pretty-print.c (debug_generic_expr): Add a comment about
2029         the function.
2030         (debug_generic_stmt): Likewise.
2031         (debug_tree_chain): Likewise.
2032
2033 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
2034
2035         * tree-data-refs.c (split_constant_offset): Expose.
2036         * tree-data-refs.h (split_constant_offset): Add declaration.
2037
2038         * tree-vectorizer.h (dr_alignment_support): Renamed
2039         dr_unaligned_software_pipeline to dr_explicit_realign_optimized.
2040         Added a new value dr_explicit_realign.
2041         (_stmt_vec_info): Added new fields: dr_base_address, dr_init,
2042         dr_offset, dr_step, and dr_aligned_to, along with new access
2043         functions for these fields: STMT_VINFO_DR_BASE_ADDRESS,
2044         STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET, STMT_VINFO_DR_STEP, and
2045         STMT_VINFO_DR_ALIGNED_TO.
2046
2047         * tree-vectorizer.c (vect_supportable_dr_alignment): Add
2048         documentation.
2049         In case of outer-loop vectorization with non-fixed misalignment - use
2050         the dr_explicit_realign scheme instead of the optimized realignment
2051         scheme.
2052         (new_stmt_vec_info): Initialize new fields.
2053
2054         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Handle the
2055         'nested_in_vect_loop' case. Change verbosity level.
2056         (vect_analyze_data_ref_access): Handle the 'nested_in_vect_loop' case.
2057         Don't fail on zero step in the outer-loop for loads.
2058         (vect_analyze_data_refs): Call split_constant_offset to calculate
2059         base, offset and init relative to the outer-loop.
2060
2061         * tree-vect-transform.c (vect_create_data_ref_ptr): Replace the unused
2062         BSI function argument with a new function argument - at_loop.
2063         Simplify the condition that determines STEP. Takes additional argument
2064         INV_P. Support outer-loop vectorization (handle the
2065         nested_in_vect_loop case), including zero step in the outer-loop. Call
2066         vect_create_addr_base_for_vector_ref with additional argument.
2067         (vect_create_addr_base_for_vector_ref): Takes additional argument LOOP.
2068         Updated function documentation. Handle the 'nested_in_vect_loop' case.
2069         Fixed and simplified calculation of step.
2070         (vectorizable_store): Call vect_create_data_ref_ptr with loop instead
2071         of bsi, and with additional argument. Call bump_vector_ptr with
2072         additional argument. Fix typos. Handle the 'nested_in_vect_loop' case.
2073         (vect_setup_realignment): Takes additional arguments INIT_ADDR and
2074         DR_ALIGNMENT_SUPPORT. Returns another value AT_LOOP. Handle the case
2075         when the realignment setup needs to take place inside the loop.
2076         Support the dr_explicit_realign scheme. Allow generating the optimized
2077         realignment scheme for outer-loop vectorization. Added documentation.
2078         (vectorizable_load): Support the dr_explicit_realign scheme. Handle
2079         the 'nested_in_vect_loop' case, including loads that are invariant in
2080         the outer-loop and the realignment schemes. Handle the case when the
2081         realignment setup needs to take place inside the loop. Call
2082         vect_setup_realignment with additional arguments.  Call
2083         vect_create_data_ref_ptr with additional argument and with loop instead
2084         of bsi. Fix 80-column overflow. Fix typos. Rename PHI_STMT to PHI.
2085         (vect_gen_niters_for_prolog_loop): Call
2086         vect_create_addr_base_for_vector_ref with additional arguments.
2087         (vect_create_cond_for_align_checks): Likewise.
2088         (bump_vector_ptr): Updated to support the new dr_explicit_realign
2089         scheme: takes additional argument bump; argument ptr_incr is now
2090         optional; updated documentation.
2091         (vect_init_vector): Takes additional argument (bsi). Use it, if
2092         available, to insert the vector initialization.
2093         (get_initial_def_for_induction): Pass additional argument in call to
2094         vect_init_vector.
2095         (vect_get_vec_def_for_operand): Likewise.
2096         (vect_setup_realignment): Likewise.
2097         (vectorizable_load): Likewise.
2098
2099 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
2100
2101         * tree-vectorizer.h (vect_is_simple_reduction): Takes a loop_vec_info
2102         as argument instead of struct loop.
2103         (nested_in_vect_loop_p): New function.
2104         (vect_relevant): Add enum values vect_used_in_outer_by_reduction and
2105         vect_used_in_outer.
2106         (is_loop_header_bb_p): New. Used to differentiate loop-header phis
2107         from other phis in the loop.
2108         (destroy_loop_vec_info): Add additional argument to declaration.
2109
2110         * tree-vectorizer.c (supportable_widening_operation): Also check if
2111         nested_in_vect_loop_p (don't allow changing the order in this case).
2112         (vect_is_simple_reduction): Takes a loop_vec_info as argument instead
2113         of struct loop. Call nested_in_vect_loop_p and don't require
2114         flag_unsafe_math_optimizations if it returns true.
2115         (new_stmt_vec_info): When setting def_type for phis differentiate 
2116         loop-header phis from other phis.
2117         (bb_in_loop_p): New function.
2118         (new_loop_vec_info): Inner-loop phis already have a stmt_vinfo, so
2119         just update their loop_vinfo.  Order of BB traversal now matters -
2120         call dfs_enumerate_from with bb_in_loop_p.
2121         (destroy_loop_vec_info): Takes additional argument to control whether
2122         stmt_vinfo of the loop stmts should be destroyed as well.
2123         (vect_is_simple_reduction): Allow the "non-reduction" use of a
2124         reduction stmt to be defines by a non loop-header phi.
2125         (vectorize_loops): Call destroy_loop_vec_info with additional argument.
2126
2127         * tree-vect-transform.c (vectorizable_reduction): Call
2128         nested_in_vect_loop_p. Check for multitypes in the inner-loop.
2129         (vectorizable_call): Likewise.
2130         (vectorizable_conversion): Likewise.
2131         (vectorizable_operation): Likewise.
2132         (vectorizable_type_promotion): Likewise.
2133         (vectorizable_type_demotion): Likewise.
2134         (vectorizable_store): Likewise.
2135         (vectorizable_live_operation): Likewise.
2136         (vectorizable_reduction): Likewise. Also pass loop_info to
2137         vect_is_simple_reduction instead of loop.
2138         (vect_init_vector): Call nested_in_vect_loop_p.
2139         (get_initial_def_for_reduction): Likewise.
2140         (vect_create_epilog_for_reduction): Likewise.
2141         (vect_init_vector): Check which loop to work with, in case there's an
2142         inner-loop.
2143         (get_initial_def_for_inducion): Extend to handle outer-loop
2144         vectorization. Fix indentation.
2145         (vect_get_vec_def_for_operand): Support phis in the case vect_loop_def.
2146         In the case vect_induction_def get the vector def from the induction
2147         phi node, instead of calling get_initial_def_for_inducion.
2148         (get_initial_def_for_reduction): Extend to handle outer-loop 
2149         vectorization.
2150         (vect_create_epilog_for_reduction): Extend to handle outer-loop
2151         vectorization.
2152         (vect_transform_loop): Change assert to just skip this case.  Add a
2153         dump printout.
2154         (vect_finish_stmt_generation): Add a couple asserts.
2155
2156         (vect_estimate_min_profitable_iters): Multiply
2157         cost of inner-loop stmts (in outer-loop vectorization) by estimated
2158         inner-loop bound.
2159         (vect_model_reduction_cost): Don't add reduction epilogue cost in case
2160         this is an inner-loop reduction in outer-loop vectorization.
2161
2162         * tree-vect-analyze.c (vect_analyze_scalar_cycles_1): New function.
2163         Same code as what used to be vect_analyze_scalar_cycles, only with
2164         additional argument loop, and loop_info passed to
2165         vect_is_simple_reduction instead of loop.
2166         (vect_analyze_scalar_cycles): Code factored out into
2167         vect_analyze_scalar_cycles_1. Call it for each relevant loop-nest.
2168         Updated documentation.
2169         (analyze_operations): Check for inner-loop loop-closed exit-phis during
2170         outer-loop vectorization that are live or not used in the outerloop,
2171         cause this requires special handling.
2172         (vect_enhance_data_refs_alignment): Don't consider versioning for
2173         nested-loops.
2174         (vect_analyze_data_refs): Check that there are no datarefs in the
2175         inner-loop.
2176         (vect_mark_stmts_to_be_vectorized): Also consider vect_used_in_outer
2177         and vect_used_in_outer_by_reduction cases.
2178         (process_use): Also consider the case of outer-loop stmt defining an
2179         inner-loop stmt and vice versa.
2180         (vect_analyze_loop_1): New function.
2181         (vect_analyze_loop_form): Extend, to allow a restricted form of nested
2182         loops.  Call vect_analyze_loop_1.
2183         (vect_analyze_loop): Skip (inner-)loops within outer-loops that have
2184         been vectorized.  Call destroy_loop_vec_info with additional argument.
2185
2186         * tree-vect-patterns.c (vect_recog_widen_sum_pattern): Don't allow
2187         in the inner-loop when doing outer-loop vectorization. Add
2188         documentation and printout.
2189         (vect_recog_dot_prod_pattern): Likewise. Also add check for
2190         GIMPLE_MODIFY_STMT (in case we encounter a phi in the loop).
2191
2192 2007-08-18  Andrew Pinski  <pinskia@gmail.com>
2193
2194         * tree-affine.h (print_aff): New prototype.
2195         (debug_aff): Likewise.
2196         * tree-affine.c (print_aff): New function.
2197         (debug_aff): Likewise.
2198
2199 2007-08-18  Paul Brook  <paul@codesourcery.com>
2200             Joseph Myers  <joseph@codesourcery.com>
2201
2202         * common.opt (-fdebug-prefix-map=): New option.
2203         * opts.c: Include debug.h.
2204         (common_handle_option): Handle -fdebug-prefix-map.
2205         * final.c: Include ggc.h.
2206         (struct debug_prefix_map, debug_prefix_maps, add_debug_prefix_map,
2207         remap_debug_filename): New.
2208         * Makefile.in (final.o, opts.o): Update dependencies.
2209         * debug.h (remap_debug_filename, add_debug_prefix_map): Declare.
2210         * configure.ac: Check for assembler --debug-prefix-map support.
2211         * configure, config.in: Regenerate.
2212         * gcc.c (ASM_MAP): Define conditional on HAVE_AS_DEBUG_PREFIX_MAP.
2213         (ASM_DEBUG_SPEC): Include ASM_MAP.
2214         * doc/install.texi (--with-debug-prefix-map): Document.
2215         * doc/invoke.texi (-fdebug-prefix-map): Document.
2216         * dbxout.c (dbxout_init, dbxout_start_source_file,
2217         dbxout_source_file): Call remap_debug_filename.
2218         * dwarf2out.c (add_comp_dir_attribute, maybe_emit_file,
2219         dwarf2out_start_source_file, dwarf2out_finish): Call
2220         remap_debug_filename.
2221         (file_table_relative_p): Do not check d->emitted_number.
2222         * toplev.c (output_file_directive): Call remap_debug_filename.
2223         * vmsdbgout.c (write_srccorr): Call remap_debug_filename.
2224         * xcoffout.c (xcoffout_source_file): Call remap_debug_filename.
2225
2226 2007-08-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2227
2228         * loop-invariant.c (find_invariants_to_move): Add missing macro
2229         argument.
2230
2231 2007-08-17  Tom Tromey  <tromey@redhat.com>
2232
2233         * tree.h (struct tree_label_decl): Removed old "java" fields.
2234
2235 2007-08-17  Richard Sandiford  <richard@codesourcery.com>
2236             Nigel Stephens  <nigel@mips.com>
2237
2238         * config/mips/sde.h (DRIVER_SELF_SPECS): Add commas.
2239         Treat -mno-data-in-code and -mcode-xonly as aliases for
2240         -mcode-readable=no and -mcode-readable=pcrel respectively.
2241         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Add -mcode-xonly.
2242         (MULTILIB_OPTIONS): Add -mcode-readable=no multilibs.
2243         (MULTILIB_DIRNAMES): Update accordingly.
2244
2245 2007-08-17  H.J. Lu  <hongjiu.lu@intel.com>
2246
2247         * Makefile.in (version.o): Depend on $(REVISION) only if
2248         REVISION_s is defined.
2249
2250 2007-08-17  Sa Liu  <saliu@de.ibm.com>
2251             Ulrich Weigand  <uweigand@de.ibm.com>
2252
2253         PR middle-end/32970
2254         * tree.c (reconstruct_complex_type): For a pointer to a vector,
2255         use build_qualified_type to retain qualifiers of the base type.
2256
2257 2007-08-17  Chen Liqin  <liqin@sunnorth.com.cn>
2258
2259         * config/score/score.md : Update pattern tablejump.
2260         * config/score/score.c : Update score_initialize_trampoline 
2261         function.
2262         * config/score/score.h (TRAMPOLINE_TEMPLATE): Added macro.
2263         (TRAMPOLINE_INSNS, TRAMPOLINE_SIZE) Update macro.
2264         * doc/contrib.texi: Add my entry.
2265
2266 2007-08-16  H.J. Lu  <hongjiu.lu@intel.com>
2267
2268         * Makefile.in (REVISION): New.
2269         (REVISION_c): New.
2270         (REVISION_s): New.
2271         (version.o): Also depend on $(REVISION). Add
2272         -DREVISION=$(REVISION_s).
2273
2274         * version.c (version_string): Add REVISION.
2275
2276 2007-08-16  Seongbae Park <seongbae.park@gmail.com>
2277
2278         * tree-eh.c (lower_try_finally_onedest): Reset the locus
2279         of GOTO that's relocated to a different block.
2280
2281 2007-08-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2282
2283         * c-common.c (const_strip_array_types): New.
2284         * c-common.h (lang_missing_noreturn_ok_p): Delete.
2285         (const_strip_array_types): New.
2286         * c-objc-common.c (c_disregard_inline_limits,
2287         c_warn_unused_global_decl): Constify.
2288         * c-tree.h (c_disregard_inline_limits, c_warn_unused_global_decl,
2289         c_vla_type_p, c_incomplete_type_error): Likewise.
2290         * c-typeck.c (c_incomplete_type_error, c_vla_type_p): Likewise.
2291         * hooks.c (hook_bool_const_tree_false): New.
2292         * hooks.h (hook_bool_const_tree_false): Likewise.
2293         * langhooks-def.h (lhd_warn_unused_global_decl,
2294         lhd_incomplete_type_error, lhd_expr_size,
2295         lhd_tree_inlining_disregard_inline_limits,
2296         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
2297         LANG_HOOKS_GENERIC_TYPE_P, LANG_HOOKS_TYPE_MAX_SIZE): Constify.
2298         * langhooks.c (lhd_warn_unused_global_decl,
2299         lhd_incomplete_type_error,
2300         lhd_tree_inlining_disregard_inline_limits,
2301         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
2302         lhd_expr_size): Likewise.
2303         * langhooks.h (lang_hooks_for_tree_inlining,
2304         lang_hooks_for_tree_dump, lang_hooks_for_types,
2305         lang_hooks_for_decls, lang_hooks): Likewise.
2306         * pointer-set.c (pointer_set_t, pointer_set_create,
2307         pointer_set_contains, insert_aux, pointer_set_insert,
2308         pointer_set_traverse, pointer_map_t, pointer_map_create,
2309         pointer_map_contains, pointer_map_insert, pointer_map_traverse):
2310         Likewise.
2311         * pointer-set.h (pointer_set_contains, pointer_set_insert,
2312         pointer_set_traverse, pointer_map_contains, pointer_map_insert,
2313         pointer_map_traverse): Likewise.
2314         * predict.c (assert_is_empty): Likewise.
2315         * tree-affine.c (free_name_expansion): Likewise.
2316         * tree-cfg.c (edge_to_cases_cleanup): Likewise.
2317         * tree.c (size_in_bytes, max_int_size_in_bytes): Likewise.
2318         * tree.h (size_in_bytes, max_int_size_in_bytes): Likewise.
2319
2320 2007-08-16  Victor Kaplansky <victork@il.ibm.com>
2321
2322         * tree-vectorizer.c (new_loop_vec_info): Initialize new 
2323         field.
2324         (destroy_loop_vec_info): Add call to VEC_free.
2325         * tree-vectorizer.h (may_alias_ddrs): Define.
2326         (LOOP_VINFO_MAY_ALIAS_DDRS): Define.
2327         * tree-vect-analyze.c (vect_analyze_data_ref_dependence):
2328         Change reporting to dump.
2329         (vect_is_duplicate_ddr): New.
2330         (vect_mark_for_runtime_alias_test): New.
2331         (vect_analyze_data_ref_dependences) Add call to
2332         vect_mark_for_runtime_alias_test.
2333         (vect_enhance_data_refs_alignment): Define local variable
2334         vect_versioning_for_alias_required, don't perform
2335         peeling for alignment if versioning for alias is
2336         required.
2337         (vect_enhance_data_refs_alignment): Use
2338         PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS instead of
2339         PARAM_VECT_MAX_VERSION_CHECKS.
2340         * tree-vect-transform.c
2341         (vect_create_cond_for_alias_checks): New.
2342         (vect_transform_loop): Add call to
2343         vect_create_cond_for_alias_checks.
2344         (vect_vfa_segment_size): New.
2345         * params.def (PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS):
2346         Rename.
2347         (PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS): Define.
2348         * gcc/doc/invoke.texi
2349         (vect-max-version-for-alignment-checks): Document.
2350         (vect-max-version-for-alias-checks): Document.
2351         (vect-max-version-checks): Remove.
2352      
2353 2007-08-16  Uros Bizjak  <ubizjak@gmail.com>
2354
2355         * config/i386/i386.md (*rep_movdi_rex64): Emit "rep" prefix on
2356         the same line as the instruction for all asm dialects.
2357         (*rep_movsi): Ditto.
2358         (*rep_movsi_rex64): Ditto.
2359         (*rep_movqi): Ditto.
2360         (*rep_movqi_rex64): Ditto.
2361         (*rep_stosdi_rex64): Ditto.
2362         (*rep_stossi): Ditto.
2363         (*rep_stossi_rex64): Ditto.
2364         (*rep_stosqi): Ditto.
2365         (*rep_stosqi_rex64): Ditto.
2366         (*cmpstrnqi_nz_1): Ditto.
2367         (*cmpstrnqi_nz_rex_1): Ditto.
2368         (*cmpstrnqi_1): Ditto.
2369         (*cmpstrnqi_rex_1): Ditto.
2370         (*strlenqi_1): Ditto.
2371         (*strlenqi_rex_1): Ditto.
2372         * config/i386/sync.md (*sync_compare_and_swap<mode>): Emit "lock"
2373         prefix on the same line as the instruction for all asm dialects.
2374         (sync_double_compare_and_swap<mode>): Ditto.
2375         (*sync_double_compare_and_swapdi_pic): Ditto.
2376         (*sync_compare_and_swap_cc<mode>): Ditto.
2377         (sync_double_compare_and_swap_cc<mode>): Ditto.
2378         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
2379         (sync_old_add<mode>): Ditto.
2380         (sync_add<mode>): Ditto.
2381         (sync_sub<mode>): Ditto.
2382         (sync_ior<mode>): Ditto.
2383         (sync_and<mode>): Ditto.
2384         (sync_xor<mode>): Ditto.
2385
2386 2007-08-16  Richard Sandiford  <richard@codesourcery.com>
2387
2388         PR middle-end/32897
2389         * reload.c (find_reloads): Check that the memory returned by
2390         find_reloads_toplev was not the result of forcing a constant
2391         to memory.
2392         (find_reloads_toplev): Always use simplify_gen_subreg to get
2393         the subreg of a constant.  If the result is also a constant,
2394         but not a legitimate one, force it into the constant pool
2395         and reload its address.
2396
2397 2007-08-15  David Edelsohn  <edelsohn@gnu.org>
2398
2399         * config/rs6000/rs6000.c (rs6000_rtx_costs): Add CLZ, CTZ, and
2400         POPCOUNT.
2401
2402 2007-08-15  Daniel Jacobowitz  <dan@codesourcery.com>
2403
2404         * config/rs6000/rs6000.c (rs6000_file_start): Output a .gnu_attribute
2405         directive for the current vector ABI.
2406
2407 2007-08-15  Steve Ellcey  <sje@cup.hp.com>
2408
2409         PR target/32963
2410         * caller-save.c (reg_save_code): Set invalide status on restore code.
2411         
2412 2007-08-15  Diego Novillo  <dnovillo@google.com>
2413
2414         * tree-ssa-alias.c (compute_memory_partitions): Use
2415         alias_bitmap_obstack to allocate bitmaps.
2416         (reset_alias_info): Factor out of init_alias_info.
2417         Mark all name tags not associated to an SSA name for renaming.
2418         (init_alias_info): Call it.
2419         (create_name_tags): Tidy.  Add comments.
2420         (dump_points_to_info_for): Do not call get_mem_sym_stats_for.
2421
2422 2007-08-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
2423
2424         * config/mips/mips.c (vr4130_swap_insns_p): Use new interface to
2425         scheduler dependencies.
2426
2427 2007-08-15  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2428
2429         * config/i386/i386.md (subsi3_carry_zext): Remove "m" constraint for
2430         "register_operand".
2431         (*iorsi_1_zext): Likewise.
2432         (*iorsi_1_zext_imm): Likewise.
2433         * config/i386/sse.md: (*sse4_1_extractps): Use "nonimmediate_operand"
2434         with "rm"/"xm" constraint.
2435         (sse2_vmsqrtv2df2): Likewise.
2436
2437 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
2438
2439         PR middle-end/33074
2440         * emit-rtl.c (try_split): Use INSN_LIST instead of EXPR_LIST for
2441         REG_LIBCALL note.
2442
2443 2007-08-14  Daniel Berlin  <dberlin@dberlin.org>
2444
2445         * tree-pass.h (PROP_pta): Removed.
2446         (TODO_rebuild_alias): New.
2447         (pass_may_alias): Removed.
2448         * tree-ssa-ccp.c (execute_fold_all_builtins): Only rebuild
2449         aliasing if we changed something.
2450         * tree-ssa-alias.c (compute_may_aliases): Make non-static.  Update
2451         SSA internally.
2452         (pass_may_alias): Removed.
2453         (create_structure_vars): Return TODO_rebuild_alias.
2454         * tree-ssa-pre.c (do_pre): Return TODO_rebuild_alias.
2455         * tree-sra.c (tree_sra): Only rebuild aliasing if something
2456         changed.
2457         (tree_sra_early): We never affect aliasing right now.
2458         * tree-flow.h (compute_may_aliases): New prototype.
2459         * passes.c: Remove pass_may_alias from the passes.
2460         (execute_function_todo): Support TODO_rebuild_alias.    
2461
2462 2007-08-14  Kai Tietz  <kai.tietz@onevision.com>
2463
2464         * i386.c: (legitimize_address): Move dllimported variable check
2465         infront of legitimizing pic address of CONST symbols.
2466
2467 2007-08-14  Steve Ellcey  <sje@cup.hp.com>
2468
2469         PR tree-optimization/32941
2470         * tree-eh.c (struct leh_tf_state): Add goto_queue_map field.
2471         (goto_queue_cmp): Remove.
2472         (find_goto_replacement): Change search method.
2473         (maybe_record_in_goto_queue): Add assert.
2474         (lower_try_finally): Remove qsort call, add pointer_map_destroy call.
2475         * Makefile.in (tree-eh.o): Add pointer-set.h dependency.
2476
2477 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2478
2479         * alias.c (component_uses_parent_alias_set): Constify.
2480         * alias.h (component_uses_parent_alias_set): Likewise.
2481         * cfgrtl.c (print_rtl_with_bb): Likewise.
2482         * double-int.c (tree_to_double_int, double_int_fits_to_tree_p,
2483         mpz_get_double_int): Likewise.
2484         * double-int.h (double_int_fits_to_tree_p, tree_to_double_int,
2485         mpz_get_double_int): Likewise.
2486         * expr.c (is_aligning_offset, undefined_operand_subword_p,
2487         mostly_zeros_p, all_zeros_p, safe_from_p, is_aligning_offset):
2488         Likewise.
2489         * expr.h (safe_from_p): Likewise.
2490         * gimple-low.c (try_catch_may_fallthru, block_may_fallthru):
2491         Likewise.
2492         * gimplify.c (should_carry_locus_p, zero_sized_field_decl,
2493         zero_sized_type, goa_lhs_expr_p): Likewise.
2494         * omp-low.c (is_variable_sized, use_pointer_for_field): Likewise.
2495         * rtl.h (print_rtl_with_bb): Likewise.
2496         * sched-vis.c (print_exp, print_value, print_pattern): Likewise.
2497         * tree-cfg.c (const_first_stmt, const_last_stmt): New.
2498         * tree-flow-inline.h (bb_stmt_list): Constify.
2499         (cbsi_start, cbsi_last, cbsi_end_p, cbsi_next, cbsi_prev,
2500         cbsi_stmt): New.
2501         * tree-flow.h (const_block_stmt_iterator, cbsi_start, cbsi_last,
2502         const_first_stmt, const_last_stmt): New.
2503         (block_may_fallthru, empty_block_p): Constify.
2504         * tree-iterator.c (EXPR_FIRST_BODY, EXPR_LAST_BODY,
2505         EXPR_ONLY_BODY): New.
2506         (expr_first, expr_last, expr_only): Use macro for body.
2507         (const_expr_first, const_expr_last, const_expr_only): New.
2508         * tree-iterator.h (const_tree_stmt_iterator, ctsi_start,
2509         ctsi_last, ctsi_end_p, ctsi_one_before_end_p, ctsi_next,
2510         ctsi_prev, ctsi_stmt): New.
2511         * tree-scalar-evolution.c (get_loop_exit_condition): Constify.
2512         * tree-scalar-evolution.h (get_loop_exit_condition): Likewise.
2513         * tree-ssa-loop-niter.c (loop_only_exit_p,
2514         derive_constant_upper_bound): Likewise.
2515         * tree-ssa-phiopt.c (empty_block_p): Likewise.
2516         * tree-ssa-threadupdate.c (redirection_block_p): Likewise.
2517         * tree-vectorizer.c (slpeel_can_duplicate_loop_p): Likewise.
2518         * tree-vectorizer.h (slpeel_can_duplicate_loop_p): Likewise.
2519         * tree-vrp.c (vrp_bitmap_equal_p): Likewise.
2520         * tree.c (get_type_static_bounds): Likewise.
2521         * tree.h (const_expr_first, const_expr_last, const_expr_only): New.
2522         (get_type_static_bounds): Constify.
2523
2524 2007-08-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2525
2526         PR target/30315
2527         * config/i386/i386.h (CANONICALIZE_COMPARISON): New.
2528         * config/i386/i386.md (plusminus)(addsub)(SWI): New.
2529         (*<addsub><mode>3_cc_overflow): New.
2530         (*add<mode>3_cconly_overflow): New.
2531         (*sub<mode>3_cconly_overflow): New.
2532         (*<addsub>si3_zext_cc_overflow): New.
2533         * config/i386/predicates.md (fcmov_comparison_operator): Accept
2534         CCCmode for LTU, GTU, LEU and GEU.
2535         (ix86_comparison_operator): Likewise.
2536         (ix86_carry_flag_operator): Carry flag is set if LTU or GTU in CCCmode.
2537         * config/i386/i386.c (put_condition_code): Support CCCmode.
2538         (ix86_cc_mode): Use CCCmode when testing for overflow of PLUS
2539         or MINUS expressions.
2540
2541 2007-08-14  Andrew Pinski  <pinskia@gmail.com>
2542
2543         PR c/30428
2544         * c-typeck.c (build_binary_op): Disallow vector float types with
2545         BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.
2546
2547 2007-08-14  Maxim Kuvyrkov  <maxim@codesourcery.com>
2548
2549         * sched-int.h (struct _dep): Rename field 'kind' to 'type'.
2550         (DEP_KIND): Rename to DEP_TYPE.  Update all uses.
2551         (dep_def): New typedef.
2552         (init_dep_1, sd_debug_dep): Declare functions.
2553         (DEP_LINK_KIND): Rename to DEP_LINK_TYPE.
2554         (debug_dep_links): Remove.
2555         (struct _deps_list): New field 'n_links'.
2556         (DEPS_LIST_N_LINKS): New macro.
2557         (FOR_EACH_DEP_LINK): Remove.
2558         (create_deps_list, free_deps_list, delete_deps_list): Remove
2559         declaration.
2560         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
2561         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
2562         (copy_deps_list_change_con, move_dep_link): Ditto.
2563         (struct haifa_insn_data): Split field 'back_deps' into 'hard_back_deps'
2564         and 'spec_back_deps'.  New field 'resolved_forw_deps'.  Remove field
2565         'dep_count'.
2566         (INSN_BACK_DEPS): Remove.
2567         (INSN_HARD_BACK_DEPS, INSN_SPEC_BACK_DEPS, INSN_RESOLVED_FORW_DEPS):
2568         New macros.
2569         (INSN_DEP_COUNT): Remove.
2570         (enum DEPS_ADJUST_RESULT): Add new constant DEP_NODEP.  Fix comments.
2571         (spec_info, haifa_recovery_block_was_added_during_scheduling_p):
2572         Declare global variables.
2573         (deps_pools_are_empty_p, sched_free_deps): Declare functions.
2574         (add_forw_dep, compute_forward_dependences): Remove declarations.
2575         (add_or_update_back_dep, add_or_update_back_forw_dep): Ditto.
2576         (add_back_forw_dep, delete_back_forw_dep): Ditto.
2577         (debug_ds, sched_insn_is_legitimate_for_speculation_p): Declare
2578         functions.
2579         (SD_LIST_NONE, SD_LIST_HARD_BACK, SD_LIST_SPEC_BACK, SD_LIST_FORW):
2580         New constants.
2581         (SD_LIST_RES_BACK, SD_LIST_RES_FORW, SD_LIST_BACK): Ditto.
2582         (sd_list_types_def): New typedef.
2583         (sd_next_list): Declare function.
2584         (struct _sd_iterator): New type.
2585         (sd_iterator_def): New typedef.
2586         (sd_iterator_start, sd_iterator_cond, sd_iterator_next): New inline
2587         functions.
2588         (FOR_EACH_DEP): New cycle wrapper.
2589         (sd_lists_size, sd_lists_empty_p, sd_init_insn, sd_finish_insn):
2590         Declare functions.
2591         (sd_find_dep_between, sd_add_dep, sd_add_or_update_dep): Ditto.
2592         (sd_resolve_dep, sd_copy_back_deps, sd_delete_dep, sd_debug_lists):
2593         Ditto.
2594
2595         * sched-deps.c (init_dep_1): Make global.
2596         (DUMP_DEP_PRO, DUMP_DEP_CON, DUMP_DEP_STATUS, DUMP_DEP_ALL): New
2597         constants.
2598         (dump_dep): New static function.
2599         (dump_dep_flags): New static variable.
2600         (sd_debug_dep): New function.
2601         (add_to_deps_list, remove_from_deps_list): Update 'n_links' field of
2602         the list.
2603         (move_dep_link): Use remove_from_deps_list (), instead of
2604         detach_dep_link ().
2605         (dep_links_consistent_p, dump_dep_links, debug_dep_links): Remove.
2606         (dep_link_is_detached_p): New static function.
2607         (deps_obstack, dl_obstack, dn_obstack): Remove.  Use dn_pool, dl_pool
2608         instead.
2609         (dn_pool, dl_pool): New alloc_pools.
2610         (dn_pool_diff, dl_pool_diff): New static variables.
2611         (create_dep_node, delete_dep_node): New static function.
2612         (create_deps_list): Make it static.  Use alloc_pool 'dl_pool'.
2613         (deps_list_empty_p): Make it static.  Use 'n_links' field.
2614         (deps_pools_are_empty_p): New static function.
2615         (alloc_deps_list, delete_deps_list): Remove.
2616         (dump_deps_list, debug_deps_list, add_back_dep_to_deps_list): Remove.
2617         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
2618         (copy_deps_list_change_con): Remove.  Use sd_copy_back_deps () instead.
2619         (forward_dependency_cache): Remove.
2620         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Remove
2621         'back' from the names.  Change signature to use dep_t instead of
2622         equivalent quad.
2623         (add_back_dep): Ditto.  Make global.
2624         (check_dep_status): Rename to check_dep ().
2625         (sd_next_list, sd_lists_size, sd_lists_empty_p, sd_init_insn):
2626         New functions.
2627         (sd_finish_insn): Ditto.
2628         (sd_find_dep_between_no_cache): New static function.
2629         (sd_find_dep_between): New function.
2630         (ask_dependency_caches, set_dependency_caches): New static functions.
2631         (update_dependency_caches, change_spec_dep_to_hard, update_dep): Ditto.
2632         (add_or_update_dep_1): Separate pieces of functionality into
2633         ask_dependency_caches (), update_dependency_caches (),
2634         change_spec_dep_to_hard (), update_dep ().
2635         (get_back_and_forw_lists): New static function.
2636         (sd_add_dep): Separate setting of dependency caches into
2637         set_dependency_caches ().
2638         (sd_add_or_update_dep, sd_resolve_dep, sd_copy_back_deps):
2639         New functions.
2640         (sd_delete_dep): Ditto.
2641         (DUMP_LISTS_SIZE, DUMP_LISTS_DEPS, DUMP_LISTS_ALL): New constants.
2642         (dump_lists): New static function.
2643         (sd_debug_lists): New debug function.
2644         (delete_all_dependences, fixup_sched_groups): Update to use
2645         sd_* infrastructure.
2646         (sched_analyze_2): Create data-speculative dependency only if
2647         data-speculation is enabled.
2648         (sched_analyze_insn): If insn cannot be speculative, make all its
2649         dependencies non-speculative.
2650         (sched_analyze): Use sd_init_insn ().
2651         (add_forw_dep, compute_forward_dependencies): Remove.
2652         (delete_dep_nodes_in_back_deps): New static function.
2653         (sched_free_deps): New function.
2654         (init_dependency_caches): Init alloc_pools.
2655         (extend_depedency_caches): Update after removing of
2656         forward_dependency_cache.
2657         (free_dependency_caches): Ditto.  Free alloc_pools.
2658         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Remove.
2659         (delete_forw_dep, add_or_update_back_dep, add_or_update_back_forw_dep):
2660         Ditto.
2661         (add_back_forw_dep, delete_back_forw_dep): Ditto.
2662         (add_dependence): Use init_dep ().
2663         (get_dep_weak_1): New static function.
2664         (get_dep_weak): Move logic to get_dep_weak_1 ().
2665         (dump_ds): New static function moved from haifa-sched.c:
2666         debug_spec_status ().
2667         (debug_ds): New debug function.
2668         (check_dep_status): Rename to check_dep ().  Update to check whole
2669         dependencies.
2670
2671         * haifa-sched.c (spec_info): Make global.
2672         (added_recovery_block_p): Rename to
2673         'haifa_recovery_block_was_added_during_current_schedule_block_p'.
2674         (haifa_recovery_block_was_added_during_scheduling_p): New variable.
2675         (dep_cost, priority, rank_for_schedule, schedule_insn): Update
2676         to use new interfaces.
2677         (ok_for_early_queue_removal): Ditto.
2678         (schedule_block): Initialize logical uids of insns emitted by the
2679         target.
2680         (sched_init): Initialize new variable.
2681         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
2682         interfaces.
2683         (extend_global): Initialize insn data.
2684         (init_h_i_d): Remove code that is now handled in sd_init_insn ().
2685         (process_insn_forw_deps_be_in_spec): Change signature.  Update to use
2686         new interfaces.
2687         (add_to_speculative_block): Update to use new interfaces.
2688         (create_recovery_block): Set new variables.
2689         (create_check_block_twin, fix_recovery_deps): Update to use new
2690         interfaces.
2691         (sched_insn_is_legitimate_for_speculation_p): New function.
2692         (speculate_insn): Move checking logic to
2693         sched_insn_is_legitimate_for_speculation_p ().
2694         (sched_remove_insn): Finalize sched-deps information of instruction.
2695         (clear_priorities, add_jump_dependencies): Update to use new
2696         interfaces.
2697         (debug_spec_status): Rename to dump_ds () and move to sched-deps.c.
2698         
2699         * sched-rgn.c (set_spec_fed, find_conditional_protection): Update
2700         to use new interfaces.
2701         (is_conditionally_protected, is_pfree, is_prisky) Ditto.
2702         (new_ready): Try to use control speculation only if it is available.
2703         (add_branch_dependences): Update to use new interfaces.
2704         (compute_block_backward_dependences): Rename to
2705         compute_block_dependences ().  Call
2706         targetm.sched.dependencies_evaluation_hook ().
2707         (free_block_dependencies): New static function.
2708         (debug_dependencies): Update to use new interfaces.
2709         (schedule_region): Remove separate computation of forward dependencies.
2710         Move call of targetm.sched.dependencies_evaluation_hook () to
2711         compute_block_dependences ().  Free dependencies at the end of
2712         scheduling the region.
2713
2714         * sched-ebb.c (earliest_block_with_similiar_load): Update to use
2715         new interfaces.
2716         (add_deps_for_risky_insns): Ditto.
2717         (schedule_ebb): Remove separate computation of forward dependencies.
2718         Free dependencies at the end of scheduling the ebb.
2719
2720         * ddg.c (create_ddg_dependence): Update to use new interfaces.
2721         (build_intra_loop_deps): Ditto.  Remove separate computation of
2722         forward dependencies.  Free sched-deps dependencies.
2723
2724         * config/ia64/ia64.c (ia64_dependencies_evaluation_hook): Update
2725         to use new interfaces.
2726         (ia64_dfa_new_cycle, ia64_gen_check): Ditto.
2727
2728         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Update to use
2729         new interfaces.
2730         (is_costly_group): Ditto.
2731
2732 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2733
2734         * alias.c (rtx_equal_for_memref_p): Constify.
2735         * basic-block.h (const_edge, const_basic_block): New.
2736         (reg_set_to_hard_reg_set, dfs_enumerate_from, single_succ_p,
2737         single_pred_p, single_succ_edge, single_pred_edge, single_succ,
2738         single_pred, maybe_hot_bb_p, probably_cold_bb_p,
2739         probably_never_executed_bb_p, edge_probability_reliable_p,
2740         br_prob_note_reliable_p, forwarder_block_p, flow_nodes_print,
2741         inside_basic_block_p, control_flow_insn_p, dominated_by_p):
2742         Likewise.
2743         * bb-reorder.c (better_edge_p, push_to_next_round_p): Likewise.
2744         * bt-load.c (basic_block_freq, insn_sets_btr_p, can_move_up):
2745         Likewise.
2746         * cfganal.c (flow_active_insn_p, forwarder_block_p,
2747         flow_nodes_print, dfs_enumerate_from): Likewise.
2748         * cfgbuild.c (count_basic_blocks, inside_basic_block_p,
2749         control_flow_insn_p, count_basic_blocks): Likewise.
2750         * cfgloop.c (flow_bb_inside_loop_p, glb_enum_p,
2751         get_loop_body_with_size, loop_exit_edge_p): Likewise.
2752         * cfgloop.h (flow_bb_inside_loop_p, num_loop_insns,
2753         average_num_loop_insns, loop_exit_edge_p,
2754         just_once_each_iteration_p, can_duplicate_loop_p): Likewise.
2755         * cfgloopanal.c (just_once_each_iteration_p, num_loop_insns,
2756         average_num_loop_insns, seq_cost): Likewise.
2757         * cfgloopmanip.c (rpe_enum_p, can_duplicate_loop_p): Likewise.
2758         * dominance.c (dominated_by_p): Likewise.
2759         * emit-rtl.c (validate_subreg): Likewise.
2760         * except.c (can_throw_internal, can_throw_external): Likewise.
2761         * except.h (can_throw_internal, can_throw_external): Likewise.
2762         * gcse.c (gcse_constant_p, oprs_unchanged_p, oprs_anticipatable_p,
2763         oprs_available_p, hash_expr, expr_equiv_p, oprs_not_set_p,
2764         compute_transp, load_killed_in_block_p, reg_killed_on_edge,
2765         simple_mem, store_ops_ok, load_kills_store, find_loads,
2766         store_killed_in_insn, store_killed_after, store_killed_before,
2767         gcse_mem_operand, implicit_set_cond_p, store_killed_in_pat):
2768         Likewise.
2769         * ifcvt.c (count_bb_insns, cheap_bb_rtx_cost_p, noce_operand_ok,
2770         noce_mem_write_may_trap_or_fault_p): Likewise.
2771         * pointer-set.c (pointer_set_contains, pointer_map_contains):
2772         Likewise.
2773         * pointer-set.h (pointer_set_contains, pointer_map_contains):
2774         Likewise.
2775         * predict.c (can_predict_insn_p, maybe_hot_bb_p,
2776         probably_cold_bb_p, probably_never_executed_bb_p,
2777         edge_probability_reliable_p, br_prob_note_reliable_p,
2778         can_predict_insn_p): Likewise.
2779         * regclass.c (reg_set_to_hard_reg_set): Likewise.
2780         * resource.c (return_insn_p): Likewise.
2781         * rtl.h (reg_set_between_p, reg_set_p, validate_subreg):
2782         Likewise.
2783         * rtlanal.c (reg_set_between_p, reg_set_p): Likewise.
2784         * tracer.c (count_insns, ignore_bb_p, better_p): Likewise.
2785         * tree-cfg.c (verify_gimple_unary_expr, verify_gimple_binary_expr,
2786         verify_gimple_modify_stmt): Likewise.
2787         * tree-chrec.c (is_not_constant_evolution,
2788         is_multivariate_chrec_rec, is_multivariate_chrec,
2789         chrec_contains_symbols, chrec_contains_undetermined,
2790         tree_contains_chrecs, evolution_function_is_affine_multivariate_p,
2791         evolution_function_is_univariate_p, avoid_arithmetics_in_type_p,
2792         eq_evolutions_p, scev_direction): Likewise.
2793         * tree-chrec.h (automatically_generated_chrec_p, tree_is_chrec,
2794         eq_evolutions_p, is_multivariate_chrec, chrec_contains_symbols,
2795         chrec_contains_symbols_defined_in_loop,
2796         chrec_contains_undetermined, tree_contains_chrecs,
2797         evolution_function_is_affine_multivariate_p,
2798         evolution_function_is_univariate_p, chrec_zerop,
2799         evolution_function_is_constant_p, evolution_function_is_affine_p,
2800         evolution_function_is_affine_or_constant_p,
2801         tree_does_not_contain_chrecs, chrec_type): Likewise.
2802         * tree-data-ref.c (tree_fold_divides_p,
2803         object_address_invariant_in_loop_p, dr_may_alias_p,
2804         ziv_subscript_p, siv_subscript_p, gcd_of_steps_may_divide_p,
2805         same_access_functions, constant_access_functions,
2806         access_functions_are_affine_or_constant_p, find_vertex_for_stmt):
2807         Likewise.
2808         * tree-flow.h (scev_direction): Likewise.
2809         * tree-gimple.c (is_gimple_stmt): Likewise.
2810         * tree-outof-ssa.c (identical_copies_p, identical_stmt_lists_p):
2811         Likewise.
2812         * tree-pretty-print.c (op_prio): Likewise.
2813         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop,
2814         analyzable_condition, backedge_phi_arg_p): Likewise.
2815         * tree-scalar-evolution.h (get_chrec_loop): Likewise.
2816         * tree-ssa-operands.c (get_name_decl, operand_build_cmp): Likewise.
2817         * tree-ssa-threadupdate.c (dbds_continue_enumeration_p):
2818         Likewise.
2819
2820 2007-08-13  Dan Hipschman  <dsh@google.com>
2821
2822         PR c/32953
2823         * c-format.c (check_format_arg): Move check for zero-length
2824         format strings below the check for unterminated strings.
2825
2826 2007-08-13  Andrew Pinski  <pinskia@gmail.com>
2827
2828         PR C/30427
2829         * c-typeck.c (build_unary_op <case BIT_NOT_EXPR>): Reject vector float
2830         types.
2831
2832 2007-08-13  Nick Clifton  <nickc@redhat.com>
2833
2834         * config/arm/arm_neon.h: Revert GPLv3 patch to this file.
2835
2836 2007-08-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2837
2838         PR fortran/32860
2839         * c-format.c (gcc_gfc_length_specs): New array.
2840         (gcc_gfc_char_table): Add unsigned specifier, and references to
2841         the l length modifier.
2842         (format_types_orig): Use the new gcc_gfc_length_specs.
2843
2844 2007-08-12  Sa Liu  <saliu@de.ibm.com>
2845
2846         * emit-rtl.c (try_split): Relink the insns with REG_LIBCALL note
2847         and with REG_RETVAL note after split.
2848
2849 2007-08-11  David Daney  <ddaney@avtrex.com>
2850
2851         * config/mips/mips.c (mips_sched_reorder):  Mark cycle parameter
2852         as ATTRIBUTE_UNUSED.
2853
2854 2007-08-11  David Edelsohn  <edelsohn@gnu.org>
2855             Segher Boessenkool  <segher@kernel.crashing.org>
2856
2857         * config/rs6000/rs6000.h (CC1_CPU_SPEC): Define as empty string if
2858         HAVE_LOCAL_CPU_DETECT not defined.
2859
2860 2007-08-11  Jan Hubicka  <jh@suse.cz>
2861
2862         * cgraphunit.c (record_cdtor_fn): Declare all cdtors always inlined.
2863         (cgraph_process_new_functions): Honor previous value of
2864         disregard_inline_limits.
2865         * ipa-inline.c (compute_inline_parameters): Likewise.
2866
2867 2007-08-11  Ian Lance Taylor  <iant@google.com>
2868
2869         * alias.h (alias_set_type): Define new type.
2870         (ALIAS_SET_MEMORY_BARRIER): Use it.
2871         * rtl.h: Include alias.h.
2872         (struct mem_attrs): Use alias_set_type.
2873         * tree.h: Include alias.h
2874         (struct tree_type): Use alias_set_type.
2875         (struct tree_struct_field_tag): Likewise.
2876         (struct tree_decl_common): Likewise.
2877         * alias.c (struct alias_set_entry): Use alias_set_type.
2878         (get_alias_set_entry, alias_set_subset_of): Likewise.
2879         (alias_sets_conflict_p): Likewise.
2880         (alias_sets_must_conflict_p): Likewise.
2881         (objects_must_conflict_p): Likewise.
2882         (get_alias_set, new_alias_set): Likewise.
2883         (record_alias_subset, record_component_aliases): Likewise.
2884         (varargs_set, frame_set): Change to alias_set_type.
2885         (get_varargs_alias_set): Use alias_set_type.
2886         (get_frame_alias_set): Likewise.
2887         * builtins.c (setjmp_alias_set): Change to alias_set_type.
2888         * dse.c (struct store_info): Use alias_set_type.
2889         (struct read_info, struct clear_alias_mode_holder): Likewise.
2890         (clear_alias_set_lookup, canon_address): Likewise.
2891         (record_store, check_mem_read_rtx): Likewise.
2892         (dse_record_singleton_alias_set): Likewise.
2893         (dse_invalidate_singleton_alias_set): Likewise.
2894         * emit-rtl.c (get_mem_attrs): Likewise.
2895         (set_mem_attributes_minus_bitpos): Likewise.
2896         (set_mem_alias_set): Likewise.
2897         * expr.c (store_constructor_field, store_field): Likewise.
2898         * gimplify.c (struct gimplify_init_ctor_preeval_data): Likewise.
2899         * langhooks.c (lhd_get_alias_set): Likewise.
2900         * langhooks-def.h (lhd_get_alias_set): Likewise.
2901         * reload1.c (alter_reg): Likewise.
2902         * tree-flow.h (struct fieldoff): Likewise.
2903         * tree-ssa-alias.c (struct alias_map_d): Likewise.
2904         (may_alias_p, get_smt_for, create_sft): Likewise.
2905         * tree-ssa-alias-warnings.c (nonstandard_alias_types_p): Likewise.
2906         * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
2907         (merge_smts_into): Likewise.
2908         * varasm.c (const_alias_set): Likewise.
2909         * c-common.c (strict_aliasing_warning): Likewise.
2910         (c_common_get_alias_set): Likewise.
2911         * dse.h (dse_record_singleton_alias_set): Update declaration.
2912         (dse_invalidate_singleton_alias_set): Likewise.
2913         * emit-rtl.h (set_mem_alias_set): Likewise.
2914         * c-common.h (c_common_get_alias_set): Likewise.
2915         * print-rtl.c (print_rtx): Cast MEM_ALIAS_SET when printing it.
2916         * print-tree.c (print_node): Likewise.
2917         * config/alpha/alpha.c (alpha_sr_alias_set): Change to
2918         alias_set_type.
2919         (alpha_setup_incoming_varargs): Use alias_set_type.
2920         * config/i386/i386.c (setup_incoming_varargs_64): Use
2921         alias_set_type.
2922         (setup_incoming_varargs_ms_64): Likewise.
2923         (ix86_GOT_alias_set): Likewise.
2924         * config/mn10300/mn10300.c (mn10300_builtin_saveregs): Likewise.
2925         * config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
2926         (set): Change to alias_set_type.
2927         (get_TOC_alias_set): Use alias_set_type.
2928         * config/rs6000/rs6000-protos.h (get_TOC_alias_set): Update
2929         declaration.
2930         * config/sh/sh.c (sh_builtin_saveregs): Use alias_set_type.
2931         * config/sparc/sparc.c (sparc_sr_alias_set): Change to
2932         alias_set_type.
2933         (struct_value_alias_set): Likewise.
2934         * Makefile.in (GTFILES): Add $(srcdir)/alias.h.
2935
2936 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
2937
2938         * config/vxworks-dummy.h (TARGET_VXWORKS): Define.
2939         * config/vxworks.h (TARGET_VXWORKS): Override.
2940         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Don't define
2941         "mips" if TARGET_VXWORKS.
2942
2943 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
2944
2945         * calls.c (avoid_likely_spilled_reg): New function.
2946         (expand_call): Use it.
2947
2948 2007-08-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2949
2950         * c-typeck.c (build_c_cast): Add OPT_Wcast_qual to warnings.
2951
2952 2007-08-10  Adam Nemet  <anemet@caviumnetworks.com>
2953
2954         * config/mips/predicates.md (const_call_insn_operand): Invoke
2955         SYMBOL_REF_LONG_CALL_P only on SYMBOL_REFs.
2956
2957 2007-08-10  David Edelsohn  <edelsohn@gnu.org>
2958
2959         PR target/33042
2960         * config/rs6000/driver-rs6000.c: Include link.h.
2961         Use ElfW instead of wordsize-specif typedef.
2962
2963 2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2964
2965         * system.h (CONST_CAST): New.
2966         * c-decl.c (c_make_fname_decl): Use it.
2967         * c-lex.c (cb_ident, lex_string): Likewise.
2968         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
2969         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
2970         give_switch, set_multilib_dir): Likewise.
2971         * gengtype-parse.c (string_seq, typedef_name): Likewise.
2972         * passes.c (execute_one_pass): Likewise.
2973         * prefix.c (update_path): Likewise.
2974         * pretty-print.c (pp_base_destroy_prefix): Likewise.
2975         * tree.c (build_string): Likewise.
2976
2977 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
2978
2979         * tree-flow-inline.h (is_exec_stmt): Remove.
2980         (is_label_stmt): Remove.
2981         * tree-flow.h: Remove prototypes for is_exec_stmt, get_filename, and
2982         is_label_stmt.
2983
2984 2007-08-10  Andreas Krebbel  <krebbel1@de.ibm.com>
2985
2986         * lower-subreg.c (resolve_shift_zext): Don't adjust
2987         src_reg_num for wordmode operands.
2988
2989 2007-08-10  Sandra Loosemore  <sandra@codesourcery.com>
2990             David Ung  <davidu@mips.com>
2991
2992         * config/mips/mips.c (TARGET_SCHED_INIT): Define.
2993         (TARGET_SCHED_REORDER2): Define.
2994         (mips_maybe_swap_ready): New.
2995         (mips_last_74k_agen_insn): New.
2996         (mips_74k_agen_init): New.
2997         (mips_74k_agen_reorder): New function to group loads and stores
2998         in the ready queue.
2999         (mips_sched_init): New.  
3000         (mips_sched_reorder): Don't do initialization here.  Call
3001         mips_74k_agen_reorder.
3002         (mips_variable_issue): Call mips_74k_agen_init.
3003
3004 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
3005
3006         * tree-flow-inline.h (get_filename): Remove.
3007
3008 2007-08-10  Richard Sandiford  <richard@codesourcery.com>
3009
3010         * config/mips/mips-protos.h (mips_address_insns): Add a boolean
3011         argument.
3012         (mips_fetch_insns): Delete in favor of...
3013         (mips_load_store_insns): ...this new function.
3014         * config/mips/mips.c (mips_address_insns): Add a boolean argument
3015         to say whether multiword moves _might_ be split.
3016         (mips_fetch_insns): Delete in favor of...
3017         (mips_load_store_insns): ...this new function.
3018         (mips_rtx_costs): Update the call to mips_address_insns.
3019         (mips_address_cost): Likewise.
3020         * config/mips/mips.md (length): Use mips_load_store_insns instead
3021         of mips_fetch_insns.
3022         * config/mips/constraints.md (R): Use mips_address_insns rather
3023         than mips_fetch_insns.  Assume that the move never needs to be split.
3024
3025 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
3026
3027         * config/mips/mips.opt (mhard-float, msoft-float):  Make these
3028         control TARGET_HARD_FLOAT_ABI and TARGET_SOFT_FLOAT_ABI, rather
3029         than TARGET_HARD_FLOAT and TARGET_SOFT_FLOAT.  
3030         * config/mips/mips.h (mips16_hard_float): Delete.
3031         (TARGET_HARD_FLOAT_ABI, TARGET_SOFT_FLOAT_ABI):  Delete these
3032         definitions, and replace with....
3033         (TARGET_HARD_FLOAT, TARGET_SOFT_FLOAT): Define.
3034         * config/mips/mips.c (mips16_hard_float): Delete.  Replace
3035         all references with (TARGET_MIPS16 && TARGET_HARD_FLOAT_ABI).
3036         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Update comments.
3037         (override_options):  Replace MASK_SOFT_FLOAT references with
3038         MASK_SOFT_FLOAT_ABI.  Delete twiddling with MASK_SOFT_FLOAT
3039         and mips16_hard_float when TARGET_MIPS16.
3040         
3041 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3042
3043         PR c/32796
3044         * c-typeck.c (build_binary_op): Check for non pointer types before
3045         calling int_fits_type_p.
3046
3047 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3048
3049         PR middle-end/32813
3050         * fold-const.c (omit_one_operand): Return only the ommitted expression
3051         if the result is an empty statement.
3052         (pedantic_omit_one_operand): Likewise.
3053
3054 2007-08-09  Daniel Berlin  <dberlin@dberlin.org>
3055
3056         * c-typeck.c (readonly_error): Improve error for assignment.
3057         
3058         * c-pretty-print.c (pp_c_additive_expression): Handle pointer-plus
3059         expression. 
3060         (pp_c_expression): Ditto.
3061
3062 2007-08-09  Simon Baldwin  <simonb@google.com>
3063
3064         * simplify-rtx.c (simplify_binary_operation_1): Removed erroneous
3065         break that was preventing simplify_associative_operation() for xor.
3066
3067 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
3068             Nigel Stephens  <nigel@mips.com>
3069
3070         * doc/tm.texi (CLZ_DEFINED_VALUE_AT_ZERO, CTZ_DEFINED_VALUE_AT_ZERO):
3071         Document change in interpretation of value from boolean to
3072         tri-state integer.
3073         * optabs.c (expand_ffs, expand_ctz): New functions to compute
3074         ffs and ctz using clz.
3075         (expand_unop):  Call them.
3076         * config/rs6000/rs6000.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix its
3077         result value.
3078         (CTZ_DEFINED_VALUE_AT_ZERO): Likewise.
3079         * config/mips/mips.h (CLZ_DEFINED_VALUE_AT_ZERO): Likewise, to
3080         enable the new ffs expansion on this target.
3081
3082 2007-08-09  Jan Hubicka  <jh@suse.cz>
3083
3084         * optabs.c (expand_widen_pattern_expr): Use optabs accestors.
3085         (expand_ternary_op): Likewise.
3086         (expand_vec_shift_expr): Likewise.
3087         (expand_binop_directly): Likewise.
3088         (expand_binop): Likewise.
3089         (sign_expand_binop): Likewise.
3090         (expand_twoval_unop): Likewise.
3091         (expand_twoval_binop): Likewise.
3092         (expand_twoval_binop_libfunc): Likewise.
3093         (widen_clz): Likewise.
3094         (widen_bswap): Likewise.
3095         (expand_parity): Likewise.
3096         (expand_unop): Likewise.
3097         (expand_abs_nojump): Likewise.
3098         (expand_copysign): Likewise.
3099         (emit_no_conflict_block): Likewise.
3100         (emit_libcall_block): Likewise.
3101         (can_compare_p): Likewise.
3102         (prepare_cmp_insn): Likewise.
3103         (emit_cmp_and_jump_insn_1): Likewise.
3104         (prepare_float_lib_cmp): Likewise.
3105         (emit_conditional_add): Likewise.
3106         (gen_add2_insn): Likewise.
3107         (have_add2_insn): Likewise.
3108         (gen_sub2_insn): Likewise.
3109         (have_sub2_insn): Likewise.
3110         (can_extend_p): Likewise.
3111         (can_fix_p): Likewise.
3112         (can_float_p): Likewise.
3113         (expand_float): Likewise.
3114         (expand_fix): Likewise.
3115         (expand_sfix_optab): Likewise.
3116         (new_optab): Likewise.
3117         (new_convert_optab): Likewise.
3118         (init_libfuncs): Likewise.
3119         (init_interclass_conv_libfuncs): Likewise.
3120         (init_intraclass_conv_libfuncs): Likewise.
3121         (set_conv_libfunc): Likewise.
3122         (init_optabs): Likewise.
3123         (debug_optab_libfuncs): Likewise.
3124         (gen_cond_trap): Likewise.
3125         * optabs.h (optab_handler, convert_optab_hanlder): New.
3126         * genopinit.c: Update optabs generation table.
3127         * reload.c (find_reloads_address_1): Use optabs accestors.
3128         * builtins.c (expand_builtin_mathfn): Likewise.
3129         (expand_builtin_mathfn_2): Likewise.
3130         (expand_builtin_mathfn_3): Likewise.
3131         (expand_builtin_interclass_mathfn): Likewise.
3132         (expand_builtin_sincos): Likewise.
3133         (expand_builtin_cexpi): Likewise.
3134         (expand_builtin_powi): Likewise.
3135         (expand_builtin_strlen): Likewise.
3136         * dojump.c (do_jump): Likewise.
3137         * expr.c (convert_move): Likewise.
3138         (move_by_pieces): Likewise.
3139         (move_by_pieces_ninsns): Likewise.
3140         (can_store_by_pieces): Likewise.
3141         (store_by_pieces_1): Likewise.
3142         (emit_move_via_integer): Likewise.
3143         (emit_move_complex): Likewise.
3144         (emit_move_ccmode): Likewise.
3145         (emit_move_insn_1): Likewise.
3146         (emit_single_push_insn): Likewise.
3147         (store_constructor): Likewise.
3148         (expand_expr_real_1): Likewise.
3149         (do_store_flag): Likewise.
3150         * ada/misc.c (gnat_compute_largest_alignment): Likewise.
3151         (enumerate_modes): Likewise.
3152         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
3153         (supportable_widening_operation): Likewise.
3154         (supportable_narrowing_operation): Likewise.
3155         * expmed.c (store_bit_field_1): Likewise.
3156         (extract_bit_field_1): Likewise.
3157         (expand_mult_highpart_optab): Likewise.
3158         (expand_smod_pow2): Likewise.
3159         (expand_divmod): Likewise.
3160         (emit_store_flag): Likewise.
3161         * tree-vect-patterns.c
3162         (vect_pattern_recog_1): Likewise.
3163         * tree-ssa-loop-prefetch.c
3164         (nontemporal_store_p): Likewise.
3165         * tree-vect-transform.c (vect_model_reduction_cost): Likewise.
3166         (vect_create_epilog_for_reduction): Likewise.
3167         (vectorizable_reduction): Likewise.
3168         (vectorizable_operation): Likewise.
3169         (vect_strided_store_supported): Likewise.
3170         (vectorizable_store): Likewise.
3171         (vect_strided_load_supported): Likewise.
3172         (vectorizable_load): Likewise.
3173         * combine.c (simplify_comparison): Likewise.
3174         * tree-vect-generic.c
3175         (type_for_widest_vector_mode): Likewise.
3176         (expand_vector_operations_1): Likewise.
3177         * config/spu/spu.c (spu_expand_mov): Likewise.
3178         (spu_emit_vector_compare): Likewise.
3179         * config/rs6000/rs6000.c
3180         (rs6000_emit_vector_compare): Likewise.
3181         * stmt.c (add_case_node): Likewise.
3182         * reload1.c (gen_reload):
3183
3184 2007-08-09  Michael Matz  <matz@suse.de>
3185
3186         * tree.h (fixed_zerop): Declare as taking a const_tree.
3187         * tree.c (fixed_zerop): Take a const_tree.
3188
3189 2007-08-09  Ira Rosen  <irar@il.ibm.com>
3190
3191         * tree-vect-transform.c (vectorizable_store): Remove call to
3192         copy_virtual_operands() and call mark_symbols_for_renaming() for
3193         the created vector store.
3194         (vect_setup_realignment): Don't call copy_virtual_operands() and
3195         update_vuses_to_preheader(). 
3196         (vectorizable_load): Don't call copy_virtual_operands(). 
3197         (update_vuses_to_preheader): Remove.
3198
3199 2007-08-08  Chao-ying Fu  <fu@mips.com>
3200
3201         * tree.def (FIXED_POINT_TYPE): New type.
3202         (FIXED_CST): New constant.
3203         (FIXED_CONVERT_EXPR): New expr.
3204         * doc/c-tree.texi (Types): Document FIXED_POINT_TYPE.
3205         (Expressions): Document FIXED_CST and FIXED_CONVERT_EXPR.
3206         * tree.h (struct tree_base): Add saturating_flag.
3207         Remove one bit of spare for saturating_flag.
3208         (NUMERICAL_TYPE_CHECK): Support FIXED_POINT_TYPE.
3209         (NON_SAT_FIXED_POINT_TYPE_P, SAT_FIXED_POINT_TYPE_P,
3210         FIXED_POINT_TYPE_P): Define.
3211         (TYPE_SATURATING): Define.
3212         (TREE_FIXED_CST_PTR, TREE_FIXED_CST): Define.
3213         (struct tree_fixed_cst): New.
3214         (TYPE_IBIT, TYPE_FBIT): Define.
3215         (tree_node): Add fixed_cst.
3216         (enum tree_index): Add new enumeration values of
3217         TI_SAT_SFRACT_TYPE, TI_SAT_FRACT_TYPE, TI_SAT_LFRACT_TYPE,
3218         TI_SAT_LLFRACT_TYPE, TI_SAT_USFRACT_TYPE, TI_SAT_UFRACT_TYPE,
3219         TI_SAT_ULFRACT_TYPE, TI_SAT_ULLFRACT_TYPE, TI_SFRACT_TYPE,
3220         TI_FRACT_TYPE, TI_LFRACT_TYPE, TI_LLFRACT_TYPE, TI_USFRACT_TYPE,
3221         TI_UFRACT_TYPE, TI_ULFRACT_TYPE, TI_ULLFRACT_TYPE,
3222         TI_SAT_SACCUM_TYPE, TI_SAT_ACCUM_TYPE, TI_SAT_LACCUM_TYPE,
3223         TI_SAT_LLACCUM_TYPE, TI_SAT_USACCUM_TYPE, TI_SAT_UACCUM_TYPE,
3224         TI_SAT_ULACCUM_TYPE, TI_SAT_ULLACCUM_TYPE, TI_SACCUM_TYPE,
3225         TI_ACCUM_TYPE, TI_LACCUM_TYPE, TI_LLACCUM_TYPE, TI_USACCUM_TYPE,
3226         TI_UACCUM_TYPE, TI_ULACCUM_TYPE, TI_ULLACCUM_TYPE,
3227         TI_QQ_TYPE, TI_HQ_TYPE,_TYPE, TI_SQ_TYPE, TI_DQ_TYPE, TI_TQ_TYPE,
3228         TI_UQQ_TYPE, TI_UHQ_TYPE, TI_USQ_TYPE, TI_UDQ_TYPE, TI_UTQ_TYPE,
3229         TI_SAT_QQ_TYPE, TI_SAT_HQ_TYPE, TI_SAT_SQ_TYPE, TI_SAT_DQ_TYPE,
3230         TI_SAT_TQ_TYPE, TI_SAT_UQQ_TYPE, TI_SAT_UHQ_TYPE, TI_SAT_USQ_TYPE,
3231         TI_SAT_UDQ_TYPE, TI_SAT_UTQ_TYPE, TI_HA_TYPE, TI_SA_TYPE, TI_DA_TYPE,
3232         TI_TA_TYPE, TI_UHA_TYPE, TI_USA_TYPE, TI_UDA_TYPE, TI_UTA_TYPE,
3233         TI_SAT_HA_TYPE, TI_SAT_SA_TYPE, TI_SAT_DA_TYPE, TI_SAT_TA_TYPE,
3234         TI_SAT_UHA_TYPE, TI_SAT_USA_TYPE, TI_SAT_UDA_TYPE, TI_SAT_UTA_TYPE.
3235         (sat_short_fract_type_node, sat_fract_type_node,
3236         sat_long_fract_type_node, sat_long_long_fract_type_node,
3237         sat_unsigned_short_fract_type_node, sat_unsigned_fract_type_node,
3238         sat_unsigned_long_fract_type_node,
3239         sat_unsigned_long_long_fract_type_node, short_fract_type_node,
3240         fract_type_node, long_fract_type_node, long_long_fract_type_node,
3241         unsigned_short_fract_type_node, unsigned_fract_type_node,
3242         unsigned_long_fract_type_node, unsigned_long_long_fract_type_node,
3243         sat_short_accum_type_node, sat_accum_type_node,
3244         sat_long_accum_type_node, sat_long_long_accum_type_node,
3245         sat_unsigned_short_accum_type_node, sat_unsigned_accum_type_node,
3246         sat_unsigned_long_accum_type_node,
3247         sat_unsigned_long_long_accum_type_node, short_accum_type_node,
3248         accum_type_node, long_accum_type_node, long_long_accum_type_node,
3249         unsigned_short_accum_type_node, unsigned_accum_type_node,
3250         unsigned_long_accum_type_node, unsigned_long_long_accum_type_node,
3251         qq_type_node, hq_type_node, sq_type_node, dq_type_node, tq_type_node,
3252         uqq_type_node, uhq_type_node, usq_type_node, udq_type_node,
3253         utq_type_node, sat_qq_type_node, sat_hq_type_node, sat_sq_type_node,
3254         sat_dq_type_node, sat_tq_type_node, sat_uqq_type_node,
3255         sat_uhq_type_node, sat_usq_type_node, sat_udq_type_node,
3256         sat_utq_type_node, ha_type_node, sa_type_node, da_type_node,
3257         ta_type_node, uha_type_node, usa_type_node, uda_type_node,
3258         uta_type_node, sat_ha_type_node, sat_sa_type_node, sat_da_type_node,
3259         sat_ta_type_node, sat_uha_type_node, sat_usa_type_node,
3260         sat_uda_type_node, sat_uta_type_node): New macro.
3261         (make_fract_type, make_accum_type): Declare.
3262         (make_signed_fract_type, make_unsigned_fract_type,
3263         make_sat_signed_fract_type, make_sat_unsigned_fract_type,
3264         make_signed_accum_type, make_unsigned_accum_type,
3265         make_sat_signed_accum_type, make_sat_unsigned_accum_type,
3266         make_or_reuse_signed_fract_type, make_or_reuse_unsigned_fract_type,
3267         make_or_reuse_sat_signed_fract_type,
3268         make_or_reuse_sat_unsigned_fract_type, make_or_reuse_signed_accum_type,
3269         make_or_reuse_unsigned_accum_type, make_or_reuse_sat_signed_accum_type,
3270         make_or_reuse_sat_unsigned_accum_type): New macro.
3271         (fixed_zerop): Declare.
3272         * defaults.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
3273         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
3274         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
3275         LONG_LONG_ACCUM_TYPE_SIZE): Define.
3276         * treestruct.def: Add TS_FIXED_CST.
3277         * Makefile.in (c-pretty-print.o): Add dependence on fixed-value.h.
3278         (tree.o): Likewise.
3279         (tree-dump.o): Likewise.
3280         (print-tree.o): Likewise.
3281         (tree-pretty-print.o): Likewise.
3282         (fold-const.o): Likewise.
3283         * tree-complex.c (some_nonzerop): Handle FIXED_CST.
3284         * tree-gimple.c (is_gimple_formal_tmp_rhs): Handle FIXED_CST.
3285         (is_gimple_min_invariant): Handle FIXED_CST.
3286         * stor-layout.c (int_mode_for_mode): Handle MODE_FRACT, MODE_UFRACT,
3287         MODE_ACCUM, MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
3288         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
3289         (layout_type): Handle FIXED_POINT_TYPE.
3290         (make_fract_type, make_accum_type): New functions.
3291         * tree-browser.c (browse_tree): Handle FIXED_POINT_TYPE.
3292         * tree-dump.c (fixed-value.h): New include.
3293         (dump_fixed): New function.
3294         (dequeue_and_dump): Handle FIXED_POINT_TYPE and FIXED_CST.
3295         * tree-inline.c (remap_type_1): Handle FIXED_POINT_TYPE.
3296         (estimate_num_insns_1): Handle FIXED_CST and FIXED_CONVERT_EXPR.
3297         * tree-pretty-print.c (fixed-value.h): New include.
3298         (dump_generic_node): Handle FIXED_POINT_TYPE, FIXED_CST, and
3299         FIXED_CONVERT_EXPR.
3300         * tree-scalar-evolution.c (get_scalar_evolution): Handle FIXED_CST.
3301         * tree-ssa-loop-im.c (for_each_index): Handle FIXED_CST.
3302         * tree-ssa-pre.c (poolify_tree): Handle FIXED_CST.
3303         * tree-ssa-reassoc.c (break_up_subtract_bb): We can do reassociation
3304         for non-saturating fixed-point types.
3305         (reassociate_bb): Likewise.
3306         * emit-rtl.c (fixed-value.h): New include.
3307         (fconst0, fconst1): New array.
3308         (init_emit_once): Initialize fconst0 and fconst1 for fixed-point modes.
3309         * tree-vect-generic.c expand_vector_operation): Support
3310         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, and
3311         MODE_VECTOR_UACCUM.
3312         (type_for_widest_vector_mode): Add one parameter for the 
3313         saturating flag.
3314         Check scalar FRACT, UFRACT, ACCUM, and UACCUM mode to select their
3315         vector mode.
3316         Pass the satp parameter to type_for_mode for fixed-point types.
3317         (expand_vector_operations_1): Pass the saturating flag to
3318         type_for_widest_vector_mode.
3319         Support MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
3320         and MODE_VECTOR_UACCUM.
3321         * tree-vect-transform.c (vect_is_simple_cond): Support FIXED_CST.
3322         (vectorizable_condition): Likewise.
3323         * tree.c (fixed-value.h): New include.
3324         (tree_code_size): Support FIXED_CST.
3325         (build_fixed): New function.
3326         (build_one_cst): Support FIXED_POINT_TYPE for accum types.
3327         (fixed_zerop): New function.
3328         (tree_node_structure): Support FIXED_CST.
3329         (type_contains_placeholder_1): Support FIXED_POINT_TYPE.
3330         (build_type_attribute_qual_variant): Handle FIXED_POINT_TYPE.
3331         (type_hash_eq): Handle FIXED_POINT_TYPE.
3332         (simple_cst_equal): Support FIXED_CST.
3333         (iterative_hash_expr): Handle FIXED_CST.
3334         (get_unwidened): Make sure type is not FIXED_POINT_TYPE.
3335         (get_narrower): Likewise.
3336         (variably_modified_type_p): Handle FIXED_POINT_TYPE.
3337         (make_or_reuse_fract_type, make_or_reuse_accum_type): New functions.
3338         (build_common_tree_nodes_2): Use MAKE_FIXED_TYPE_NODE_FAMILY and
3339         MAKE_FIXED_MODE_NODE macros to initialize fixed-point type
3340         nodes.
3341         (build_vector_type_for_mode): Handle MODE_VECTOR_FRACT,
3342         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
3343         (initializer_zerop): Support FIXED_CST.
3344         (walk_tree): Handle FIXED_CST and FIXED_POINT_TYPE.
3345         * dwarf2out.c (base_type_die): Use DW_ATE_signed_fixed or
3346         DW_ATE_unsigned_fixed to describe FIXED_POINT_TYPE.
3347         (is_base_type): Handle FIXED_POINT_TYPE.
3348         (add_type_attribute): Handle FIXED_POINT_TYPE.
3349         (gen_type_die_with_usage): Handle FIXED_POINT_TYPE.
3350         * print-tree.c (fixed-value.h): New include.
3351         (print_node_brief): Support FIXED_CST.
3352         (print_node): Support FIXED_POINT_TYPE and FIXED_CST.
3353         * c-pretty-print.c (fixed-value.h): New include.
3354         (pp_c_type_specifier): Handle FIXED_POINT_TYPE.  Need to pass
3355         TYPE_SATURATING to c_common_type_for_mode for fixed-point modes.
3356         (pp_c_direct_abstract_declarator): Handle FIXED_POINT_TYPE.
3357         Support fixed-point types for inner items in VECTOR_TYPE.
3358         (pp_c_direct_declarator): Likewise.
3359         (pp_c_declarator): Likewise.
3360         (pp_c_fixed_constant): New function.
3361         (pp_c_constant): Handle FIXED_CST.
3362         (pp_c_primary_expression): Likewise.
3363         (pp_c_expression): Likewise.
3364         * fold-const.c (fixed-value.h): New include.
3365         (negate_expr_p): Return true for FIXED_CST.
3366         (fold_negate_expr): Support FIXED_CST.
3367         (split_tree): Support FIXED_CST.
3368         (const_binop): Support FIXED_CST.
3369         (fold_convert_const_int_from_fixed): New function to convert from
3370         fixed to int.
3371         (fold_convert_const_real_from_fixed): New function to convert from
3372         fixed to real.
3373         (fold_convert_const_fixed_from_fixed): New function to convert from
3374         fixed to another fixed.
3375         (fold_convert_const_fixed_from_int): New function to convert from
3376         int to fixed.
3377         (fold_convert_const_fixed_from_real): New function to convert from
3378         real to fixed.
3379         (fold_convert_const): Support conversions from fixed to int, from
3380         fixed to real, from fixed to fixed, from int to fixed, and from real
3381         to fixed.
3382         (fold_convert): Support FIXED_CST and FIXED_POINT_TYPE.
3383         (operand_equal_p): Support FIXED_CST.
3384         (make_range): For fixed-point modes, we need to pass the
3385         saturating flag as the 2nd parameter.
3386         (tree_swap_operands_p): Handle FIXED_CST.
3387         (fold_plusminus_mult_expr): For fract modes, we cannot generate
3388         constant 1.
3389         (fold_unary): Support FIXED_CONVERT_EXPR.
3390         (fold_binary): Handle FIXED_CST.
3391         Make sure the type is not saturating, before associating operations.
3392         Ex: A + B + C, A * B * C, (A1 * C1) +/- (A2 * C2).
3393         (tree_expr_nonnegative_warnv_p): Handle FIXED_CST.
3394         (fold_negate_const): Support FIXED_CST.
3395         (fold_relational_const): Support FIXED_CST.
3396         * gimplify.c (omp_firstprivatize_type_sizes): Handle FIXED_POINT_TYPE.
3397         (gimplify_expr): Handle FIXED_CST.
3398         (gimplify_type_sizes): Handle FIXED_POINT_TYPE.
3399         * ipa-prop.c (ipa_callsite_compute_param): Support FIXED_CST.
3400         * ipa-type-escape.c (type_to_consider): Handle FIXED_POINT_TYPE.
3401         * doc/tm.texi (Type Layout): Document SHORT_FRACT_TYPE_SIZE,
3402         FRACT_TYPE_SIZE, LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
3403         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
3404         LONG_LONG_ACCUM_TYPE_SIZE.
3405         * dbxout.c (dbxout_type): Handle FIXED_POINT_TYPE.
3406         * c-aux-info.c (gen_type): Handle FIXED_POINT_TYPE.
3407         * tree-sra.c (is_sra_scalar_type): Support FIXED_POINT_TYPE.
3408         * expmed.c (extract_bit_field): Support MODE_FRACT, MODE_UFRACT,
3409         MODE_ACCUM, and MODE_UACCUM.
3410         * tree-vectorizer.c (vect_is_simple_reduction): Check for saturating
3411         fixed-point types to disable reduction.
3412         * explow.c (promote_mode): Support FIXED_POINT_TYPE.
3413
3414 2007-08-08  David Edelsohn  <edelsohn@gnu.org>
3415
3416         * config/rs6000/x-rs6000: New file.
3417         * config/rs6000/darwin.h (CC1_SPEC): Add cc1_cpu.
3418         * config/rs6000/rs6000.h (EXTRA_SPECS): Add cc1_cpu.
3419         (EXTRA_SPEC_FUNCTIONS): Define.
3420         (HAVE_LOCAL_CPU_DETECT): Define.
3421         (CC1_CPU_SPEC): Define.
3422         * config/rs6000/driver-rs6000.c: New file.
3423         * config/rs6000/aix.h (CC1_SPEC): Define.
3424         * config/rs6000/sysv4.h (CC1_SPEC): Add cc1_cpu.
3425         * config.host: Add x-rs6000 to host_xmake_file if host and target
3426         are rs6000 or powerpc.
3427
3428 2007-08-08  Paolo Bonzini <paolo.bonzini@lu.unisi.ch>
3429
3430         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Use +=.
3431
3432 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
3433             Sandra Loosemore  <sandra@codesourcery.com>
3434             Chao-ying Fu  <fu@mips.com>
3435             Nigel Stephens  <nigel@mips.com>
3436             David Ung  <davidu@mips.com>
3437
3438         * doc/invoke.texi (-mcode-readable): Document.
3439         * config/mips/mips.opt (mcode-readable): New option.
3440         * config/mips/mips-protos.h (SYMBOL_32_HIGH): New symbol type.
3441         * config/mips/mips.h (mips_code_readable_setting): New enum.
3442         (mips_code_readable): Declare.
3443         (TARGET_MIPS16_TEXT_LOADS, TARGET_MIPS16_PCREL_LOADS): New macros.
3444         (TARGET_MIPS16_SHORT_JUMP_TABLES): New macro.
3445         (JUMP_TABLES_IN_TEXT_SECTION): Use it.
3446         (CASE_VECTOR_MODE, CASE_VECTOR_PC_RELATIVE): Likewise.  Remove
3447         boiler-plate comments.
3448         (ASM_OUTPUT_ADDR_DIFF_ELT): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
3449         * config/mips/mips.c (mips_code_readable): New variable.
3450         (mips_classify_symbol): Only return SYMBOL_PC_RELATIVE for
3451         MIPS16 labels if TARGET_MIPS16_SHORT_JUMP_TABLES.  Use both the
3452         context and -mcode-readable setting to restrict the use of
3453         SYMBOL_PC_RELATIVE for MIPS16 constant pool references.
3454         Only return TARGET_FORCE_TO_MEM if PC-relative loads are allowed.
3455         (mips_symbolic_constant_p): Handle SYMBOL_32_HIGH.
3456         (mips_blocks_for_constant_p): Only return false for
3457         TARGET_MIPS16_PCREL_LOADS.
3458         (mips_symbol_insns_1): Treat HIGHs as 2 extended instructions
3459         for MIPS16.  Handle SYMBOL_32_HIGH.
3460         (mips_const_insns): Allow HIGHs for MIPS16 too.
3461         (mips_unspec_address_offset): New function, split out from...
3462         (mips_unspec_address): ...here.
3463         (mips_output_move): Handle MIPS16 HIGH moves.  Use "li" to load
3464         16-bit symbolic constants.  Assert approropiate conditions for
3465         using the "la" and "dla" macros.
3466         (mips_handle_option): Handle -mcode-readable=.
3467         (override_options): Use %hi/%lo relocations for TARGET_MIPS16 too.
3468         Set up mips_lo_relocs[SYMBOL_32_HIGH].
3469         (mips_strip_unspec_address): New function, split out from...
3470         (print_operand_reloc): ...here.
3471         (print_operand): Pass constants through mips_strip_unspec_address.
3472         (print_operand_address): Likewise.
3473         (mips_output_mi_thunk): Remove guard of mips16_lay_out_constants.
3474         (mips_select_rtx_section): Remove MIPS16 handling.
3475         (mips16_gp_pseudo_reg): Check currently_expanding_to_rtl.
3476         (mips16_rewrite_pool_refs): Wrap the labels in an address UNSPEC.
3477         (mips16_lay_out_constants): Do nothing unless
3478         TARGET_MIPS16_PCREL_LOADS.
3479         (mips_avoid_hazards): Remove guard of mips16_lay_out_constants.
3480         * config/mips/mips.md: Split HIGHs for MIPS16.
3481         (tablejump): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
3482
3483 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
3484
3485         * config/mips/mips-protos.h (mips_emit_move): Declare.
3486         * config/mips/mips.c (mips_emit_move): New function.
3487         (mips_force_temporary): Use mips_emit_move instead of emit_move_insn.
3488         (mips_legitimize_const_move): Likewise.
3489         (mips_legitimize_move): Likewise.
3490         (mips_split_64bit_move): Likewise.
3491         (mips_restore_gp): Likewise.
3492         (mips_load_call_address): Likewise.
3493         (mips_emit_fcc_reload): Likewise.
3494         (mips_set_return_address): Likewise.
3495         (mips_block_move_straight): Likewise.
3496         (mips_block_move_loop): Likewise.
3497         (mips_setup_incoming_varargs): Likewise.
3498         (mips_save_reg): Likewise.
3499         (mips_expand_prologue): Likewise.
3500         (mips_restore_reg): Likewise.
3501         (mips_expand_epilogue): Likewise.
3502         (mips_output_mi_thunk): Likewise.
3503         (build_mips16_call_stub): Likewise.
3504         (mips_builtin_branch_and_move): Likewise.
3505         * config/mips/mips.h (INITIALIZE_TRAMPOLINE): Likewise.
3506         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
3507         (fixuns_truncdfdi2): Likewise.
3508         (fixuns_truncsfsi2): Likewise.
3509         (fixuns_truncsfdi2): Likewise.
3510         (loadgp_absolute): Likewise.
3511         (builtin_setjmp_setup): Likewise.
3512         (builtin_longjmp): Likewise.
3513         (untyped_call): Likewise.
3514
3515 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
3516
3517         * config/mips/mips-protos.h (mips_split_symbol): Add a mode and
3518         an "rtx *" argument.  Return a bool.
3519         * config/mips/mips.c (mips_split_symbol): Accept arbitrary source
3520         values and return true if they can be split.  Take the same kind of
3521         mode argument as mips_symbol_insns.  Add a "lo_sum_out" parameter
3522         and store the lo_sum there if nonnull.  Use the symbol type to
3523         determine whether a $gp or HIGH is needed.
3524         (mips_legitimize_address): Update call to mips_split_symbol and
3525         simplify accordingly.
3526         (mips_legitimize_const_move): Likewise.
3527         * config/mips/mips.md: In the combine define_split,
3528         check mips_split_symbol instead of splittable_symbolic_operand.
3529         Update use of mips_split_symbol in the generator code.
3530         * config/mips/predicates.md (splittable_symbolic_operand): Delete.
3531
3532 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
3533
3534         * config/mips/mips.c (mips_symbolic_address_p): Delete.
3535         (mips_symbol_insns_1): New function, split out from...
3536         (mips_symbol_insns): ...here.  Take a mode argument.  Treat loads
3537         and stores separately from load addresses.
3538         (mips_classify_address): Replace uses of mips_symbolic_address_p
3539         with uses of mips_symbol_insns.
3540         (mips_address_insns): Update calls to mips_symbol_insns.
3541         (mips_const_insns): Likewise.
3542         (mips_legitimize_address): Likewise.
3543
3544 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
3545
3546         * config/mips/mips-protos.h (SYMBOL_FORCE_TO_MEM): New symbol type.
3547         * config/mips/mips.c (mips_classify_symbol): Skip TARGET_ABICALLS
3548         block for locally-binding symbols if TARGET_ABSOLUTE_ABICALLS.
3549         Return SYMBOL_FORCE_TO_MEM instead of SYMBOL_ABSOLUTE for
3550         non-call contexts if TARGET_MIPS16.
3551         (mips_symbolic_constant_p): Handle SYMBOL_FORCE_TO_MEM.
3552         (mips_symbolic_address_p): Likewise.  Remove special TARGET_MIPS16
3553         code for SYMBOL_ABSOLUTE.
3554         (mips_symbol_insns): Likewise.
3555
3556 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
3557
3558         * config/mips/mips-protos.h (mips_symbol_context): New enumeration.
3559         * config/mips/mips.c (mips_classify_symbol): Take a context argument.
3560         (mips_symbolic_constant_p): Likewise.  Update the call to
3561         mips_classify_symbol.
3562         (mips_classify_address): Update the calls to mips_symbolic_constant_p.
3563         (mips_const_insns): Likewise.  Update the call to mips_classify_symbol.
3564         (mips_legitimize_address): Update the call to mips_symbolic_constant_p.
3565         (print_operand_reloc): Add a context argument.  Update the call to
3566         mips_symbolic_constant_p.
3567         (print_operand): Update the calls to print_operand_reloc.
3568         (print_operand_address): Use print_operand_reloc rather than
3569         print_operand.
3570         (mips_rewrite_small_data_p): Add a context argument.  Update the call
3571         to mips_symbolic_constant_p.
3572         (mips_small_data_pattern_1): Make DATA the containing mem.
3573         Update the call to mips_rewrite_small_data_p.
3574         (mips_rewrite_small_data_1): Likewise.
3575         (mips_use_anchors_for_symbol_p): Update the call to
3576         mips_symbolic_constant_p.
3577         * config/mips/predicates.md (const_call_insn_operand): Likewise.
3578         (splittable_symbolic_operand): Likewise.
3579         (move_operand): Likewise.
3580         (absolute_symbolic_operand): Likewise.
3581         (got_disp_operand): Likewise.
3582         (got_page_ofst_operand): Likewise.
3583
3584 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
3585
3586         * config/mips/mips-protos.h (SYMBOL_GENERAL): Rename to...
3587         (SYMBOL_ABSOLUTE): ...this.
3588         (SYMBOL_SMALL_DATA): Rename to...
3589         (SYMBOL_GP_RELATIVE): ...this.
3590         (SYMBOL_CONSTANT_POOL): Rename to...
3591         (SYMBOL_PC_RELATIVE): ...this.
3592         * config/mips/mips.c (mips_classify_symbol, mips_symbolic_constant_p)
3593         (mips_symbolic_address_p, mips_symbol_insns, override_options)
3594         (mips_rewrite_small_data_p, mips_use_anchors_for_symbol_p): Update
3595         after above changes.
3596         * config/mips/predicates.md (const_call_insn_operand): Likewise.
3597         (general_symbolic_operand): Rename to...
3598         (absolute_symbolic_operand): ...this.
3599         * config/mips/mips.md: Update after above changes.
3600
3601 2007-08-08  Vladimir Yanovsky  <yanov@il.ibm.com>
3602             Revital Eres  <eres@il.ibm.com>
3603
3604         * ddg.c (print_ddg): Add dump information.
3605         * modulo-sched.c (print_node_sched_params): Add parameter and
3606         verbosity.
3607         (calculate_maxii): Remove function.
3608         (undo_generate_reg_moves): Likewise.
3609         (undo_permute_partial_schedule): Likewise.
3610         (kernel_number_of_cycles): Likewise.
3611         (MAXII_FACTOR): New definition to calculate the upper bound of II.
3612         (sms_schedule): Use it.  Remove profitability checks.
3613         (sms_schedule_by_order): Fix order of nodes within the cycle.
3614
3615 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
3616
3617         * config/i386/gnu.h (STARTFILE_SPEC): Use gcrt0.o in profile mode, add
3618         -profile option, add pie support.
3619         (ENDFILE_SPEC): New spec.
3620         * config/gnu.h (LIB_SPEC): Add -profile option.
3621
3622 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
3623
3624         * config/i386/gnu.h (CPP_SPEC): Add -pthread option.
3625         * config/gnu.h (LIB_SPEC): Likewise.
3626
3627 2007-08-07  Yaz Saito  <saito@google.com>
3628             Ian Lance Taylor  <iant@google.com>
3629
3630         * common.opt (finstrument-functions-exclude-function-list): New
3631         option.
3632         (finstrument-functions-exclude-file-list): New option.
3633         * opts.c (char_p): Define and DEF_VEC.
3634         (flag_instrument_functions_exclude_functions): New static
3635         variable.
3636         (flag_instrument_functions_exclude_files): New static variable.
3637         (add_instrument_functions_exclude_list): New static function.
3638         (flag_instrument_functions_exclude_p): New function.
3639         (common_handle_option): Handle new options.
3640         * flags.h (flag_instrument_functions_exclude_p): Declare.
3641         * gimplify.c (gimplify_function_tree): Call
3642         flag_instrument_functions_exclude_p.
3643         * doc/invoke.texi (Option Summary): Mention new options.
3644         (Code Gen Options): Document new options.
3645
3646 2007-08-07  Ian Lance Taylor  <iant@google.com>
3647
3648         PR rtl-optimization/32776
3649         * lower-subreg.c (resolve_clobber): Call resolve_reg_notes.
3650         (resolve_use): Likewise.
3651         (decompose_multiword_subregs): Remove "changed" local variable.
3652
3653 2007-08-07  Carlos O'Donell  <carlos@codesourcery.com>
3654
3655         * configure.ac: Define HAVE_GNU_AS if $gas_flag is yes.
3656         * configure: Regenerate.
3657         * config.in: Regenerate.
3658         * gcc.c [HAVE_GNU_AS]: Add "%{v} %{w:-W} %{I*} " to asm_options
3659         spec string.
3660
3661 2007-08-07  Ian Lance Taylor  <iant@google.com>
3662
3663         * lower-subreg.c (resolve_clobber): If the clobber has a LIBCALL
3664         note, just delete the insn.
3665
3666 2007-08-07  Andreas Schwab  <schwab@suse.de>
3667
3668         PR bootstrap/32973
3669         * gengtype-lex.l: Ignore backslash/newline pair while scanning a
3670         struct definition.
3671
3672 2007-08-07  Andreas Krebbel  <krebbel1@de.ibm.com>
3673
3674         * lower-subreg.c (resolve_subreg_use): Remove assertion.
3675         (find_decomposable_shift_zext, resolve_shift_zext): New functions.
3676         (decompose_multiword_subregs): Use the functions above to decompose
3677         multiword shifts and zero-extends.
3678
3679 2007-08-07  Rask Ingemann Lambertsen  <rask@sygehus.dk>
3680
3681         * doc/sourcebuild.texi (Test Directives): Fix "compile" and
3682         "assemble" descriptions which were swapped.
3683
3684 2007-08-06  Chao-ying Fu  <fu@mips.com>
3685
3686         * fixed-value.h: New file.
3687         * fixed-value.c: New file.
3688         * Makefile.in (OBJS-common): Add fixed-value.o.
3689         (fixed-value.o): New rule.
3690         (GTFILES): Add fixed-value.h.
3691         * double-int.c (double_int_scmp): We should use unsigned HOST_WIDE_INT
3692         to compare a.low and b.low.
3693         * gengtype.c (main): Handle FIXED_VALUE_TYPE type as scalar typedef.
3694
3695 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
3696             Daniel Jacobowitz  <dan@codesourcery.com>
3697
3698         PR target/31868
3699         * config.gcc (x86_64-*-freebsd*): Add i386/t-crtstuff to
3700         tmake_file.
3701         (x86_64-*-netbsd*): Likewise.
3702         (x86_64-*-linux*): Likewise.
3703         (x86_64-*-kfreebsd*-gnu): Likewise.
3704         (x86_64-*-knetbsd*-gnu): Likewise.
3705         (i[34567]86-*-solaris2.1[0-9]*): Likewise.
3706
3707         * config/i386/t-linux64 (CRTSTUFF_T_CFLAGS): Removed.
3708
3709         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Update comments.
3710         Add -fno-asynchronous-unwind-tables.
3711
3712         * config/t-freebsd (CRTSTUFF_T_CFLAGS_S): Add $(CRTSTUFF_T_CFLAGS).
3713         * config/t-libc-ok (CRTSTUFF_T_CFLAGS_S): Likewise.
3714         * config/t-lynx (CRTSTUFF_T_CFLAGS_S): Likewise.
3715         * config/t-netbsd (CRTSTUFF_T_CFLAGS_S): Likewise.
3716         * config/t-svr4 (CRTSTUFF_T_CFLAGS_S): Likewise.
3717
3718 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
3719
3720         * config/ia64/ia64.c (ia64_c_mode_for_suffix): New.
3721         (TARGET_C_MODE_FOR_SUFFIX): New.
3722
3723 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
3724
3725         * config/ia64/div.md (m2subrf4_cond): Change 'g' to 'G'.
3726
3727 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
3728
3729         * config/ia64/ia64.h (MODES_TIEABLE_P): Fix typo.
3730
3731 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
3732
3733         * config/i386/i386.md: Check TARGET_ macros and optimize_size
3734         before checking function returns in conditional expressions.
3735
3736 2007-08-06  Alfred Minarik  <a.minarik@aon.at>
3737
3738         PR pch/13676
3739         * doc/invoke.texi: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
3740
3741 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3742
3743         PR middle-end/32988
3744         * tree.c (build2_stat): Instead of checking for INTEGER_TYPE, check
3745         for INTEGRAL_TYPE_P.
3746
3747 2008-08-05  Paolo Bonzini  <bonzini@gnu.org>
3748
3749         * configure.ac: Remove --enable-checking=df from default settings.
3750         * tree-pass.h (TODO_df_verify): New.  Shift TODO_mark_first_instance.
3751         * df-core.c (df_finish_pass) [ENABLE_CHECKING]: Schedule verification
3752         if the parameter is true.
3753         (df_analyze) [!ENABLE_DF_CHECKING]: Also do verification if the
3754         DF_VERIFY_SCHEDULED flag is true.
3755         * df.h (enum df_changeable_flags): Add DF_VERIFY_SCHEDULED.
3756         (df_finish_pass): Adjust prototype.
3757         * passes.c (execute_todo): Schedule verification if TODO_df_verify is
3758         true.
3759
3760         * see.c (pass_see): Add TODO_df_verify.
3761         * loop-init.c (pass_rtl_move_loop_invariants): Add TODO_df_verify.
3762         * global.c (rest_of_handle_global_alloc): Schedule verification
3763         after the pass.
3764         * local-alloc.c (rest_of_handle_local_alloc): Schedule verification
3765         before the pass.
3766         * function.c (pass_thread_prologue_and_epilogue): Add TODO_df_verify.
3767         * gcse.c (rest_of_handle_gcse): Adjust call to df_finish_pass.
3768         * loop-iv.c (iv_analysis_done): Schedule verification after the pass.
3769
3770         * config/sh/sh.c (sh_output_mi_thunk): Remove dead code.
3771         * config/ia64/ia64.c (ia64_reorg): Adjust call to df_finish_pass.
3772         * config/bfin/bfin.c (bfin_reorg): Adjust call to df_finish_pass.
3773
3774 2007-08-05  Vladimir Yanovsky  <yanov@il.ibm.com>
3775             Revital Eres <eres@il.ibm.com>
3776
3777         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Document new
3778         flag.
3779         * ddg.c (create_ddg_dependence): Rename to...
3780         (create_ddg_dep_from_intra_loop_link): This.  Do not check
3781         for interloop edges.  Do not create anti dependence edge when
3782         a true dependence edge exists in the opposite direction and
3783         -fmodulo-sched-allow-regmoves is set.
3784         (build_intra_loop_deps): Call create_ddg_dep_from_intra_loop_link.
3785         (add_cross_iteration_register_deps): Create anti dependence edge
3786         when -fno-modulo-sched-allow-regmoves is set.
3787         * common.opt (-fmodulo-sched-allow-regmoves): New flag.
3788
3789 2007-08-04  Richard Sandiford  <richard@codesourcery.com>
3790
3791         * config/arm/arm.md (movsi): Add braces.
3792
3793 2007-08-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3794
3795         PR middle-end/32780
3796         * fold-const.c (fold_binary <case MINUS_EXPR>): Fix the type of
3797         operands for the folding of "A - (A & B)" into "~B & A"; cast them
3798         to type.
3799
3800 2007-08-03  Zdenek Dvorak  <ook@ucw.cz>
3801
3802         * tree-ssa-threadupdate.c (thread_through_all_blocks): Use loops'
3803         state accessor functions.
3804         * cfgloopmanip.c (remove_path, create_preheaders,
3805         force_single_succ_latches, fix_loop_structure): Ditto.
3806         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
3807         tree_duplicate_loop_to_header_edge): Ditto.
3808         * cfgloopanal.c (mark_irreducible_loops): Ditto.
3809         * loop-init.c (loop_optimizer_init, loop_optimizer_finalize):
3810         Ditto.
3811         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures,
3812         cleanup_tree_cfg): Ditto.
3813         * tree-cfg.c (tree_merge_blocks): Ditto.
3814         * cfgloop.c (rescan_loop_exit, record_loop_exits,
3815         release_recorded_exits, get_loop_exit_edges, verify_loop_structure,
3816         loop_preheader_edge, single_exit): Ditto.
3817         (flow_loops_find): Do not clear loops->state.
3818         * cfgloop.h (loops_state_satisfies_p, loops_state_set,
3819         loops_state_clear): New functions.
3820
3821 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3822
3823         PR middle-end/32399
3824         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
3825         when adding to the base and convert ELT to sizetype instead of type.
3826
3827 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3828
3829         PR middle-end/32304
3830         * ipa-reference.c (has_proper_scope_for_analysis): Return false when
3831         the decl's type has TYPE_NEEDS_CONSTRUCTING set.
3832
3833 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3834
3835         PR middle-end/32935
3836         * fold-convert.c (fold_negate_expr <NOP_EXPR>): Convert back to the
3837          correct type the negate expression.
3838
3839 2007-08-03  Jan Hubicka  <jh@suse.cz>
3840
3841         * i386.c (setup_incoming_varargs_64): Tolerate 64bit preferred
3842         stack boundary.
3843
3844 2007-08-03  David Edelsohn  <edelsohn@gnu.org>
3845
3846         * config/rs6000/rs6000.c (struct processor_cost): Change
3847         l1_cache_lines to l1_cache_size.  Add l2_cache_size.
3848         (*_cost): Convert l1 cache information to kilobytes.  Add l2 cache
3849         information.
3850         (rios1_costs, rios2_cost): Correct cache line size.
3851         (rs6000_override_options): Set l2-cache-size parameter.
3852
3853 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3854             Diego Novillo  <dnovillo@google.com>
3855
3856         PR 31521
3857         * tree-vrp.c (simplify_div_or_mod_using_ranges): Also simplify
3858         if the range includes 0.
3859
3860 2007-08-03  Ben Elliston  <bje@au.ibm.com>
3861
3862         * config/spu/spu.md (dftsv, dftsv_celledp): Attach the appropriate
3863         mode to unspec expressions to silence a warning from the generator
3864         programs.
3865         
3866 2007-08-02  Steve Ellcey  <sje@cup.hp.com>
3867
3868         * config/ia64/constraints.md ("U"): Make constraint vector only.
3869
3870 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
3871
3872         PR middle-end/25446
3873         * c-objc-common.c (c_cannot_inline_tree_fn): Check for an
3874         always_inline attribute on the function decl.
3875
3876 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
3877
3878         PR middle-end/25445
3879         * varasm.c (default_binds_local_p_1): Consult flag_whole_program
3880         if we are compiling with -fPIC.
3881
3882 2007-08-02  Sandra Loosemore  <sandra@codesourcery.com>
3883             Nigel Stephens  <nigel@mips.com>
3884
3885         * longlong.h [__mips__] (count_leading_zeros, COUNT_LEADING_ZEROS_0):
3886         Define for MIPS32 and MIPS64.
3887
3888 2007-08-02  Nick Clifton  <nickc@redhat.com>
3889
3890         * config/host-hpux.c: Change copyright header to refer to version
3891         3 of the GNU General Public License and to point readers at the
3892         COPYING3 file and the FSF's license web page.
3893         * config/alpha/predicates.md, config/alpha/vms-ld.c,
3894         config/alpha/linux.h, config/alpha/alpha.opt,
3895         config/alpha/linux-elf.h, config/alpha/vms.h, config/alpha/elf.h,
3896         config/alpha/vms-unwind.h, config/alpha/ev4.md,
3897         config/alpha/ev6.md, config/alpha/alpha.c, config/alpha/vms-cc.c,
3898         config/alpha/alpha.h, config/alpha/sync.md,
3899         config/alpha/openbsd.h, config/alpha/alpha.md,
3900         config/alpha/alpha-modes.def, config/alpha/ev5.md,
3901         config/alpha/alpha-protos.h, config/alpha/freebsd.h,
3902         config/alpha/osf5.h, config/alpha/netbsd.h, config/alpha/vms64.h,
3903         config/alpha/constraints.md, config/alpha/osf.h,
3904         config/alpha/xm-vms.h, config/alpha/unicosmk.h, config/linux.h,
3905         config/frv/predicates.md, config/frv/frv.h, config/frv/linux.h,
3906         config/frv/frv.md, config/frv/frv.opt, config/frv/frv-modes.def,
3907         config/frv/frv-asm.h, config/frv/frv-protos.h,
3908         config/frv/frv-abi.h, config/frv/frv.c, config/s390/tpf.h,
3909         config/s390/s390.c, config/s390/predicates.md, config/s390/s390.h,
3910         config/s390/linux.h, config/s390/tpf.md, config/s390/tpf.opt,
3911         config/s390/2064.md, config/s390/2084.md, config/s390/s390.md,
3912         config/s390/s390.opt, config/s390/s390-modes.def,
3913         config/s390/fixdfdi.h, config/s390/constraints.md,
3914         config/s390/s390-protos.h, config/s390/s390x.h, config/elfos.h,
3915         config/dbxcoff.h, config/m32c/predicates.md, config/m32c/cond.md,
3916         config/m32c/m32c.c, config/m32c/minmax.md, config/m32c/blkmov.md,
3917         config/m32c/m32c-pragma.c, config/m32c/m32c.h,
3918         config/m32c/prologue.md, config/m32c/m32c.abi,
3919         config/m32c/muldiv.md, config/m32c/bitops.md, config/m32c/mov.md,
3920         config/m32c/addsub.md, config/m32c/m32c.md, config/m32c/m32c.opt,
3921         config/m32c/t-m32c, config/m32c/m32c-modes.def,
3922         config/m32c/jump.md, config/m32c/shift.md,
3923         config/m32c/m32c-protos.h, config/libgloss.h,
3924         config/spu/spu-protos.h, config/spu/predicates.md,
3925         config/spu/spu-builtins.h, config/spu/spu.c,
3926         config/spu/spu-builtins.def, config/spu/spu-builtins.md,
3927         config/spu/spu.h, config/spu/spu-elf.h, config/spu/constraints.md,
3928         config/spu/spu.md, config/spu/spu-c.c, config/spu/spu.opt,
3929         config/spu/spu-modes.def, config/spu/t-spu-elf, config/interix.h,
3930         config/sparc/hypersparc.md, config/sparc/predicates.md,
3931         config/sparc/linux.h, config/sparc/sp64-elf.h,
3932         config/sparc/supersparc.md, config/sparc/cypress.md,
3933         config/sparc/openbsd1-64.h, config/sparc/openbsd64.h,
3934         config/sparc/niagara.md, config/sparc/sparc.md,
3935         config/sparc/long-double-switch.opt, config/sparc/ultra3.md,
3936         config/sparc/sparc.opt, config/sparc/sync.md,
3937         config/sparc/sp-elf.h, config/sparc/sparc-protos.h,
3938         config/sparc/ultra1_2.md, config/sparc/biarch64.h,
3939         config/sparc/sparc.c, config/sparc/little-endian.opt,
3940         config/sparc/sysv4-only.h, config/sparc/sparc.h,
3941         config/sparc/linux64.h, config/sparc/freebsd.h,
3942         config/sparc/sol2.h, config/sparc/rtemself.h,
3943         config/sparc/netbsd-elf.h, config/sparc/vxworks.h,
3944         config/sparc/sparc-modes.def, config/sparc/sparclet.md,
3945         config/sparc/sysv4.h, config/vx-common.h, config/netbsd-aout.h,
3946         config/flat.h, config/m32r/m32r.md, config/m32r/predicates.md,
3947         config/m32r/little.h, config/m32r/m32r.c, config/m32r/m32r.opt,
3948         config/m32r/linux.h, config/m32r/constraints.md,
3949         config/m32r/m32r.h, config/m32r/m32r-protos.h, config/vxworks.opt,
3950         config/darwin-c.c, config/darwin.opt, config/i386/i386.h,
3951         config/i386/cygming.h, config/i386/linux.h, config/i386/cygwin.h,
3952         config/i386/i386.md, config/i386/netware-crt0.c,
3953         config/i386/sco5.h, config/i386/mmx.md, config/i386/vx-common.h,
3954         config/i386/kaos-i386.h, config/i386/winnt-stubs.c,
3955         config/i386/netbsd64.h, config/i386/djgpp.h, config/i386/gas.h,
3956         config/i386/sol2.h, config/i386/constraints.md,
3957         config/i386/netware-libgcc.c, config/i386/sysv5.h,
3958         config/i386/predicates.md, config/i386/geode.md,
3959         config/i386/x86-64.h, config/i386/kfreebsd-gnu.h,
3960         config/i386/freebsd64.h, config/i386/vxworksae.h,
3961         config/i386/pentium.md, config/i386/lynx.h, config/i386/i386elf.h,
3962         config/i386/rtemself.h, config/i386/netbsd-elf.h,
3963         config/i386/ppro.md, config/i386/k6.md, config/i386/netware.c,
3964         config/i386/netware.h, config/i386/i386-modes.def,
3965         config/i386/sysv4-cpp.h, config/i386/i386-interix.h,
3966         config/i386/cygwin1.c, config/i386/djgpp.opt, config/i386/uwin.h,
3967         config/i386/unix.h, config/i386/ptx4-i.h, config/i386/xm-djgpp.h,
3968         config/i386/att.h, config/i386/winnt.c, config/i386/beos-elf.h,
3969         config/i386/sol2-10.h, config/i386/darwin64.h, config/i386/sse.md,
3970         config/i386/i386.opt, config/i386/bsd.h, config/i386/cygming.opt,
3971         config/i386/xm-mingw32.h, config/i386/linux64.h,
3972         config/i386/openbsdelf.h, config/i386/xm-cygwin.h,
3973         config/i386/sco5.opt, config/i386/darwin.h, config/i386/mingw32.h,
3974         config/i386/winnt-cxx.c, config/i386/i386-interix3.h,
3975         config/i386/nwld.c, config/i386/nwld.h, config/i386/host-cygwin.c,
3976         config/i386/cygwin2.c, config/i386/i386-protos.h,
3977         config/i386/sync.md, config/i386/openbsd.h,
3978         config/i386/host-mingw32.c, config/i386/i386-aout.h,
3979         config/i386/nto.h, config/i386/biarch64.h,
3980         config/i386/i386-coff.h, config/i386/freebsd.h,
3981         config/i386/driver-i386.c, config/i386/knetbsd-gnu.h,
3982         config/i386/host-i386-darwin.c, config/i386/vxworks.h,
3983         config/i386/crtdll.h, config/i386/i386.c, config/i386/sysv4.h,
3984         config/darwin-protos.h, config/linux.opt, config/sol2.c,
3985         config/sol2.h, config/sh/symbian.c, config/sh/sh-protos.h,
3986         config/sh/linux.h, config/sh/elf.h, config/sh/superh.h,
3987         config/sh/sh4.md, config/sh/coff.h, config/sh/newlib.h,
3988         config/sh/embed-elf.h, config/sh/symbian-pre.h, config/sh/rtems.h,
3989         config/sh/kaos-sh.h, config/sh/sh4a.md, config/sh/constraints.md,
3990         config/sh/sh64.h, config/sh/sh.opt, config/sh/symbian-post.h,
3991         config/sh/sh-c.c, config/sh/predicates.md, config/sh/sh.c,
3992         config/sh/sh.h, config/sh/shmedia.md, config/sh/sh-modes.def,
3993         config/sh/little.h, config/sh/sh1.md, config/sh/sh4-300.md,
3994         config/sh/superh64.h, config/sh/rtemself.h,
3995         config/sh/netbsd-elf.h, config/sh/sh.md, config/sh/vxworks.h,
3996         config/usegas.h, config/svr3.h, config/pdp11/pdp11-protos.h,
3997         config/pdp11/2bsd.h, config/pdp11/pdp11.md, config/pdp11/pdp11.c,
3998         config/pdp11/pdp11.opt, config/pdp11/pdp11-modes.def,
3999         config/pdp11/pdp11.h, config/avr/rtems.h, config/avr/avr-protos.h,
4000         config/avr/predicates.md, config/avr/constraints.md,
4001         config/avr/avr.md, config/avr/avr.c, config/avr/avr.opt,
4002         config/avr/avr.h, config/sol2-protos.h, config/dbxelf.h,
4003         config/lynx.opt, config/crx/crx.h, config/crx/crx-protos.h,
4004         config/crx/crx.md, config/crx/crx.c, config/crx/crx.opt,
4005         config/c4x/c4x-c.c, config/c4x/c4x.c, config/c4x/c4x.opt,
4006         config/c4x/c4x-modes.def, config/c4x/rtems.h,
4007         config/c4x/predicates.md, config/c4x/c4x.h,
4008         config/c4x/c4x-protos.h, config/c4x/c4x.md, config/kfreebsd-gnu.h,
4009         config/xtensa/predicates.md, config/xtensa/xtensa.c,
4010         config/xtensa/linux.h, config/xtensa/xtensa.h,
4011         config/xtensa/elf.h, config/xtensa/xtensa.md,
4012         config/xtensa/xtensa.opt, config/xtensa/constraints.md,
4013         config/xtensa/xtensa-protos.h, config/dbx.h,
4014         config/stormy16/predicates.md, config/stormy16/stormy16.md,
4015         config/stormy16/stormy16.c, config/stormy16/stormy16.opt,
4016         config/stormy16/stormy16.h, config/stormy16/stormy16-protos.h,
4017         config/host-solaris.c, config/fr30/fr30.h,
4018         config/fr30/predicates.md, config/fr30/fr30-protos.h,
4019         config/fr30/fr30.md, config/fr30/fr30.c, config/fr30/fr30.opt,
4020         config/vxworksae.h, config/sol2-c.c, config/lynx.h,
4021         config/m68hc11/m68hc11-protos.h, config/m68hc11/predicates.md,
4022         config/m68hc11/m68hc11.md, config/m68hc11/m68hc11.c,
4023         config/m68hc11/m68hc11.opt, config/m68hc11/m68hc11.h,
4024         config/m68hc11/m68hc12.h, config/openbsd-oldgas.h,
4025         config/host-linux.c, config/interix3.h, config/cris/cris.c,
4026         config/cris/predicates.md, config/cris/linux.h,
4027         config/cris/cris.h, config/cris/aout.h, config/cris/cris.md,
4028         config/cris/linux.opt, config/cris/cris.opt, config/cris/elf.opt,
4029         config/cris/aout.opt, config/cris/cris-protos.h,
4030         config/vxworks-dummy.h, config/netbsd.h, config/netbsd-elf.h,
4031         config/iq2000/iq2000.h, config/iq2000/predicates.md,
4032         config/iq2000/iq2000-protos.h, config/iq2000/iq2000.md,
4033         config/iq2000/iq2000.c, config/iq2000/iq2000.opt,
4034         config/host-darwin.c, config/mt/mt.md, config/mt/mt.c,
4035         config/mt/mt.opt, config/mt/t-mt, config/mt/mt.h,
4036         config/mt/mt-protos.h, config/svr4.h, config/host-darwin.h,
4037         config/chorus.h, config/mn10300/mn10300.c,
4038         config/mn10300/mn10300.opt, config/mn10300/predicates.md,
4039         config/mn10300/mn10300.h, config/mn10300/linux.h,
4040         config/mn10300/constraints.md, config/mn10300/mn10300-protos.h,
4041         config/mn10300/mn10300.md, config/ia64/predicates.md,
4042         config/ia64/itanium1.md, config/ia64/unwind-ia64.h,
4043         config/ia64/ia64-c.c, config/ia64/sync.md, config/ia64/ia64.c,
4044         config/ia64/itanium2.md, config/ia64/ia64.h, config/ia64/vect.md,
4045         config/ia64/freebsd.h, config/ia64/ia64.md,
4046         config/ia64/ia64-modes.def, config/ia64/constraints.md,
4047         config/ia64/hpux.h, config/ia64/ia64-protos.h, config/windiss.h,
4048         config/gofast.h, config/rtems.h, config/sol2-10.h,
4049         config/m68k/predicates.md, config/m68k/m68k.md,
4050         config/m68k/linux.h, config/m68k/m68k-modes.def,
4051         config/m68k/print-sysroot-suffix.sh, config/m68k/m68k-protos.h,
4052         config/m68k/coff.h, config/m68k/m68k-none.h, config/m68k/ieee.opt,
4053         config/m68k/openbsd.h, config/m68k/m68k-aout.h,
4054         config/m68k/m68k.opt, config/m68k/m68020-elf.h,
4055         config/m68k/m68kelf.h, config/m68k/m68k-devices.def,
4056         config/m68k/uclinux-oldabi.h, config/m68k/m68k.c,
4057         config/m68k/constraints.md, config/m68k/rtemself.h,
4058         config/m68k/netbsd-elf.h, config/m68k/m68k.h,
4059         config/m68k/uclinux.h, config/rs6000/power4.md,
4060         config/rs6000/host-darwin.c, config/rs6000/6xx.md,
4061         config/rs6000/linux.h, config/rs6000/eabi.h,
4062         config/rs6000/aix41.opt, config/rs6000/xcoff.h,
4063         config/rs6000/secureplt.h, config/rs6000/linuxspe.h,
4064         config/rs6000/eabialtivec.h, config/rs6000/8540.md,
4065         config/rs6000/darwin8.h, config/rs6000/kaos-ppc.h,
4066         config/rs6000/windiss.h, config/rs6000/603.md,
4067         config/rs6000/aix41.h, config/rs6000/cell.md,
4068         config/rs6000/mpc.md, config/rs6000/aix43.h, config/rs6000/beos.h,
4069         config/rs6000/gnu.h, config/rs6000/rtems.h, config/rs6000/aix.opt,
4070         config/rs6000/darwin.md, config/rs6000/darwin64.h,
4071         config/rs6000/default64.h, config/rs6000/7xx.md,
4072         config/rs6000/darwin.opt, config/rs6000/spe.md,
4073         config/rs6000/rs6000.opt, config/rs6000/rs6000-c.c,
4074         config/rs6000/rios2.md, config/rs6000/linuxaltivec.h,
4075         config/rs6000/7450.md, config/rs6000/linux64.h,
4076         config/rs6000/constraints.md, config/rs6000/440.md,
4077         config/rs6000/darwin.h, config/rs6000/host-ppc64-darwin.c,
4078         config/rs6000/rs6000.c, config/rs6000/aix52.h,
4079         config/rs6000/rs6000.h, config/rs6000/power6.md,
4080         config/rs6000/predicates.md, config/rs6000/altivec.md,
4081         config/rs6000/aix64.opt, config/rs6000/rios1.md,
4082         config/rs6000/rs6000-modes.def, config/rs6000/rs64.md,
4083         config/rs6000/eabisim.h, config/rs6000/sysv4le.h,
4084         config/rs6000/darwin7.h, config/rs6000/dfp.md,
4085         config/rs6000/linux64.opt, config/rs6000/sync.md,
4086         config/rs6000/vxworksae.h, config/rs6000/power5.md,
4087         config/rs6000/lynx.h, config/rs6000/biarch64.h,
4088         config/rs6000/rs6000.md, config/rs6000/sysv4.opt,
4089         config/rs6000/eabispe.h, config/rs6000/e500.h,
4090         config/rs6000/freebsd.h, config/rs6000/rs6000-protos.h,
4091         config/rs6000/netbsd.h, config/rs6000/e500-double.h,
4092         config/rs6000/aix.h, config/rs6000/vxworks.h,
4093         config/rs6000/40x.md, config/rs6000/aix51.h,
4094         config/rs6000/sysv4.h, config/arc/arc-protos.h, config/arc/arc.md,
4095         config/arc/arc.c, config/arc/arc.opt, config/arc/arc-modes.def,
4096         config/arc/arc.h, config/mcore/mcore-elf.h,
4097         config/mcore/mcore-protos.h, config/mcore/predicates.md,
4098         config/mcore/mcore.md, config/mcore/mcore.c,
4099         config/mcore/mcore.opt, config/mcore/mcore.h,
4100         config/mcore/mcore-pe.h, config/darwin.c, config/freebsd-nthr.h,
4101         config/score/predicates.md, config/score/score-version.h,
4102         config/score/score-protos.h, config/score/misc.md,
4103         config/score/elf.h, config/score/score.c, config/score/mac.md,
4104         config/score/score7.md, config/score/score.h,
4105         config/score/score-conv.h, config/score/score-mdaux.c,
4106         config/score/score.md, config/score/score.opt,
4107         config/score/score-modes.def, config/score/score-mdaux.h,
4108         config/score/mul-div.S, config/arm/uclinux-elf.h,
4109         config/arm/semi.h, config/arm/ecos-elf.h, config/arm/arm1020e.md,
4110         config/arm/symbian.h, config/arm/linux-elf.h,
4111         config/arm/arm1026ejs.md, config/arm/arm1136jfs.md,
4112         config/arm/elf.h, config/arm/aout.h, config/arm/arm.c,
4113         config/arm/thumb2.md, config/arm/vec-common.md, config/arm/coff.h,
4114         config/arm/strongarm-pe.h, config/arm/arm.h,
4115         config/arm/cortex-a8-neon.md, config/arm/semiaof.h,
4116         config/arm/cortex-a8.md, config/arm/uclinux-eabi.h,
4117         config/arm/arm-modes.def, config/arm/linux-eabi.h,
4118         config/arm/rtems-elf.h, config/arm/neon-schedgen.ml,
4119         config/arm/arm-cores.def, config/arm/arm-protos.h,
4120         config/arm/vfp.md, config/arm/aof.h, config/arm/linux-gas.h,
4121         config/arm/wince-pe.h, config/arm/neon.md,
4122         config/arm/constraints.md, config/arm/neon.ml,
4123         config/arm/xscale-elf.h, config/arm/strongarm-coff.h,
4124         config/arm/arm.opt, config/arm/arm926ejs.md,
4125         config/arm/predicates.md, config/arm/iwmmxt.md,
4126         config/arm/arm_neon.h, config/arm/unknown-elf.h,
4127         config/arm/kaos-arm.h, config/arm/bpabi.h, config/arm/pe.opt,
4128         config/arm/neon-testgen.ml, config/arm/arm.md,
4129         config/arm/xscale-coff.h, config/arm/pe.c,
4130         config/arm/arm-generic.md, config/arm/pe.h,
4131         config/arm/kaos-strongarm.h, config/arm/freebsd.h,
4132         config/arm/neon-docgen.ml, config/arm/netbsd.h, config/arm/fpa.md,
4133         config/arm/strongarm-elf.h, config/arm/cirrus.md,
4134         config/arm/netbsd-elf.h, config/arm/vxworks.h,
4135         config/arm/neon-gen.ml, config/kaos.h, config/darwin-driver.c,
4136         config/pa/predicates.md, config/pa/pa64-hpux.h,
4137         config/pa/pa-hpux.opt, config/pa/som.h, config/pa/pa-hpux1010.opt,
4138         config/pa/pa-hpux1111.opt, config/pa/pa-pro-end.h,
4139         config/pa/elf.h, config/pa/fptr.c, config/pa/pa64-linux.h,
4140         config/pa/pa.md, config/pa/pa.opt, config/pa/pa-hpux.h,
4141         config/pa/pa-hpux10.h, config/pa/pa-hpux11.h,
4142         config/pa/pa-hpux1010.h, config/pa/pa-protos.h,
4143         config/pa/pa-osf.h, config/pa/pa-hpux1111.h, config/pa/pa-64.h,
4144         config/pa/milli64.S, config/pa/pa.c, config/pa/pa-linux.h,
4145         config/pa/pa.h, config/pa/pa32-linux.h, config/pa/pa64-hpux.opt,
4146         config/pa/pa64-regs.h, config/pa/pa-modes.def,
4147         config/pa/constraints.md, config/darwin9.h, config/mips/4100.md,
4148         config/mips/linux.h, config/mips/elfoabi.h, config/mips/elf.h,
4149         config/mips/sdb.h, config/mips/windiss.h, config/mips/rtems.h,
4150         config/mips/3000.md, config/mips/iris5.h, config/mips/5000.md,
4151         config/mips/7000.md, config/mips/9000.md, config/mips/4600.md,
4152         config/mips/linux64.h, config/mips/elforion.h,
4153         config/mips/constraints.md, config/mips/generic.md,
4154         config/mips/predicates.md, config/mips/4300.md,
4155         config/mips/mips-ps-3d.md, config/mips/iris.h, config/mips/24k.md,
4156         config/mips/mips.md, config/mips/mips.opt, config/mips/4k.md,
4157         config/mips/5k.md, config/mips/vr4120-div.S,
4158         config/mips/openbsd.h, config/mips/iris6.h, config/mips/4000.md,
4159         config/mips/mips-protos.h, config/mips/6000.md,
4160         config/mips/mips.c, config/mips/mips.h, config/mips/r3900.h,
4161         config/mips/74k.md, config/mips/netbsd.h, config/mips/vxworks.h,
4162         config/mips/mips-modes.def, config/mips/vr.h,
4163         config/soft-fp/t-softfp, config/openbsd.h, config/ptx4.h,
4164         config/freebsd-spec.h, config/vax/vax.c, config/vax/openbsd.h,
4165         config/vax/vax.h, config/vax/elf.h, config/vax/vax.md,
4166         config/vax/bsd.h, config/vax/vax.opt, config/vax/vax-modes.def,
4167         config/vax/openbsd1.h, config/vax/netbsd.h,
4168         config/vax/vax-protos.h, config/vax/netbsd-elf.h,
4169         config/vax/vaxv.h, config/vax/ultrix.h, config/freebsd.h,
4170         config/h8300/rtems.h, config/h8300/predicates.md,
4171         config/h8300/h8300.c, config/h8300/h8300.h, config/h8300/elf.h,
4172         config/h8300/h8300.md, config/h8300/h8300.opt,
4173         config/h8300/coff.h, config/h8300/h8300-protos.h,
4174         config/v850/v850.md, config/v850/predicates.md,
4175         config/v850/v850-c.c, config/v850/v850.c, config/v850/v850.opt,
4176         config/v850/v850.h, config/v850/v850-protos.h, config/vxworks.c,
4177         config/knetbsd-gnu.h, config/sol2-6.h, config/vxworks.h,
4178         config/mmix/mmix.h, config/mmix/predicates.md,
4179         config/mmix/mmix-protos.h, config/mmix/mmix.md,
4180         config/mmix/mmix.c, config/mmix/mmix.opt,
4181         config/mmix/mmix-modes.def, config/bfin/bfin.opt,
4182         config/bfin/rtems.h, config/bfin/bfin-modes.def,
4183         config/bfin/predicates.md, config/bfin/bfin-protos.h,
4184         config/bfin/bfin.c, config/bfin/bfin.h, config/bfin/bfin.md:
4185         Likewise.
4186
4187 2007-08-02  Richard Sandiford  <richard@codesourcery.com>
4188
4189         * emit-rtl.c (reset_used_decls): Rename to...
4190         (set_used_decls): ...this.  Set the used flag rather than clearing it.
4191         (unshare_all_rtl_again): Update accordingly.  Set flags on argument
4192         DECL_RTLs rather than resetting them.
4193
4194 2007-08-02  Andreas Krebbel  <krebbel1@de.ibm.com>
4195
4196         * config/s390/s390.md ("*xordi3_cconly"): Change xr to xg.
4197
4198 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
4199
4200         * reload.c (find_reloads_address_part):  Pass correct MEMREFLOC
4201         argument to find_reloads_address.
4202
4203 2007-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
4204
4205         PR tree-optimization/32919
4206         * tree-ssa-sccvn.c (visit_phi): Do not visit abnormal PHIs.
4207         * tree-ssa-coalesce.c (ssa_conflicts_dump): New.
4208         (coalesce_ssa_name): Call it.
4209
4210 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
4211             David Ung  <davidu@mips.com>
4212
4213         * config/mips/mips16.S (__mips16_unordsf2, __mips16_floatunsisf): New.
4214         (__mips16_unorddf2, __mips16_floatunsidf): New.
4215         * config/mips/mips.c (mips_init_libfuncs): Add optab entries for
4216         above functions.
4217         * config/mips/t-libgcc-mips16 (LIB1ASMFUNCS): Add new functions.
4218
4219 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
4220
4221         * tree-pretty-print.c (dump_generic_node): Dump OMP_SECTIONS_SWITCH.
4222         Display new operands of OMP_SECTIONS and OMP_CONTINUE.
4223         * tree.h (OMP_SECTIONS_CONTROL): New macro.
4224         (OMP_DIRECTIVE_P): Add OMP_SECTIONS_SWITCH.
4225         * omp-low.c (get_ws_args_for, determine_parallel_type,
4226         expand_omp_for_generic, expand_omp_for_static_nochunk,
4227         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
4228         Work with more precise CFG.
4229         (build_omp_regions_1): Handle OMP_SECTIONS_SWITCH.
4230         (lower_omp_sections): Emit OMP_SECTIONS_SWITCH.  Add arguments to
4231         OMP_CONTINUE.
4232         * tree-gimple.c (is_gimple_stmt): Handle OMP_SECTIONS_SWITCH.
4233         * gimple-low.c (lower_stmt): Ditto.
4234         * tree-inline.c (estimate_num_insns_1): Ditto.
4235         * tree.def (OMP_SECTIONS, OMP_CONTINUE): Added new operands.
4236         (OMP_SECTIONS_SWITCH): New.
4237         * tree-cfgcleanup.c (cleanup_omp_return): New.
4238         (cleanup_tree_cfg_bb): Call cleanup_omp_return.
4239         * tree-cfg.c (make_edges): Create back edges for OMP_CONTINUE
4240         and exit edge for OMP_FOR.  Handle OMP_SECTIONS_SWITCH.
4241         (tree_redirect_edge_and_branch): Handle omp constructs.
4242
4243         * fortran/trans-openmp.c (gfc_trans_omp_sections): Build OMP_SECTIONS
4244         with three arguments.
4245
4246 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
4247
4248         * tree-cfg.c (tree_merge_blocks): Preserve loop exit phi nodes only
4249         in loop closed ssa.
4250
4251 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
4252
4253         * tree-ssa-threadupdate.c (thread_through_all_blocks): Record that
4254         the loop structures may need fixing.
4255         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures):
4256         New functions.
4257         (cleanup_tree_cfg_loop): Removed.
4258         (cleanup_tree_cfg): If loops need fixing, call repair_loop_structures.
4259         * tree-predcom.c (tree_predictive_commoning): Return TODO_cleanup_cfg
4260         instead of running cleanup_tree_cfg_loop.
4261         * cfgloop.h (LOOPS_NEED_FIXUP): New constant.
4262         * tree-flow.h (cleanup_tree_cfg_loop): Declaration removed.
4263         (tree_predictive_commoning): Declaration changed.
4264         * passes.c (execute_function_todo): Do not use cleanup_tree_cfg_loop.
4265
4266 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
4267
4268         * doc/invoke.texi (l1-cache-size): Update documentation.
4269         (l2-cache-size): Document.
4270         * params.h (L2_CACHE_SIZE): New macro.
4271         * tree-ssa-loop-prefetch.c (L1_CACHE_SIZE_BYTES): Reflect
4272         that L1_CACHE_SIZE is in kB now.
4273         (L2_CACHE_SIZE_BYTES): New macro.
4274         (tree_ssa_prefetch_arrays): Show size in kB.
4275         * config/i386/i386.h (struct processor_costs): Add l1_cache_size
4276         and l2_cache_size fields.
4277         * config/i386/driver-i386.c (describe_cache): Detect cache size
4278         in kB.
4279         * config/i386/i386.c (size_cost, i386_cost, i486_cost,pentium_cost,
4280         pentiumpro_cost, geode_cost, k6_cost, athlon_cost, k8_cost,
4281         amdfam10_cost, pentium4_cost, nocona_cost, core2_cost,
4282         generic64_cost, generic32_cost): Add l1_cache_size and l2_cache_size.
4283         (override_options): Set l1-cache-size and l2-cache-size to default
4284         values if not specified otherwise.
4285         * params.def (PARAM_L1_CACHE_SIZE): Change to set in kB.
4286         (PARAM_L2_CACHE_SIZE): New.
4287
4288 2007-08-01  Nigel Stephens  <nigel@mips.com>
4289             David Ung  <davidu@mips.com>
4290             Thiemo Seufer  <ths@mips.com>
4291             Chris Dearman  <chris@mips.com>
4292             Richard Sandiford  <richard@codesourcery.com>
4293
4294         * config.gcc (mips*-sde-elf*): New stanza.
4295         (mipsisa32-*-elf*, mipsisa32el-*-elf*, mipsisa32r2-*-elf*)
4296         (mipsisa32r2el-*-elf*, mipsisa64-*-elf*, mipsisa64el-*-elf*)
4297         (mipsisa64sb1-*-elf*, mipsisa64sb1el-*-elf*, mips-*-elf*)
4298         (mipsel-*-elf*, mips64-*-elf*, mips64el-*-elf*, mips64orion-*-elf*)
4299         (mips64orionel-*-elf*, mips*-*-rtems*, mips-wrs-windiss)
4300         (mipstx39-*-elf*, mipstx39el-*-elf*): Add mips/t-libgcc-mips16
4301         to tmake_file.
4302         * config/mips/sde.h: New file.
4303         * config/mips/t-libgcc-mips16: Likewise.
4304         * config/mips/t-sde: Likewise.
4305         * config/mips/linux.h (TARGET_OS_CPP_BUILTINS): Remove settings
4306         of _ABIN32, _ABI64, _ABIO32, _MIPS_SIM, _MIPS_SZLONG, _MIPS_SZPTR,
4307         _MIPS_FPSET and _MIPS_SZINT.
4308         * config/mips/iris.h (TARGET_OS_CPP_BUILTINS): Likewise.
4309         * config/mips/elfoabi.h (DRIVER_SELF_SPECS): Remove separate
4310         insertion of a default -mips option.  Use MIPS_32BIT_OPTION_SPEC.
4311         * config/mips/t-isa3264 (LIB1ASMSRC, LIB1ASMFUNCS): Delete.
4312         * config/mips/t-r3900 (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
4313         * config/mips/t-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
4314         * config/mips/mips.h (TARGET_CPU_CPP_BUITINS): Define _ABIO32,
4315         _ABIN32, _ABI64, _ABIO64, _MIPS_SIM, _MIPS_SZINT, _MIPS_SZLONG,
4316         _MIPS_SZPTR and _MIPS_FPSET.
4317         (MIPS_ISA_LEVEL_SPEC): Inject the default -mips option if no
4318         architecture is specified.
4319         (MIPS_32BIT_OPTION_SPEC): New macro.
4320
4321 2007-07-31  Dan Hipschman  <dsh@google.com>
4322
4323         * gcc.c (end_going_arg): New function.
4324         (do_spec_2): Use it.
4325         (do_spec_1): Use it.
4326
4327 2007-07-31  H.J. Lu  <hongjiu.lu@intel.com>
4328
4329         * ddg.c (add_cross_iteration_register_deps): Declare bb_info
4330         only if ENABLE_CHECKING is defined.
4331
4332 2007-07-31  Kenneth Zadeck <zadeck@naturalbridge.com>
4333
4334         * df.h (DF_RU, DF_RU_BB_INFO, df_ru_bb_info, df_ru,
4335         df_ru_add_problem, df_ru_get_bb_info): Removed.
4336         (DF_RD, DF_UREC, DF_CHAIN, DF_NOTE): Renumbered.
4337         * df-problems.c (df_ru_problem_data, df_ru_set_bb_info,
4338         df_ru_free_bb_info, df_ru_alloc,
4339         df_ru_bb_local_compute_process_def,
4340         df_ru_bb_local_compute_process_use, df_ru_bb_local_compute,
4341         df_ru_local_compute, df_ru_init_solution, df_ru_confluence_n,
4342         df_ru_transfer_function, df_ru_free, df_ru_start_dump,
4343         df_ru_top_dump, df_ru_bottom_dump, df_problem problem_RU,
4344         df_ru_add_problem): Removed.
4345
4346 2007-07-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4347
4348         PR target/32847
4349         * pa.md (casesi32): Use match_scratch.  Revise insn condition.
4350         (casesi32p, casesi64p): Likewise.
4351         (casesi): Adjust for above.
4352
4353 2007-07-31  Richard Sandiford  <richard@codesourcery.com>
4354
4355         * mode-switching.c (create_pre_exit): Don't search past calls.
4356
4357 2007-07-31  Sandra Loosemore  <sandra@codesourcery.com>
4358
4359         * config/mips/mips.h (ISA_HAS_SYNCI):  Add !TARGET_MIPS16 test.
4360
4361 2007-07-31  Revital Eres  <eres@il.ibm.com>
4362
4363         * ddg.c (add_deps_for_def): Rename to...
4364         (add_cross_iteration_register_deps): This.  Change implementation
4365         to use only reaching def and def-use chains to construct the
4366         inter loop dependencies.
4367         (add_deps_for_use): Remove function.
4368         (build_inter_loop_deps): Call add_cross_iteration_register_deps
4369         function to build the inter loop dependencies.
4370         * modulo-sched.c (sms_schedule): Build only
4371         reaching def and def-use chains for the propose of the ddg
4372         construction.
4373
4374 2007-07-31  Julian Brown  <julian@codesourcery.com>
4375
4376         * config/arm/neon.md (vec_set<mode>_internal, vec_setv2di_internal):
4377         New define_insns. Use correct RTL.
4378         (vec_set<mode>): Write as expander.
4379
4380 2007-07-31  Razya Ladelsky  <razya@il.ibm.com>
4381
4382         * matrix-reorg.c (analyze_matrix_allocation_site): Avoid referring 
4383         to an unallocated space.
4384
4385 2007-07-30  Jan Sjodin  <jan.sjodin@amd.com>
4386
4387         * tree-data-ref.c
4388         (split_constant_offset): Enable split_constant_offset to extract
4389         constants from other statements.
4390         * tree-vect-transform.c
4391         (vect_create_addr_base_for_vector_ref): Generate data_ref_base
4392         to a temp var. Force base_offset to be simple.
4393
4394 2007-07-30  Seongbae Park <seongbae.park@gmail.com>
4395
4396         * df-scan.c (df_scan_verify): Remove artificial limit on
4397         the number of blocks for verification.
4398         * df-problems.c (df_lr_bb_local_compute, df_simulate_find_defs,
4399         df_simulate_defs): Avoid unnecessary insn checking for defs.
4400
4401 2007-07-29  Mark Mitchell  <mark@codesourcery.com>
4402
4403         * config/m68k/lb1sf68.asm (FUNC): New macro.
4404         (__mulsi3): Use it.
4405         (__udivsi3): Likewise.
4406         (__divsi3): Likewise.
4407         (__umodsi3): Likewise.
4408         (__modsi3): Likewise.
4409         (__subdf3): Likewise.
4410         (__adddf3): Likewise.
4411         (__muldf3): Likewise.
4412         (__divdf3): Likewise.
4413         (__negdf2): Likewise.
4414         (__cmpdf2): Likewise.
4415         (__subsf3): Likewise.
4416         (__addsf3): Likewise.
4417         (__mulsf3): Likewise.
4418         (__divsf3): Likewise.
4419         (__negsf2): Likewise.
4420         (__cmpsf2): Likewise.
4421         (__eqdf2): Likewise.
4422         (__nedf2): Likewise.
4423         (__gtdf2): Likewise.
4424         (__gedf2): Likewise.
4425         (__ltdf2): Likewise.
4426         (__ledf2): Likewise.
4427         (__eqsf2): Likewise.
4428         (__nesf2): Likewise.
4429         (__gtsf2): Likewise.
4430         (__gesf2): Likewise.
4431         (__ltsf2): Likewise.
4432         (__lesf2): Likewise.
4433
4434 2007-07-30  Ollie Wild  <aaw@google.com>
4435
4436         * c-ppoutput.c (print_lines_directives_only): New function.
4437         (scan_translation_unit_directives_only): New function.
4438         (preprocess_file): Add call to scan_translation_unit_directives_only.
4439         * c-opts.c (c_common_handle_option): Add OPT_fdirectives_only.
4440         (sanitize_cpp_opts): Add default flag_dump_macros setting for
4441         -fdirectives-only.  Add errors for -fdirectives-only conflict with
4442         -Wunused-macros and -traditional.
4443         (finish_options): Add builtin macro initialization for
4444         -fdirectives-only + -fpreprocessed.
4445         * c.opt (fdirectives-only): New.
4446         * doc/cppopts.texi (fdirectives-only): New.
4447
4448 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4449
4450         * alias.c (record_set, memory_modified_1): Constify.
4451         * bt-load.c (note_btr_set): Likewise.
4452         * caller-save.c (mark_set_regs, add_stored_regs): Likewise.
4453         * combine.c (set_nonzero_bits_and_sign_copies,
4454         expand_field_assignment, record_dead_and_set_regs_1,
4455         use_crosses_set_p, reg_dead_at_p_1, can_combine_p,
4456         likely_spilled_retval_1): Likewise.
4457         * config/frv/frv.c (frv_registers_update_1, frv_io_check_address,
4458         frv_io_handle_set): Likewise.
4459         * config/mips/mips.c (mips_sim_record_set,
4460         vr4130_true_reg_dependence_p_1): Likewise.
4461         * config/mt/mt.c (insn_dependent_p_1): Likewise.
4462         * config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
4463         * config/sh/sh.c (flow_dependent_p_1): Likewise.
4464         * cselib.c (cselib_invalidate_rtx_note_stores): Likewise.
4465         * dce.c (mark_nonreg_stores_1, mark_nonreg_stores_2): Likewise.
4466         * ddg.c (mark_mem_store): Likewise.
4467         * df-problems.c (df_urec_mark_reg_change): Likewise.
4468         * function.c (update_epilogue_consts): Likewise.
4469         * gcse.c (record_set_info, record_last_set_info,
4470         mems_conflict_for_gcse_p, canon_list_insert, reg_set_info,
4471         reg_clear_last_set): Likewise.
4472         * global.c (mark_reg_store, mark_reg_clobber, reg_becomes_live):
4473         Likewise.
4474         * jump.c (reversed_comparison_code_parts): Likewise.
4475         * local-alloc.c (validate_equiv_mem_from_store, no_equiv,
4476         reg_is_set): Likewise.
4477         * loop-iv.c (mark_altered): Likewise.
4478         * mode-switching.c (reg_becomes_live): Likewise.
4479         * optabs.c (no_conflict_move_test): Likewise.
4480         * postreload-gcse.c (record_last_set_info, find_mem_conflicts):
4481         Likewise.
4482         * postreload.c (reload_combine_note_store, move2add_note_store):
4483         Likewise.
4484         * regmove.c (flags_set_1): Likewise.
4485         * regrename.c (note_sets, kill_clobbered_value, kill_set_value):
4486         Likewise.
4487         * reload1.c (mark_not_eliminable, forget_old_reloads_1):
4488         Likewise. 
4489         * resource.c (update_live_status): Likewise.
4490         * rtl.h (set_of, note_stores): Likewise.
4491         * rtlanal.c (set_of_1, parms_set, struct set_of_data, set_of,
4492         note_stores, parms_set): Likewise.
4493         * sched-rgn.c (sets_likely_spilled_1): Likewise.
4494         * stack-ptr-mod.c (notice_stack_pointer_modification_1):
4495         Likewise. 
4496         * var-tracking.c (count_stores, add_stores): Likewise.
4497
4498 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4499
4500         * alias.c (mems_in_disjoint_alias_sets_p,
4501         fixed_scalar_and_varying_struct_p, aliases_everything_p,
4502         nonoverlapping_component_refs_p, nonoverlapping_memrefs_p,
4503         write_dependence_p, mems_in_disjoint_alias_sets_p,
4504         read_dependence, true_dependence, canon_true_dependence,
4505         anti_dependence, output_dependence): Constify.
4506         * combine.c (extended_count): Likewise.
4507         * cse.c (cse_rtx_varies_p, hash_rtx, exp_equiv_p): Likewise.
4508         * cselib.c (get_value_hash, references_value_p,
4509         cselib_reg_set_mode, cselib_rtx_varies_p): Likewise.
4510         * cselib.h (cselib_reg_set_mode, references_value_p): Likewise.
4511         * emit-rtl.c (mem_expr_equal_p, active_insn_p): Likewise.
4512         * function.c (contains, prologue_epilogue_contains,
4513         sibcall_epilogue_contains): Likewise. 
4514         * jump.c (simplejump_p, condjump_p, condjump_in_parallel_p,
4515         pc_set, any_uncondjump_p, any_condjump_p, onlyjump_p,
4516         only_sets_cc0_p, sets_cc0_p, rtx_renumbered_equal_p, true_regnum,
4517         reg_or_subregno): Likewise.
4518         * recog.c (asm_noperands): Likewise.
4519         * reload1.c (function_invariant_p): Likewise.
4520         * rtl.h (mem_expr_equal_p, active_insn_p, rtx_varies_p,
4521         rtx_addr_varies_p, asm_noperands, exp_equiv_p, hash_rtx,
4522         condjump_p, any_condjump_p, any_uncondjump_p, pc_set,
4523         simplejump_p, onlyjump_p, only_sets_cc0_p, sets_cc0_p,
4524         true_regnum, reg_or_subregno, condjump_in_parallel_p,
4525         extended_count, prologue_epilogue_contains,
4526         sibcall_epilogue_contains, function_invariant_p, true_dependence,
4527         canon_true_dependence, read_dependence, anti_dependence,
4528         output_dependence): Likewise.
4529         * rtlanal.c (rtx_varies_p, rtx_addr_varies_p): Likewise.
4530
4531 2007-07-30  Julian Brown  <julian@codesourcery.com>
4532
4533         * config/arm/neon.md (V_ext): New mode attribute.
4534         (neon_vget_lane<mode>): Replace with define_expand.
4535         (neon_vget_lane<mode>_sext_internal)
4536         (neon_vget_lane<mode>_zext_internal): New define_insns for double
4537         and quad precision vectors.
4538         (neon_vget_lanedi): Add bounds check. Remove dead comment.
4539         * config/arm/neon.ml (get_lane): Make 32-bit get-lane intrinsics
4540         have typeless 32-bit result.
4541
4542 2007-07-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4543
4544         PR tree-opt/32527
4545         * tree-affine.h (aff_tree): The type of rest is sizetype for types
4546         of pointers.
4547         * tree-affine.c (aff_combination_scale): If type is a pointer type,
4548         use sizetype for rest.
4549         (aff_combination_add_elt): Likewise. Don't specialize pointer types.
4550         (aff_combination_convert): Don't convert rest for pointer types.
4551
4552 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
4553
4554         * Makefile.in (tree-ssa-alias.o): Add alloc-pool.h
4555
4556         * tree-ssa-alias.c: Add alloc-pool.h.
4557         (init_alias_info): Free alias_bitmap_obstack.
4558         (delete_alias_info): Call delete_mem_ref_stats.
4559         (get_mem_sym_stats_for): Use alloc_pool.
4560         (init_mem_ref_stats): Do not delete mem_ref_stats here.
4561         (delete_mem_sym_stats): Removed.
4562         
4563 2007-07-29  Sebastian Pop  <sebpop@gmail.com>
4564
4565         * tree-data-ref.c (add_multivariate_self_dist): Parametric access
4566         functions cannot be represented as classical distance vectors.
4567
4568 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4569
4570         * attribs.c (hash_attr, eq_attr, init_attributes): Constify.
4571         * builtins.c (validate_arg, builtin_mathfn_code,
4572         validate_arglist): Likewise.
4573         * calls.c (call_expr_flags): Likewise.
4574         * combine.c (reg_nonzero_bits_for_combine,
4575         reg_num_sign_bit_copies_for_combine, get_last_value,
4576         reg_truncated_to_mode): Likewise.
4577         * emit-rtl.c (subreg_lowpart_p): Likewise.
4578         * expr.c (highest_pow2_factor_for_target,
4579         categorize_ctor_elements_1, categorize_ctor_elements,
4580         count_type_elements, contains_packed_reference,
4581         highest_pow2_factor, highest_pow2_factor_for_target): Likewise.
4582         * fold-const.c (may_negate_without_overflow_p, int_const_binop,
4583         fold_convertible_p, operand_equal_p, tree_swap_operands_p,
4584         native_encode_int, native_encode_real, native_encode_complex,
4585         native_encode_vector, native_encode_expr, native_interpret_int,
4586         native_interpret_real, native_interpret_complex,
4587         native_interpret_vector, native_interpret_expr): Likewise.
4588         * function.c (use_register_for_decl): Likewise.
4589         * gimplify.c (get_name): Likewise.
4590         * langhooks-def.h (lhd_return_null_const_tree): New.
4591         (LANG_HOOKS_GET_CALLEE_FNDECL): Use it.
4592         * langhooks.c (lhd_return_null_const_tree): New.
4593         * langhooks.h (lang_get_callee_fndecl): Constify.
4594         * output.h (constructor_static_from_elts_p): Likewise.
4595         * rtl-factoring.c (gen_symbol_ref_rtx_for_label): Likewise.
4596         * rtl.h (nonzero_bits, num_sign_bit_copies, truncated_to_mode,
4597         subreg_lowpart_p, noop_move_p, struct rtl_hooks): Likewise.
4598         * rtlanal.c (cached_nonzero_bits, nonzero_bits1,
4599         cached_num_sign_bit_copies, num_sign_bit_copies1, noop_move_p,
4600         nonzero_bits, num_sign_bit_copies, truncated_to_mode): Likewise.
4601         * rtlhooks-def.h (reg_nonzero_bits_general,
4602         reg_num_sign_bit_copies_general, reg_truncated_to_mode_general):
4603         Likewise. 
4604         * rtlhooks.c (reg_num_sign_bit_copies_general,
4605         reg_nonzero_bits_general, reg_truncated_to_mode_general):
4606         Likewise. 
4607         * stmt.c (warn_if_unused_value, is_body_block): Likewise.
4608         * stor-layout.c (mode_for_size_tree): Likewise.
4609         * tree-ssa-loop-im.c (memref_eq): Likewise.
4610         * tree-ssa-loop-ivopts.c (tree_int_cst_sign_bit): Likewise.
4611         * tree.c (contains_placeholder_p, type_list_equal,
4612         simple_cst_equal, get_callee_fndecl, operand_equal_for_phi_arg_p):
4613         Likewise. 
4614         * tree.h (tree_int_cst_sign_bit, may_negate_without_overflow_p,
4615         mode_for_size_tree, categorize_ctor_elements, count_type_elements,
4616         contains_placeholder_p, contains_packed_reference,
4617         get_callee_fndecl, operand_equal_for_phi_arg_p,
4618         warn_if_unused_value, is_body_block, native_encode_expr,
4619         native_interpret_expr, fold_convertible_p, operand_equal_p,
4620         int_const_binop, tree_swap_operands_p, builtin_mathfn_code,
4621         validate_arglist, simple_cst_equal, type_list_equal,
4622         use_register_for_decl, call_expr_flags, get_name,
4623         highest_pow2_factor): Likewise.
4624         (const_call_expr_arg_iterator_d,
4625         init_const_call_expr_arg_iterator, next_const_call_expr_arg,
4626         first_const_call_expr_arg, more_const_call_expr_args_p,
4627         FOR_EACH_CONST_CALL_EXPR_ARG): New.
4628         * varasm.c (constructor_static_from_elts_p): Constify.
4629
4630 2007-07-28  Kazu Hirata  <kazu@codesourcery.com>
4631
4632         * cfglayout.c, config/arm/arm.c, config/arm/cortex-a8.md,
4633         config/arm/neon-schedgen.ml, config/arm/neon.ml,
4634         config/arm/vec-common.md, config/ia64/div.md, cselib.c,
4635         df-core.c, df.h, dominance.c, optabs.c, opts.c, reg-stack.c,
4636         regstat.c, target.h, tree-ssa-live.c, tree-ssa-pre.c,
4637         tree-vect-transform.c, tree.def: Fix comment typos.  Follow
4638         spelling conventions.
4639         * doc/invoke.texi: Follow spelling conventions.
4640
4641 2007-07-29  Vladimir Yanovsky  <yanov@il.ibm.com>
4642             Revital Eres  <eres@il.ibm.com>
4643
4644         * modulo-sched.c (sms_schedule): Avoid loops which includes
4645         auto-increment instructions.
4646
4647 2007-07-28  Richard Guenther  <rguenther@suse.de>
4648
4649         PR middle-end/32920
4650         * fold-const.c (fold_cond_expr_with_comparison): Convert
4651         operand zero of MIN/MAX_EXPR to correct type.
4652
4653 2007-07-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4654
4655         * calls.c (special_function_p, setjmp_call_p, alloca_call_p,
4656         flags_from_decl_or_type): Constify.
4657         * gcc.c (do_spec_1): Likewise.
4658         * print-tree.c (dump_addr, print_node_brief): Likewise.
4659         * tree-cfg.c (stmt_starts_bb_p, is_ctrl_stmt, computed_goto_p,
4660         simple_goto_p, tree_can_make_abnormal_goto, stmt_starts_bb_p,
4661         tree_purge_all_dead_eh_edges): Likewise.
4662         * tree-flow.h (is_ctrl_stmt, computed_goto_p, simple_goto_p,
4663         tree_can_make_abnormal_goto, tree_purge_all_dead_eh_edges):
4664         Likewise. 
4665         * tree.c (expr_location, expr_has_location, expr_locus,
4666         expr_filename, expr_lineno, get_inner_array_type,
4667         fields_compatible_p): Likewise.
4668         * tree.h (get_inner_array_type, fields_compatible_p,
4669         expr_location, expr_has_location, expr_locus, expr_filename,
4670         expr_lineno, dump_addr, print_node_brief, flags_from_decl_or_type,
4671         setjmp_call_p, alloca_call_p): Likewise.
4672
4673 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
4674
4675         * timevar.def: Add TV_CALL_CLOBBER, TV_FLOW_SENSITIVE,
4676         TV_FLOW_INSENSITIVE.
4677
4678         * tree-ssa-alias.c (compute_call_clobbered): Push/pop
4679         TV_CALL_CLOBBER.
4680         (compute_flow_sensitive_aliasing): Ditto for TV_FLOW_SENSITIVE.
4681         (compute_flow_insensitive_aliasing): Ditto for
4682         TV_FLOW_INSENSITIVE.    
4683
4684 2007-07-27  Jan Hubicka  <jh@suse.cz>
4685
4686         * config/i386/i386.c (register_move_cost): Remove accidentally
4687         comitted #if 0 block.
4688
4689         * attribs.c: Include hashtab.h
4690         (attribute_hash): New.
4691         (substring): New structure.
4692         (extract_attribute_substring, substring_hash, hash_attr, eq_attr):
4693         New function.
4694         (init_attributes): Initialize attribute hash.
4695         (decl_attributes): Use attribute hash.
4696         * Makefile.in (attribs.c): Depend on hashtab.h.
4697
4698 2007-07-27  Steve Ellcey  <sje@cup.hp.com>
4699
4700         * config/ia64/vect.md (vec_initv2si): Remove bad BIG_ENDIAN test.
4701
4702 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
4703
4704         * doc/invoke.texi (mdsp, mdspr2): Document the __mips_dsp,
4705         __mips_dspr2 and __mips_dsp_rev macros.
4706         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dsp_rev.
4707
4708 2007-07-27  Douglas Gregor  <doug.gregor@gmail.com>
4709         
4710        * c-common.h (enum rid): Add RID_DECLTYPE, update RID_LAST_CXX0X.
4711
4712 2007-07-26  Kenneth Zadeck <zadeck@naturalbridge.com>
4713
4714         PR middle-end/32749
4715         
4716         * df-problems.c (df_create_unused_note): Removed do_not_gen parm
4717         and the updating of the live and do_not_gen sets.
4718         (df_note_bb_compute): Added updating of live and do_not_gen sets
4719         for regular defs so that the case of clobber inside conditional
4720         call is processed correctly.
4721         
4722 2007-07-27  Zdenek Dvorak  <dvorakz@suse.cz>
4723
4724         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Generate the
4725         operands with compatible type.
4726
4727 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
4728
4729         * expr.h (store_bit_field): Don't return a value.
4730         * expmed.c (check_predicate_volatile_ok): New function.
4731         (store_bit_field_1): New function, extracted from store_bit_field.
4732         Take a fallback_p argument and return true if the operation succeeded.
4733         Only use store_fixed_bit_field if fallback_p.  Don't recompute
4734         mode_for_extraction; use op_mode instead.  Try forcing memories
4735         into registers if the insv expander fails.
4736         (store_bit_field): Use store_bit_field_1 with fallback_p true.
4737         Don't return a value.
4738         (convert_extracted_bit_field): New function, extracted from
4739         store_bit_field.
4740         (extract_bit_field_1): Likewise.  Take a fallback_p argument
4741         and return NULL if the operation succeeded.  Only use
4742         extract_fixed_bit_field if fallback_p.  Only calculate one
4743         extraction mode.  Combine code for extv and extzv.  Try forcing
4744         memories into registers if the ext(z)v expander fails.
4745         (extract_bit_field): Use extract_bit_field_1 with fallback_p true.
4746
4747 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
4748
4749         * df.h (df_mw_hardreg): Turn df_ref_type and df_ref_flags
4750         into bitfields.
4751         (df_ref): Likewise.  Put regno with other integer fields.
4752
4753 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
4754
4755         * df.h (df_mw_hardreg): Remove "loc" field.
4756         * df-scan.c (df_ref_record): Don't set it.  Remove redundant
4757         local variable.
4758         * df-problems.c (df_whole_mw_reg_unused_p): New function,
4759         split out from df_set_unused_notes_for_mw.  Return false for
4760         partial references.  Assert that mw_reg is a REG when returning true.
4761         (df_set_unused_notes_for_mw): Use it.  Use mw_reg instead of *loc.
4762         (df_whole_mw_reg_dead_p): New function, split out from
4763         df_set_dead_notes_for_mw.  Return false for partial references.
4764         Assert that mw_reg is a REG when returning true.
4765         (df_set_dead_notes_for_mw): Use it.  Use mw_reg instead of *loc.
4766         Remove redundant bitmap check.
4767
4768 2007-07-26  H.J. Lu  <hongjiu.lu@intel.com>
4769
4770         * config/ia64/t-ia64 ($(T)crtbegin.o): Removed.
4771         ($(T)crtend.o): Likwise.
4772         ($(T)crtbeginS.o): Likwise.
4773         ($(T)crtendS.o): Likwise.
4774         ($(T)crtfastmath.o): Likwise.
4775
4776 2007-07-26  Zdenek Dvorak  <dvorakz@suse.cz>
4777
4778         * dominance.c (dom_computed, n_bbs_in_dom_tree): Removed.
4779         * function.h (dom_computed, n_bbs_in_dom_tree): New macros.
4780         * basic-block.h (struct control_flow_graph): Added x_dom_computed
4781         and x_n_bbs_in_dom_tree fields.
4782
4783 2007-07-26  Steve Ellcey  <sje@cup.hp.com>
4784
4785         PR tree-optimization/32087
4786         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop):
4787         Do not call scale_bbs_frequencies_int with prob of zero.
4788
4789 2007-07-26  Julian Brown  <julian@codesourcery.com>
4790
4791         * config/arm/arm-protos.h (neon_lane_bounds, neon_const_bounds)
4792         (neon_element_bits): Add prototypes.
4793         * config/arm/arm.c (bounds_check, neon_lane_bounds)
4794         (neon_const_bounds, neon_element_bits): New functions.
4795         * config/arm/neon.md (neon_vget_lane<mode>, neon_vget_lanedi)
4796         (neon_vget_lanev2di, neon_vset_lane<mode>, neon_vset_lanedi)
4797         (neon_vset_lanev2di, neon_vdup_lane<mode>, neon_vdup_lanedi)
4798         (neon_vdup_lanev2di, neon_vcvt_n<mode>, neon_vmul_lane<mode>)
4799         (neon_vmull_lane<mode>, neon_vqdmull_lane<mode>)
4800         (neon_vqdmulh_lane<mode>, neon_vmla_lane<mode>)
4801         (neon_vmlal_lane<mode>, neon_vqdmlal_lane<mode>)
4802         (neon_vmls_lane<mode>, neon_vmlsl_lane<mode>)
4803         (neon_vqdmlsl_lane<mode>, neon_vext<mode>, neon_vshr_n<mode>)
4804         (neon_vshrn_n<mode>, neon_vqshrn_n<mode>, neon_vqshrun_n<mode>)
4805         (neon_vshl_n<mode>, neon_vshl_n<mode>, neon_vqshl_n<mode>)
4806         (neon_vqshlu_n<mode>, neon_vshll_n<mode>, neon_vsra_n<mode>)
4807         (neon_vsri_n<mode>, neon_vsli_n<mode>): Add bounds checks.
4808
4809 2007-07-26  Nathan Froyd  <froydnj@codesourcery.com>
4810
4811         * config/vxworks.h (VXWORKS_LINK_SPEC): Fix typo.
4812         (HAVE_AS_GNU_ATTRIBUTE): Undefine.
4813
4814 2007-07-26  Mark Shinwell  <shinwell@codesourcery.com>
4815             Julian Brown  <julian@codesourcery.com>
4816
4817         * config/arm/arm.c (arm_mac_accumulator_is_mul_result): New.
4818         * config/arm/arm-protos.h (arm_mac_accumulator_is_mul_result): New.
4819         * config/arm/cortex-a8.md: New.
4820         * config/arm/cortex-a8-neon.md: New.
4821         * config/arm/neon-schedgen.ml: New.
4822         * config/arm/neon.md (vqh_mnem): New.
4823         (neon_type): New.
4824         (Is_float_mode): New.
4825         (Scalar_mul_8_16): New.
4826         (Is_d_reg): New.
4827         (V_mode_nunits): New.
4828         (All instruction patterns): Annotate with neon_type attribute
4829         values.
4830         * config/arm/arm.md: Include cortex-a8.md.
4831         (insn): Add smmla, umaal, smlald, smlsld, clz, mrs, msr and xtab
4832         values.
4833         Annotate instruction patterns accordingly.
4834         (generic_sched): Do not use generic scheduling for Cortex-A8.
4835         (generic_vfp): Do not use generic VFP scheduling for Cortex-A8.
4836
4837 2007-07-26  Daniel Jacobowitz  <dan@codesourcery.com>
4838
4839         * fold-const.c (fold_read_from_constant_string): Use
4840         build_int_cst_type.
4841         * tree-ssa-ccp.c (fold_const_aggregate_ref): Likewise.
4842
4843 2007-07-26  Nick Clifton  <nickc@redhat.com>
4844
4845         * tree-ssa-operands.h: Change copyright header to refer to version
4846         3 of the GNU General Public License and to point readers at the
4847         COPYING3 file and the FSF's license web page.
4848         * tree-vrp.c, regrename.c, attribs.c, loop-unswitch.c,
4849         sched-ebb.c, fwprop.c, tree-loop-linear.c, dwarf2asm.c,
4850         tree-into-ssa.c, dwarf2asm.h, tree-ssa-loop-im.c, sbitmap.c,
4851         targhooks.c, tree-dump.c, tree-complex.c, sbitmap.h, targhooks.h,
4852         tree-dump.h, regstat.c, see.c, machmode.h, hooks.c, cgraphbuild.c,
4853         hooks.h, genrecog.c, tree-ssa-threadupdate.c, gen-protos.c,
4854         flags.h, rtlhooks.c, gencheck.c, tree-ssa-loop-niter.c,
4855         opts-common.c, dbgcnt.def, tree-pretty-print.c, tracer.c,
4856         gengtype.c, mkconfig.sh, gengtype.h, tree-ssa-loop-unswitch.c,
4857         cgraph.c, c-lex.c, cgraph.h, libfuncs.h, cfgloopmanip.c,
4858         rtl-error.c, optabs.c, postreload-gcse.c, tree-ssa-loop-manip.c,
4859         optabs.h, genmddeps.c, defaults.h, postreload.c, value-prof.c,
4860         tree-ssa-loop-ch.c, tree-tailcall.c, gengenrtl.c, value-prof.h,
4861         genopinit.c, tree.c, tree.h, reload.c, tree-pass.h, ipa-cp.c,
4862         reload.h, bitmap.c, bitmap.h, tree-scalar-evolution.c,
4863         c-config-lang.in, tree-scalar-evolution.h, target.h, cppspec.c,
4864         rtlanal.c, ddg.c, lambda-mat.c, mips-tdump.c, ddg.h,
4865         tree-phinodes.c, mips-tfile.c, pointer-set.c, pointer-set.h,
4866         diagnostic.c, final.c, diagnostic.h, builtins.c, genoutput.c,
4867         gcc.c, lists.c, tree-ssa-alias-warnings.c, gcc.h, cfghooks.c,
4868         input.h, gensupport.c, fold-const.c, cfghooks.h, insn-notes.def,
4869         gensupport.h, builtin-attrs.def, sync-builtins.def, params.c,
4870         cfgloopanal.c, params.h, graphds.c, omp-low.c, tree-ssa-dse.c,
4871         graphds.h, gcov.c, cfg.c, genextract.c, ipa-reference.c,
4872         genautomata.c, tree-ssa-uncprop.c, auto-inc-dec.c, toplev.c,
4873         tree-gimple.c, ipa-reference.h, vmsdbgout.c, errors.c, toplev.h,
4874         reorg.c, tree-gimple.h, tree-chrec.c, pretty-print.c, errors.h,
4875         real.c, tree-chrec.h, pretty-print.h, debug.c, real.h, genemit.c,
4876         omega.c, c-cppbuiltin.c, genmultilib, debug.h, omega.h,
4877         tree-ssa-sccvn.c, genconfig.c, tree-ssa-sccvn.h, cgraphunit.c,
4878         regs.h, df-scan.c, vec.c, hosthooks-def.h, vec.h,
4879         tree-ssa-copyrename.c, scan.c, builtin-types.def, tree-ssa-ccp.c,
4880         scan.h, mode-classes.def, haifa-sched.c, dominance.c, dojump.c,
4881         double-int.c, gcov-io.c, dbxout.c, builtins.def, double-int.h,
4882         dbxout.h, tree-ssa-loop-ivopts.c, df-core.c, mode-switching.c,
4883         gengtype-lex.l, tree-nomudflap.c, modulo-sched.c, c-objc-common.c,
4884         hosthooks.h, c-objc-common.h, caller-save.c, graph.c,
4885         ipa-pure-const.c, graph.h, c-format.c, cse.c, fix-header.c,
4886         c-format.h, web.c, tree-stdarg.c, genpeep.c, tree-stdarg.h,
4887         tree-ssa-math-opts.c, xcoffout.c, tree-ssa-dom.c, tree-nrv.c,
4888         xcoffout.h, tree-ssa-propagate.c, ipa-utils.c,
4889         tree-ssa-propagate.h, tree-ssa-alias.c, loop-init.c, ipa-utils.h,
4890         gimple-low.c, rtl.def, c-tree.h, tree-ssa-sink.c, ipa-inline.c,
4891         mkmap-symver.awk, machmode.def, c-pch.c, cfganal.c, global.c,
4892         alloc-pool.c, c-semantics.c, alloc-pool.h, jump.c, ifcvt.c,
4893         dwarf2out.c, expr.c, cfgbuild.c, tree-browser.c, dwarf2out.h,
4894         expr.h, longlong.h, opts.c, gcov-iov.c, opts.h, dwarf2.h,
4895         genattrtab.c, genconditions.c, genattr.c, optc-gen.awk,
4896         timevar.def, tree-ssa-loop-ivcanon.c, hard-reg-set.h, predict.c,
4897         tree-ssa-loop.c, host-default.c, predict.h, recog.c, dbgcnt.c,
4898         recog.h, dbgcnt.h, c-aux-info.c, tree-ssa-address.c, timevar.c,
4899         dse.c, lcm.c, tree-ssa-ifcombine.c, timevar.h, dse.h,
4900         matrix-reorg.c, tree-vn.c, treestruct.def, fp-test.c, c-decl.c,
4901         tree-eh.c, c-errors.c, c-pretty-print.c, regmove.c,
4902         lambda-trans.c, c-pretty-print.h, et-forest.c, et-forest.h,
4903         ebitmap.c, configure.ac, local-alloc.c, function.c, langhooks.c,
4904         ebitmap.h, cppdefault.c, tree-vectorizer.c, function.h,
4905         langhooks.h, print-rtl.c, cppdefault.h, df.h, tree-vectorizer.h,
4906         sdbout.c, stor-layout.c, sdbout.h, rtlhooks-def.h, read-rtl.c,
4907         gcse.c, ipa-type-escape.c, vmsdbg.h, alias.c, gengtype-parse.c,
4908         ipa-type-escape.h, domwalk.c, alias.h, tree-if-conv.c, profile.c,
4909         init-regs.c, domwalk.h, ipa.c, gccbug.in, tree-data-ref.c,
4910         loop-unroll.c, tree-data-ref.h, tree-flow-inline.h, tree-affine.c,
4911         mkmap-flat.awk, tree-affine.h, tree-vect-analyze.c, c.opt, ggc.h,
4912         opt-gather.awk, c-typeck.c, gimplify.c, coretypes.h, exec-tool.in,
4913         insn-addr.h, tree-ssa-phiopt.c, c-pragma.c, c-pragma.h, calls.c,
4914         tree-ssa-coalesce.c, genmodes.c, loop-doloop.c, predict.def,
4915         dwarf.h, tree.def, rtl-factoring.c, lower-subreg.c, expmed.c,
4916         bt-load.c, ggc-common.c, genflags.c, tree-dfa.c, except.c,
4917         coverage.c, except.h, emit-rtl.c, cfgexpand.c, coverage.h,
4918         stringpool.c, cselib.c, emit-rtl.h, tree-cfgcleanup.c, c-opts.c,
4919         cselib.h, cfgcleanup.c, simplify-rtx.c, tree-ssa-pre.c, explow.c,
4920         tree-ssa-live.c, tree-sra.c, tree-ssa-live.h, tree-predcom.c,
4921         loop-invariant.c, genpreds.c, protoize.c, opth-gen.awk, c-dump.c,
4922         lambda.h, loop-iv.c, tree-mudflap.c, ipa-prop.c, print-tree.c,
4923         tree-mudflap.h, tree-ssa-copy.c, ipa-prop.h, cfglayout.c,
4924         tree-ssa-forwprop.c, c-convert.c, cfglayout.h, common.opt,
4925         ggc-zone.c, ggc-page.c, c-omp.c, tree-ssa-dce.c, gencodes.c,
4926         varasm.c, tree-vect-patterns.c, libada-mk.in, tree-ssa-ter.c,
4927         sched-deps.c, tree-nested.c, c-ppoutput.c, tree-ssa.c,
4928         target-def.h, tree-ssa-loop-prefetch.c, lambda-code.c,
4929         omp-builtins.def, rtl.c, regclass.c, stab.def, intl.c, rtl.h,
4930         intl.h, tree-inline.c, conditions.h, tree-inline.h, integrate.c,
4931         sched-int.h, tree-iterator.c, integrate.h, tree-iterator.h,
4932         genchecksum.c, tree-optimize.c, output.h, tree-vect-transform.c,
4933         tree-object-size.c, combine.c, tree-outof-ssa.c, addresses.h,
4934         bb-reorder.c, stack-ptr-mod.c, resource.c, var-tracking.c,
4935         cfgloop.c, system.h, resource.h, ggc-none.c, tree-profile.c,
4936         cfgloop.h, c-gimplify.c, c-common.c, opt-functions.awk,
4937         tree-vect-generic.c, tree-flow.h, df-problems.c, scan-decls.c,
4938         c-common.h, config.gcc, reg-stack.c, tlink.c, main.c, stub-objc.c,
4939         fixproto, config.host, Makefile.in, gccspec.c, sched-rgn.c,
4940         vecprim.h, basic-block.h, tree-ssa-structalias.c,
4941         tree-ssa-structalias.h, c-common.def, sched-vis.c, tree-cfg.c,
4942         passes.c, genconstants.c, c-incpath.c, c-incpath.h,
4943         struct-equiv.c, c-parser.c, tree-ssa-reassoc.c, varray.c, sreal.c,
4944         varray.h, dfp.c, sreal.h, combine-stack-adj.c, dfp.h,
4945         reg-notes.def, cfgrtl.c, config.build, varpool.c, gengtype-yacc.y,
4946         stmt.c, dce.c, tree-browser.def, prefix.c, statistics.h,
4947         params.def, dce.h, c-lang.c, gcov-dump.c, prefix.h,
4948         tree-ssanames.c, collect2.c, collect2.h, tree-ssa-threadedge.c,
4949         convert.c, convert.h, langhooks-def.h, reload1.c,
4950         tree-ssa-operands.c: Likewise.
4951
4952 2007-07-26  Jan Hubicka  <jh@suse.cz>
4953
4954         * tree-ssa-live.c: Include debug.h and flags.h.
4955         (mark_scope_block_unused): New function.
4956         (remove_unused_scope_block_p): New function.
4957         (remove_unused_locals): Remove unused blocks too.
4958
4959 2007-07-25  Ian Lance Taylor  <iant@google.com>
4960
4961         * combine.c (combine_max_regno): Remove.  Remove all uses.
4962         (struct reg_stat_struct): Rename from struct reg_stat.
4963         (reg_stat_type): Define, and declare VECs.
4964         (reg_stat): Change from pointer to VEC.  Change all uses.
4965         (combine_split_insns): New static function.
4966         (try_combine, find_split_point): Call it instead of split_insns.
4967
4968 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
4969
4970         * cfghooks.c (split_block): Fix the information about loop latch.
4971
4972 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
4973
4974         * cfgloopmanip.c (fix_loop_structure): Call force_single_succ_latches.
4975
4976 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
4977
4978         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
4979         Scan the new edge for loop exit info.
4980
4981 2007-07-25  Andreas Tobler  <a.tobler@schweiz.org>
4982
4983         * config/darwin.c: Include debug.h.
4984
4985 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
4986
4987         PR target/32218
4988         * tree-vect-patterns.c (vect_pattern_recog_1): Check for valid type.
4989
4990 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
4991
4992         * config/ia64/ia64.h (HARD_REGNO_NREGS): Handle RFmode.
4993         (HARD_REGNO_MODE_OK): Ditto.
4994         (MODES_TIEABLE_P): Ditto.
4995         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
4996         (CLASS_MAX_NREGS): Ditto.
4997         * config/ia64/ia64.c (ia64_print_operand_address): Add R format.
4998         * config/ia64/ia64.md (divsf3_internal_thr): Removed.
4999         (divdf3_internal_thr): Removed.
5000         * config/ia64/div.md: New file.
5001         * config/ia64/constraints.md: Add H constraint.
5002
5003 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5004
5005         * sbitmap.c (sbitmap_verify_popcount, sbitmap_alloc_with_popcount,
5006         sbitmap_copy, sbitmap_copy_n, sbitmap_equal, sbitmap_empty_p,
5007         sbitmap_union_of_diff_cg, sbitmap_union_of_diff, sbitmap_not,
5008         sbitmap_difference, sbitmap_any_common_bits, sbitmap_a_and_b_cg,
5009         sbitmap_a_and_b, sbitmap_a_xor_b_cg, sbitmap_a_xor_b,
5010         sbitmap_a_or_b_cg, sbitmap_a_or_b, sbitmap_a_subset_b_p,
5011         sbitmap_a_or_b_and_c_cg, sbitmap_a_or_b_and_c,
5012         sbitmap_a_and_b_or_c_cg, sbitmap_a_and_b_or_c,
5013         sbitmap_first_set_bit, sbitmap_last_set_bit, dump_sbitmap,
5014         dump_sbitmap_file, debug_sbitmap, popcount_table,
5015         sbitmap_popcount): Constify.
5016         * sbitmap.h (const_sbitmap, const_sbitmap_ptr): New.
5017         (sbitmap_iterator, sbitmap_iter_init, dump_sbitmap,
5018         dump_sbitmap_file, sbitmap_copy, sbitmap_copy_n, sbitmap_equal,
5019         sbitmap_empty_p, sbitmap_union_of_diff, sbitmap_union_of_diff_cg,
5020         sbitmap_difference, sbitmap_not, sbitmap_a_or_b_and_c,
5021         sbitmap_a_or_b_and_c_cg, sbitmap_a_and_b_or_c,
5022         sbitmap_a_and_b_or_c_cg, sbitmap_any_common_bits, sbitmap_a_and_b,
5023         sbitmap_a_and_b_cg, sbitmap_a_or_b, sbitmap_a_or_b_cg,
5024         sbitmap_a_xor_b, sbitmap_a_xor_b_cg, sbitmap_a_subset_b_p,
5025         sbitmap_first_set_bit, sbitmap_last_set_bit, debug_sbitmap,
5026         sbitmap_popcount, sbitmap_verify_popcount): Constify.
5027
5028 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5029
5030         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_element_zerop,
5031         bitmap_copy, bitmap_clear_bit, popcount_table, bitmap_count_bits,
5032         bitmap_first_set_bit, bitmap_and, bitmap_and_into,
5033         bitmap_elt_copy, bitmap_and_compl, bitmap_and_compl_into,
5034         bitmap_compl_and_into, bitmap_elt_ior, bitmap_ior,
5035         bitmap_ior_into, bitmap_xor, bitmap_xor_into, bitmap_equal_p,
5036         bitmap_intersect_p, bitmap_intersect_compl_p,
5037         bitmap_ior_and_compl, bitmap_ior_and_compl_into,
5038         debug_bitmap_file, debug_bitmap, bitmap_print, bitmap_hash):
5039         Constify.
5040         * bitmap.h (bitmap_copy, bitmap_equal_p, bitmap_intersect_p,
5041         bitmap_intersect_compl_p, bitmap_count_bits, bitmap_and,
5042         bitmap_and_into, bitmap_and_compl, bitmap_and_compl_into,
5043         bitmap_compl_and_into, bitmap_ior, bitmap_ior_into, bitmap_xor,
5044         bitmap_xor_into, bitmap_ior_and_compl, bitmap_ior_and_compl_into,
5045         debug_bitmap, debug_bitmap_file, bitmap_print,
5046         bitmap_first_set_bit, bitmap_hash, bmp_iter_set_init,
5047         bmp_iter_and_init, bmp_iter_and_compl_init): Likewise.
5048
5049 2007-07-25  Daniel Berlin  <dberlin@dberlin.org>
5050
5051         * config/darwin.c (darwin_override_options): Additional fix for
5052         debug info formats that don't support var tracking.
5053
5054 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5055
5056         * cselib.c (entry_and_rtx_equal_p): Constify.
5057         * gengtype.c (output_mangled_typename, write_types, write_local):
5058         Likewise.
5059         * gengtype.h (const_type_p): New.
5060         * see.c (eq_descriptor_extension, hash_descriptor_extension):
5061         Constify.
5062         * tlink.c (scan_linker_output): De-constify.
5063         * tree-ssa-loop-im.c (memref_eq): Constify.
5064         * tree-ssa-structalias.c (const_shared_bitmap_info_t): New.
5065         (shared_bitmap_hash, shared_bitmap_eq): Constify.
5066
5067 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5068
5069         * c-common.c (fname_as_string, c_type_hash): Constify.
5070         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
5071         * cgraph.c (edge_hash, edge_eq): Likewise.
5072         * dwarf2out.c (decl_die_table_eq, decl_loc_table_eq): Likewise.
5073         * emit-rtl.c (mem_attrs_htab_eq, reg_attrs_htab_hash,
5074         reg_attrs_htab_eq): Likewise.
5075         * except.c (t2r_eq, t2r_hash, ttypes_filter_eq, ehl_hash, ehl_eq):
5076         Likewise.
5077         * genautomata.c (const_reserv_sets_t, const_unit_decl_t,
5078         const_decl_t, const_state_t, const_automata_list_el_t): New.
5079         (first_out_arc, DECL_UNIT, DECL_BYPASS, DECL_AUTOMATON, DECL_EXCL,
5080         DECL_PRESENCE, DECL_ABSENCE, DECL_RESERV, DECL_INSN_RESERV,
5081         automaton_decl_hash, automaton_decl_eq_p, insn_decl_hash,
5082         insn_decl_eq_p, decl_hash, decl_eq_p, alt_state_cmp,
5083         reserv_sets_cmp, reserv_sets_eq, state_hash, state_eq_p,
5084         automata_list_hash, automata_list_eq_p, compare_states_for_equiv,
5085         compare_max_occ_cycle_nums, out_state_arcs_num,
5086         compare_transition_els_num, units_cmp, state_reservs_cmp):
5087         Constify.
5088         * genmodes.c (cmp_modes): Likewise.
5089         * ggc-common.c (saving_htab_hash, saving_htab_eq): Likewise.
5090         * gimplify.c (compare_case_labels): Likewise.
5091         * ipa-type-escape.c (get_name_of_type, type_brand_s): Likewise.
5092         * loop-unroll.c (si_info_hash, ve_info_hash): Likewise.
5093         * matrix-reorg.c (mtt_info_hash): Likewise.
5094         * postreload-gcse.c (hash_expr_for_htab, expr_equiv_p): Likewise.
5095         * rtl-factoring.c (const_p_hash_bucket, const_p_hash_elem): New.
5096         (htab_hash_bucket, htab_hash_elem): Constify.
5097         * tree-browser.c (TB_parent_eq): Likewise.
5098         * tree-scalar-evolution.c (hash_scev_info): Likewise.
5099         * tree-ssa-alias.c (sort_tags_by_id): Likewise.
5100         * tree-ssa-coalesce.c (const_coalesce_pair_p): New.
5101         (coalesce_pair_map_hash, coalesce_pair_map_eq, compare_pairs):
5102         Constify.
5103         * tree-ssa-dom.c (avail_expr_hash, avail_expr_eq): Likewise.
5104         * tree-ssa-pre.c (const_expr_pred_trans_t): New.
5105         (expr_pred_trans_hash, expr_pred_trans_eq): Constify.
5106         * tree-ssa-sccvn.c (const_vn_binary_op_t, const_vn_unary_op_t,
5107         const_vn_phi_t, const_vn_reference_op_t, const_vn_reference_t):
5108         New.
5109         (vn_reference_op_eq, vn_reference_hash, vn_reference_eq,
5110         vn_unary_op_hash, vn_unary_op_eq, vn_binary_op_hash,
5111         vn_binary_op_eq, vn_phi_hash, vn_phi_eq): Constify.
5112         * tree-ssa-threadupdate.c (redirection_data_hash,
5113         redirection_data_eq): Likewise. 
5114         * tree-ssa-uncprop.c (equiv_hash, equiv_eq): Likewise.
5115         * tree-ssa.c (var_ann_eq): Likewise.
5116         * tree-vrp.c (compare_case_labels): Likewise.
5117         * tree.c (int_cst_hash_hash, int_cst_hash_eq,
5118         tree_map_base_marked_p, type_hash_marked_p, tree_check_failed,
5119         tree_not_check_failed, tree_class_check_failed,
5120         tree_range_check_failed, tree_not_class_check_failed,
5121         omp_clause_check_failed, omp_clause_range_check_failed,
5122         tree_contains_struct_check_failed, tree_operand_check_failed):
5123         Likewise. 
5124         * tree.h (tree_contains_struct_check_failed, tree_check_failed,
5125         tree_not_check_failed, tree_class_check_failed,
5126         tree_range_check_failed, tree_not_class_check_failed,
5127         tree_operand_check_failed, omp_clause_operand_check_failed,
5128         tree_operand_length): Likewise. 
5129         * var-tracking.c (const_variable): New.
5130         (variable_htab_hash, variable_htab_eq): Constify.
5131         * varasm.c (const_desc_hash): Likewise.
5132
5133 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5134
5135         * expr.c (handled_component_p): Constify.
5136         * fold-const.c (fit_double_type): Likewise.
5137         * real.h (real_value_from_int_cst): Likewise.
5138         * tree-flow-inline.h (gimple_in_ssa_p,
5139         gimple_aliases_computed_p, gimple_addressable_vars,
5140         gimple_call_clobbered_vars, gimple_referenced_vars,
5141         gimple_global_var, gimple_nonlocal_all, gimple_var_anns,
5142         end_htab_p, end_referenced_vars_p, var_ann, function_ann,
5143         may_aliases, end_readonly_imm_use_p, has_zero_uses,
5144         has_single_use, single_imm_use, num_imm_uses, is_exec_stmt,
5145         is_label_stmt, is_global_var, phi_ssa_name_p,
5146         factoring_name_p, is_call_clobbered, tree_common_ann,
5147         op_iter_done, end_imm_use_stmt_p, end_imm_use_on_stmt_p,
5148         unmodifiable_var_p, array_ref_contains_indirect_ref,
5149         ref_contains_array_ref, lookup_subvars_for_var,
5150         var_can_have_subvars, overlap_subvar, gimple_ssa_operands,
5151         gimple_mem_ref_stats): Likewise.
5152         * tree-flow.h (tree_common_ann, var_ann, function_ann,
5153         may_aliases, is_exec_stmt, is_label_stmt,
5154         ref_contains_array_ref, array_ref_contains_indirect_ref,
5155         var_can_have_subvars, overlap_subvar, is_call_clobbered,
5156         unmodifiable_var_p): Likewise.
5157         * tree-gimple.c (is_gimple_min_invariant): Likewise.
5158         * tree-gimple.h (is_gimple_min_invariant): Likewise. 
5159         * tree.c (type_hash_list, attribute_hash_list, tree_size,
5160         cst_and_fits_in_hwi, real_value_from_int_cst,
5161         build_real_from_int_cst, integer_zerop, integer_onep,
5162         integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2,
5163         tree_floor_log2, real_zerop, real_onep, real_twop,
5164         real_minus_onep, really_constant_p, purpose_member, chain_member,
5165         list_length, fields_length, int_size_in_bytes, bit_position,
5166         int_bit_position, byte_position, int_byte_position, expr_align,
5167         array_type_nelts, tree_node_structure,
5168         type_contains_placeholder_1, iterative_hash_pointer,
5169         is_attribute_with_length_p, is_attribute_p, check_qualified_type,
5170         tree_map_base_eq, type_hash_list, type_hash_eq,
5171         attribute_hash_list, type_num_arguments, tree_int_cst_equal,
5172         tree_int_cst_lt, tree_int_cst_compare, host_integerp,
5173         tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
5174         simple_cst_list_equal, compare_tree_int, iterative_hash_expr,
5175         int_fits_type_p, get_containing_scope, decl_function_context,
5176         decl_type_context, omp_clause_operand_check_failed,
5177         initializer_zerop, int_cst_value, num_ending_zeros): Likewise.
5178         * tree.h (omp_clause_operand_check_failed, tree_size,
5179         build_real_from_int_cst, array_type_nelts, purpose_member,
5180         tree_int_cst_equal, tree_int_cst_lt, tree_int_cst_compare,
5181         host_integerp, tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
5182         is_attribute_p, check_qualified_type, expr_align,
5183         int_size_in_bytes, bit_position, int_bit_position, byte_position,
5184         int_byte_position, list_length, fields_length, initializer_zerop,
5185         integer_zerop, integer_onep, integer_all_onesp, integer_pow2p,
5186         integer_nonzerop, cst_and_fits_in_hwi, num_ending_zeros,
5187         tree_node_structure, handled_component_p, get_containing_scope,
5188         decl_function_context, decl_type_context, real_zerop,
5189         type_num_arguments, fit_double_type, really_constant_p,
5190         int_fits_type_p, tree_log2, tree_floor_log2, iterative_hash_expr,
5191         compare_tree_int, chain_member, simple_cst_list_equal, real_onep,
5192         real_twop, real_minus_onep, int_cst_value): Likewise.
5193
5194 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5195
5196         * cfglayout.c (insn_scope, insn_line): Constify.
5197         * emit-rtl.c (const_int_htab_hash, const_int_htab_eq,
5198         const_double_htab_hash, const_double_htab_eq,
5199         mem_attrs_htab_hash): Likewise.
5200         * loop-iv.c (biv_eq): Likewise.
5201         * print-rtl.c (print_rtx, print_decl_name, print_mem_expr,
5202         print_inline_rtx, debug_rtx, debug_rtx_list, debug_rtx_range,
5203         debug_rtx_find, print_rtl, print_rtl_single, print_simple_rtl):
5204         Likewise. 
5205         * rtl-error.c (location_for_asm, diagnostic_for_asm,
5206         error_for_asm, warning_for_asm, _fatal_insn,
5207         _fatal_insn_not_found): Likewise. 
5208         * rtl.c (rtx_size, shared_const_p, shallow_copy_rtx_stat,
5209         rtx_equal_p, rtl_check_failed_bounds, rtl_check_failed_type1,
5210         rtl_check_failed_type2, rtl_check_failed_code1,
5211         rtl_check_failed_code2, rtl_check_failed_code_mode,
5212         rtvec_check_failed_bounds, rtl_check_failed_flag): Likewise.
5213         * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
5214         rtl_check_failed_type2, rtl_check_failed_code1,
5215         rtl_check_failed_code2, rtl_check_failed_code_mode,
5216         rtvec_check_failed_bounds, rtl_check_failed_flag, LABEL_KIND,
5217         SET_LABEL_KIND, rhs_regno, subreg_lsb, subreg_regno, subreg_nregs,
5218         shared_const_p, rtx_size, shallow_copy_rtx_stat, rtx_equal_p,
5219         get_pool_mode, insn_line, insn_file, simplify_replace_rtx,
5220         mode_signbit_p, rtx_addr_can_trap_p, nonzero_address_p,
5221         rtx_unstable_p, get_integer_term, get_related_value,
5222         offset_within_block_p, reg_mentioned_p, count_occurrences,
5223         reg_referenced_p, reg_used_between_p, no_labels_between_p,
5224         single_set_2, multiple_sets, set_noop_p, refers_to_regno_p,
5225         reg_overlap_mentioned_p, dead_or_set_p, dead_or_set_regno_p,
5226         find_reg_note, find_regno_note, find_reg_equal_equiv_note,
5227         find_constant_src, find_reg_fusage, find_regno_fusage,
5228         pure_call_p, remove_note, side_effects_p, volatile_refs_p,
5229         volatile_insn_p, may_trap_p, may_trap_after_code_motion_p,
5230         may_trap_or_fault_p, inequality_comparisons_p, tablejump_p,
5231         computed_jump_p, auto_inc_p, in_expr_list_p,
5232         remove_node_from_expr_list, loc_mentioned_in_p,
5233         label_is_jump_target_p, reversed_comparison_code_parts,
5234         debug_rtx, debug_rtx_list, debug_rtx_range, debug_rtx_find,
5235         print_mem_expr, print_rtl, print_simple_rtl, print_rtl_single,
5236         print_inline_rtx): Likewise.
5237         * rtlanal.c (covers_regno_p, covers_regno_no_parallel_p,
5238         computed_jump_p_1, nonzero_bits1, rtx_unstable_p,
5239         rtx_addr_can_trap_p_1, rtx_addr_can_trap_p, nonzero_address_p,
5240         get_integer_term, get_related_value, offset_within_block_p,
5241         count_occurrences, reg_mentioned_p, no_labels_between_p,
5242         reg_used_between_p, reg_referenced_p, single_set_2,
5243         multiple_sets, set_noop_p, refers_to_regno_p,
5244         reg_overlap_mentioned_p, dead_or_set_p,
5245         covers_regno_no_parallel_p, covers_regno_p,
5246         dead_or_set_regno_p, find_reg_note, find_regno_note,
5247         find_reg_equal_equiv_note, find_constant_src, find_reg_fusage,
5248         find_regno_fusage, pure_call_p, remove_note, in_expr_list_p,
5249         remove_node_from_expr_list, volatile_insn_p, volatile_refs_p,
5250         side_effects_p, may_trap_p_1, may_trap_p,
5251         may_trap_after_code_motion_p, may_trap_or_fault_p,
5252         inequality_comparisons_p, tablejump_p, computed_jump_p_1,
5253         computed_jump_p, auto_inc_p, loc_mentioned_in_p, subreg_lsb,
5254         subreg_regno, subreg_nregs, label_is_jump_target_p): Likewise.
5255         * simplify-rtx.c (neg_const_int, plus_minus_operand_p,
5256         mode_signbit_p, simplify_replace_rtx, plus_minus_operand_p):
5257         Likewise. 
5258         * toplev.h (_fatal_insn_not_found, _fatal_insn, error_for_asm,
5259         warning_for_asm): Likewise.
5260         * tree.h (print_rtl): Likewise.
5261         * varasm.c (get_pool_mode): Likewise.
5262
5263 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5264
5265         * c-lex.c (c_lex_with_flags, lex_string): Constify.
5266         * c-ppoutput.c (print_line, pp_dir_change): Likewise.
5267         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
5268         * cfg.c (bb_copy_original_hash, bb_copy_original_eq): Likewise.
5269         * cfgloop.c (loop_exit_hash, loop_exit_eq): Likewise.
5270         * ddg.c (compare_sccs): Likewise.
5271         * df-scan.c (df_ref_compare, df_mw_compare): Likewise.
5272         * dfp.c (decimal_real_from_string, decimal_to_decnumber,
5273         decimal_to_binary, decimal_do_compare, decimal_real_to_decimal,
5274         decimal_do_fix_trunc, decimal_real_to_integer,
5275         decimal_real_to_integer2, decimal_real_maxval): Likewise.
5276         * dse.c (const_group_info_t): New.
5277         (invariant_group_base_eq, invariant_group_base_hash): Constify.
5278         * dwarf2out.c (const_dw_die_ref): New.
5279         (decl_die_table_hash, decl_die_table_eq, file_info_cmp): Constify.
5280         * tree-browser.c (TB_parent_eq): Likewise.
5281         * unwind-dw2-fde.c (__register_frame_info_bases,
5282         __deregister_frame_info_bases, fde_unencoded_compare, fde_split,
5283         add_fdes, linear_search_fdes, binary_search_unencoded_fdes):
5284         Likewise.
5285         * unwind-dw2-fde.h (get_cie, next_fde): Likewise.
5286         * unwind-dw2.c (uw_frame_state_for): Likewise.
5287         * value-prof.c (histogram_hash, histogram_eq): Likewise.
5288         * value-prof.h (const_histogram_value): New.
5289
5290 2007-07-25  Richard Sandiford  <richard@codesourcery.com>
5291
5292         * config/mips/mips.c (machine_function): Add
5293         initialized_mips16_gp_pseudo_p.
5294         (mips16_gp_pseudo_reg): Do not emit the initialization of
5295         mips16_gp_pseudo_rtx when being called from the gimple cost-
5296         calculation routines; emit it on the first use outside those
5297         routines.
5298
5299 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5300
5301         * coretypes.h (const_bitmap, const_rtx, const_rtvec, const_tree):
5302         New.
5303         
5304         * rtl.h (RTL_CHECK1, RTL_CHECK2, RTL_CHECKC1, RTL_CHECKC2,
5305         RTVEC_ELT, XWINT, XCWINT, XCMWINT, XCNMPRV, BLOCK_SYMBOL_CHECK,
5306         RTL_FLAG_CHECK1, RTL_FLAG_CHECK2, RTL_FLAG_CHECK3,
5307         RTL_FLAG_CHECK4, RTL_FLAG_CHECK5, RTL_FLAG_CHECK6,
5308         RTL_FLAG_CHECK7, RTL_FLAG_CHECK8, LABEL_KIND, SET_LABEL_KIND):
5309         Preserve const-ness of parameters through use of __typeof(),
5310         also constify and tidy.
5311         
5312         * tree.h (TREE_CHECK, TREE_NOT_CHECK, TREE_CHECK2,
5313         TREE_NOT_CHECK2, TREE_CHECK3, TREE_NOT_CHECK3, TREE_CHECK4,
5314         NON_TREE_CHECK4, TREE_CHECK5, TREE_NOT_CHECK5,
5315         CONTAINS_STRUCT_CHECK, TREE_CLASS_CHECK, TREE_RANGE_CHECK,
5316         OMP_CLAUSE_SUBCODE_CHECK, OMP_CLAUSE_RANGE_CHECK, EXPR_CHECK,
5317         GIMPLE_STMT_CHECK, NON_TYPE_CHECK, TREE_VEC_ELT_CHECK,
5318         PHI_NODE_ELT_CHECK, OMP_CLAUSE_ELT_CHECK, TREE_OPERAND_CHECK,
5319         TREE_OPERAND_CHECK_CODE, GIMPLE_STMT_OPERAND_CHECK,
5320         TREE_RTL_OPERAND_CHECK, TREE_CHAIN, TREE_TYPE): Likewise.
5321
5322 2007-07-25  Julian Brown  <julian@codesourcery.com>
5323             Mark Shinwell  <shinwell@codesourcery.com>
5324
5325         * config/alpha/alpha.c (alpha_mangle_fundamental_type): Rename to...
5326         (alpha_mangle_type): This.
5327         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
5328         (TARGET_MANGLE_TYPE): Define this instead.
5329         * config/arm/arm-protos.h (arm_mangle_type): Add prototype.
5330         * config/arm/arm.c (TARGET_MANGLE_TYPE): Define target hook.
5331         (arm_init_neon_builtins): Fix comment.
5332         (arm_mangle_map_entry): New.
5333         (arm_mangle_map): New.
5334         (arm_mangle_type): New.
5335         * config/i386/i386.c (ix86_mangle_fundamental_type): Rename to...
5336         (ix86_mangle_type): This. Use TYPE_MAIN_VARIANT and restrict
5337         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
5338         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
5339         (TARGET_MANGLE_TYPE): Define this instead.
5340         * config/ia64/ia64.c (ia64_mangle_fundamental_type): Rename to...
5341         (ia64_mangle_type): This. Use TYPE_MAIN_VARIANT  and restrict
5342         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
5343         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
5344         (TARGET_MANGLE_TYPE): Define this instead.
5345         * config/rs6000/rs6000.c (rs6000_mangle_fundamental_type): Rename
5346         to...
5347         (rs6000_mangle_type): This. Use TYPE_MAIN_VARIANT.
5348         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
5349         (TARGET_MANGLE_TYPE): Define this instead.
5350         * config/s390/s390.c (s390_mangle_fundamental_type): Rename to...
5351         (s390_mangle_type): This.
5352         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
5353         (TARGET_MANGLE_TYPE): Define this instead.
5354         * config/sparc/sparc.c (sparc_mangle_fundamental_type): Rename to...
5355         (sparc_mangle_type): This.
5356         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
5357         (TARGET_MANGLE_TYPE): Define this instead.
5358         * cp/mangle.c (write_type): Call mangle_type target hook on all
5359         types before mangling.  Use original type, not main variant, as
5360         argument.
5361         * target-def.h (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename hook to...
5362         (TARGET_MANGLE_TYPE): This.
5363         * target.h (gcc_target): Rename mangle_fundamental_type to
5364         mangle_type.
5365         * doc/tm.texi (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename section to...
5366         (TARGET_MANGLE_TYPE): This. Note slightly different semantics.
5367
5368 2007-07-25  Julian Brown  <julian@codesourcery.com>
5369             Paul Brook  <paul@codesourcery.com>
5370             Joseph Myers  <joseph@codesourcery.com>
5371             Mark Shinwell  <shinwell@codesourcery.com>
5372
5373         * Makefile.in (TEXI_GCC_FILES): Add arm-neon-intrinsics.texi.
5374         * config.gcc (arm*-*-*): Add arm_neon.h to extra headers.
5375         (with_fpu): Allow --with-fpu=neon.
5376         * config/arm/aof.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
5377         * config/arm/aout.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
5378         * config/arm/arm-modes.def (EI, OI, CI, XI): New modes.
5379         * config/arm/arm-protos.h (neon_immediate_valid_for_move)
5380         (neon_immediate_valid_for_logic, neon_output_logic_immediate)
5381         (neon_pairwise_reduce, neon_expand_vector_init, neon_reinterpret)
5382         (neon_emit_pair_result_insn, neon_disambiguate_copy)
5383         (neon_vector_mem_operand, neon_struct_mem_operand, output_move_quad)
5384         (output_move_neon): Add prototypes.
5385         * config/arm/arm.c (FL_NEON): New flag for NEON processor capability.
5386         (all_fpus): Add FPUTYPE_NEON.
5387         (fp_model_for_fpu): Add NEON field.
5388         (arm_return_in_memory): Return vectors <= 16 bytes in ARM registers.
5389         (arm_arg_partial_bytes): Allow NEON vectors to be passed partially
5390         in registers.
5391         (arm_legitimate_address_p): Don't support fancy addressing for NEON
5392         structure moves.
5393         (thumb2_legitimate_address_p): Likewise.
5394         (neon_valid_immediate): Recognize and prepare constants suitable for
5395         NEON instructions.
5396         (neon_immediate_valid_for_move): New function. Recognize and prepare
5397         immediates for NEON move instructions.
5398         (neon_immediate_valid_for_logic): New function. Recognize and
5399         prepare immediates for NEON logic instructions.
5400         (neon_output_logic_immediate): New function. Create asm string
5401         suitable for outputting immediate logic instructions.
5402         (neon_pairwise_reduce): New function. Implement reduction using
5403         pairwise operations.
5404         (neon_expand_vector_init): New function. Expand a (possibly
5405         non-constant) vector initialization.
5406         (neon_vector_mem_operand): New function. Memory operands supported
5407         for quad-word loads/stores to/from ARM or NEON registers. Don't
5408         allow base+offset addressing for core regs.
5409         (neon_struct_mem_operand): New function. Valid mems for NEON
5410         structure moves.
5411         (coproc_secondary_reload_class): Enable NEON registers to be loaded
5412         from neon_vector_mem_operand addresses without a secondary register.
5413         (add_minipool_forward_ref): Handle >8-byte minipool entries.
5414         (add_minipool_backward_ref): Likewise.
5415         (dump_minipool): Likewise.
5416         (push_minipool_fix): Likewise.
5417         (output_move_quad): New function. Output quad-word moves, loads and
5418         stores using ARM registers.
5419         (output_move_vfp): Add support for vectors in VFP (NEON) D
5420         registers.
5421         (output_move_neon): Output a NEON load/store to/from a quadword
5422         register.
5423         (arm_print_operand): Implement new codes:
5424         - 'c' for unadorned integers (without a # sign).
5425         - 'J', 'K' for reg+2/reg+3, reg+3/reg+2 in little/big-endian
5426         mode.
5427         - 'e', 'f' for the low and high D parts of a NEON Q register.
5428         - 'q' outputs a NEON Q register.
5429         - 'h' outputs ranges of D registers for VLDM/VSTM etc.
5430         - 'T' prints NEON opcode features from a coded bitmask.
5431         - 'F' is similar to T, but signed/unsigned codes both print as
5432         'i'.
5433         - 't' is similar to T, but 'u' is printed instead of 'p'.
5434         - 'O' prints 'r' if NEON instruction should perform rounding (as
5435         specified by bitmask), else prints nothing.
5436         - '#' is a punctuation character to stop operand numbers from
5437         running together with following digits in the assembler
5438         strings for instructions (when using mode attributes).
5439         (arm_assemble_integer): Handle extra NEON vector modes. Permute
5440         constant vectors in big-endian mode, where necessary.
5441         (arm_hard_regno_mode_ok): Allow vectors in VFP/NEON registers.
5442         Handle EI, OI, CI, XI modes.
5443         (ashlv4hi3, ashlv2si3, lshrv4hi3, lshrv2si3, ashrv4hi3)
5444         (ashrv2si3): Rename IWMMXT2_BUILTINs to...
5445         (ashlv4hi3_iwmmxt, ashlv2si3_iwmmxt, lshrv4hi3_iwmmxt)
5446         (lshrv2si3_iwmmxt, ashrv4hi3_iwmmxt, ashrv2si3_iwmmxt): New names.
5447         (neon_builtin_type_bits): Add enumeration, one bit for each vector
5448         type.
5449         (v8qi_UP, v4hi_UP, v2si_UP, v2sf_UP, di_UP, v16qi_UP, v8hi_UP)
5450         (v4si_UP, v4sf_UP, v2di_UP, ti_UP, ei_UP, oi_UP, UP): Define macros
5451         to turn v8qi, etc. into bits defined above.
5452         (neon_itype): New enumeration. Classifications of NEON builtins.
5453         (neon_builtin_datum): Define struct. Contains information about
5454         a single builtin (with multiple modes).
5455         (CF): Define helper macro for...
5456         (VAR1...VAR10): Define builtins with a type, name and 1-10 different
5457         modes.
5458         (neon_builtin_data): New array. Define information about builtins
5459         for use during initialization/expansion.
5460         (arm_init_neon_builtins): New function.
5461         (arm_init_builtins): Call arm_init_neon_builtins if TARGET_NEON is
5462         true.
5463         (neon_builtin_compare): New function.
5464         (locate_neon_builtin_icode): New function. Find an insn code for a
5465         builtin given a function code for that builtin. Also return type of
5466         builtin (NEON_BINOP, NEON_UNOP etc.).
5467         (builtin_arg): New enumeration. Types of arguments for builtins.
5468         (arm_expand_neon_args): New function. Expand a generic NEON builtin.
5469         Takes a variable argument list of builtin_arg types, terminated by
5470         NEON_ARG_STOP.
5471         (arm_expand_neon_builtin): New function. Expand a NEON builtin.
5472         (neon_reinterpret): New function. Expand NEON reinterpret intrinsic.
5473         (neon_emit_pair_result_insn): New function. Support returning pairs
5474         of vectors via a pointer.
5475         (neon_disambiguate_copy): New function. Set up operands for a
5476         multi-word copy such that registers do not get clobbered.
5477         (arm_expand_builtin): Call arm_expand_neon_builtin if fcode >=
5478         ARM_BUILTIN_NEON_BASE.
5479         (arm_file_start): Set float-abi attribute for NEON.
5480         (arm_vector_mode_supported_p): Enable NEON vector modes.
5481         (arm_mangle_map_entry): New.
5482         (arm_mangle_map): New.
5483         (arm_mangle_vector_type): New.
5484         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_NEON__
5485         when appropriate.
5486         (TARGET_NEON): New macro. Target supports NEON.
5487         (fputype): Add FPUTYPE_NEON.
5488         (UNITS_PER_SIMD_WORD): Define. Allow quad-word registers to be used
5489         for vectorization based on command-line arg.
5490         (NEON_REGNO_OK_FOR_NREGS): Define.
5491         (VALID_NEON_DREG_MODE, VALID_NEON_QREG_MODE)
5492         (VALID_NEON_STRUCT_MODE): Define.
5493         (PRINT_OPERAND_PUNCT_VALID_P): '#' is valid punctuation.
5494         (arm_builtins): Add ARM_BUILTIN_NEON_BASE.
5495         * config/arm/arm.md (VUNSPEC_POOL_16): Insert constant for unspec.
5496         (consttable_16): Add pattern for outputting 16-byte minipool
5497         entries.
5498         (movv2si, movv4hi, movv8qi): Remove blank expanders (redefined in
5499         vec-common.md).
5500         (vec-common.md, neon.md): Include md files.
5501         * config/arm/arm.opt (mvectorize-with-neon-quad): Add option.
5502         * config/arm/constraints.md (constraint "Dn", "Dl", "DL"): Define.
5503         (memory_constraint "Ut", "Un", "Us"): Define.
5504         * config/arm/iwmmxt.md (VMMX, VSHFT): New mode macros.
5505         (MMX_char): New mode attribute.
5506         (addv8qi3, addv4hi3, addv2si3): Remove. Replace with...
5507         (*add<mode>3_iwmmxt): New insn pattern.
5508         (subv8qi3, subv4hi3, subv2si3): Remove. Replace with...
5509         (*sub<mode>3_iwmmxt): New insn pattern.
5510         (mulv4hi3): Rename to...
5511         (*mulv4hi3_iwmmxt): This.
5512         (smaxv8qi3, smaxv4hi3, smaxv2si3, umaxv8qi3, umaxv4hi3)
5513         (umaxv2si3, sminv8qi3, sminv4hi3, sminv2si3, uminv8qi3)
5514         (uminv4hi3, uminv2si3): Remove. Replace with...
5515         (*smax<mode>3_iwmmxt, *umax<mode>3_iwmmxt, *smin<mode>3_iwmmxt)
5516         (*umin<mode>3_iwmmxt): These.
5517         (ashrv4hi3, ashrv2si3, ashrdi3_iwmmxt): Replace with...
5518         (ashr<mode>3_iwmmxt): This new pattern.
5519         (lshrv4hi3, lshrv2si3, lshrdi3_iwmmxt): Replace with...
5520         (lshr<mode>3_iwmmxt): This new pattern.
5521         (ashlv4hi3, ashlv2si3, ashldi3_iwmmxt): Replace with...
5522         (ashl<mode>3_iwmmxt): This new pattern.
5523         * config/arm/neon-docgen.ml: New file. Generate documentation for
5524         intrinsics.
5525         * config/arm/neon-gen.ml: New file. Generate arm_neon.h header.
5526         * config/arm/arm_neon.h: New (autogenerated).
5527         * config/arm/neon-testgen.ml: New file. Generate NEON tests
5528         automatically.
5529         * config/arm/neon.md: New file. Define NEON instructions.
5530         * config/arm/neon.ml: New file. Abstract description of NEON
5531         instructions, used to generate arm_neon.h header, documentation and
5532         tests.
5533         * config/arm/t-arm (MD_INCLUDES): Add vec-common.md, neon.md.
5534         * vec-common.md: New file. Shared parts for iWMMXt and NEON vector
5535         support.
5536         * doc/extend.texi (ARM Built-in Functions): Rename and remove
5537         extraneous comma.
5538         (ARM NEON Intrinsics): New subsection.
5539         * doc/arm-neon-intrinsics.texi: New (autogenerated).
5540
5541 2007-07-25  Danny Smith   <dannysmith@users.sourceforge.net>
5542
5543         * config/i386/i386-protos.h (i386_pe_asm_file_end): Remove
5544         prototype.
5545
5546 2007-07-24  Jan Hubicka  <jh@suse.cz>
5547
5548         * regclass.c (move_table): New type.
5549         (move_cost, may_move_in_cost, may_move_out_cost): Use it.
5550         (init_move_cost): Break out from ...
5551         (init_reg_sets_1): ... here; simplify computation of
5552         have_regs-of_mode and contains_reg_of_mode.
5553         (record_reg_classes): Unswitch internal loops.
5554         (copy_cost): Trigger lazy initialization of move cost
5555         (record_address_regs): Likewise.
5556
5557 2007-07-24  Daniel Berlin  <dberlin@dberlin.org>
5558
5559         * config/darwin.c (darwin_override_options): Don't force on
5560         flag_var_tracking_uninit when no debug info is requested.
5561
5562 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
5563
5564         * cfgloop.c (init_loops_structure): New function.
5565         (flow_loops_find): Create root of the loop tree unconditionally.
5566
5567 2007-07-24  Daniel Jacobowitz  <dan@codesourcery.com>
5568
5569         * tree-ssa-ccp.c (fold_const_aggregate_ref): Use fold_convert.
5570
5571 2007-07-24  Jan Hubicka  <jh@suse.cz>
5572
5573         * caller-save.c: Include ggc.h, gt-caller-save.h
5574         (reg_save_code, reg_restore_code): Rename to ...
5575         (cached_reg_save_code, cached_reg_restore_code): ... those.
5576         (savepat, restpat, test_reg, test_mem, saveinsn, restinsn): New.
5577         (reg_save_code, reg_restore_code): New functions.
5578         (init_caller_save): Do not intialize
5579         reg_save_code/reg_restore_code tables.
5580         * Makefile.in: (gt-caller-save.h): New.
5581
5582 2007-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
5583
5584         * tree-ssa-ifcombine.c (ifcombine_ifandif): Use a ONE operand
5585         with the mode of the original operand instead of
5586         integer_one_node.
5587
5588 2007-07-23  Jan Hubicka  <jH@suse.cz>
5589
5590         * i386.c (ix86_secondary_memory_needed): Break out to...
5591         (inline_secondary_memory_needed): ... here.
5592         (ix86_memory_move_cost): Break out to ...
5593         (inline_memory_move_cost): ... here; add support for IN value of 2 for
5594         maximum of input and output; fix handling of Q_REGS on 64bit.
5595         (ix86_secondary_memory_needed): Microoptimize.
5596
5597 2007-07-23  Sebastian Pop  <sebpop@gmail.com>
5598
5599         * tree-data-ref.c (find_vertex_for_stmt, create_rdg_edge_for_ddr,
5600         create_rdg_edges_for_scalar, create_rdg_edges, create_rdg_vertices,
5601         stmts_from_loop, known_dependences_p, build_rdg): New.
5602         * tree-data-ref.h: Depends on graphds.h.
5603         (rdg_vertex, RDGV_STMT, rdg_dep_type, rdg_edge, RDGE_TYPE): New.
5604         (build_rdg): Declared.
5605         * Makefile.in (TREE_DATA_REF_H): Depends on graphds.h.
5606
5607 2007-07-23  Daniel Berlin  <dberlin@dberlin.org>
5608
5609         * tree-ssa-propagate.c (valid_gimple_expression_p): Match up with
5610         ccp_min_invariant.
5611
5612 2007-07-23  Peter Bergner  <bergner@vnet.ibm.com>
5613             Jakub Jelinek  <jakub@redhat.com>
5614
5615         PR middle-end/PR28690
5616         * optabs.c (expand_binop): (emit_cmp_and_jump_insns): Allow
5617         EQ compares.
5618         * rtlanal.c (commutative_operand_precedence): Prefer both REG_POINTER
5619         and MEM_POINTER operands over REG and MEM operands.
5620         (swap_commutative_operands_p): Change return value to bool.
5621         * rtl.h: Update the corresponding prototype.
5622         * tree-ssa-address.c (gen_addr_rtx): Use simplify_gen_binary
5623         instead of gen_rtx_PLUS.
5624         * simplify-rtx.c (simplify_plus_minus_op_data_cmp): Change return
5625         value to bool.  Change function arguments to rtx's and update code
5626         to match.
5627         (simplify_plus_minus): Update the simplify_plus_minus_op_data_cmp
5628         calls to match the new declaration.
5629         * simplify-rtx.c (simplify_associative_operation): Don't
5630         reorder simplify_binary_operation arguments.
5631
5632 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
5633
5634         * config/mips/mips.c (override_options): Use mips_costs to derive
5635         the default branch cost.
5636         * config/mips/mips.h (BRANCH_COST): Use mips_branch_cost rather
5637         than mips_costs.
5638         * config/mips/mips.opt (mbranch-cost=): New option.
5639         * doc/invoke.texi (-mbranch-cost): Document new MIPS option.
5640
5641 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
5642
5643         * config/mips/mips.h (GR_REG_CLASS_P, COP_REG_CLASS_P): Delete.
5644         (SECONDARY_MEMORY_NEEDED): Delete commented-out definition.
5645         * config/mips/mips.c (mips_register_move_cost): Use reg_class_subset_p
5646         instead of GR_REG_CLASS_P and COP_REG_CLASS_P.
5647
5648 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
5649
5650         * config/mips/constraints.md (ks): New constraint.
5651         * config/mips/mips.md (*add<mode>3_sp1, *add<mode>3_sp2): Fold into...
5652         (*add<mode>3_mips16): ...here.
5653
5654 2007-07-21  Uros Bizjak  <ubizjak@gmail.com>
5655
5656         * optabs.h (enum optab_index): Add new OTI_signbit.
5657         (signbit_optab): Define corresponding macro.
5658         (enum insn_code signbit_optab[]): Remove array.
5659         * optabs.c (init_optabs): Initialize signbit_optab using init_optab.
5660         (expand_copysign_absneg): If back end provides signbit insn, use it
5661         instead of bit operations on floating point argument.
5662         * builtins.c (enum insn_code signbit_optab[]): Remove array.
5663         (expand_builtin_signbit): Check signbit_optab->handlers[].insn_code
5664         for availability of signbit insn.
5665
5666         * config/i386/i386.md (signbit<mode>2): New insn pattern to implement
5667         signbitf, signbit and signbitl built-ins as inline x87 intrinsics when
5668         SSE mode is not active.
5669         (isinf<mode>2): Disable for mfpmath=sse,387.
5670
5671 2007-07-22  Ben Elliston  <bje@au.ibm.com>
5672
5673         * regclass.c (invalid_mode_change_p): Attach ATTRIBUTE_UNUSED to
5674         `class' parameter.
5675         * struct-equiv.c (note_local_live): Likewise for `y_regno'.
5676
5677 2007-07-20  Richard Guenther  <rguenther@suse.de>
5678
5679         * tree-cfg.c (verify_expr): COND_EXPRs can have any
5680         integral typed condition.
5681         * tree-ssa.c (useless_type_conversion_p): Do not preserve
5682         booleanness.  Only preserve conversions from a non-base
5683         type to a base type, not in general between types with
5684         different TYPE_MIN_VALUE or TYPE_MAX_VALUE.
5685         * tree.def (COND_EXPR): Document that the condition
5686         can be of any integral type.
5687
5688 2007-07-20  Nigel Stephens  <nigel@mips.com>
5689             Richard Sandiford  <richard@codesourcery.com>
5690
5691         * config/mips/mips.h (mips_dwarf_regno): Declare.
5692         (DBX_REGISTER_NUMBER): Remove redundant brackets.
5693         (HI_REGNUM, LO_REGNUM): Define in an endian-dependent way.
5694         (AC1HI_REGNUM, AC1LO_REGNUM, AC2HI_REGNUM, AC2LO_REGNUM)
5695         (AC3HI_REGNUM, AC3LO_REGNUM, ACC_HI_REG_P): Delete.
5696         (reg_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
5697         (REG_CLASS_NAMES): Update accordingly.
5698         * config/mips/mips.c (mips_dwarf_regno): New array.
5699         (mips_regno_to_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
5700         (mips_subword): Remove special handling for accumulator registers.
5701         (override_options): Initiailize mips_dwarf_regno.  Remove use
5702         of ACC_HI_REG_P.
5703         (mips_swap_registers): New function.
5704         (mips_conditional_register_usage): Swap accumulator registers
5705         around if TARGET_LITTLE_ENDIAN.
5706         (mips_cannot_change_mode_class): Remove special treatment of ACC_REGS.
5707         * config/mips/constraints.md (h, l): Use the endianness to choose
5708         between MD0_REG and MD1_REG.
5709         * config/mips/mips.md (*mfhilo_<mode>_macc): Use a fixed-string,
5710         alternative-dependent template.
5711
5712 2007-07-20  Richard Sandiford  <richard@codesourcery.com>
5713
5714         * config/arm/arm.md (movsi): Use can_create_pseudo_p instead of
5715         no_new_pseudos.
5716
5717 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
5718
5719         * function.c (thread_prologue_and_epilogue_insns): Fix exit
5720         predecessor fallthru flags.
5721
5722 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
5723
5724         * tree-ssa-loop-niter.c (assert_loop_rolls_lt): Convert the operands
5725         of compare to the same type.
5726         * cfgloopmanip.c (add_loop): Update information about loop exits.
5727         (loop_version): Remove the innermost loop requirement.
5728         * tree-ssa-loop-manip.c (determine_exit_conditions): Convert bounds
5729         to sizetype for pointers.
5730
5731 2007-07-18  H.J. Lu  <hongjiu.lu@intel.com>
5732
5733         * Makefile.in (D32PBIT_FUNCS): Add _sd_to_tf and _tf_to_sd.
5734         (D64PBIT_FUNCS): Add _dd_to_tf and _tf_to_dd.
5735         (D128PBIT_FUNCS): Add _td_to_tf and _tf_to_td.
5736
5737         * config/dfp-bit.c: Empty for TFmode conversions.
5738
5739 2007-07-18  Caroline Tice  <ctice@apple.com>
5740         
5741         * var-tracking.c (find_src_status):  Check for  COND_EXEC insns
5742         and handle them correctly; check that src is not NULL before
5743         trying to use it.
5744         (find_src_set_src): Likewise.
5745         
5746 2007-07-18  Bob Wilson  <bob.wilson@acm.org>
5747         
5748         * config/xtensa/xtensa.c (xtensa_expand_mask_and_shift): New.
5749         (struct alignment_context, init_alignment_context): New.
5750         (xtensa_expand_compare_and_swap, xtensa_expand_atomic): New.
5751         * config/xtensa/xtensa.h (XCHAL_HAVE_RELEASE_SYNC): Add default.
5752         (XCHAL_HAVE_S32C1I): Likewise.
5753         (TARGET_RELEASE_SYNC, TARGET_S32C1I): New.
5754         * config/xtensa/xtensa.md (UNSPECV_MEMW): New constant.
5755         (UNSPECV_S32RI, UNSPECV_S32C1I): Likewise.
5756         (ATOMIC, HQI): New macros.
5757         (memory_barrier, *memory_barrier): New.
5758         (sync_lock_releasesi): New.
5759         (sync_compare_and_swapsi, sync_compare_and_swap<mode>): New.
5760         (sync_lock_test_and_set<mode>): New.
5761         (sync_<atomic><mode>): New.
5762         (sync_old_<atomic><mode>, sync_new_<atomic><mode>): New.
5763         * config/xtensa/xtensa-protos.h (xtensa_expand_compare_and_swap): New.
5764         (xtensa_expand_atomic): New.
5765         
5766 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5767
5768         PR target/30652
5769
5770         * builtins.c (expand_builtin_interclass_mathfn): Provide a generic
5771         transformation for builtin ISNORMAL.
5772         (expand_builtin): Handle BUILT_IN_ISNORMAL.
5773         * builtins.def (BUILT_IN_ISNORMAL): New.
5774         * doc/extend.texi: Document isnormal.
5775
5776 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5777
5778         PR target/30652
5779
5780         * builtins.c (expand_builtin_interclass_mathfn): Allow for missing
5781         optabs infrastructure.  Provide generic implementation for
5782         FINITE/ISFINITE.
5783         (expand_builtin): Handle FINITE/ISFINITE.
5784         (fold_builtin_classify): Make ISFINITE canonical instead of FINITE.
5785         (fold_builtin_1): Likewise.
5786
5787         * builtins.def (BUILT_IN_ISFINITE): New.
5788
5789         * doc/extend.texi: Document isfinite.
5790
5791 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5792
5793         PR target/30652
5794         PR middle-end/20558
5795
5796         * builtins.c (expand_builtin_interclass_mathfn): Provide a
5797         generic fallback for isinf.
5798         * c-cppbuiltin.c (builtin_define_float_constants): Move FP max
5799         calculation code ...
5800         * real.c (get_max_float): ... to here.
5801         * real.h (get_max_float): New.
5802
5803 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5804
5805         PR middle-end/32668
5806
5807         * builtin-attrs.def (ATTR_TYPEGENERIC,
5808         ATTR_CONST_NOTHROW_TYPEGENERIC): New.
5809
5810         * builtins.def (BUILT_IN_ISINF, BUILT_IN_ISNAN,
5811         BUILT_IN_ISGREATER, BUILT_IN_ISGREATEREQUAL, BUILT_IN_ISLESS,
5812         BUILT_IN_ISLESSEQUAL, BUILT_IN_ISLESSGREATER,
5813         BUILT_IN_ISUNORDERED): Use ATTR_CONST_NOTHROW_TYPEGENERIC.
5814
5815         * c-common.c (handle_type_generic_attribute): New.
5816         (c_common_attribute_table): Add "type generic".
5817
5818         * c-typeck.c (convert_arguments): Handle "type generic" functions.
5819
5820 2007-07-18  Daniel Berlin  <dberlin@dberlin.org>
5821
5822         * tree-ssa-sccvn.c (try_to_simplify): Use valid_gimple_expression
5823         * tree-ssa-propagate (valid_gimple_expression): Handle ADDR_EXPR
5824         properly.
5825
5826 2007-07-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
5827
5828         PR target/32808
5829         * config/cris/cris.c (cris_print_index): Don't use XEXP before
5830         checking that the operand is an expression.
5831
5832 2007-07-19  Christoph von Wittich  <Christoph_vW@reactos.org>
5833             Danny Smith  <dannysmith@users.sourceforge.net>
5834
5835         PR/other 30335
5836         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Put
5837         file mapping object in local namespace if Windows version later
5838         than NT4
5839
5840 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
5841
5842         * config/arm/arm-protos.h (arm_cannot_force_const_mem): Declare.
5843         * config/arm/arm.c (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to
5844         arm_cannot_force_const_mem.
5845         (arm_cannot_force_const_mem): New function.
5846         * config/arm/arm.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): New macro.
5847         (LEGITIMATE_CONSTANT_P): Test arm_cannot_force_const_mem instead
5848         of arm_tls_referenced_p.
5849         * config/arm/arm.md (movsi): Split out-of-section constants when
5850         ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P.
5851         * config/arm/vxworks.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
5852
5853 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
5854
5855         * config/mips/mips.md (clear_cache): Treat the size argument as Pmode.
5856
5857 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
5858
5859         * config/mips/mips.md (*extendqihi2): Convert the destination
5860         to SImode.
5861
5862 2007-07-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5863
5864         * config/pa/fptr.c: Update license header.
5865         * config/pa/milli64.S: Likewise.
5866
5867 2007-07-17  Nick Clifton  <nickc@redhat.com>
5868
5869         * COPYING_v3: New file.  Contains version 3 of the GNU General
5870         Public License.
5871         * COPYING.LIB_v3: New file.  Contains version 3 of the GNU
5872         Lesser General Public License.
5873         * doc/include/gpl_v3.texi: New file.  Contains version 3 of
5874         the GNU General Public License.
5875
5876 2007-07-17  Zdenek Dvorak  <dvorakz@suse.cz>
5877
5878         PR rtl-optimization/32773
5879         * cfglayout.c (force_one_exit_fallthru): New function.
5880         (cfg_layout_finalize): Use it.
5881
5882 2007-07-16  Richard Guenther  <rguenther@suse.de>
5883             Uros Bizjak  <ubizjak@gmail.com>
5884
5885         * tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond"
5886         before forcing it to gimple operand.
5887
5888 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
5889             David Ung  <davidu@mips.com>
5890
5891         * config/mips/mips.h (TUNE_24K): Define.
5892         (TUNE_MACC_CHAINS): Add TUNE_24K.
5893         * config/mips/mips.md: (*mul_acc_si, *mul_sub_si): Change type to
5894         imadd.
5895         * config/mips/74k.md (r74k_int_mult): Split madd/msub to ..
5896         (r74k_int_madd): .. this new reservation.
5897         (define_bypass): Fixed bypasses for r74k_int_madd to use
5898         mips_linked_madd_p.
5899         * config/mips/24k.md (define_bypass): Define new
5900         r24k_int_mul3->r24k_int_madd bypass using mips_linked_madd_p.
5901
5902 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
5903             Nigel Stephens  <nigel@mips.com>
5904
5905         * config/mips/mips.md:  Include 20kc.md.
5906         * config/mips/20kc.md: New file.
5907         * config/mips/mips.c (mips_rtx_cost_data): Fill in 20Kc costs.
5908         (mips_adjust_cost): Tweak for 20Kc.
5909         (mips_issue_rate): Likewise.
5910         * config/mips/mips.h (TUNE_20KC): Define.
5911
5912 2007-07-16  David Edelsohn  <edelsohn@gnu.og>
5913
5914         * config/rs6000/rs6000.c (struct processor_cost): Add
5915         cache_line_size, l1_cache_lines, and simultaneous_prefetches
5916         fields.
5917         (*_cost): Add cache information.
5918         (rs6000_override_options): Set cache parameters.
5919
5920 2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
5921
5922         PR bootstrap/3456
5923         * config.gcc (mips-sgi-irix[56]*): Enable pthread support.
5924         * doc/install.texi (mips-sgi-irix6): pthread support works now.
5925
5926 2007-07-16  Paul Brook  <paul@codesourcery.com>
5927
5928         PR target/32753
5929         * config/arm/cirrus.md (cirrus_arm_movsi_insn): Remove dead insn.
5930         (cirrus_thumb2_movsi_insn): Ditto.
5931
5932 2007-07-15  Geoffrey Keating  <geoffk@apple.com>
5933
5934         * config/rs6000/darwin-fallback.c (interpret_libc): Change
5935         CR2_REGNO to R_CR2.
5936
5937 2007-07-15  Andrew Haley  <aph@redhat.com>
5938
5939         * unwind-sjlj.c (_Unwind_GetIPInfo): Check for context->fc != NULL
5940         before looking in the context.
5941
5942 2007-07-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5943
5944         PR middle-end/32398
5945         PR middle-end/32769
5946         * pa-protos.h (pa_eh_return_handler_rtx): Declare.
5947         * pa.c (pa_extra_live_on_entry, rp_saved): Declare.
5948         (TARGET_EXTRA_LIVE_ON_ENTRY): Define.
5949         (pa_output_function_prologue): Use rp_saved and
5950         current_function_is_leaf to generate .CALLINFO statement.
5951         (hppa_expand_prologue): Set rp_saved.
5952         (hppa_expand_epilogue): Use rp_saved.
5953         (pa_extra_live_on_entry, pa_eh_return_handler_rtx): New functions.
5954         * pa.h (EH_RETURN_HANDLER_RTX): Use pa_eh_return_handler_rtx.
5955
5956 2007-07-14  Dirk Mueller  <dmueller@suse.de>
5957
5958         * omega.c (coalesce): Fix memory leak on early exit.
5959         * matrix-reorg.c (check_allocation_function): Likewise.
5960         * tree-vect-transform.c (vect_get_new_vect_var): free result
5961         of concat().
5962         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
5963         pass pointer to edge vector
5964         (partition_hot_cold_basic_blocks): Fix memory leak.
5965         * collect2.c (prefix_from_string): Free temporary storage.
5966         * reload1.c (fixup_abnormal_edges): Free sbitmap.
5967
5968 2007-07-14  Kaz Kojima  <kkojima@gcc.gnu.org>
5969
5970         * config/sh/sh.h (DO_GLOBAL_CTORS_BODY): Add void to prototype.
5971         (DO_GLOBAL_DTORS_BODY): Likewise.
5972
5973 2007-07-14  Sandra Loosemore  <sandra@codesourcery.com>
5974             Nigel Stephens  <nigel@mips.com>
5975
5976         * config/mips/mips.c (mips_classify_symbol): Don't return
5977         SYMBOL_SMALL_DATA for constant pool addresses if
5978         TARGET_EMBEDDED_DATA is true.
5979
5980 2007-07-14  Uros Bizjak  <ubizjak@gmail.com>
5981
5982         * config/i386/i386.c (init_mmx_sse_builtins): Define all builtins
5983         except __builtin_ia32_emms, __builtin_ia32_ldmxcsr,
5984         __builtin_ia32_stmxcsr, __builtin_ia32_maskmovq, __builtin_ia32_loadups,
5985         __builtin_ia32_storeups, __builtin_ia32_loadhps, __builtin_ia32_loadlps,
5986         __builtin_ia32_storehps, __builtin_ia32_storelps,
5987         __builtin_ia32_movntps, __builtin_ia32_movntq, __builtin_ia32_sfence,
5988         __builtin_ia32_femms, __builtin_ia32_maskmovdqu, __builtin_ia32_loadupd,
5989         __builtin_ia32_storeupd, __builtin_ia32_loadhpd, __builtin_ia32_loadlpd,
5990         __builtin_ia32_movnti, __builtin_ia32_movntpd, __builtin_ia32_movntdq,
5991         __builtin_ia32_clflush, __builtin_ia32_lfence, __builtin_ia32_mfence,
5992         __builtin_ia32_loaddqu, __builtin_ia32_storedqu, __builtin_ia32_monitor,
5993         __builtin_ia32_mwait, __builtin_ia32_lddqu, __builtin_ia32_movntdqa,
5994         __builtin_ia32_movntsd and __builtin_ia32_movntss as const builtins
5995         using def_builtin_const.
5996
5997 2007-07-14  Eric Botcazou  <ebotcazou@adacore.com>
5998
5999         PR tree-optimization/32705
6000         * tree-ssa-sccvn.c (set_ssa_val_to): Accept VN_TOP as value number.
6001         (simplify_binary_expression): Use SSA_VAL consistently.
6002
6003 2007-07-13  David Edelsohn  <edelsohn@gnu.org>
6004
6005         * config/rs6000/spe.md (SPE_ACC_REGNO): Delete definition.
6006         (SPEFSCR_REGNO): Delete definition.
6007         * config/rs6000/rs6000.c: LINK_REGISTER_REGNUM -> LR_REGNO.
6008         COUNT_REGISTER_REGNUM -> CTR_REGNO.
6009         * config/rs6000/rs6000.h: Do not define *_REGNO.
6010         LINK_REGISTER_REGNUM -> LR_REGNO.
6011         COUNT_REGISTER_REGNUM -> CTR_REGNO.
6012         * config/rs6000/predicates.md: LINK_REGISTER_REGNUM ->  LR_REGNO.
6013         COUNT_REGISTER_REGNUM -> CTR_REGNO.
6014         * config/rs6000/linux-unwind.h: Define R_LR, R_CR2, R_VR0,
6015         R_VRSAVE, R_VSCR. Use them.
6016         * config/rs6000/darwin-fallback.c: Define R_LR, R_CTR, R_CR2,
6017         R_XER, R_VR0, R_VRSAVE, R_VSCR, R_SPEFSCR.  Use them.
6018         * config/rs6000/rs6000.md: Define REGNO constants.  Use them.
6019         * config/rs6000/aix.h: Define R_LR.  Use it.
6020         
6021 2007-07-13  Caroline Tice  <ctice@apple.com>
6022         
6023         * toplev.c (process_options): Turn flag_var_tracking_uninit off when
6024         flag_var_tracking is explicitly turned off (i.e. when variable
6025         tracking is not feasible); otherwise, turn flag_var_tracking on when
6026         flag_var_tracking_uninit is on.
6027         * rtl.def (VAR_LOCATION): Add a new integer subfield to VAR_LOCATION
6028         note definitions, to allow recording of initialization status in the
6029         notes.
6030         * dwarf2out.c (dwarf_stack_op_name): Add case for DW_OP_GNU_uninit.
6031         (add_var_loc_to_decl): Add comparison of NOTE_VAR_LOCATION_STATUS to
6032         determine if two note locations are equal.
6033         (output_loc_list): Don't output list entries whose start & end labels
6034         are the same.
6035         (reg_loc_descriptor): Add parameter for initialization status; pass it
6036         to other loc descriptor functions.
6037         (one_reg_loc_descriptor): Add parameter for initialization status;
6038         check its value and add DW_OP_GNU_uninit to returned loc descr if
6039         appropriate.
6040         (multiple_reg_loc_descriptor): Add parameter for initialization
6041         status;
6042         pass init status argument to other loc descriptor functions; check
6043         value of intialization parameter and add DW_OP_GNU_uninit to returned
6044         loc descr if appropriate.
6045         (based_loc_descr): Add parameter for initialization status; add new
6046         variable for return value; check value of initialization parameter and
6047         add DW_OP_GNU_uninit to returned loc descr if appropriate.
6048         (concatn_mem_loc_descriptor): Add parameter for initialization status;
6049         pass init status argument to other loc descriptor functions; check
6050         value of intialization parameter and add DW_OP_GNU_uninit to returned
6051         loc descr if appropriate.
6052         (mem_loc_descriptor): Likewise.
6053         (concat_loc_descriptor): Likewise.
6054         (concatn_loc_descriptor): Likewise.
6055         (loc_descriptor): Add parameter for initialization status; pass it as
6056         argument to other loc descriptor function calls.
6057         (loc_descriptor_from_tree_1): Add appropriate initialization status
6058         to loc descriptor function calls.
6059         (add_location_or_const_value_attribute): Get initialization status
6060         from VAR_LOCATION note; add initialization status to loc descriptor
6061         function calls.
6062         * dwarf2.h (enum dwarf_location_atom): New op, DW_OP_GNU_uninit.
6063         * print-rtl.c (print_rtx): When printing a VAR_LOCATION note, if
6064         status is uninitialized, add "[uninint]" to output.
6065         * common.opt (fvar-tracking-uninit): New option, similar to
6066         fvar-tracking, to turn on tracking of uninitialized variables; creates
6067         a new global flag, flag_var_tracking_uninit.
6068         * rtl.h (NOTE_VAR_LOCATION_STATUS): New macro for accessing new field.
6069         (enum var_init_status): New type, for var initialization status field.
6070         * var-tracking.c (struct location_chain_def): Two new fields, init,
6071         for initialization status, and set_src for the assignment value expr.
6072         (unshare_variable): New parameter for initialization status;
6073         initialize new init and set_src fields.
6074         (var_reg_set): New parameters for initialization status and value;
6075         pass them to set_variable_part.
6076         (var_mem_set): Likewise.
6077         (get_init_value): New function.
6078         (var_reg_delete_and_set): New initialization status & value
6079         parameters; add call to get_init_value if status is unknown; pass new
6080         parameters to clobber_variable_part and var_reg_set.
6081         (var_mem_delete_and_set): Likewise.
6082         (var_reg_delete): Pass null set_src value to clobber_variable_part.
6083         (var_mem_delete): Likewise.
6084         (variable_union): Pass status to unshare_variable; initialize new init
6085         and set_src fields. If flag_var_tracking_uninit is not set, force
6086         status to initialized.
6087         (add_stores): Store insn, rather than NEXT_INSN(insn), so it can be
6088         used later to get the set_src value.
6089         (find_src_status): New function.
6090         (find_src_set_src): New function.
6091         (compute_bb_dataflow): Pass init status to calls to var_reg_set,
6092         var_mem_set, var_reg_delete_and_set and var_mem_delete_and_set; for
6093         MO_SET, get set_src value and pass it to var_reg_delete_and_set
6094         and var_mem_delete_and_set.
6095         (dump_variable): Print out "[uninit]" if appropriate.
6096         (set_variable_part): Add new initialization and set_src parameters;
6097         pass status to unshare_variable; set node->init and node- >set_src
6098         fields and modify slot in hash table appropriately; save the init and
6099         set_src values if appropriate and assign to the new node.
6100         (clobber_variable_part): New set_src parameter; if two nodes have
6101         same variable and same location but different set_src (assignment)
6102         values, clobber old node.
6103         (delete_variable_part): Pass init status to unshare_variable.
6104         (emit_note_insn_var_location): Add initialized var; assign var's init
6105         status to new 'initialized'; pass new init status field to calls to
6106         gen_rtx_VAR_LOCATION. If flag_var_tracking_uninit is not set, force
6107         status to initialized.
6108         (emit_notes_in_bb): Pass initialization status to calls to
6109         var_reg_set, var_mem_set, var_reg_delete_and_set and
6110         var_mem_delete_and_set; for MO_SET, get set_src value and pass it to
6111         var_reg_delete_and_set and var_mem_delete_and_set; call
6112         emit_notes_for_changes on NEXT_INSN(insn) rather than on insn, to
6113         make up for change in add_stores.
6114         (vt_add_function_parameters): Add status to calls to
6115         set_variable_part.
6116         * config/darwin.c (darwin_override_options): Turn on uninitialized
6117         tracking automatically, if var_tracking is on and the system is
6118         10.5 or higher.
6119         
6120 2007-07-13  Sa Liu  <saliu@de.ibm.com>
6121
6122         * config.gcc: Add options for arch and tune on SPU.
6123         * config/spu/predicates.md: Add constant operands 0 and 1.
6124         * config/spu/spu-builtins.def: Add builtins for double precision 
6125         floating point comparison: si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, 
6126         si_dftsv, spu_cmpeq_13, spu_cmpabseq_1, spu_cmpgt_13, spu_cmpabsgt_1,
6127         spu_testsv.
6128         * config/spu/spu-c.c: Define __SPU_EDP__ when builtins invoked with 
6129         a CELLEDP target.
6130         * config/spu/spu-protos.h: Add new function prototypes. 
6131         * config/spu/spu.c (spu_override_options): Check options -march and
6132         -mtune.
6133         (spu_comp_icode): Add comparison code for DFmode and vector mode.
6134         (spu_emit_branch_or_set): Use the new code for DFmode and vector 
6135         mode comparison.
6136         (spu_const_from_int): New.  Create a vector constant from 4 ints.
6137         (get_vec_cmp_insn): New.  Get insn index of vector compare instruction.
6138         (spu_emit_vector_compare): New.  Emit vector compare.
6139         (spu_emit_vector_cond_expr): New.  Emit vector conditional expression.
6140         * config/spu/spu.h: Add options -march and -mtune.  Define processor
6141         types PROCESSOR_CELL and PROCESSOR_CELLEDP.  Define macro
6142         CANONICALIZE_COMPARISON.
6143         * config/spu/spu.md: Add new insns for double precision compare
6144         and double precision vector compare.  Add vcond and smax/smin patterns
6145         to enable DFmode vector conditional expression.
6146         * config/spu/spu.opt: Add options -march and -mtune.
6147         * config/spu/spu_internals.h: Add builtins for CELLEDP target:
6148         si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, si_dftsv.  Add builtin for
6149         both CELL and CELLEDP targets: spu_testsv.
6150         * config/spu/spu_intrinsics.h: Add flag mnemonics for test special 
6151         values.
6152
6153 2007-07-13  Richard Guenther  <rguenther@suse.de>
6154
6155         PR tree-optimization/32721
6156         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Preserve
6157         TREE_THIS_VOLATILE on the folded reference.
6158         * tree-ssa-operands.c (get_expr_operands): Set has_volatile_ops
6159         if the array reference has TREE_THIS_VOLATILE set.
6160
6161 2007-07-13  H.J. Lu  <hongjiu.lu@intel.com>
6162
6163         PR other/32188
6164         * doc/libgcc.texi: Update DFP intrinsics for DPD and BID.
6165
6166 2007-07-13  Andreas Schwab  <schwab@suse.de>
6167
6168         * gengtype-lex.l: Allow declarations to be indented.
6169
6170 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
6171
6172         * ginclude/tgmath.h: New.
6173         * config.gcc: Use GCC's tgmath.h on non-glibc systems.
6174         * doc/sourcebuild.texi (Headers): Document use_gcc_tgmath.
6175         * configure.ac (STMP_FIXPROTO): Honor use_gcc_tgmath.
6176         * configure: Regenerate.
6177
6178 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
6179
6180         * config/sh/linux-unwind.h (sh_fallback_frame_state): Use
6181         correct index when setting register save state for xd
6182         registers.
6183
6184 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
6185
6186         * config/sh/sh.c (mark_use): Remove.
6187
6188 2007-07-12  Paul Brook  <paul@codesourcery.com>
6189
6190         * config/arm/arm.c (thumb1_compute_save_reg_mask): Make sure scratch
6191         reg does not overlap return value.
6192
6193 2007-07-12  Daniel Berlin  <dberlin@dberlin.org>
6194
6195         * tree-ssa-pre.c (get_expression_vuses): Move out side-effect.
6196         (set_expression_vuses): Ditto.
6197         (init_pre): Initialize expression_vuses.
6198
6199 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
6200
6201         * config/i386/sse.md (storentdf, storentsf): New.
6202
6203 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
6204
6205         * builtins.c (get_pointer_alignment): Honor DECL_ALIGN on a
6206         FUNCTION_DECL.
6207         * tree.c (build_decl_stat): Move code from here...
6208         (make_node_stat): ... to here.  Don't uselessly clear DECL_USER_ALIGN.
6209         (expr_align): Honor DECL_ALIGN on a FUNCTION_DECL.  Add comment
6210         about using DECL_ALIGN of LABEL_DECL and CONST_DECL.
6211         * tree.h (DECL_USER_ALIGN): Fix misplaced comment.
6212         * varasm.c (assemble_start_function): Use DECL_ALIGN instead of
6213         FUNCTION_BOUNDARY.
6214
6215 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
6216             Devang Patel  <dpatel@apple.com>
6217
6218         PR tree-optimization/25413
6219         * targhooks.c (default_builtin_vector_alignment_reachable): New.
6220         * targhooks.h (default_builtin_vector_alignment_reachable): New.
6221         * tree.h (contains_packed_reference): New.
6222         * expr.c (contains_packed_reference): New.
6223         * tree-vect-analyze.c (vector_alignment_reachable_p): New.
6224         (vect_enhance_data_refs_alignment): Call
6225         vector_alignment_reachable_p.
6226         * target.h (vector_alignment_reachable): New builtin.
6227         * target-def.h (TARGET_VECTOR_ALIGNMENT_REACHABLE): New.
6228         * config/rs6000/rs6000.c (rs6000_vector_alignment_reachable): New.
6229         (TARGET_VECTOR_ALIGNMENT_REACHABLE): Define.
6230
6231 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
6232
6233         * target.h (builtin_vectorization_cost): Add new target builtin.
6234         * target-def.h (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): New.
6235         * tree-vectorizer.h (TARG_SCALAR_STMT_COST): New.
6236         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST): New.
6237         * tree-vect-analyze.c (vect_analyze_slp_instance): Initisliaze
6238         uninitialized variables.
6239         * tree-vect-transform.c (cost_for_stmt): New function.
6240         (vect_estimate_min_profitable_iters): Call cost_for_stmt instead of
6241         using cost 1 for all scalar stmts. Be less conservative when
6242         estimating the number of prologue/epulogue iterations. Call
6243         targetm.vectorize.builtin_vectorization_cost. Return
6244         min_profitable_iters-1.
6245         (vect_model_reduction_cost): Use TARG_SCALAR_TO_VEC_COST for
6246         initialization cost instead of TARG_VEC_STMT_COST. Use
6247         TARG_VEC_TO_SCALAR_COST instead of TARG_VEC_STMT_COST for reduction
6248         epilogue code. Fix epilogue cost computation.
6249         * config/spu/spu.c (spu_builtin_vectorization_cost): New.
6250         (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): Implement.
6251         * config/spu/spu.h (TARG_COND_BRANCH_COST, TARG_SCALAR_STMT_COST):
6252         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST, TARG_VEC_STMT_COST):
6253         (TARG_VEC_TO_SCALAR_COST, TARG_SCALAR_TO_VEC, TARG_VEC_LOAD_COST):
6254         (TARG_VEC_UNALIGNED_LOAD_COST, TARG_VEC_STORE_COST): Define.
6255
6256 2007-07-12  Richard Guenther  <rguenther@suse.de>
6257
6258         * gimplify.c (gimplify_conversion): Make sure that the result
6259         from maybe_fold_offset_to_reference is trivially convertible
6260         to the desired type before doing the simplification.
6261         (gimplify_expr): Likewise.
6262         * fold-const.c (fold_binary): Use the correct types for
6263         building the simplified expression.
6264
6265 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
6266
6267         PR rtl-optimization/32729
6268         * cfghooks.c (can_duplicate_block_p): Do not forbid duplicating blocks
6269         that fallthru to exit.
6270
6271 2007-07-12  Kaz Kojima  <kkojima@gcc.gnu.org>
6272
6273         * config/sh/sh.md (symGOTOFF2reg): Add missing parenthesis.
6274         (symDTPOFF2reg): Likewise.
6275
6276 2007-07-11  Daniel Berlin  <dberlin@dberlin.org>
6277
6278         PR tree-optimization/32663
6279         
6280         * tree.h (VALUE_HANDLE_VUSES): Remove.
6281         (struct tree_value_handle): Remove vuses.
6282
6283         * tree-vn.c (create_value_handle_for_expr): Don't set
6284         VALUE_HANDLE_VUSES. 
6285
6286         * tree-ssa-pre.c (expression_vuses): New.
6287         (alloc_expression_id): Set up expression_vuses.
6288         (get_expression_vuses): New.
6289         (set_expression_vuses): Ditto.
6290         (clear_expression_ids): Modify for expression_vuses.
6291         (phi_translate_1): Ditto.
6292         (phi_translate_set): Ditto.
6293         (value_dies_in_block_x): Ditto
6294         (valid_in_sets): Ditto.
6295         (add_to_sets): Ditto.
6296         (find_existing_value_expr): Ditto.
6297         (create_value_handle_for_expr): Ditto.
6298         (make_values_for_stmt): Ditto.
6299         (vuse_equiv): Remove.
6300
6301 2007-07-11  Alexandre Oliva  <aoliva@redhat.com>
6302
6303         * Makefile.in (mostlyclean): Remove object files.
6304
6305 2007-07-11  Kenneth Zadeck <zadeck@naturalbridge.com>
6306
6307         * toplev.c (no_new_pseudos): Deleted.
6308         * rtl.h (no_new_pseudos): Deleted.
6309         * tree-pass.h (pass_no_new_pseudos): Deleted. 
6310         * passes.c (pass_no_new_pseudos): Deleted.
6311         * final.c (rest_of_clean_state): Removed no_new_pseudos.
6312         (rest_of_no_new_pseudos, pass_no_new_pseudos): Deleted.
6313         * struct-equiv.c (rtx_equiv_p): Replaced no_new_pseudos with 
6314         reload_completed.
6315         * cfgcleanup.c (try_crossjump_to_edge): Ditto. 
6316         * rtlhooks.c (gen_lowpart_general): Ditto.
6317         * optabs.c (prepare_operand): Ditto.
6318         * mode-switching.c (rest_of_handle_mode_switching): Deleted set of
6319         no_new_pseudos.
6320         * modulo-sched.c (rest_of_handle_sms): Ditto.
6321         * see.c (rest_of_handle_see): Ditto.
6322         * ifcvt.c (if_convert): Ditto.
6323         (gate_handle_if_after_combine): Replaced no_new_pseudos with 
6324         reload_completed.
6325         * init-regs.c (gate_initialize_regs): Deleted set of
6326         no_new_pseudos.
6327         * lower-subreg.c (decompose_multiword_subregs): Ditto. 
6328         * bb-reorder.c (rest_of_handle_partition_blocks): Ditto.
6329         * doc/md.texi: Changed no_new_pseudos to can_create_pseudo_p.
6330         
6331 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
6332
6333         PR target/32661
6334         * config/i386/sse.md (*sse2_storeq_rex64): Handle 64bit mem->reg moves.
6335         (*vec_extractv2di_1_sse2): Disable for TARGET_64BIT.
6336         (*vec_extractv2di_1_rex64): New insn pattern.
6337
6338 2007-07-11  David Daney  <ddaney@avtrex.com>
6339
6340         * config/mips/linux-unwind.h (mips_fallback_frame_state): Rewrite
6341         return address calculation.  Substitute DWARF_ALT_FRAME_RETURN_COLUMN
6342         for SIGNAL_UNWIND_RETURN_COLUMN.
6343         * config/mips/mips.h (SIGNAL_UNWIND_RETURN_COLUMN): Remove.
6344         (DWARF_FRAME_REGNUM): Rewrite.
6345         (DWARF_ALT_FRAME_RETURN_COLUMN) Define.
6346
6347 2007-07-11  Nick Clifton  <nickc@redhat.com>
6348
6349         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Revert previous
6350         delta and use gen_int_mode in place of GET_INT instead.
6351
6352 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
6353
6354         * reg-stack.c (struct tree_opt_pass pass_stack_regs): Nullify name
6355         and letter field.
6356
6357 2007-07-11  Douglas Gregor  <doug.gregor@gmail.com>
6358
6359         * params.def (PARAM_VERIFY_CANONICAL_TYPES): Remove.
6360         (PARAM_USE_CANONICAL_TYPES): New; decides whether to use canonical 
6361         types or not.
6362         * params.h (VERIFY_CANONICAL_TYPES): Remove.
6363         (USE_CANONICAL_TYPES): New.
6364         * doc/invoke.texi (verify-canonical-types): Remove.
6365         (use-canonical-types): Add.
6366
6367 2007-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
6368
6369         * config/spu/spu.c (spu_optimization_options): Remove setting of
6370         parameter PARAM_MAX_COMPLETELY_PEEL_TIMES.
6371         (spu_override_options): Move it here.
6372
6373 2007-07-11  Richard Sandiford  <richard@codesourcery.com>
6374
6375         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Handle -m4ksc and -m4ksd.
6376         * config/mips/mips.c (mips_cpu_info_table): Mention
6377         MIPS_ISA_LEVEL_SPEC in the comment.
6378
6379 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
6380
6381         PR tree-optimization/32713
6382         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle REAL_CST.
6383
6384 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
6385
6386         PR middle-end/30482
6387         * c-opts.c (c_common_post_options): Do not change flag_complex_method
6388         conditional to flag_isoc99.
6389         (c_common_init_options): Do it here, unconditionally.
6390
6391 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
6392
6393         PR tree-optimization/32589
6394         * doc/tree-ssa.texi (Rough GIMPLE Grammar): Add missing rule.
6395         * tree-gimple.c (is_gimple_min_invariant): Clarify head comment.
6396         * tree-ssa-propagate.c (valid_gimple_expression_p): New
6397         predicate, extracted from...
6398         (set_rhs): ...here.  Call it for the expression on entry.
6399         * tree-ssa-propagate.h (valid_gimple_expression_p): Declare.
6400         * tree-ssa-sccvn.c: Include tree-ssa-propagate.h.
6401         (simplify_binary_expression): Use valid_gimple_expression_p
6402         to validate the simplification.
6403         * Makefile.in (tree-ssa-sccvn.o): Depends on tree-ssa-propagate.h.
6404
6405 2007-07-11  Danny Smith  <dannysmith@users.sourceforge.net>
6406
6407         * config/i386/cygming.h (PREFERRED_DEBUGGING_TYPE): Define to
6408         DWARF2_DEBUG on 32 bit target too.
6409         (DWARF2_UNWIND_INFO): Reorganize 64-bit vs 32-bit definition. 
6410
6411 2007-07-11  Nick Clifton  <nickc@redhat.com>
6412
6413         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Provide alternative
6414         version for 64-bit hosts.
6415
6416 2007-07-10  David Daney  <ddaney@avtrex.com>
6417
6418         * config/mips/mips.h (ISA_HAS_SYNCI): New target capability
6419         predicate.
6420         (INITIALIZE_TRAMPOLINE): Emit clear_cache insn instead of  library
6421         call.
6422         * config/mips/mips.c (mips_expand_synci_loop): New function.
6423         * config/mips/mips.md (UNSPEC_CLEAR_HAZARD): New constant.
6424         (UNSPEC_RDHWR): Same.
6425         (UNSPEC_SYNCI): Same.
6426         (UNSPEC_SYNC): Same.
6427         (clear_cache): New expand.
6428         (sync): New insn.
6429         (synci): Same.
6430         (rdhwr): Same.
6431         (clear_hazard): Same.
6432         * config/mips/mips-protos.h (mips_expand_synci_loop): Declare
6433         function.
6434         * testsuite/gcc.target/mips/clear-cache-1.c: New test.
6435         * testsuite/gcc.target/mips/clear-cache-2.c: New test.
6436
6437 2007-07-10  Ian Lance Taylor  <iant@google.com>
6438
6439         * emit-rtl.c (gen_reg_rtx): Check can_create_pseudo_p rather than
6440         no_new_pseudos.
6441
6442 2007-07-10  David Daney  <ddaney@avtrex.com>
6443
6444         * builtins.def (BUILT_IN_CLEAR_CACHE): New builtin.
6445         * builtins.c (expand_builtin___clear_cache): New function.
6446         (expand_builtin): Call expand_builtin___clear_cache for
6447         BUILT_IN_CLEAR_CACHE case.
6448         * doc/extend.texi (__builtin___clear_cache): Document new builtin.
6449         * doc/md.texi (clear_cache): Document new instruction pattern.
6450         * testsuite/gcc.dg/builtins-64.c: New test.
6451
6452 2007-07-11  Hans-Peter Nilsson  <hp@axis.com>
6453
6454         * config/cris/cris.md ("movsi"): Fix typo in last change.
6455
6456 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
6457
6458         PR 32617
6459         * c-common.c (c_alignof_expr): Look at DECL_ALIGN of
6460         FUNCTION_DECLs.
6461         (handle_aligned_attribute): Allow use on FUNCTION_DECLs.
6462         * varasm.c (assemble_start_function): Honor DECL_ALIGN
6463         for FUNCTION_DECLs.  Don't use align_functions_log if
6464         DECL_USER_ALIGN.
6465         * print-tree.c (print_node): Print DECL_ALIGN and DECL_USER_ALIGN
6466         even for FUNCTION_DECLs.
6467         * c-decl.c (merge_decls): Propagate DECL_ALIGN even for
6468         FUNCTION_DECLs.
6469         * tree.h (DECL_ALIGN): Update for new location of 'align'.
6470         (DECL_FUNCTION_CODE): Update for new location and name of
6471         'function_code'.
6472         (DECL_OFFSET_ALIGN): Update for new location of 'off_align'.
6473         (struct tree_decl_common): Move 'align' and 'off_align' out
6474         of union, ensure they're still on a 32-bit boundary.  Remove
6475         other fields in union 'u1'.
6476         (struct tree_function_decl): Add field 'function_code' replacing
6477         'u1.f' in tree_decl_common.
6478         * tree.c (build_decl_stat): Set initial value of DECL_ALIGN.
6479         * doc/extend.texi (Function Attributes): Add 'aligned' attribute.
6480         (Variable Attributes): Cross-reference 'aligned' attribute
6481         to Function Attributes.
6482         * flags.h (force_align_functions_log): Delete.
6483         * toplev.c (force_align_functions_log): Delete.
6484
6485 2007-07-10  Uros Bizjak  <ubizjak@gmail.com>
6486
6487         PR target/32708
6488         * config/i386/sse.md (vec_concatv2di): Disable for TARGET_64BIT.
6489         (*vec_concatv2di_rex): New insn pattern.
6490
6491 2007-07-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
6492
6493         PR target/32538
6494         * config/mips/iris6.h (LIBGCC_SPEC): Add libm.
6495
6496 2007-07-10  Ian Lance Taylor  <iant@google.com>
6497
6498         Replace no_new_pseudos in backends.
6499         * rtl.h (can_create_pseudo_p): Define.
6500         * config/darwin.c (machopic_indirect_data_reference): Use
6501         can_create_pseudo_p () instead of no_new_pseudos.
6502         (machopic_indirect_data_reference): Likewise.
6503         (machopic_legitimize_pic_address): Likewise.
6504         * config/alpha/alpha.c (alpha_legitimize_address): Likewise.
6505         (alpha_emit_set_const_1): Likewise.
6506         (alpha_emit_set_const): Likewise.
6507         (alpha_emit_conditional_move): Likewise.
6508         (alpha_split_conditional_move): Likewise.
6509         * config/alpha/alpha.md (various splitters): Likewise.
6510         (movti): Likewise.
6511         * config/arm/arm.c (legitimize_pic_address): Likewise.
6512         (arm_load_pic_register): Likewise.
6513         * config/arm/arm.md (addsi3, subsi3, andsi3, iorsi3): Likewise.
6514         (movdi, movsi, movhi, movqi, movsf, movdf): Likewise.
6515         * config/bfin/bfin.c (legitimize_pic_address): Likewise.
6516         * config/cris/cris.c (cris_expand_pic_call_address): Likewise.
6517         * config/cris/cris.md (movsi): Likewise.
6518         * config/frv/frv.md (symGOT2reg_hilo): Likewise.
6519         (symGOTOFF2reg_hilo): Likewise.
6520         (symGPREL2reg, symGPREL2reg_hilo): Likewise.
6521         * config/h8300/h8300.md (insv, extzv): Likewise.
6522         * config/i386/i386.c (ix86_expand_move): Likewise.
6523         (ix86_expand_vector_move): Likewise.
6524         (ix86_prepare_fp_compare_args): Likewise.
6525         (ix86_expand_carry_flag_compare): Likewise.
6526         * config/i386/i386.md (tls_dynamic_gnu2_32): Likewise.
6527         (tls_dynamic_gnu2_combine_32): Likewise.
6528         (tls_dynamic_gnu2_64, tls_dynamic_gnu2_combine_64): Likewise.
6529         * config/ia64/ia64.c (ia64_expand_move): Likewise.
6530         (ia64_expand_movxf_movrf): Likewise.
6531         * config/m32c/m32c.c (m32c_prepare_move): Likewise.
6532         (m32c_split_move): Likewise.
6533         (m32c_expand_insv): Likewise.
6534         * config/m68k/m68k.md (movsi): Likewise.
6535         * config/mips/mips.c (mips_force_temporary): Likewise.
6536         (mips_split_symbol): Likewise.
6537         (mips_move_integer): Likewise.
6538         (mips_legitimize_const_move): Likewise.
6539         * config/mn10300/mn10300.md (movsi): Likewise.
6540         * config/pa/pa.c (emit_move_sequence): Likewise.
6541         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
6542         (rs6000_got_register): Likewise.
6543         (create_TOC_reference): Likewise.
6544         (rs6000_machopic_legitimize_pic_address): Likewise.
6545         * config/rs6000/rs6000.md (add<mode>3): Likewise.
6546         (various splitters): Likewise.
6547         (iorsi3, xorsi3, iordi3, xordi3): Likewise.
6548         (movsi_got): Likewise.
6549         * config/s390/s390.c (emit_symbolic_move): Likewise.
6550         * config/s390/s390.md (movhi, movqi): Likewise.
6551         (load_multiple, store_multiple): Likewise.
6552         * config/score/score.c (score_force_temporary): Likewise.
6553         * config/sh/sh.c (prepare_move_operands): Likewise.
6554         (prepare_cbranch_operands): Likewise.
6555         (emit_fpu_switch): Likewise.
6556         (fpscr_set_from_mem): Likewise.
6557         * config/sh/sh.md (movdicc, movsicc, movsicc_umin): Likewise.
6558         (adddi3, subsi3): Likewise.
6559         (various splitters): Likewise.
6560         (divsi_inv_fp_combine): Likewise.
6561         (symGOT_load, symGOTOFF2reg, symDTPOFF2reg): Likewise.
6562         (seq, slt, sle, sgt, sge, sgtu, sltu, sleu, sgeu): Likewise.
6563         (sne): Likewise.
6564         * config/sh/predicates.md (xor_operand): Likewise.
6565         * config/sparc/sparc.c (legitimize_tls_address): Likewise.
6566         * config/sparc/sparc.md (movsi_pic_label_ref): Likewise.
6567         (movdi_pic_label_ref): Likewise.
6568         * config/spu/spu.c (spu_split_immediate): Likewise.
6569         * config/alpha/alpha.md (various splitters): Remove test
6570         !no_new_pseudos || reload_completed.
6571         * config/ia64/ia64.c (ia64_output_mi_thunk): Don't set
6572         no_new_pseudos.
6573         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
6574         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
6575         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
6576         * config/score/score.c (th_output_mi_thunk): Likewise.
6577         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
6578         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
6579
6580 2007-07-10  Kaz Kojima  <kkojima@gcc.gnu.org>
6581
6582         PR rtl-optimization/32664
6583         * mode-switching.c (create_pre_exit): Skip barrier insns.
6584
6585 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
6586
6587         * tree-scalar-evolution.c (scev_const_prop): Add arguments to
6588         force_gimple_operand_bsi.
6589         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr,
6590         rewrite_use_compare): Ditto.
6591         * tree-ssa-address.c (gimplify_mem_ref_parts, create_mem_ref):
6592         Ditto.
6593         * tree-ssa-ifcombine.c (ifcombine_ifandif): Ditto.
6594         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
6595         * lambda-code.c (replace_uses_equiv_to_x_with_y): Ditto.
6596         * tree-profile.c (prepare_instrumented_value,
6597         tree_gen_interval_profiler, tree_gen_pow2_profiler,
6598         tree_gen_one_value_profiler, tree_gen_ic_profiler,
6599         tree_gen_ic_func_profiler, tree_gen_average_profiler,
6600         tree_gen_ior_profiler): Ditto.
6601         * tree-ssa-reassoc.c (negate_value): Ditto.
6602         * matrix-reorg.c (transform_access_sites, transform_allocation_sites):
6603         Use force_gimple_operand_bsi.
6604         * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Ditto.
6605         * tree-if-conv.c (add_to_dst_predicate_list,
6606         find_phi_replacement_condition): Ditto.
6607         * gimplify.c (force_gimple_operand_bsi): Add before and m arguments.
6608         Call mark_symbols_for_renaming for new statements.
6609         * tree-flow.h (force_gimple_operand_bsi): Declaration changed.
6610
6611 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
6612
6613         * cfghooks.c (remove_edge): New function.
6614         (redirect_edge_and_branch, remove_branch, merge_blocks): Updated
6615         loop exit rescans.
6616         * cfghooks.h (remove_edge): Declare.
6617         * cfg.c (remove_edge): Renamed to remove_edge_raw.
6618         * basic-block.h (remove_edge): Declaration changed to remove_edge_raw.
6619
6620 2007-07-09  Wolfgang Gellerich  <gellerich@de.ibm.com>
6621
6622         * optabs.h: Added declaration for signbit_optab.  
6623         * optabs.c: (init_optabs): Added initialization for signbit_optab.
6624         * genoptinit.c (optabs): Added entry for signbit insns.  
6625         * builtins.c (expand_builtin_signbit): Added code to use a signbit
6626         insn, if available.  
6627         * config/s390/s390.h (S390_TDC_SIGNBIT_SET): New constant.  
6628         * config/s390/s390.md (signbit<mode>2): New expander.  
6629
6630 2007-07-09  Richard Guenther  <rguenther@suse.de>
6631
6632         PR middle-end/32698
6633         * fold-const.c (fold_plusminus_mult_expr): Move constant
6634         arguments second to allow decomposing.
6635
6636 2007-07-09  Alexandre Oliva  <aoliva@oliva.athome.lsd.ic.unicamp.br>
6637
6638         Revert:
6639         2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
6640         PR debug/23551
6641         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
6642         Disregard DECL_FROM_INLINE.
6643
6644 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
6645
6646         PR target/27855
6647         * doc/invoke.texi: Add ftree-reassoc flag.
6648         * common.opt (ftree-reassoc): New flag.
6649         * tree-ssa-reassoc.c (gate_tree_ssa_reassoc): New static function.
6650         (struct tree_opt_pass pass_reassoc): Use gate_tree_ssa_reassoc.
6651
6652 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
6653
6654         PR tree-optimization/32681
6655         * tree-if-conv.c (find_phi_replacement_condition): Use the condition
6656         saved in second_edge->aux when first_bb is a loop header.
6657
6658 2007-07-09  Jan HUbicka  <jh@suse.cz>
6659
6660         * cse.c (cse_insn): Avoid invalid sharing on trial replacement.
6661
6662 2007-07-09  Richard Guenther  <rguenther@suse.de>
6663
6664         * c-decl.c (start_function): Do not promote return type.
6665
6666 2007-07-08  Daniel Franke  <franke.daniel@gmail.com>
6667
6668         * function.c (do_warn_unused_parameter): Do not warn if
6669         TREE_NO_WARNING is set.
6670
6671 2007-07-08  Andreas Schwab  <schwab@suse.de>
6672
6673         * doc/invoke.texi (DEC Alpha/VMS Options): Fix typo.
6674
6675 2007-07-08  Sandra Loosemore  <sandra@codesourcery.com>
6676
6677         Revert this patch:
6678         2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
6679
6680         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
6681         apply to assembly language, too.
6682         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
6683
6684 2007-07-07  Daniel Berlin  <dberlin@dberlin.org>
6685
6686         Revert (note the sccvn portions are *not* reverted)
6687         2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
6688
6689         Fix PR tree-optimization/23488
6690
6691         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
6692         handles.
6693         * tree-flow-inline.h (get_value_handle): Ditto.
6694         * tree-ssa-pre.c (decl_vh_map): New.
6695         (decl_node_pool): New.
6696         (can_value_number_operation): Support DECL_P.
6697         (can_PRE_operation): Ditto.
6698         (create_expression_by_pieces): Ditto.
6699         (find_existing_value_expr): Modify to differnetiate between
6700         addressing and top level.
6701         (create_value_handle_for_expr): Handle DECL's.
6702         (poolify_tree): Ditto.
6703         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
6704         (make_values_for_stmt): Handle DECL's properly.
6705         (init_pre): Reorg to not init useless things during FRE.
6706         (fini_pre): Ditto.
6707         * tree-flow.h: Include pointer-set.h.
6708         (decl_vh_map): Declare.
6709         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
6710
6711 2007-07-07 Eric Weddington  <eweddington@cso.atmel.com>
6712
6713         * config/avr/constraints.md (define_memory_constraint "Q"): Fix
6714         the constraint description.
6715         * doc/md.texi: Update documentation of AVR constraints.
6716
6717 2007-07-07  Kazu Hirata  <kazu@codesourcery.com>
6718
6719         * auto-inc-dec.c, config/arm/arm.c,
6720         config/m32r/constraints.md, config/mips/mips.md,
6721         config/rs6000/rs6000.c, cselib.c, dce.c, df-core.c,
6722         df-problems.c, df-scan.c, df.h, dse.c, gimplify.c,
6723         tree-if-conv.c, tree-ssa-sccvn.c, tree-ssa.c: Fix comment
6724         typos.  Follow spelling conventions.
6725         * doc/invoke.texi, doc/rtl.texi: Fix typos.
6726
6727         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
6728         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
6729
6730         * tree-ssa-operands.c (realloc_vop, realloc_vdef,
6731         realloc_vuse): Remove.
6732         * tree-ssa-operands.h: Remove the prototype for realloc_vdef
6733         and realloc_vuse.
6734
6735 2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
6736
6737         Fix PR tree-optimization/23488
6738
6739         * tree-ssa-sccvn.c (expr_has_constants): Handle tcc_declaration.
6740         (try_to_simplify): Ditto.
6741         (visit_use): Ditto.
6742         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
6743         handles.
6744         * tree-flow-inline.h (get_value_handle): Ditto.
6745         * tree-ssa-pre.c (decl_vh_map): New.
6746         (decl_node_pool): New.
6747         (can_value_number_operation): Support DECL_P.
6748         (can_PRE_operation): Ditto.
6749         (create_expression_by_pieces): Ditto.
6750         (find_existing_value_expr): Modify to differnetiate between
6751         addressing and top level.
6752         (create_value_handle_for_expr): Handle DECL's.
6753         (poolify_tree): Ditto.
6754         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
6755         (make_values_for_stmt): Handle DECL's properly.
6756         (init_pre): Reorg to not init useless things during FRE.
6757         (fini_pre): Ditto.
6758         * tree-flow.h: Include pointer-set.h.
6759         (decl_vh_map): Declare.
6760         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
6761                 
6762 2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
6763
6764         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
6765         apply to assembly language, too.
6766         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
6767
6768 2007-07-06  Ian Lance Taylor  <iant@google.com>
6769             Zack Weinberg  <zackw@panix.com>
6770
6771         PR middle-end/32441
6772         * builtins.c (std_expand_builtin_va_start): Don't use make_tree.
6773
6774 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
6775
6776         * config/sh/sh.md (*prefetch_i4): Disable for TARGET_VXWORKS_RTP.
6777         (prefetch): Likewise if "pref" would be used.
6778
6779 2007-07-06  Josh Conner  <jconner@apple.com>
6780
6781         PR middle-end/32602
6782         PR middle-end/32603
6783         * calls.c (store_one_arg): Handle arguments which are partially
6784         on the stack when detecting argument overlap.
6785
6786 2007-07-06  Bernd Schmidt  <bernd.schmidt@analog.com>
6787
6788         * reload1.c (choose_reload_regs): Set reload_spill_index for regs
6789         chosen during find_reloads.
6790
6791 2007-07-06  Richard Guenther  <rguenther@suse.de>
6792
6793         * gimplify.c (gimplify_call_expr): Prefer DECL_ARGUMENTS over
6794         TYPE_ARG_TYPES for verification of argument types.  Use
6795         DECL_ARG_TYPE instead of the PARM_DECL type.  Take excess
6796         parameters as variable arguments.
6797
6798 2007-07-06  Andreas Krebbel  <krebbel1@de.ibm.com>
6799
6800         * libgcc2.h (word_type): Type definition removed.
6801         (cmp_return_type, shift_count_type): Type definitions added.
6802         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
6803         replaced with shift_count_type.
6804         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
6805         cmp_return_type.
6806         * libgcc2.c (__udivmoddi4, __moddi3): Type of local variable c
6807         changed from word_type to Wtype.
6808         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
6809         replaced with shift_count_type.
6810         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
6811         cmp_return_type.
6812         * c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return
6813         and libgcc_shift_count attribute added.
6814         * target-def.h (TARGET_LIBGCC_CMP_RETURN_MODE,
6815         TARGET_LIBGCC_SHIFT_COUNT_MODE): New target hooks defined.
6816         (TARGET_INITIALIZER): New target hooks added.
6817         * targhooks.c (default_libgcc_cmp_return_mode,
6818         default_libgcc_shift_count_mode): Default implementations for the new
6819         target hooks added.
6820         * targhooks.h (default_libgcc_cmp_return_mode,
6821         default_libgcc_shift_count_mode): Function prototypes added.
6822         * target.h (struct gcc_target): Fields for the new target hooks added.
6823         * optabs.c (expand_binop): Use shift_count_mode when expanding shift
6824         as library call.
6825         (prepare_cmp_insn): Use cmp_return_mode when expanding comparison as
6826         library call.
6827
6828         * doc/tm.texi (TARGET_LIBGCC_CMP_RETURN_MODE,
6829         TARGET_LIBGCC_SHIFT_COUNT_MODE): Documentation added.
6830
6831         * config/s390/s390.c (s390_libgcc_cmp_return_mode,
6832         s390_libgcc_shift_count_mode): Functions added.
6833         (TARGET_LIBGCC_CMP_RETURN_MODE, TARGET_LIBGCC_SHIFT_COUNT_MODE):
6834         Target hooks defined.
6835
6836 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
6837
6838         * config/mips/mips.c (compute_frame_size): Restore the original
6839         gp_sp_offset for !GENERATE_MIPS16E_SAVE_RESTORE and remove the
6840         fp_size term from the GENERATE_MIPS16E_SAVE_RESTORE calculation.
6841         Document why the difference is needed.
6842
6843 2007-07-06  Richard Guenther  <rguenther@suse.de>
6844
6845         * c-common.c (boolean_increment): Use correctly typed
6846         constant.
6847
6848 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
6849
6850         * config/mips/mips.c (mips16e_save_restore_pattern_p): Check that
6851         the topmost argument register is not also included in the save mask.
6852         (mips16e_collect_argument_save_p): Take a pointer to the argument
6853         register, rather than a pointer to the number of arguments.
6854         (mips16e_collect_argument_saves): Only include argument saves
6855         that aren't in the register mask.
6856
6857 2007-07-06  Uros Bizjak  <ubizjak@gmail.com>
6858
6859         PR rtl-optimization/32450
6860         * function.c (thread_prologue_and_epilogue_insns): Emit blockage insn
6861         to ensure that instructions are not moved into the prologue when
6862         profiling is on.  Remove unused prologue_end variable.
6863         (expand_function_end): Emit blockage insn instead of ASM_INPUT rtx
6864         as a scheduling barrier.
6865
6866 2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
6867
6868         PR debug/23551
6869         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
6870         Disregard DECL_FROM_INLINE.
6871
6872 2007-07-05  Adam Nemet  <anemet@caviumnetworks.com>
6873
6874         * rtlanal.c (num_sign_bit_copies1): Improve cases of ANDing or
6875         IORing with a constant.
6876
6877 2007-07-05  Seongbae Park  <seongbae.park@gmail.com>
6878
6879         PR rtl-optimization/32475
6880         * df-scan.c (df_def_record_1): Add a use of the stack pointer
6881         for every definition of the stack pointer.
6882
6883 2007-07-05  Richard Earnshaw  <rearnsha@arm.com>
6884
6885         * arm.c (vfp3_const_double_index): Copy signed results of
6886         REAL_VALUE_TO_INT into unsigned vars.
6887
6888 2007-07-05  Richard Guenther  <rguenther@suse.de>
6889
6890         PR middle-end/32639
6891         * alias.c (get_alias_set): Tread METHOD_TYPE the same as
6892         FUNCTION_TYPE.
6893         * tree-ssa.c (useless_type_conversion_p): Check canonical
6894         types early.
6895
6896 2007-07-05 Anatoly Sokolov <aesok@post.ru>
6897
6898         * config/avr/avr.md (zero_extendqihi2, zero_extendqisi2, 
6899         zero_extendhisi2): Change to define_insn_and_split. 
6900         (zero_extendqidi2, zero_extendhidi2, zero_extendsidi2): New.
6901
6902 2007-07-05  Paolo Bonzini  <bonzini@gnu.org>
6903
6904         * function.c (match_asm_constraints_1, rest_of_match_asm_constraints,
6905         pass_match_asm_constraints): New.
6906         * passes.c (init_optimization_passes): Add new pass.
6907         * stmt.c (expand_asm_operands): Set cfun->has_asm_statement.
6908         * function.h (struct function): Add has_asm_statement bit.
6909         (current_function_has_asm_statement): New.
6910         * tree-pass.h (pass_match_asm_constraints): New.
6911
6912 2007-07-05  Richard Sandiford  <rsandifo@nildram.co.uk>
6913
6914         * config/mips/mips.c (mips_file_start): Avoid declaration
6915         after code.
6916
6917 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
6918
6919         * optabs.c (expand_binop_directly): Fix signed/unsigned comparison.
6920
6921 2007-07-05  Uros Bizjak  <ubizjak@gmail.com>
6922
6923         * rtl.def (NOTE): Change print format string to print
6924         operand 5 as a note insn name.
6925
6926 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
6927             David Ung  <davidu@mips.com>
6928
6929         * config/mips/mips.c (mips_cpu_info): Add 4ksc and 4ksd processors.
6930         * doc/invoke.texi: (MIPS Options): Document them.
6931
6932 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
6933             David Ung  <davidu@mips.com>
6934
6935         Add support for SmartMIPS ASE.
6936
6937         * optabs.c (expand_binop_directly): New, broken out from...
6938         (expand_binop): Here.  Make it try rotating in the other
6939         direction even when the second operand isn't constant.
6940         * config/mips/mips.md (*lwxs): New.
6941         * config/mips/mips.opt (msmartmips): New.
6942         * config/mips/mips.c (mips_lwxs_address_p): New.
6943         (mips_rtx_costs): Make it recognize scaled indexed addressing.
6944         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
6945         __mips_smartmips when compiling for TARGET_SMARTMIPS.
6946         (ISA_HAS_ROR): Define for TARGET_SMARTMIPS.
6947         (ISA_HAS_LWXS): New.
6948         (ASM_SPEC): Add -msmartmips/-mno-smartmips.
6949         * doc/invoke.texi (MIPS Options): Document -msmartmips/-mno-smartmips.
6950         * testsuite/gcc.target/mips/smartmips-lwxs.c: New test case.
6951         * testsuite/gcc.target/mips/smartmips-ror-1.c: New test case.
6952         * testsuite/gcc.target/mips/smartmips-ror-2.c: New test case.
6953         * testsuite/gcc.target/mips/smartmips-ror-3.c: New test case.
6954         * testsuite/gcc.target/mips/smartmips-ror-4.c: New test case.
6955
6956 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
6957
6958         * tree-vectorizer.c (new_loop_vec_info): Initialize
6959         LOOP_VINFO_COST_MODEL_MIN_ITERS.
6960         * tree-vectorizer.h (_loop_vec_info): Added new filed
6961         min_profitable_iters.
6962         (LOOP_VINFO_COST_MODEL_MIN_ITERS): New access macro to above new field.
6963         (TARG_SCALAR_TO_VEC_COST): Define cost of scalar to vector operation.
6964         * tree-vect-analyze.c (vect_analyze_operations): Set
6965         LOOP_VINFO_COST_MODEL_MIN_ITERS.
6966         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Use
6967         VEC_length to determine if there are any LOOP_VINFO_MAY_MISALIGN_STMTS.
6968         Fix calculation of peel_iters_prologue. Move consideration of epilogue
6969         and prologue cost to after they are computed.
6970         (vect_model_induction_cost): Use TARG_SCALAR_TO_VEC_COST instead of
6971         TARG_VEC_STMT_COST.
6972         (vect_model_simple_cost): Takes additional argument dt. Consider cost
6973         of creating vectors from scalars according to dt.
6974         (vect_model_store_cost): Likewise.
6975         (vectorizable_call): Use dt array instead of scalar dt. Call
6976         vect_model_simple_cost with additional argument dt.
6977         (vectorizable_assignment): Likewise.
6978         (vectorizable_operation): Likewise.
6979         (vectorizable_type_demotion): Likewise.
6980         (vectorizable_type_promotion): Likewise.
6981         (vectorizable_store): Use dt array instead of scalar dt. Call
6982         vect_model_store_cost with additional argument dt.
6983         (vect_do_peeling_for_loop_bound): Don't call
6984         vect_estimate_min_profitable_iters. Instead, lookup
6985         LOOP_VINFO_COST_MODEL_MIN_ITERS. Don't always print
6986         "may not be profitable".
6987
6988 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
6989
6990         PR testsuite/32014
6991         * config/rs6000/altivec.md (UNSPEC_VUPKHS_V4SF, UNSPEC_VUPKLS_V4SF):
6992         (UNSPEC_VUPKHU_V4SF, UNSPEC_VUPKLU_V4SF): New.
6993         (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi): New patterns.
6994         (vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): New patterns. 
6995
6996 2007-07-05  Zdenek Dvorak  <dvorakz@suse.cz>
6997
6998         * config/i386/i386.c (ix86_address_cost): Do not consider more complex
6999         addressing modes cheaper.
7000
7001 2007-07-05  Alexandre Oliva  <aoliva@redhat.com>
7002
7003         * dwarf2out.c (dw_ranges_by_label_ref): New typedef.
7004         (dw_ranges_struct): Rename block_num to num.  Adjust.
7005         (dw_ranges_by_label_struct): New.
7006         (ranges_by_label, ranges_by_label_allocated,
7007         ranges_by_label_in_use): New variables.
7008         (add_ranges_num): Factored most of the code out of...
7009         (add_ranges): ... this one.  Rewrite in terms of the former.
7010         (add_ranges_by_labels): New.
7011         (output_ranges): Output by-label ranges.
7012         (dwarf2out_finish): Output range for multiple-section
7013         compile_unit.  Output standard DW_AT_low_pc in addition to
7014         unexpected DW_AT_entry_pc.
7015
7016 2007-07-04  Daniel Berlin  <dberlin@dberlin.org>
7017
7018         PR tree-optimization/32604
7019         PR tree-optimization/32606
7020
7021         * tree-ssa-pre.c (bb_bitmap_sets): Removed antic_safe_loads.
7022         (compute_antic_safe): Removed.
7023         (ANTIC_SAFE_LOADS): Ditto.
7024         (compute_antic_aux): Don't print ANTIC_SAFE_LOADS.
7025         (execute_pre): Don't call compute_antic_safe.
7026         (vuse_equiv): New function.
7027         (make_values_for_stmt): Use it
7028         * tree-ssa-sccvn.c (set_ssa_val_to): Remove assert, since it is
7029         not always true.
7030
7031 2007-07-04 Anatoly Sokolov <aesok@post.ru>
7032
7033         PR target/31331
7034         * config/avr/avr.c (avr_naked_function_p): Handle receiving a type
7035         rather than a decl. 
7036         (avr_attribute_table): Make "naked" attribute apply to function types
7037         rather than to decls.
7038         (avr_handle_fntype_attribute): New function.
7039
7040 2007-07-04  Joseph Myers  <joseph@codesourcery.com>
7041
7042         * target-def.h (TARGET_INITIALIZER): Remove trailing whitespace
7043         after \.
7044
7045 2007-07-04  David Ung  <davidu@mips.com>
7046             Joseph Myers  <joseph@codesourcery.com>
7047
7048         * config/mips/mips.md (type): Add logical, signext and move.
7049         (one_cmpl<mode>2, *and<mode>3, *and<mode>3_mips16, *ior<mode>3,
7050         *ior<mode>3_mips16, two unnamed insns after *ior<mode>3_mips16,
7051         *nor<mode>3, "Combiner patterns to optimize truncate/zero_extend
7052         combinations", *zero_extend<SHORT:mode><GPR:mode>2,
7053         *zero_extendqihi2, *extend<SHORT:mode><GPR:mode>2_mips16e,
7054         *extend<SHORT:mode><GPR:mode>2_se<SHORT:size>, *movdi_64bit,
7055         *movdi_64bit_mips16, *movsi_internal, *movsi_mips16, movcc,
7056         *movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16,
7057         *movsf_hardfloat, *movsf_softfloat, *movsf_mips16,
7058         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit,
7059         movv2sf_hardfloat_64bit): Use the new types.
7060         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16,
7061         *movdf_softfloat, *movdf_mips16): Use "multi".
7062         (extendqihi2): Replace with a define_expand.
7063         (*extendqihi2_mips16e, *extendqihi2, *extendqihi2_seb): New.
7064         Based on extend<SHORT:mode><GPR:mode>2 patterns.
7065         * config/mips/74k.md (r74k_int_logical): New reservation and
7066         bypasses.
7067         (r74k_int_arith): Remove "slt".
7068         * config/mips/24k.md, config/mips/4130.md, config/mips/4k.md,
7069         config/mips/5400.md, config/mips/5500.md, config/mips/5k.md,
7070         config/mips/7000.md, config/mips/9000.md, config/mips/generic.md,
7071         config/mips/sb1.md, config/mips/sr71k.md: Add new types to
7072         reservations for "arith".
7073
7074 2007-07-04  Richard Guenther  <rguenther@suse.de>
7075
7076         * tree-ssa.c (useless_type_conversion_p): Add handling for
7077         scalar float and vector types.  Only call the types_compatible_p
7078         langhook for aggregate types as last resort.  Follow the
7079         rules.
7080
7081 2007-07-04  Richard Guenther  <rguenther@suse.de>
7082
7083         * tree-inline.c (estimate_num_insns_1): Treat CONVERT_EXPR
7084         the same as NOP_EXPR.
7085
7086 2007-07-04  Nick Clifton  <nickc@redhat.com>
7087
7088         * target.h (struct gcc_target): Add target_help field.
7089         * target-def.h (TARGET_HELP): New.
7090         (TARGET_INITIALIZER): Use TARGET_HELP.
7091         * opts.c (command_handle_option): Invoke target_help function, if
7092         defined, when the user has specified --target-help on the command
7093         line.
7094         * doc/invoke.texi: Mention that --target-help might print
7095         additional information.
7096         * doc/tm.texi: Document TARGET_HELP hook.
7097
7098         * arm.c (TARGET_HELP): Override default definition.
7099         (arm_target_help): New - display a wrapped list of cores and
7100         architectures supported.
7101
7102 2007-07-04  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7103
7104         * config/v850/v850.c (expand_prologue): Make sure
7105         GEN_INT() argument is sign extended rather than zero extended.
7106         (expand_epilogue): Likewise.
7107         (output_move_double): Delete.
7108         * config/v850/v850-protos.h (output_move_double): Delete.
7109         * config/v850/v850.md (movdi): Delete.
7110         (*movdi_internal): Delete.
7111         (movdf): Delete.
7112         (*movdf_internal): Delete.
7113
7114 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
7115
7116         * config/sh/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Reject -mrelax
7117         unless compiling RTP PIC.
7118
7119 2007-07-04  Richard Guenther  <rguenther@suse.de>
7120
7121         PR tree-optimization/32482
7122         * tree-ssa-ifcombine.c (recognize_single_bit_test): Use the
7123         original ssa name if we didn't find a shift expression.
7124         Fix shift constant for bit zero test.
7125
7126 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
7127
7128         * config/sh/lib1funcs.asm (ic_invalidate): Align constant pool.
7129
7130 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
7131
7132         * config.gcc (arm-wrs-vxworks): Don't include svr4.h.
7133         * config/vxworks.h (PTRDIFF_TYPE, SIZE_TYPE, TARGET_POSIX_IO): Define.
7134         * config/arm/vxworks.h (ASM_SPEC): Delete.
7135         (SUBTARGET_EXTRA_ASM_SPEC): Define.
7136
7137 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
7138
7139         * tree-data-ref.h (data_dependence_relation): New flag reversed_p.
7140         (DDR_REVERSED_P): New.
7141         * tree-data-ref.c (initialize_data_dependence_relation,
7142         build_classic_dist_vector): Set DDR_REVERSED_P.
7143
7144 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
7145
7146         PR middle-end/32457
7147         * tree-data-ref.c (analyze_siv_subscript_cst_affine,
7148         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
7149         init_omega_for_ddr_1): Use non conservative number of iterations
7150         estimations.
7151         (analyze_subscript_affine_affine): Use HOST_WIDE_INT instead of int.
7152         (analyze_siv_subscript): Remove FIXME and reinitialization of 
7153         last_conflicts to chrec_dont_know.
7154         * testsuite/gfortran.dg/vect/pr32457.f90: New.
7155
7156 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
7157
7158         * tree.c (maybe_canonicalize_argtypes): Improve description.
7159
7160 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
7161
7162         * tree.c (maybe_canonicalize_argtypes): New.
7163         (build_function_type): Set canonical type.
7164         (build_method_type_directly): Ditto.
7165         (reconstruct_complex_type): Rebuild the METHOD_TYPE node
7166         properly.
7167
7168 2007-07-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7169
7170         * tree-ssa-loop-ivopts.c (strip_offset_1): Treat POINTER_PLUS_EXPR
7171         like PLUS_EXPR.
7172         (rewrite_use_nonlinear_expr): Likewise.
7173
7174 2007-07-03  Seongbae Park  <seongbae.park@gmail.com>
7175
7176         * rtl.def (UNSPEC, USE, CLOBBER): More comments.
7177
7178 2007-07-04  Ben Elliston  <bje@au.ibm.com>
7179
7180         * dwarf2out.c: Move DWARF2 abbreviation glossary closer to the top
7181         of this file.
7182
7183         * c-objc-common.c (c_types_compatible_p): Fix indentation.
7184
7185         * doc/tm.texi (Run-time Target): Capitalise "CPU".
7186         (Exception Handling): Likewise.
7187
7188 2007-07-03  Jan Hubicka  <jh@suse.cz>
7189
7190         * ifcvt.c (find_cond_trap): Avoid invalid RTL sharing.
7191
7192 2007-07-03  Eric Christopher  <echristo@apple.com>
7193
7194         * doc/cppopts.texi: Add conflicting option note to -dM.
7195         * doc/invoke.texi: Add note about possible conflicts with
7196         -E for -dCHARS and note that -dM will not produce
7197         any results if there is no machine dependent reorg.
7198         
7199 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
7200
7201         * tree.h (DECL_ALIGN): Back out previous change.
7202
7203 2007-07-03  Joseph Myers  <joseph@codesourcery.com>
7204
7205         * configure.ac: Test for .dtprelword support on MIPS.
7206         * configure, config.in: Regenerate.
7207         * config/mips/mips.c (mips_output_dwarf_dtprel): New.
7208         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
7209
7210 2007-07-03  Julian Brown  <julian@codesourcery.com>
7211
7212         * config.gcc (with_fpu): Allow --with-fpu=vfp3.
7213         * config/arm/aout.h (REGISTER_NAMES): Add D16-D31.
7214         * config/arm/aof.h (REGISTER_NAMES): Add D16-D31.
7215         * config/arm/arm.c (FL_VFPV3): New flag for VFPv3 processor
7216         capability.
7217         (all_fpus): Add FPUTYPE_VFP3.
7218         (fp_model_for_fpu): Add VFPv3 field.
7219         (arm_rtx_costs_1): Give cost to VFPv3 constants.
7220         (vfp3_const_double_index): New function. Return integer index of
7221         VFPv3 constant suitable for fconst[sd] insns, or -1 if constant
7222         isn't suitable.
7223         (vfp3_const_double_rtx): New function. True if VFPv3 is enabled
7224         and argument represents a valid RTX for a VFPv3 constant.
7225         (vfp_output_fldmd): Split fldmd with > 16 registers in the list into
7226         two instructions.
7227         (vfp_emit_fstmd): Similar, for fstmd.
7228         (arm_print_operand): Implement new code 'G' for VFPv3 floating-point
7229         constants, represented as integer indices.
7230         (arm_hard_regno_mode_ok): Use VFP_REGNO_OK_FOR_SINGLE,
7231         VFP_REGNO_OK_FOR_DOUBLE macros.
7232         (arm_regno_class): Handle VFPv3 d0-d7, low, high register split.
7233         (arm_file_start): Set float-abi attribute for VFPv3, and output
7234         correct ".fpu" assembler directive.
7235         (arm_dbx_register_numbering): Add FIXME.
7236         * config/arm/arm.h (TARGET_VFP3): New macro. Target supports VFPv3.
7237         (fputype): Add FPUTYPE_VFP3.
7238         (FIXED_REGISTERS): Add 32 registers for D16-D31.
7239         (CALL_USED_REGISTERS): Likewise.
7240         (CONDITIONAL_REGISTER_USAGE): Add note about conditional definition
7241         of LAST_VFP_REGNUM. Make D16-D31 caller-saved, if present.
7242         (LAST_VFP_REGNUM): Extend available VFP registers for VFPv3.
7243         (D7_VFP_REGNUM): New.
7244         (LAST_LO_VFP_REGNUM, FIRST_HI_VFP_REGNUM, LAST_HI_VFP_REGNUM)
7245         (VFP_REGNO_OK_FOR_SINGLE, VFP_REGNO_OK_FOR_SINGLE)
7246         (VFP_REGNO_OK_FOR_DOUBLE): Define new macros.
7247         (FIRST_PSEUDO_REGISTER): Shift up to 128 to accommodate VFPv3.
7248         (REG_ALLOC_ORDER): Adjust for VFPv3.
7249         (reg_class): Add VFP_D0_D7_REGS, VFP_LO_REGS, VFP_HI_REGS.
7250         (REG_CLASS_NAMES): Add entries corresponding to VFP_D0_D7_REGS,
7251         VFP_LO_REGS, VFP_HI_REGS.
7252         (REG_CLASS_CONTENTS): Likewise. Extend contents for VFP_REGS.
7253         (IS_VFP_CLASS): Define macro.
7254         (SECONDARY_OUTPUT_RELOAD_CLASS, SECONDARY_INPUT_RELOAD_CLASS): Use
7255         IS_VFP_CLASS.
7256         (REGISTER_MOVE_COST): Likewise.
7257         * config/arm/arm-protos.h (vfp3_const_double_rtx): Add prototype.
7258         * config/arm/vfp.md (VFPCC_REGNUM): Redefine as 127.
7259         (*arm_movsi_vfp, *thumb2_movsi_vfp, *movsfcc_vfp)
7260         (*thumb2_movsfcc_vfp, *abssf2_vfp, *negsf2_vfp, *addsf3_vfp)
7261         (*subsf3_vfp, *divsf_vfp, *mulsf_vfp, *mulsf3negsf_vfp)
7262         (*mulsf3addsf_vfp, *mulsf3subsf_vfp, *mulsf3negsfaddsf_vfp)
7263         (*extendsfdf2_vfp, *truncdfsf2_vfp, *truncsisf2_vfp)
7264         (*truncsidf2_vfp, fixuns_truncsfsi2, fixuns_truncdfsi2)
7265         (*floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2)
7266         (floatunssidf2, *sqrtsf2_vfp, *cmpsf_split_vfp)
7267         (*cmpsf_trap_split_vfp, *cmpsf_vfp, *cmpsf_trap_vfp): Use 't'
7268         where appropriate for single-word registers.
7269         (*movsf_vfp, *thumb2_movsf_vfp, *movdf_vfp, *thumb2_movdf_vfp):
7270         As above. Fix type attributes.
7271         * config/arm/constraints.md (register_contraint "t"): Define.
7272         (register_constraint "w"): Change to D0-D15, or D0-D31 for
7273         VFPv3/NEON.
7274         (register_constraint "x"): Define.
7275         (constraint "Dv"): Define.
7276
7277 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
7278
7279         * tree.h (DECL_ALIGN): Prevent use on a FUNCTION_DECL.
7280
7281 2007-07-03  Tom Tromey  <tromey@redhat.com>
7282
7283         * c-parser.c (objc_pq_context): Removed.
7284         (objc_need_raw_identifier): Likewise.
7285         (c_parser) <objc_pq_context>: New field.
7286         <objc_need_raw_identifier>: Likewise.
7287         (OBJC_NEED_RAW_IDENTIFIER): Removed.
7288         (c_lex_one_token): Update.
7289         (c_parser_objc_protocol_definition): Update.
7290         (c_parser_objc_method_definition): Update.
7291         (c_parser_objc_methodproto): Update.
7292         (c_parser_declspecs): Update.
7293
7294 2007-07-03  David Ung  <davidu@mips.com>
7295
7296         * config/mips/mips.c (mips_issue_rate): Return 4 for 74K processors.
7297
7298 2007-07-03  David Ung  <davidu@mips.com>
7299             Richard Sandiford  <richard@codesourcery.com>
7300
7301         * doc/invoke.texi: Document -march=74kf3_2.
7302         * config/mips/mips.h (PROCESSOR_74KF3_2): New processor_type.
7303         (TUNE_74K): Check for it.
7304         * config/mips/mips.c (mips_cpu_info): Add 74kf3_2.
7305         (mips_rtx_cost_data): Add an entry for PROCESSOR_74KF3_2.
7306         * config/mips/mips.md (cpu): Add 74kf3_2.
7307         * config/mips/74k.md (r74k_int_logical, r74k_int_arith, r74k_int_nop)
7308         (r74k_int_cmove, r74k_int_mult, r74k_int_mul3, r74k_int_mfhilo)
7309         (r74k_int_mthilo, r74k_int_div, r74k_int_call, r74k_int_jump)
7310         (r74k_int_load, r74k_int_store, r74k_unknown, r74k_multi): Add
7311         74kf3_2 to the CPU list.
7312         (r74kf3_2_fadd, r74kf3_2_fmove, r74kf3_2_fload, r74kf3_2_fstore)
7313         (r74kf3_2_fmul_sf, r74kf3_2_fmul_df, r74kf3_2_fdiv_sf)
7314         (r74kf3_2_fdiv_df, r74kf3_2_frsqrt_sf, r74kf3_2_frsqrt_df)
7315         (r74kf3_2_fcmp, r74kf3_2_fcvt, r74kf3_2_fxfer_to_c1)
7316         (r74kf3_2_fxfer_from_c1): New insn reservations.
7317
7318 2007-07-03  Richard Sandiford  <richard@codesourcery.com>
7319             David Ung  <davidu@mips.com>
7320
7321         * doc/invoke.texi: Replace -march=24kf with -march=24kf2_1 and
7322         -march=24kx with -march=24kf1_1.  Likewise 24ke[fx], 34k[fx]
7323         and 74k[fx].  Document aliases for the new options.
7324         * config/mips/mips.h (PROCESSOR_24KF): Rename to...
7325         (PROCESSOR_24KF2_1): ...this.
7326         (PROCESSOR_24KX): Rename to...
7327         (PROCESSOR_24KF1_1): ...this.
7328         (PROCESSOR_74KF): Rename to...
7329         (PROCESSOR_74KF2_1): ...this.
7330         (PROCESSOR_74KX): Rename to...
7331         (PROCESSOR_74KF1_1): ...this.
7332         (TUNE_74K): Update PROCESSOR_* names.
7333         * config/mips/mips.c (mips_cpu_info): Add 24kf2_1 as a synonym
7334         for 24kf.  Add 24kf1_1 and 24kfx as synonyms for 24kx.  Likewise
7335         the 24ke*, 34k* and 74k* processors.  Update PROCESSOR_* names.
7336         (mips_rtx_cost_data): Update processor names in comments.
7337         (mips_issue_rate): Update PROCESSOR_* names.
7338         * config/mips/mips.md (cpu): Rename 24kf to 24kf2_1, 24kx to
7339         24kf1_1, 74kf to 74kf2_1 and 74kx to 74kf1_1.
7340         * config/mips/24k.md: Rename FPU-related r24k_* insn reservations
7341         to r24kf2_1_*.  Rename r24kx_* insn reservations to r24kf1_1_*.
7342         Update cpu attribute names.
7343         (r24k_fpu_iss): Rename this reservation to...
7344         (r24kf2_1_fpu_iss): ...this and update all uses.
7345         (r24kx_fpu_iss): Rename this reservation to...
7346         (r24kf1_1_fpu_iss): ...this and update all uses.
7347         * config/mips/74k.md: Rename FPU-related r74kf_* insn reservations
7348         to r74kf2_1_*.  Rename r74kx_* insn reservations to r74kf1_1_*.
7349         Update cpu attribute names.
7350
7351 2007-07-01  Kaz Kojima  <kkojima@gcc.gnu.org>
7352
7353         * config/m32r/constraints.md: New file.
7354         * config/m32r/m32r.c: Include tm-constrs.h.
7355         (small_data_operand): Use satisfies_constraint_* instead of macro.
7356         (addr24_operand, gen_compare): Likewise.
7357         * config/m32r/m32r.h (REG_CLASS_FROM_LETTER): Remove.
7358         (INT8_P, UPPER16_P, UINT32_P, UINT5_P, INVERTED_SIGNED_8BIT,
7359         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
7360         EXTRA_CONSTRAINT): Likewise.
7361         * config/m32r/m32r.md: Include constraints.md.
7362         (*movsi_insn): Use satisfies_constraint_* instead of macro.
7363         (andsi3, iorsi3, xorsi3, seq_insn+1, sne): Likewise.
7364         * config/m32r/predicates.md (conditional_move_operand): Likewise.
7365         (two_insn_const_operand, int8_operand, uint16_operand,
7366         reg_or_int16_operand, reg_or_uint16_operand,
7367         reg_or_cmp_int16_operand, cmp_int16_operand,
7368         seth_add3_operand): Likewise.
7369
7370 2007-07-03  Eric Christopher  <echristo@gmail.com>
7371
7372         * libgcc2.h: Conditionally declare __bswapsi2 and
7373         __bswapdi2.
7374         
7375 2007-07-03  H.J. Lu  <hongjiu.lu@intel.com>
7376
7377         * ddg.c (check_sccs): Define only if ENABLE_CHECKING is
7378         defined.
7379
7380 2007-07-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
7381
7382         PR target/28307
7383         * gthr-posix.h [SUPPORTS_WEAK && GTHREAD_USE_WEAK]
7384         (__gthrw_pragma): Provide default definition.
7385         (__gthrw2): Use it.
7386         * gthr-posix.c (__gthrw_pragma): Define.
7387
7388 2007-07-03  Daniel Berlin  <dberlin@dberlin.org>
7389
7390         * tree-ssa-sccvn.c (set_ssa_val_to): Check for operand_equal_p
7391         before declaring inequality.
7392
7393 2007-07-03  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7394
7395         * combine.c (recog_for_combine): Log the success or failure of
7396           matching new insn patterns against the machine description in
7397           detailed dumps.
7398
7399 2007-07-03  Revital Eres  <eres@il.ibm.com>
7400
7401         * ddg.c (print_sccs): New function.
7402         (check_sccs): New function.
7403         (create_ddg_all_sccs): Use it.
7404         * ddg.h (print_sccs): Declare.
7405         * modulo-sched.c (sms_order_nodes): Call print_sccs.
7406
7407 2007-07-03  Uros Bizjak  <ubizjak@gmail.com>
7408
7409         * targhooks.h (default_mode_for_suffix): New function declaration.
7410         * targhooks.c (default_mode_for_suffix): New default target hook.
7411         * target.h (struct c): New structure in the targetm struct.
7412         (mode_for_suffix): New target hook as part of struct c.
7413         target-def.h (TARGET_C_MODE_FOR_SUFFIX): Define as
7414         default_mode_for_suffix.
7415         (TARGET_C): New define.
7416         * c-lex.c: Include "target.h".
7417         (interpret_float): Use targetm.c.mode_for_suffix to determine
7418         the mode for a given non-standard suffix.
7419         Makefile.in (c-lex.o): Depend on $(TARGET_H).
7420
7421         * config/i386/i386.c (ix86_c_mode_for_suffix): New static function.
7422         (TARGET_C_MODE_FOR_SUFFIX): Define to ix86_c_mode_for_suffix.
7423
7424         * doc/extend.texi (Floating Types): New node.  Document __float80 and
7425         __float128 types.  Document 'w', 'W', 'q' and 'Q' suffixes.
7426
7427 2007-07-03  Kaz Kojima  <kkojima@gcc.gnu.org>
7428
7429         PR target/32506
7430         * config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
7431         predicate instead of target_operand.
7432         (divsi3_i1_media, divsi3_media_2): Likewise.
7433
7434 2007-07-02  Eric Botcazou  <ebotcazou@adacore.com>
7435
7436         * tree.h (alias_sets_might_conflict_p): Rename into
7437         alias_sets_must_conflict_p.
7438         * alias.c (alias_sets_might_conflict_p): Likewise.
7439         (alias_sets_conflict_p): Use it.
7440         (objects_must_conflict_p): Likewise.
7441         * c-common.c (strict_aliasing_warning): Adjust.
7442
7443 2007-07-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7444
7445         * rtlhooks.c (gen_lowpart_if_possible): Check for
7446         invalid subreg before calling gen_lowpart_SUBREG.
7447
7448 2007-07-02  Geoffrey Keating  <geoffk@apple.com>
7449
7450         * config/darwin9.h: Add copyright notice.
7451         (LINK_COMMAND_SPEC): Add comment.
7452         (DARWIN_LIBSYSTEM_HAS_UNWIND): Define.
7453         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Conditionalise on
7454         DARWIN_LIBSYSTEM_HAS_UNWIND.
7455
7456 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
7457
7458         PR libgomp/32468
7459         * omp-low.c (check_combined_parallel): New function.
7460         (lower_omp_parallel): Call it via walk_stmts, set
7461         OMP_PARALLEL_COMBINED if appropriate.
7462         (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
7463         isn't the only statement in WS_ENTRY_BB or OMP_RETURN
7464         the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
7465         don't consider it as combined parallel.
7466
7467 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
7468
7469         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
7470         (gcc_tooldir): Likewise.
7471         * configure: Regenerate.
7472         * Makefile.in (libsubdir_to_prefix): New variable, based on the
7473         old configure.ac gcc_tooldir setting.
7474         (prefix_to_exec_prefix): New variable.
7475         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
7476         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
7477
7478 2007-07-02  Daniel Berlin  <dberlin@dberlin.org>
7479
7480         Fix PR tree-optimization/32583
7481         Fix PR tree-optimization/32584
7482         * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
7483         (phi_translate_set): Use phi_translate directly now.
7484         (make_values_for_stmt): Don't value number RHS if we already know
7485         it is constant.
7486
7487 2007-07-02  Steve Ellcey  <sje@cup.hp.com>
7488             Jim Wilson <wilson@specifix.com>
7489
7490         PR target/31684
7491         * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
7492         copy_insn.
7493
7494 2007-07-02  Sandra Loosemore  <sandra@codesourcery.com>
7495             Richard Sandiford  <richard@codesourcery.com>
7496             Nigel Stephens  <nigel@mips.com>
7497
7498         * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
7499         (mips16e_output_save_restore): Declare.
7500         (mips16e_save_restore_pattern_p): Likewise.
7501         * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
7502         * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
7503         for GENERATE_MIPS16E_SAVE_RESTORE.  Return 0x400 for TARGET_MIPS16
7504         && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
7505         (BITSET_P): New global macro, extracted from...
7506         (mips_for_each_saved_reg): ...here.
7507         (mips16e_save_restore_info): New struct.
7508         (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
7509         (mips16e_save_restore_regs): New variable.
7510         (mips_split_plus, mips16e_find_first_register): New functions.
7511         (mips16e_mask_registers): New function.
7512         (compute_frame_size): Expand the commentary before the function.
7513         Enforce the MIPS16e save and restore register range restrictions.
7514         Pad the general register save area at the low end.
7515         (mips16e_save_restore_reg, mips16e_build_save_restore)
7516         (mips16e_save_restore_pattern_p, mips16e_add_register_range)
7517         (mips16e_output_save_restore, mips16e_collect_propagate_value)
7518         (mips16e_collect_argument_save, mips16e_collect_argument_saves):
7519         New functions.
7520         (mips_expand_prologue, mips_expand_epilogue): Handle
7521         GENERATE_MIPS16E_SAVE_RESTORE.
7522         * config/mips/mips.md (*mips16e_save_restore): New pattern.
7523
7524 2007-07-02  Uros Bizjak  <ubizjak@gmail.com>
7525
7526         PR tree-optimization/31966
7527         PR tree-optimization/32533
7528         * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
7529         "basic_block" description as its third argument.  Update function
7530         calls to get destination bb from "edge" argument.  Save "cond" into
7531         aux field of the edge.  Update prototype for changed arguments.
7532         (if_convertible_loop_p): Clear aux field of incoming edges if bb
7533         contains phi node.
7534         (find_phi_replacement_condition): Operate on incoming edges, not
7535         on predecessor blocks.  If there is a condition saved in the
7536         incoming edge aux field, AND it with incoming bb predicate.
7537         Return source bb of the first edge.
7538         (clean_predicate_lists): Clean aux field of outgoing node edges.
7539         (tree_if_conversion): Do not initialize cond variable. Move
7540         variable declaration into the loop.
7541         (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
7542         initializations of new_stmt, arg0 and arg1 variables.
7543
7544 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
7545
7546         * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
7547         SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
7548
7549 2007-07-02  Richard Guenther  <rguenther@suse.de>
7550
7551         * tree-ssa.c (useless_type_conversion_p): Document
7552         future intent as defining the middle-end type system.
7553         Re-structure to call langhook last, group by type class,
7554         mark questionable parts.
7555
7556 2007-07-02  Richard Guenther  <rguenther@suse.de>
7557
7558         * tree-flow.h (types_compatible_p): Declare.
7559         * tree-ssa.c (types_compatible_p): New function.
7560         * ipa-type-escape.c (discover_unique_type): Use
7561         types_compatible_p instead of lang_hooks.types_compatible_p.
7562         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
7563         * tree-vn.c (expressions_equal_p): Likewise.
7564         * tree.c (fields_compatible_p): Likewise.
7565         * tree-ssa-dom.c (avail_expr_eq): Likewise.
7566         (cprop_operand): Use useless_type_conversion_p instead of
7567         lang_hooks.types_compatible_p.
7568         * tree-inline.c (setup_one_parameter): Likewise.
7569         (declare_return_variable): Likewise.
7570         * tree-nrv.c (tree_nrv): Likewise.
7571         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
7572         (maybe_fold_offset_to_component_ref): Likewise.
7573         (maybe_fold_offset_to_reference): Likewise.
7574         * tree-ssa-copy.c (may_propagate_copy): Likewise.
7575         (merge_alias_info): Likewise.
7576         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
7577         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
7578         * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
7579         * tree-tailcall.c (find_tail_calls): Likewise.
7580         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
7581         * gimplify.c (canonicalize_addr_expr): Likewise.
7582         (fold_indirect_ref_rhs): Likewise.
7583         (gimplify_addr_expr): Likewise.  Swap parameters to cpt_same_type.
7584         (cpt_same_type): Likewise.
7585         (check_pointer_types_r): Swap parameters to cpt_same_type
7586         where appropriate.
7587         * fold-const.c (fold_convert): Revert fix for PR15988.
7588         * tree-inline.c (setup_one_parameter): Instead fix it here by
7589         using fold_build1 instead of fold_convert and checking for
7590         error_mark_node.  Convert only if the conversion is necessary.
7591
7592 2007-07-02  Joseph Myers  <joseph@codesourcery.com>
7593
7594         * configure.ac: Check for .gnu_attribute on Power.
7595         * configure: Regenerate.
7596         * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
7597         attribute for floating-point ABI.
7598
7599 2007-07-02  Ira Rosen  <irar@il.ibm.com>
7600
7601         PR tree-optimization/32230
7602         PR tree-optimization/32477
7603         * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base 
7604         address is a constant.
7605
7606 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
7607
7608         * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
7609         (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
7610         (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
7611         stanzas.  Use the first part of the triplet to set MIPS_ISA_DEFAULT.
7612         Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
7613         64-bit targets.  Add support for *-elfoabi*.
7614         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
7615         different settings if $(tm_defines) does not select the EABI.
7616         (MULTILIB_EXCLUSIONS): Define in those circumstances.
7617         * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
7618         (MIPS_ARCH_OPTION_SPEC): Likewise.
7619         (MIPS_ISA_LEVEL_SPEC): Likewise.
7620         (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
7621         * config/mips/elfoabi.h: New file.
7622
7623 2007-07-02  Richard Guenther  <rguenther@suse.de>
7624
7625         * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
7626         (useless_type_conversion_p): ... this.
7627         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
7628         (useless_type_conversion_p): ... this.
7629         * builtins.c (fold_builtin_memory_op): Rename
7630         tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
7631         * tree-cfg.c (verify_expr): Likewise.
7632         * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
7633         * tree-ssa-ccp.c (ccp_fold): Likewise.
7634         * tree-ssa-copy.c (may_propagate_copy): Likewise.
7635         * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
7636         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
7637         * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
7638         * tree-ssa-pre.c (eliminate): Likewise.
7639         * tree-ssa.c (delete_tree_ssa): Likewise.
7640         (tree_ssa_useless_type_conversion): Likewise.
7641         * tree.c (build2_stat): Likewise.
7642
7643 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
7644
7645         Fix PR tree-optimization/32571
7646         * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
7647         simplifying them.
7648
7649 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
7650
7651         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
7652         and other expected operations explicitly, change default to
7653         gcc_unreachable. 
7654
7655 2007-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
7656
7657         * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
7658         PARALLEL.
7659         * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
7660         (tls_load_dot_plus_eight): Move the label number into the unspec.
7661         * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
7662
7663 2007-07-01  Andreas Schwab  <schwab@suse.de>
7664
7665         * dwarf2out.c (initial_return_save): Define only if used.
7666
7667 2007-07-01  Kenneth Zadeck <zadeck@naturalbridge.com>
7668
7669         Unreverting Richard's Revert of:
7670
7671         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
7672
7673         * dce.c (deletable_insn_p_1): New function, split out from...
7674         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
7675         specially, not those inside PARALLELs.  Remove BODY argument
7676         and adjust recursive call accordingly.
7677         (prescan_insns_for_dce): Update call to delete_insn_p.
7678
7679 2007-07-01  Vladimir Yanovsky  <yanov@il.ibm.com>
7680             Revital Eres  <eres@il.ibm.com>
7681
7682         * ddg.c (create_ddg_all_sccs): Fix missed
7683         initialization of scc_nodes.
7684
7685 2007-07-01  Uros Bizjak  <ubizjak@gmail.com>
7686
7687         PR middle-end/32559
7688         * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
7689         X + ~X to 1 only for INTEGRAL_TYPE_P type.
7690
7691 2007-06-30  Joseph Myers  <joseph@codesourcery.com>
7692
7693         * configure.ac: Check for .gnu_attribute on MIPS.
7694         * configure, config.in: Regenerate.
7695         * config/mips/mips.c (mips_file_start): If supported, output
7696         attribute for floating-point ABI.
7697
7698 2007-06-30  Uros Bizjak  <ubizjak@gmail.com>
7699
7700         PR target/32433
7701         * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
7702         (ffs_cmove): New expander to expand using ctz pattern.
7703         (*ffs_cmove): Remove pattern.
7704         (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
7705         (ffsdi2): Expand using ctz pattern.
7706         (*ffs_rex64): Remove pattern.
7707
7708 2007-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7709
7710         PR rtl-optimization/32296
7711         * pa.md (return): Delete pattern.
7712         (return_internal): Remove "(const_int 1)" from pattern.
7713         (epilogue): Use return_internal pattern for trivial returns.
7714         * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
7715         * pa.c (hppa_can_use_return_insn_p): Delete function.  Include "df.h".
7716
7717 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
7718
7719         * tree-ssa-pre.c (is_exception_related): New function
7720         (can_value_number_operation): Use it.
7721
7722 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
7723         
7724         Fix PR tree-optimization/32540
7725         Fix PR tree-optimization/31651
7726
7727         * tree-ssa-sccvn.c: New file.
7728
7729         * tree-ssa-sccvn.h: Ditto.
7730         
7731         * tree-vn.c: Include tree-ssa-sccvn.h
7732         (val_expr_paid_d): Removed.
7733         (value_table): Ditto.
7734         (vn_compute): Ditto.
7735         (val_expr_pair_hash): Ditto.
7736         (val_expr_pair_expr_eq): Ditto.
7737         (copy_vuses_from_stmt): Ditto.
7738         (vn_delete): Ditto.
7739         (vn_init): Ditto.
7740         (shared_vuses_from_stmt): Ditto.
7741         (print_creation_to_file): Moved up.
7742         (sort_vuses): Ditto.
7743         (sort_vuses_heap): Ditto.
7744         (set_value_handle): Make non-static.
7745         (make_value_handle): Ditto.
7746         (vn_add): Rewritten to use sccvn lookups.
7747         (vn_add_with_vuses): Ditto.
7748         (vn_lookup): Ditto (and second argument removed).
7749         (vn_lookup_with_vuses): Ditto.
7750         (vn_lookup_or_add): Ditto (and second argument removed);
7751         (vn_lookup_or_add_with_vuses): Ditto.
7752         (vn_lookup_with_stmt): New.
7753         (vn_lookup_or_add_with_stmt): Ditto.
7754         (create_value_handle_for_expr): Ditto.
7755
7756         * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
7757         (seen_during_translate): New function.
7758         (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
7759         (phi_trans_add): Ditto.
7760         (constant_expr_p): FIELD_DECL is always constant.
7761         (phi_translate_1): Renamed from phi_translate, add seen bitmap.
7762         Use constant_expr_p.
7763         Avoid infinite recursion on mutually valued expressions.
7764         Change callers of vn_lookup_or_add.
7765         (phi_translate): New function.
7766         (compute_antic_safe): Allow phi nodes.
7767         (create_component_ref_by_pieces): Update for FIELD_DECL change.
7768         (find_or_generate_expression): Rewrite slightly.
7769         (create_expression_by_pieces): Updated for vn_lookup_or_add
7770         change.
7771         Update VN_INFO for new names.
7772         (insert_into_preds_of_block): Update for new names.
7773         (add_to_exp_gen): New function.
7774         (add_to_sets): Use vn_lookup_or_add_with_stmt.
7775         (find_existing_value_expr): Rewrite to changed vn_lookup.
7776         (create_value_expr_from): Ditto, and use add_to_exp_gen.
7777         (try_look_through_load): Removed.
7778         (try_combine_conversion): Ditto.
7779         (get_sccvn_value): New function.
7780         (make_values_for_phi): Ditto.
7781         (make_values_for_stmt): Ditto.
7782         (compute_avail): Rewritten for vn_lookup_or_add changes and to use
7783         SCCVN.
7784         (init_pre): Update for SCCVN changes.
7785         (fini_pre): Ditto.
7786         (execute_pre): Ditto.
7787
7788         * tree-flow.h (make_value_handle): Declare.
7789         (set_value_handle): Ditto.
7790         (sort_vuses_heap): Ditto.
7791         (vn_lookup_or_add_with_stmt): Ditto.
7792         (vn_lookup_with_stmt): Ditto.
7793         (vn_compute): Remove.
7794         (vn_init): Ditto.
7795         (vn_delete): Ditto.
7796         (vn_lookup): Update arguments.
7797
7798         * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
7799         (tree-vn.o): Ditto.
7800         (tree-ssa-sccvn.o): New.
7801         (OBJS-common): Add tree-ssa-sccvn.o
7802         
7803 2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7804
7805         PR c/4076
7806         * c-typeck.c (build_external_ref): Don't mark as used if called
7807         from itself.
7808         * calls.c (rtx_for_function_call): Likewise.
7809         
7810 2007-06-30  Richard Sandiford  <richard@codesourcery.com>
7811
7812         Revert:
7813
7814         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
7815
7816         * dce.c (deletable_insn_p_1): New function, split out from...
7817         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
7818         specially, not those inside PARALLELs.  Remove BODY argument
7819         and adjust recursive call accordingly.
7820         (prescan_insns_for_dce): Update call to delete_insn_p.
7821
7822 2007-06-30  Rask Ingemann Lambertsen <rask@sygehus.dk>
7823
7824         * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
7825         (try_combine): Move potential calls to undo_all() so they happen
7826         before we commit to using the combined insns.
7827
7828 2006-06-30  Jan Hubicka  <jh@suse.cz>
7829
7830         * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
7831         code.
7832
7833 2006-06-30  Thomas Neumann  <tneumann@users.sourceforge.net>
7834
7835         * ipa.c (cgraph_postorder): Cast according to the coding conventions.
7836         (cgraph_remove_unreachable_nodes): Likewise.
7837         * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
7838         * ipa-inline.c (update_caller_keys): Cast according to the coding
7839         conventions.
7840         (cgraph_decide_recursive_inlining): Likewise.
7841         (cgraph_decide_inlining_of_small_function): Likewise.
7842         (try_inline): Likewise.
7843         (cgraph_decide_inlining_incrementally): Likewise.
7844         * ipa-pure-const.c (get_function_state): Likewise.
7845         (scan_function): Likewise.
7846         (analyze_function): Likewise.
7847         (static_execute): Likewise.
7848         * ipa-reference.c (scan_for_static_refs): Likewise.
7849         (merge_callee_local_info): Likewise.
7850         (analyze_function): Use type safe memory macros.
7851         (static_execute): Likewise. Cast according to the coding conventions.
7852         * ipa-type-escape.c (scan_for_regs): Cast according to the coding
7853         conventions.
7854         * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
7855         names.
7856         (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
7857         * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
7858         variable names.
7859
7860 2007-06-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7861
7862         PR middle-end/30024
7863         * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
7864         for complex modes (both int and real).
7865
7866 2007-06-29  Jan Hubicka  <jh@suse.cz>
7867
7868         * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
7869
7870 2007-06-29  Jan Hubicka  <jh@suse.cz>
7871
7872         PR middle-end/32372
7873         * cse.c (cse_insn): Avoid invalid sharing in between register note and
7874         the insn pattern.
7875
7876 2007-06-29  Anatoly Sokolov <aesok@post.ru>
7877
7878         PR target/32335
7879         * config/avr/avr.c: Include dataflow header file.
7880         (expand_prologue): Adjust for prologue insn change.
7881         * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
7882         inside a insn.
7883
7884 2007-06-29  Richard Guenther  <rguenther@suse.de>
7885
7886         PR middle-end/32493
7887         * gimplify.c (gimplify_call_expr): Ignore variable argument parts
7888         during type verification.
7889
7890 2007-06-29  Jan Hubicka  <jh@suse.cz>
7891
7892         * recog.c (validate_change_rtx_1): Unshare TO argument.
7893
7894 2007-06-29  Uros Bizjak  <ubizjak@gmail.com>
7895
7896         PR tree-optimization/24659
7897         * tree-vect-transform.c (vectorizable_call): Handle
7898         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
7899
7900         * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
7901         * config/i386/i386.c (enum ix86_builtins)
7902         [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
7903         (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
7904         description.
7905         (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
7906         const using def_builtin_const.
7907         (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
7908         input operands in the same modes as the result.
7909         (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
7910
7911 2007-06-29  Richard Sandiford  <rsandifo@nildram.co.uk>
7912
7913         * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
7914         (df_set_dead_notes_for_mw): Likewise.
7915
7916 2007-06-29  Eric Botcazou  <ebotcazou@adacore.com>
7917
7918         * c-common.c (pointer_int_sum): Do the negation in sizetype.
7919
7920 2007-06-28  DJ Delorie  <dj@redhat.com>
7921
7922         * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
7923
7924 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
7925
7926         * doc/invoke.texi (C++ Dialect Options): Document
7927         fvisibility-ms-compat.
7928         * c.opt (fvisibility-ms-compat): New.
7929
7930 2007-06-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7931
7932         PR tree-opt/32417
7933         * tree-affine.c (aff_combination_add_elt): Handle
7934         pointer addition specially.
7935
7936 2007-06-28  Jakub Jelinek  <jakub@redhat.com>
7937
7938         * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
7939         decl is non-external for AIX ABI.
7940
7941 2007-06-28  David Edelsohn  <edelsohn@gnu.org>
7942
7943         * config/rs6000/predicates.md (current_file_function_operand):
7944         Ensure the symbol is non-external for AIX ABI.
7945
7946 2007-06-28  Nick Clifton  <nickc@redhat.com>
7947
7948         * common.opt (fipa-matrix-reorg): Add Optimization attribute.
7949         (fdce, fdse, fpredictive-commoning): Likewise.
7950
7951 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
7952
7953         PR other/31400
7954         * gcc.c (process_command): Recognize the new -static-libgfortran
7955         option.
7956
7957 2007-06-27  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7958
7959         PR target/32418
7960         * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
7961         Use a call clobbered hard reg instead of a pseudo reg.
7962
7963 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
7964
7965         * config/sh/sh.md (load_gbr): Use correct operand constraint.
7966
7967 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
7968
7969         PR target/32479
7970         * config/sh/sh.md (udivsi3): Don't wrap the sequence with
7971         REG_LIBCALL and REG_RETVAL notes.
7972         (divsi3, mulsi3): Likewise.
7973         (mulhisi3): Likewise.  Use emit_libcall_block.
7974         (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
7975
7976 2007-06-27  Seongbae Park  <seongbae.park@gmail.com>
7977
7978         PR rtl-optimization/32481
7979         * combine.c (adjust_for_new_dest): Rescan the changed insn.
7980
7981 2007-06-27  Richard Sandiford  <richard@codesourcery.com>
7982
7983         * dce.c (deletable_insn_p_1): New function, split out from...
7984         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
7985         specially, not those inside PARALLELs.  Remove BODY argument
7986         and adjust recursive call accordingly.
7987         (prescan_insns_for_dce): Update call to delete_insn_p.
7988
7989 2007-06-27  Richard Guenther  <rguenther@suse.de>
7990
7991         PR middle-end/32492
7992         * tree.h (fold_convertible_p): Declare.
7993         * fold-const.c (fold_convertible_p): New function.
7994         * gimplify.c (gimplify_call_expr): Use fold_convertible_p
7995         instead of lang_hooks.types_compatible_p.
7996
7997 2007-06-26  Jan Hubicka  <jh@suse.cz>
7998
7999         * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
8000         * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
8001         early use validate_unshare_change.
8002         (reload_combine): Likewise.
8003         * recog.c (change_t): New field unshare.
8004         (validate_change_1): Rename from validate_change; add argument unshare.
8005         (validate_change): Turn into wrapper of validate_change_1; update
8006         prototype for bools.
8007         (validate_unshare_change): New.
8008         (confirm_change_group): Unshare changes if asked for; avoid unnecesary
8009         calls of df_insn_rescan.
8010         * recog.h (validate_change): Replace ints by bools.
8011         (validate_unshare_change): Declare.
8012
8013 2007-06-26  Kenneth Zadeck <zadeck@naturalbridge.com>
8014
8015         * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
8016         
8017 2007-06-26  Steve Ellcey  <sje@cup.hp.com>
8018
8019         * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
8020
8021 2007-06-25  Jan Hubicka  <jh@suse.cz>
8022
8023         * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
8024         uninlinable call.
8025         (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
8026         cgraph_decide_inlining_incrementally): Move uninlinability checks to
8027         places other call site specific checks are performed.
8028
8029 2007-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8030
8031         PR tree-opt/32421
8032         * tree-vect-transform.c (vectorizable_operation): Convert
8033         POINTER_PLUS_EXPR over to PLUS_EXPR.
8034
8035 2007-06-25  Chao-ying Fu  <fu@mips.com>
8036
8037         * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
8038         UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
8039         Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
8040         Document GET_MODE_IBIT, and GET_MODE_FBIT.
8041
8042         * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
8043         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
8044         (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
8045         SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
8046         SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
8047         ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
8048         ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
8049         SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
8050         ALL_FIXED_POINT_MODE_P): New define.
8051         (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
8052         MODE_UACCUM.
8053         (GET_MODE_IBIT, GET_MODE_FBIT): New define.
8054
8055         * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
8056         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
8057         MODE_VECTOR_UACCUM): New mode classes.
8058
8059         * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
8060         UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
8061         Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
8062         USA, UDA, and UTA.
8063
8064         * genmodes.c (struct mode_data): Add ibit and fbit fields.
8065         (blank_mode): Initialize ibit and fbit.
8066         (adj_ibit, adj_fbit): New to adjust ibit and fbit.
8067         (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
8068         MODE_UACCUM.
8069         (new_adjust): Change required_class to required_class_from and
8070         required_class_to for testing within a range.
8071         (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
8072         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
8073         MODE_VECTOR_UACCUM.
8074         (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
8075         (make_fixed_point_mode): New.
8076         (_ADD_ADJUST): Change C to C1 and C2.
8077         (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
8078         use a range for machine classes.
8079         (ADJUST_IBIT, ADJUST_FBIT): New.
8080         (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
8081         CONST_MODE_FBIT.
8082         (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
8083         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
8084         Emit adjustment for ibit and fbit.
8085         (emit_mode_ibit, emit_mode_fbit): New.
8086         (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
8087
8088 2007-06-25  Nathan Froyd  <froydnj@codesourcery.com>
8089
8090         * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
8091         as the source of the set.
8092
8093 2007-06-25  Roman Zippel <zippel@linux-m68k.org>
8094
8095         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
8096         FP_REGNO_P): Use IN_RANGE.
8097         (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
8098         (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
8099         (DATA_REG_P): Use DATA_REGNO_P.
8100         (FP_REG_P): Use FP_REGNO_P.
8101         (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
8102         * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
8103         REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
8104
8105 2007-06-24  Jan Hubicka  <jh@suse.cz>
8106
8107         PR middle-end/30563
8108         * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
8109
8110 2007-06-24  Sebastian Pop  <sebpop@gmail.com>
8111
8112         PR middle-end/32461
8113         * fold-const.c (fold_binary): Strip nops of operand 0
8114         of BIT_NOT_EXPR before calling operand_equal_p.
8115         * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
8116         * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
8117
8118 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
8119
8120         * doc/extend.texi: Document that dllimport and dllexport imply
8121         default visibility.
8122         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
8123         imported or exported declaration, including type declarations.
8124         * c-common.c (handle_visibility_attribute): Check for conflicts
8125         with dllimport/dllexport.
8126         (c_determine_visibility): Handle dllimport/dllexport as an
8127         explicit visibility atttribute.
8128
8129 2007-06-23  Richard Guenther  <rguenther@suse.de>
8130
8131         PR tree-optimization/16876
8132         PR middle-end/29478
8133         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
8134         for CALL_EXPRs.
8135         * tree-inline.c (initialize_inlined_parameters): Do not call
8136         lang_hooks.tree_inlining.convert_parm_for_inlining.
8137         * cgraphbuild.c (initialize_inline_failed): Set inline failed
8138         reason for mismatched types.
8139         * gimplify.c (gimplify_call_expr): Verify the call expression
8140         arguments match the called function type signature.  Otherwise
8141         mark the call expression to be not considered for inlining
8142         using CALL_CANNOT_INLINE_P flag.
8143         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
8144         edges call expression.
8145         (cgraph_decide_inlining_of_small_function): Likewise.
8146         (cgraph_decide_inlining): Likewise.
8147         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
8148         Remove define.
8149         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
8150         * c-typeck.c (c_convert_parm_for_inlining): Remove.
8151         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
8152         Remove declaration.
8153         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
8154         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
8155         Remove.
8156         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
8157         convert_parm_for_inlining member.
8158
8159 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
8160
8161         PR target/31152
8162         * arm.md (negscc): Match the correct operand for optimized LT0 test.
8163         Remove optimization for GT.
8164
8165 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
8166
8167         PR middle-end/32437
8168         * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
8169         is a PARALLEL.
8170         (prescan_insns_for_dce): Add extra parameter.
8171         
8172 2007-06-23  Jan Hubicka  <jh@suse.cz>
8173
8174         PR middle-end/31541
8175         * gimplify.c (mark_addressable): New function.
8176         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
8177
8178 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
8179
8180         PR middle-end/32374
8181         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
8182
8183 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
8184
8185         PR target/32413
8186         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
8187         moves between MMX/SSE registers to at least 8 units to prevent
8188         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
8189
8190 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
8191
8192         * config/i386/i386.c (override_options): Correct x86_sahf
8193         setting condition.
8194
8195 2007-06-21  David Daney  <ddaney@avtrex.com>
8196
8197         PR target/32406
8198         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
8199         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
8200         (exception_receiver): Renamed to ...
8201         (nonlocal_goto_receiver): ... this.
8202
8203 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
8204
8205         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
8206         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
8207         partial register accesses.
8208
8209 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
8210
8211         * fold-const.c (debug_fold_checksum): Move it under
8212         ENABLE_FOLD_CHECKING.
8213
8214 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
8215
8216         PR middle-end/20623
8217         * tree.h (debug_fold_checksum): Declared.
8218         * fold-const.c (build_fold_addr_expr_with_type_1): New.
8219         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
8220         build_fold_addr_expr_with_type_1.
8221         (fold_addr_expr, debug_fold_checksum): New.
8222         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
8223         (fold_unary, fold_comparison, split_address_to_core_and_offset):
8224         Use fold_addr_expr.
8225         
8226 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
8227
8228         PR tree-optimization/19590
8229         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
8230         of scev is a constant.
8231         * gcc/testsuite/gcc.dg/tree-ssa/pr19590.c: New.
8232
8233 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
8234
8235         * df-problems.c (df_note_bb_compute): Made computation of live
8236         info consistent with df_lr.
8237
8238 2007-06-21  Richard Guenther  <rguenther@suse.de>
8239
8240         PR tree-optimization/32453
8241         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
8242         for pointer anti-range.
8243
8244 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
8245
8246         * config/i386/i386.c (processor_target_table): Increase maximum
8247         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
8248         default 64bit.
8249
8250         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
8251         byte alignment if > 8 byte alignment is preferred.
8252         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
8253
8254 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
8255
8256         PR tree-optimization/31866
8257         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
8258         if ASM_EXPR's input is not a SSA_NAME.
8259
8260         PR middle-end/32362
8261         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
8262         but decl is a global var, instead return decl.
8263         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
8264         even for is_global_var decls, if they are private in some outer
8265         context.
8266
8267 2007-06-21  Richard Guenther  <rguenther@suse.de>
8268
8269         PR tree-optimization/32451
8270         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
8271
8272 2007-06-21  Christian Bruel  <christian.bruel@st.com>
8273
8274         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
8275         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
8276         (push_regs): Changed saving order or banked registers.
8277         (sh_expand_epilogue): Likewise.
8278         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
8279         (FIRST_BANKED_REG): Likewise.
8280         (LAST_BANKED_REG): Likewise.
8281         * config/sh/sh.md (banked) New attribute.
8282         (in_delay_slot): Check banked attribute.
8283         
8284 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
8285
8286         PR tree-optimization/32075
8287         * tree-data-ref.c (subscript_dependence_tester_1, 
8288         analyze_miv_subscript, analyze_overlapping_iterations,
8289         add_distance_for_zero_overlaps, build_classic_dist_vector,
8290         subscript_dependence_tester_1, analyze_overlapping_iterations,
8291         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
8292         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
8293         to evolution_function_is_affine_multivariate_p.
8294
8295 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
8296
8297         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
8298
8299 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8300
8301         PR target/32335
8302         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
8303         for TARGET_A16.
8304         * config/m32c/prologue.md (epilogue_exitd_16): New.
8305         (epilogue_reit_16): New.
8306         (epilogue_exitd): Rename to epilogue_exitd_24.
8307         (epilogue_reit): Rename to epilogue_reit_24.
8308
8309 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
8310             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
8311
8312         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
8313         New counters.
8314         * haifa-sched.c (queue_to_ready): Don't requeue next insn
8315         if dbg_cnt (sched_insn) reaches the limit.
8316         (choose_ready): New parameter INSN_PTR and new return value.
8317         (schedule_block): Handle dbg_cnt (sched_insn). Handle
8318         the new return value from choose_ready.
8319         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
8320         (rest_of_handle_global_alloc): New global_alloc_at_func.
8321
8322 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
8323
8324         PR tree-optimization/25737
8325         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
8326         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
8327         * tree-flow.h (struct fieldoff): Add new field alias_set.
8328         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
8329         argument addressable_type.  Set alias_set of fieldoff.
8330         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
8331         (create_overlap_variables_for): Pass alias_set from fieldoff to
8332         create_sft.
8333         * alias.c (get_alias_set): Use alias_set from SFT if set.
8334
8335 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
8336
8337         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
8338         of a variable as an unsigned HOST_WIDE_INT integer.
8339
8340 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
8341
8342         PR rtl-optimization/32405
8343         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
8344
8345 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
8346
8347         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
8348
8349         PR middle-end/31959
8350         * builtins.c: Include diagnostic.h.
8351         (expand_builtin_expect): Make gcc_assert more permissive.
8352         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
8353
8354         PR inline-asm/32109
8355         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
8356         and !allows_mem.
8357
8358         PR middle-end/32285
8359         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
8360         if ACCUMULATE_OUTGOING_ARGS.
8361
8362 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8363
8364         * config/m68hc11/m68hc11.c: Include dataflow header file.
8365         (m68hc11_reorg): Port to dataflow.
8366
8367 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
8368
8369         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
8370         (struct df_problem.free_blocks_on_set_blocks): New field.
8371         (struct dataflow.optional_p): New field.
8372         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
8373         (df_live_set_all_dirty): New function.
8374         * df-scan.c (df_scan_alloc): Initialize optional_p.
8375         (problem_SCAN): Initialize free_blocks_on_set_blocks.
8376         * df-core.c (df_set_blocks): Removed use of
8377         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
8378         df_problem.free_blocks_on_set_blocks to determine which blocks are
8379         recycled.
8380         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
8381         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
8382         uses dataflow.optional_p to determine if problem should be
8383         deleted.
8384         (rest_of_handle_df_initialize): Only start live problem if 
8385         -02 or above.
8386         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
8387         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
8388         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
8389         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
8390         problem_NOTE):  Initialize free_blocks_on_set_blocks.
8391         (df_lr_bb_local_compute): Recompute luids if df_live problem is
8392         not active.
8393         (df_live_set_all_dirty, df_note_alloc): New function.
8394         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
8395         df_get_live_*.
8396         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
8397         * postreload.c (reload_combine): Ditto.
8398         * cse.c (cse_extended_basic_block): Ditto.
8399         * regmove.c (mark_flags_life_zones): Ditto.
8400         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
8401         erase_matching_seqs): Ditto.
8402         * bt-load.c (compute_defs_uses_and_gen): Ditto.
8403         * integrate (allocate_initial_values): Ditto.
8404         * combine.c (reg_dead_at_p): Ditto.
8405         * resource.c (mark_target_live_regs): Ditto.
8406         * sched-rgn.c (check_live_1, update_live_1): Ditto.
8407         * config/sh/sh.c (find_r0_life_regions): Ditto.
8408         * global.c (rest_of_handle_global_alloc): Only add back df_live
8409         for -O > 1.
8410         * local-alloc.c (rest_of_handle_local_alloc): Only remove
8411         df_live for -O > 1.
8412         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
8413         df_get_live_*.
8414         (if_convert): Make sure df_live is there at -O == 1.
8415         (pass_if_after_combine): Cleanup flags.
8416         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
8417         is there at -O == 1.
8418         
8419 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
8420
8421         * config/arm/arm.c (arm_get_frame_offsets): Set
8422         offsets->locals_base to avoid negative stack size.
8423         (thumb1_expand_prologue): Assert on negative stack size.
8424
8425 2007-06-19  Sebastian Pop  <sebpop@gmail.com>
8426
8427         PR tree-optimization/32367
8428         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
8429         of the chrec has no evolution in that loop.
8430         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
8431
8432 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
8433
8434         * config/xtensa/xtensa.c: Include "df.h".
8435         (xtensa_builtin_saveregs): Use adjust_address instead of
8436         change_address.
8437         (xtensa_va_start): Invoke make_tree with sizetype for
8438         expand_builtin_saveregs and then convert the result to a pointer.
8439         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
8440         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
8441         Subtract argument size from index value as integers and then use
8442         POINTER_PLUS_EXPR to add the result to the array address.
8443         
8444 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8445
8446         PR target/32335
8447         * config/m32c/m32c.c: Include dataflow header file.
8448         (m32c_emit_prologue): Adjust for prologue insn change.
8449         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
8450         once inside a PARALLEL. Assume frame size passed in operand 0
8451         includes space to save the fb register.
8452         (prologue_enter_24): Likewise.
8453         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
8454
8455 2007-06-19  David Daney  <ddaney@avtrex.com
8456
8457         PR target/32313
8458         * config/mips/mips.md (cprestore): Mark $gp as used.
8459
8460 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8461
8462         PR target/32369
8463         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
8464         (frv_ifcvt_modify_insn): Likewise.
8465
8466 2007-06-19  Richard Guenther  <rguenther@suse.de>
8467
8468         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
8469         only handle positive offsets that fit in a HOST_WIDE_INT.
8470
8471 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
8472
8473         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
8474         result of rsqrt insn for zero input argument to avoid NaN.
8475
8476 2007-06-19  Richard Guenther  <rguenther@suse.de>
8477
8478         PR middle-end/31950
8479         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
8480
8481 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
8482
8483         PR tree-optimization/32353
8484         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
8485
8486 2007-06-19  Nick Clifton  <nickc@redhat.com>
8487
8488         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
8489
8490 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
8491
8492         PR target/32389
8493         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
8494         * config/i386/i386.c (assign_386_stack_local): Assert that
8495         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
8496         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
8497         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
8498         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
8499
8500 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
8501
8502         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
8503
8504 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
8505
8506         PR rtl-optimization/32321
8507         * gcse.c (replace_store_insn): Update the note before
8508         calling emit_insn_after.
8509
8510 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
8511
8512         PR middle-end/32355
8513         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
8514         cse_main.
8515         * df-problems.c (df_note_bb_compute): Fix dumping info.
8516         
8517 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
8518
8519         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
8520         insn with emit_jump_insn.
8521
8522 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
8523
8524         PR tree-optimization/32383
8525         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
8526         * targhooks.h (default_builtin_reciprocal): Update prototype.
8527         * target.h (struct gcc_target): Update builtin_reciprocal.
8528         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
8529         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
8530         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
8531         when fndecl is in BUILT_IN_MD class.
8532         (execute_convert_to_rsqrt): Ditto.
8533
8534         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
8535         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
8536         Convert BUILT_IN_SQRTF code only  when md_fn is false.
8537
8538 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
8539
8540         * bt-load.c (move_btr_def): Fix the order of arguments
8541         to validate_replace_rtx.
8542
8543 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
8544
8545         * config/m68k/m68k-devices.def: Add 54450..54455.
8546
8547 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
8548
8549         PR rtl-optimization/32366
8550         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
8551         FLOAT_EXTEND]: Prevent non-scalar modes from entering
8552         significand_size.
8553
8554 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
8555
8556         PR middle-end/32349
8557         * modulo-sched (generate_reg_moves): Added rescan parameter and if
8558         this is true, rescan insn being modified.
8559         (sms_schedule): Added rescan parameter.
8560         (rest_of_handle_sms): Moved freeing of dominance info to before
8561         getting out of cfg_layout.
8562         
8563 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
8564
8565         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
8566         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
8567         appropriate.
8568
8569         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
8570         FL_CF_EMAC from the entry for isac.
8571
8572         * config/m68k/predicates.md (const_call_operand): Adjust comment.
8573         (const_sibcall_operand): New.
8574         (sibcall_operand): Use it.
8575         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
8576         (m68k_isas): ISAC does not imply FPU or EMAC.
8577         (override_options): Add ISA_C logic for symbolic jump & call.
8578
8579 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
8580
8581         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
8582         return mode from the builtin itself.
8583         (sparc_fold_builtin): Fix cast of zero constant.
8584
8585 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
8586
8587         * targhooks.c (default_builtin_reciprocal): New default target hook.
8588         * targhooks.h (default_builtin_reciprocal): Add prototype.
8589         * hooks.c (hook_tree_tree_bool_null): Remove hook.
8590         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
8591         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
8592         default_builtin_reciprocal.
8593
8594 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
8595
8596         PR middle-end/31723
8597         * hooks.c (hook_tree_tree_bool_null): New hook.
8598         * hooks.h (hook_tree_tree_bool_null): Add prototype.
8599         * tree-pass.h (pass_convert_to_rsqrt): Declare.
8600         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
8601         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
8602         and convert it to reciprocal a*rfunc(b).
8603         (execute_convert_to_rsqrt): New function.
8604         (gate_convert_to_rsqrt): New function.
8605         (pass_convert_to_rsqrt): New pass definition.
8606         * target.h (struct gcc_target): Add builtin_reciprocal.
8607         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
8608         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
8609         TARGET_BUILTIN_RECIPROCAL.
8610         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
8611
8612         * config/i386/i386.h (TARGET_RECIP): New define.
8613         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
8614         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
8615         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
8616         and not optimizing for size.
8617         (*rcpsf2_sse): New insn pattern.
8618         (*rsqrtsf2_sse): Ditto.
8619         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
8620         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
8621         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
8622         and not optimizing for size.
8623         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
8624         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
8625         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
8626         and not optimizing for size.
8627         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
8628         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
8629         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
8630         and not optimizing for size.
8631         (*sse_rsqrtv4sf2): Do not export.
8632         (sqrtv4sf2): Ditto.
8633         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
8634         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
8635         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
8636         and not optimizing for size.
8637         (sqrtv4sf2): Ditto.
8638         * config/i386/i386.opt (mrecip): New option.
8639         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
8640         (ix86_emit_swsqrtsf): Ditto.
8641         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
8642         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
8643         builtin definition.
8644         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
8645         ix86_expand_unop1_builtin.
8646         (ix86_emit_swdivsf): New function.
8647         (ix86_emit_swsqrtsf): Ditto.
8648         (ix86_builtin_reciprocal): New function.
8649         (TARGET_BUILTIN_RECIPROCAL): Use it.
8650         (ix86_vectorize_builtin_conversion): Rename from
8651         ix86_builtin_conversion.
8652         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
8653         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
8654         "i386 and x86_64 Options" section.
8655         (Intel 386 and AMD x86_64 Options): Document -mrecip.
8656
8657 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
8658             Zdenek Dvorak <dvorakz@suse.cz>
8659             Richard Guenther  <rguenther@suse.de>
8660             Kaz Kojima  <kkojima@gcc.gnu.org>
8661
8662         * tree-vrp.c (compare_values_warnv): Convert val2 to
8663         the type of val1.
8664         (extract_range_from_assert): Create
8665         POINTER_PLUS_EXPR for pointer types.
8666         (extract_range_from_binary_expr): Handle
8667         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
8668         for pointer types.
8669         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
8670         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
8671         POINTER_PLUS_EXPR as PLUS_EXPR.
8672         (number_of_iterations_lt_to_ne):
8673         For pointer types, use sizetype when
8674         creating MINUS_EXPR/PLUS_EXPRs.
8675         (assert_loop_rolls_lt): For pointer types, use sizetype when
8676         creating MINUS_EXPR/PLUS_EXPRs.
8677         (number_of_iterations_le): Likewise.
8678         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
8679         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
8680         like PLUS_EXPR and MINUS_EXPR.
8681         * tree-pretty-print.c (dump_generic_node): Handle
8682         POINTER_PLUS_EXPR.
8683         (op_prio): Likewise.
8684         (op_symbol_1): Likewise.
8685         * optabs.c (optab_for_tree_code): Likewise.
8686         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
8687         specially.
8688         * tree-tailcall.c (process_assignment): Mention
8689         POINTER_PLUS_EXPR in a TODO comment.
8690         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
8691         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
8692         not used with a pointer and an integer type.
8693         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
8694         increment using chrec_convert_rhs instead of chrec_convert.
8695         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
8696         PLUS_EXPR except for the right hand side's type will be
8697         sizetype.
8698         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
8699         (fold_used_pointer_cast): Kill.
8700         (pointer_offset_p): Kill.
8701         (fold_used_pointer): Kill.
8702         (pointer_used_p): Kill.
8703         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
8704         call fold_used_pointer.
8705         (instantiate_parameters_1): Convert the increment
8706         using chrec_convert_rhs instead of chrec_convert.
8707         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
8708         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
8709         instead of PLUS_EXPR.
8710         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
8711         PLUS_EXPR for pointers.
8712         (std_gimplify_va_arg_expr): Likewise.
8713         (fold_builtin_memory_op): Likewise.
8714         (fold_builtin_strstr): Likewise.
8715         (fold_builtin_strchr): Likewise.
8716         (fold_builtin_strrchr): Likewise.
8717         (fold_builtin_strpbrk): Likewise.
8718         (expand_builtin_memory_chk): Likewise.
8719         (fold_builtin_memory_chk): Likewise.
8720         (std_expand_builtin_va_start): Use
8721         sizetype for the call to make_tree and then convert
8722         to the pointer type.
8723         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
8724         instead of PLUS_EXPR for adding to a pointer.
8725         (std_gimplify_va_arg_expr): Use fold_build2 for
8726         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
8727         the operands to sizetype first and then cast the BIT_AND_EXPR
8728         back to the pointer type.
8729         * fold-const.c (build_range_check): Handle pointer types
8730         specially.
8731         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
8732         of PLUS_EXPR's. Make sure the offset is converted to
8733         sizetype.
8734         (try_move_mult_to_index): Strip the NOPs from the offset.
8735         Remove code argument and replace all uses with PLUS_EXPR.
8736         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
8737         specially. Don't use a pointer type for MINUS_EXPR.
8738         (fold_unary): Handle for (T1)(X op Y),
8739         only p+ as that is the only as that can be handled for
8740         binary operators now.
8741         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
8742         POINTER_PLUS_EXPR.
8743         <case PLUS_EXPR>: Add folding of PTR+INT into
8744         PTR p+ INT.
8745         Don't call try_move_mult_to_index.
8746         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
8747         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
8748         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
8749         Don't call try_move_mult_to_index.
8750         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
8751         (tree_expr_nonzero_p): Likewise.
8752         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
8753         of PLUS_EXPR for the complex expression folding.
8754         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
8755         first chrec is a pointer type, then the second should
8756         be sizetype and not the first's type.
8757         For POINTER_PLUS_EXPR, use a different right hand side type.
8758         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
8759         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
8760         different right hand side type.
8761         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
8762         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
8763         instead of PLUS_EXPR.
8764         When either operand is zero, convert the other operand.
8765         (chrec_apply): Use chrec_convert_rhs
8766         on the argument x instead of chrec_convert.
8767         (reset_evolution_in_loop): For pointer types, the new_evol
8768         should be sizetype.
8769         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
8770         different right hand side type.
8771         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
8772         (chrec_convert_rhs): New function.
8773         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
8774         different right hand side type.
8775         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
8776         * tree-chrec.h (chrec_convert_rhs): New prototype.
8777         (build_polynomial_chrec): For pointer types, the right hand
8778         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
8779         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
8780         Remove subtraction case as it is always addition now.
8781         Make sure the offset is converted to sizetype.
8782         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
8783         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
8784         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
8785         PLUS_EXPR in pointer type.
8786         Handle POINTER_PLUS_EXPR.
8787         (tree_to_aff_combination): Likewise.
8788         (force_expr_to_var_cost): Likewise.
8789         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
8790         instead of PLUS_EXPR for pointers.
8791         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
8792         instead of PLUS_EXPR of pointer types.
8793         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
8794         as PLUS_EXPR.
8795         (check_va_list_escapes): Likewise.
8796         (check_all_va_list_escapes): Likewise.
8797         * dwarf2out.c (loc_descriptor_from_tree_1):
8798         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
8799         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
8800         (string_constant): Likewise.
8801         * tree-ssa-address.c (tree_mem_ref_addr): When adding
8802         the offset to the base, use POINTER_PLUS_EXPR.
8803         (add_to_parts): Convert the index to sizetype.
8804         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
8805         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
8806         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
8807         Offset only holds something for PLUS_EXPR.
8808         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
8809         a PLUS_EXPR.
8810         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
8811         and not PLUS_EXPR.
8812         (analyze_accesses_for_modify_stmt): Likewise.
8813         Remove comment about the type being integral type as it is
8814         wrong now.
8815         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
8816         PLUS_EXPR.
8817         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
8818         and not PLUS_EXPR.
8819         Correct the type which the artimentic is done in (is now
8820         sizetype).
8821         Reindent one loop.
8822         * tree-data-ref.c (split_constant_offset): Handle
8823         POINTER_PLUS_EXPR
8824         * tree-affine.c (tree_to_aff_combination): Likewise.
8825         * c-typeck.c (build_unary_op): For pointers create the increment
8826         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
8827         for pointers.
8828         * gimplify.c (gimplify_self_mod_expr): Create a
8829         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
8830         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
8831         * tree.def (POINTER_PLUS_EXPR): New tree code.
8832         * tree-predcom.c (ref_at_iteration): If we have a pointer
8833         type do the multiplication in sizetype.
8834         * tree-mudflap.c (mf_xform_derefs_1): Create a
8835         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
8836         * tree-ssa-forwprop.c 
8837         (forward_propagate_addr_into_variable_array_index):
8838         Don't expect there to be a cast for the index as that
8839         does not exist anymore.
8840         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
8841         instead of PLUS_EXPR.
8842         Don't check for the first operand of the POINTER_PLUS_EXPR
8843         was the index as it cannot be.
8844         Call forward_propagate_addr_into_variable_array_index with
8845         the SSA_NAME instead of the statement.
8846         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
8847         (compare_constant): Likewise.
8848         (copy_constant): Likewise.
8849         (compute_reloc_for_constant): Likewise.
8850         (output_addressed_constants): Likewise.
8851         (initializer_constant_valid_p): Likewise.
8852         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
8853         Convert the MIN/MAX of the inner type to the outer
8854         type before comparing them.
8855         * tree-ssa-loop-prefetch.c (idx_analyze_ref):  Handle
8856         POINTER_PLUS_EXPR instead of PLUS_EXPR.
8857         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
8858         of PLUS_EXPR for pointers.
8859         * tree-inline.c (estimate_num_insns_1): Handle
8860         POINTER_PLUS_EXPR.
8861         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
8862         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
8863         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
8864         instead of PLUS_EXPR for the pointer increment statement.
8865         (vect_update_ivs_after_vectorizer): For pointer types, create
8866         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
8867         MULT_EXPR in sizetype.
8868         (vect_gen_niters_for_prolog_loop): Add a cast when creating
8869         byte_misalign.
8870         * tree-object-size.c (plus_expr_object_size): Handle
8871         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
8872         code which is trying to figure out which side is a pointer and 
8873         is the index.
8874         (check_for_plus_in_loops_1): Likewise.
8875         (check_for_plus_in_loops): Likewise.
8876         * c-common.c (pointer_int_sum): Create a
8877         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
8878         * tree-ssa-structalias.c (handle_ptr_arith): Handle
8879         only POINTER_PLUS_EXPR.  Removing all the extra
8880         code which is trying to figure out which side is a pointer and 
8881         is the index.
8882         * tree-cfg.c (verify_expr): Add extra checking for pointers and
8883         PLUS_EXPR and MINUS_EXPR.
8884         Also add checking to make sure the operands of POINTER_PLUS_EXPR
8885         are correct.
8886         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
8887         with make_tree, instead of a pointer type.
8888         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
8889         for pointers instead of PLUS_EXPR.
8890         (s390_gimplify_va_arg): Likewise.
8891         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
8892         instead of PLUS_EXPR when doing addition on pointer
8893         types.  Use sizetype for the second operand.
8894         (spu_gimplify_va_arg_expr): Likewise.
8895         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
8896         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
8897         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
8898         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
8899         for the pointer addition and also use size_int/sizetype
8900         for the offset.
8901         (ix86_gimplify_va_arg): Likewise.
8902         Perform BIT_AND_EXPR on sizetype arguments.
8903         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
8904         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
8905         for the pointer additions and also use size_int for the offsets.
8906         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
8907         additions and also use size_int for the offsets.  Perform
8908         BIT_AND_EXPR on sizetype arguments.
8909         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
8910         POINTER_PLUS_EXPR for pointers and create the
8911         BIT_AND_EXPR in sizetype.
8912         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
8913         instead of PLUS_EXPR for pointer addition.
8914         (rs6000_va_start): Likewise.
8915         Also use sizetype for the offset.
8916         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
8917         as PLUS_EXPR/MINUS_EXPR.
8918         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
8919         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
8920         Don't use BIT_AND_EXPR on a pointer type, convert the
8921         expression to sizetype first.
8922         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
8923         for pointers.
8924         (mips_gimplify_va_arg_expr): Likewise.
8925         Don't create BIT_AND_EXPR in a pointer type.
8926
8927 2007-06-15  Eric Christopher  <echristo@apple.com>
8928
8929         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
8930         (x86_64-*-darwin*): Ditto.
8931         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
8932         for above.
8933
8934 2007-06-15  Matthew Wilcox <matthew@wil.cx>
8935
8936         * doc/extend.texi: Document behavior of __attribute__((aligned))
8937         on typedefs.
8938
8939 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
8940
8941         * rtlanal.c (note_stores): Improve documentation.
8942
8943 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
8944
8945         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
8946         LOCAL_LABEL_PREFIX): Delete.
8947         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
8948         (bfin_internal_label): Delete.
8949
8950 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
8951
8952         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
8953         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
8954         otherwise define to LIBGCC2_TF_CEXT.
8955         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
8956         (LIBGCC_TF_CEXT): Ditto.
8957         (TF_SIZE): Ditto.
8958
8959 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
8960
8961         PR rtl-optimization/32339
8962         * df-scan.c (df_uses_record): Don't modify flags but just add to
8963         it for df_ref_record.
8964
8965 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8966
8967         * tree-mudflap.c: Fix whitespace issues.
8968
8969 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
8970
8971         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
8972
8973 2007-06-14  Eric Christopher  <echristo@apple.com>
8974
8975         * config/i386/sse.md (movdi_to_sse): Rewrite body.
8976         (movv4sf): Use gcc_unreachable instead of abort.
8977
8978 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
8979
8980         PR target/32268
8981         * config/i386/sfp-machine.h (CMPtype): New define.
8982         (mach stubs): Use CMPtype instead of int as a return type.
8983
8984 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
8985
8986         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
8987         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
8988         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
8989         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
8990         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
8991         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
8992         config/soft-fp/soft-fp.h: Update from glibc CVS.
8993
8994 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
8995
8996         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
8997
8998 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8999
9000         PR target/32341
9001         * config/v850/v850.c: Include dataflow header file.
9002         (substitute_ep_register): Fix typo.
9003
9004 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
9005
9006         * configure.ac: Fix earlier checkin.
9007         * configure: Regenerated.
9008
9009 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
9010
9011         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
9012         * aclocal.m4: Regenerate.
9013         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
9014         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
9015         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
9016         * configure: Regenerate.
9017         * Makefile.in (LOOSE_WARN): Subst loose_warn.
9018
9019         * Makefile.in (quickstrap): Build libgcc too.
9020
9021 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
9022
9023         * configure.ac: Add --enable-checking=df.  Explicitly mention that
9024         the variables are initialized as for "release".
9025         * df-core.c: Use it.
9026         * configure: Regenerate.
9027         * config.in: Regenerate.
9028
9029 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
9030
9031         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
9032         validate_replace_rtx instead of replace_rtx.
9033         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
9034
9035 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
9036
9037         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
9038         (DWARF2_UNWIND_INFO): Override default if configured with
9039         SJLJ EH disabled.
9040         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
9041         (ENDFILE_SPEC): Add crtend.o.
9042         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
9043         (ENDFILE_SPEC): Add crtend.o.
9044         (TARGET_USE_JCR_SECTION): Define.
9045         (MD_UNWIND_SUPPORT): Define for 32-bit target.
9046
9047         * config/i386/cygming-crtbegin.c: New file.
9048         * config/i386/cygming-crtend.c: New file.
9049
9050 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
9051
9052         * config/i386/w32-unwind.h: New file.
9053
9054 2007-06-13  Eric Christopher  <echristo@apple.com>
9055
9056         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
9057         the user set a value below STACK_BOUNDARY.
9058
9059 2007-06-13  Thiemo Seufer  <ths@networkno.de>
9060
9061         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
9062         imply -lpthread for -pthread.
9063
9064 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
9065
9066         * basic-block.h: Remove the prototype for
9067         free_basic_block_vars.
9068         * cfglayout.h: Remove the prototype for
9069         insn_locators_initialize.
9070         * tree.h: Remove the prototype for emit_line_note.
9071
9072         * tree-ssa-pre.c (mergephitemp): Remove.
9073         (init_pre): Don't use mergephitemp.
9074
9075 2007-06-13  Eric Christopher  <echristo@apple.com>
9076
9077         * config/i386/i386.c (override_options): If we've specified
9078         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
9079
9080 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
9081
9082         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
9083         is defined.
9084
9085 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
9086
9087         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
9088         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
9089         (eh_store_handler): New pattern.
9090         (eh_return): Emit it instead of a plain move.
9091
9092 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
9093
9094         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
9095         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
9096         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
9097         def_builtin_const.
9098
9099 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
9100
9101         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
9102         (find_next_insn_start, find_load): New functions.
9103         (bfin_reorg): Use them to deal with the fact that parallel insns are
9104         no longer represented as a SEQUENCE.
9105
9106 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
9107
9108         * config/sparc/sparc.c (sparc_override_options): Initialize
9109         fpu mask correctly.
9110
9111 2007-06-13  Dave Korn  <dave.korn@artimi.com>
9112
9113         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
9114         df_get_live_out.
9115
9116 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
9117
9118         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
9119         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
9120         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
9121         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
9122         tree-vect-transform.c: Fix comment typos.  Follow spelling
9123         conventions.
9124
9125 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
9126
9127        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
9128        to the exit block use set.
9129        (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
9130        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
9131        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
9132
9133 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
9134
9135         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
9136         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
9137         to indicate an error.
9138         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters):
9139         New functions.
9140         (dbg_cnt_process_opt): Print an error on a bad argument.
9141         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
9142         * common.opt (-fdbg-cnt-list): New.
9143         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
9144
9145 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
9146
9147         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
9148         flag on ref-all pointers.
9149
9150 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9151
9152         PR middle-end/31579
9153         * expr.c (expand_expr_addr_expr_1): Call expand_expr
9154         for the offset with the modifier as EXPAND_INITIALIZER
9155         if the modifier is EXPAND_INITIALIZER.
9156         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
9157         a register if we had an overflow.
9158
9159 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9160
9161         * real.c (real_isfinite): New.
9162         (real_sqrt): Use it.
9163         * real.h (real_isfinite): New.
9164         * builtins.c: Use it.
9165
9166 2007-06-12  Ian Lance Taylor  <iant@google.com>
9167             Daniel Berlin  <dberlin@dberlin.org>
9168
9169         PR libstdc++/29286
9170         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
9171         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
9172         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
9173         (DECL_NO_TBAA_P): Define.
9174         (struct tree_decl_common): Add no_tbaa_flag field.
9175         * tree-ssa-structalias.c (struct variable_info): Add
9176         no_tbaa_pruning field.
9177         (new_var_info): Initialize no_tbaa_pruning field.
9178         (unify_nodes): Copy no_tbaa_pruning field.
9179         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
9180         (dump_solution_for_var): Print no_tbaa_pruning flag.
9181         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
9182         callers.
9183         (compute_tbaa_pruning): New static function.
9184         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
9185         Call compute_tbaa_pruning.
9186         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
9187         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
9188         * gimple-low.c (lower_stmt): Likewise.
9189         * tree-gimple.c (is_gimple_stmt): Likewise.
9190         * tree-ssa-operands.c (get_expr_operands): Likewise.
9191         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
9192         * tree-inline.c (estimate_num_insns_1): Likewise.
9193         (copy_result_decl_to_var): Likewise.
9194         * expr.c (expand_expr_real_1): Likewise.
9195         * tree-pretty-print.c (dump_generic_node): Likewise.
9196         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
9197         * omp-low.c (omp_copy_decl_2): Likewise.
9198         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
9199         * doc/c-tree.texi (Expression trees): Document
9200         CHANGE_DYNAMIC_TYPE_EXPR.
9201
9202 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9203
9204         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
9205         with !HONOR_NANS and !HONOR_INFINITIES.
9206         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
9207
9208 2007-06-12  Tristan Gingold  <gingold@adacore.com>
9209
9210         * gcov.c: Comments updated.
9211         (source_info): Add file_time field.
9212         (source_index): New variable.
9213         (mutiple_files): New variable.
9214         (generate_results): New function extracted from process_file.
9215         (process_file): Save and restore chain of functions, generate
9216         results and free structures only if not merging results.
9217         (release_structures): File names are now freed in create_file_names
9218         (create_file_names): Free previous file names.
9219         (find_source): File date is now read here and modifications in
9220         source files is checked here.
9221         (read_graph_file): Only reverse order of functions for the current
9222         object file.
9223         (make_gcov_file_name): Do not generate long names if input_name is
9224         NULL.
9225         (output_lines): If merging results do not display graph, data and
9226         runs informations.
9227         Checking source file modification is done in find_source.
9228
9229         * doc/gcov.texi: Append an s to sourcefile.
9230
9231 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
9232
9233         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
9234         (forced_nop): New pattern.
9235         * config/bfin/bfin.c: Include "df.h".
9236         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
9237         (bfin_discover_loop): Use df_get_live_in instead of
9238         global_live_at_start.
9239         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
9240         df_analyze when done.
9241         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
9242         the insns.  Use QImode for the final insn in a bundle.  Call
9243         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
9244         gen_nop.
9245         (reorder_var_tracking_notes): New function.
9246         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
9247         update_life_info.  Call df_analyze after scheduling and bundle
9248         generation.  Call reorder_var_tracking_notes if generating these
9249         notes.  Call df_finish_pass at the end.
9250
9251 2007-06-12  Dirk Mueller  <dmueller@suse.de>
9252
9253         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
9254         a comparison, not an assignment.
9255
9256 2007-06-12  Olivier Hainque  <hainque@adacore.com>
9257
9258         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
9259         Request walking the subtrees only, leaving the current is_lhs/val_only
9260         untouched.
9261         (convert_non_local_reference): Likewise.
9262
9263 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
9264
9265         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
9266
9267 2007-06-12  Richard Guenther  <rguenther@suse.de>
9268
9269         PR tree-optimization/15353
9270         PR tree-optimization/31657
9271         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
9272         * timevar.def: Add TV_TREE_IFCOMBINE.
9273         * tree-pass.h (pass_tree_ifcombine): Declare.
9274         * tree-ssa-ifcombine.c: New file.
9275         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
9276         * tree-flow.h (blocks_in_phiopt_order): Declare.
9277         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
9278         (tree-ssa-ifcombine.o): New dependencies.
9279
9280 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
9281
9282         PR rtl-optimization/32293
9283         * combine.c (simplify_if_then_else): Truncate return from
9284         nonzero_bits() to correct mode.
9285
9286 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
9287
9288         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
9289         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
9290
9291 2007-06-11  Diego Novillo  <dnovillo@google.com>
9292
9293         * Makefile.in (reload1.o-warn): Remove.
9294
9295 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
9296
9297         * combine.c (subst): Use reg_overlap_mentioned_p
9298         instead of comparing register numbers directly.
9299
9300 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
9301
9302         * reload1.c (mark_home_live_1): Use the mode parameter.
9303
9304 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
9305
9306         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
9307         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
9308         word "deferred".
9309         * df-core.c: Ditto.
9310
9311 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
9312
9313         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
9314
9315 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
9316
9317         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
9318         from integer registers.
9319         (FP mode splitters): Handle TFmode.
9320
9321 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
9322
9323         * tree-ssa-structalias.c (find_what_p_points_to): Return false
9324         for ref-all pointers that point-to anything.
9325
9326 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
9327
9328         * config/arm/arm.c (arm_output_dwarf_dtprel,
9329         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
9330
9331 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
9332
9333         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
9334         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
9335         to memory moves.
9336
9337 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
9338
9339         * tree.c (signed_or_unsigned_type_for): New.
9340         (unsigned_type_for): Use signed_or_unsigned_type_for.
9341         (signed_type_for): Use signed_or_unsigned_type_for.
9342         * tree.h (signed_or_unsigned_type_for): New.
9343         (get_signed_or_unsigned_type): Remove.
9344         * fold-const.c (fold_negate_expr): Use signed_type_for instead of
9345         lang_hooks.types.signed_type
9346         (size_diffop): Likewise.
9347         (all_ones_mask_p): Likewise.
9348         (build_range_check): Likewise.
9349         (fold_cond_expr_with_comparison): Likewise.
9350         (fold_cond_expr_with_comparison): Likewise.
9351         (unextend): Likewise.
9352         (extract_muldiv_1): Likewise.
9353         (fold_single_bit_test_into_sign_test): Likewise.
9354         (fold_binary): Likewise.
9355         (fold_ternary): Likewise.
9356         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
9357         instead of get_signed_or_unsigned_type.
9358         * c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
9359         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
9360         * expr.c (signed_or_unsigned_type_for): Use
9361         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
9362         * langhooks.c (get_signed_or_unsigned_type): Remove.
9363         (lhd_signed_or_unsigned_type): Remove.
9364         * langhooks.h (lang_hooks_for_types): Remove signed_type and
9365         signed_or_unsigned_type.
9366         (lhd_signed_or_unsigned_type): Remove.
9367         * expmed.c (make_tree): Use signed_type_for instead of
9368         lang_hooks.types.signed_type.
9369         * c-common.c (same_scalar_type_ignoring_signedness): Use
9370         c_common_signed_type instead of lang_hooks.types.signed_type.
9371         (c_common_unsigned_type): New.
9372         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
9373         (shorten_compare): Use c_common_unsigned_type instead of
9374         c_common_signed_or_unsigned_type.
9375         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
9376         unsigned_type_for.
9377         * convert.c (convert_to_integer): Use signed_type_for instead of
9378         lang_hooks.types.signed_type.
9379         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
9380         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
9381         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
9382         * c-format.c (check_format_types): Use c_common_unsigned_type
9383         instead of unsigned_type_for.
9384         * c-decl.c (groakdeclarator): Likewise.
9385         * c-typeck.c (convert_for_assignment): Likewise.
9386         * c-common.h (c_common_unsigned_type): New.
9387
9388 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
9389
9390         PR target/32280
9391         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
9392         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
9393
9394 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
9395
9396         PR middle-end/32279
9397         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
9398         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
9399
9400 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
9401             Sebastian Pop  <sebpop@gmail.com>
9402
9403         * lambda-code.c (remove_iv): New.
9404         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
9405
9406 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
9407
9408         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
9409         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
9410         * tree-ssa-loop-prefetch.c: Include optabs.h.
9411         (FENCE_FOLLOWING_MOVNT): New macro.
9412         (struct mem_ref): Add independent_p and storent_p fields.
9413         (record_ref): Initalize the new fields.
9414         (gather_memory_references_ref): Return true if the reference
9415         could be analysed.
9416         (gather_memory_references): Check whether all memory accesses
9417         in loop were recorded.
9418         (should_issue_prefetch_p): Return false for nontemporal stores.
9419         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
9420         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
9421         (determine_loop_nest_reuse): Detect independent memory references.
9422         (loop_prefetch_arrays): Call mark_nontemporal_stores.
9423         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
9424         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
9425         * config/i386/i386.h (x86_mfence): Declare.
9426         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
9427         * config/i386/i386.c (x86_mfence): New variable.
9428         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
9429
9430         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
9431         * optabs.c (init_optabs): Initialize storent_optab.
9432         * optabs.h (enum optab_index): Add OTI_storent.
9433         (storent_optab): Declare.
9434         * genopinit.c (optabs): Add initialization for storent_optab.
9435         * tree.h (MOVE_NONTEMPORAL): New macro.
9436         * expr.c (expand_assignment, store_expr, store_constructor_field,
9437         store_constructor, store_field, expand_expr_real_1): Propagate
9438         nontemporality of the expanded store.
9439         (emit_storent_insn): New function.
9440         * expr.h (expand_assignment, store_expr): Declaration changed.
9441         * function.c (assign_parm_setup_reg): Pass false as nontemporality
9442         to expand_assignment.
9443         * stmt.c (expand_asm_expr): Ditto.
9444         * calls.c (initialize_argument_information): Pass false as
9445         nontemporality to store_expr.
9446         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
9447         storentsi): New.
9448
9449 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
9450
9451         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
9452         parameter, use it.
9453         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
9454
9455 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
9456
9457         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
9458         and allow DECL_P here.
9459
9460 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
9461
9462         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
9463         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
9464         track of the size of the expression.
9465         * cfghooks.c (merge_blocks): Remove block from loops structure only
9466         after call of the merge_blocks hook.
9467
9468 2007-06-09  Tom Tromey  <tromey@redhat.com>
9469
9470         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
9471         (deprecated_state): Removed.
9472         (start_decl): Update.
9473         (enum deprecated_states): Moved earlier.
9474         (groktypename): Update.
9475         (push_parm_decl): Likewise.
9476         (grokfield): Likewise.
9477         (start_function): Likewise.
9478
9479 2007-06-09  Ian Lance Taylor  <iant@google.com>
9480
9481         PR tree-optimization/32169
9482         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
9483         CONVERT_EXPR, check whether min and max both converted to an
9484         overflow infinity representation.
9485
9486 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
9487
9488         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
9489         not inserted on the edge.
9490
9491 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
9492
9493         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
9494         instructions if they are supported.
9495         (__divsi3, __umodsi3, __modsi3): Likewise.
9496         (__ashldi3, __ashrdi3, __lshrdi3): New.
9497         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
9498
9499 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
9500             Tony Linthicum <tony.linthicum@amd.com>
9501
9502         * doc/invoke.texi: Add fvect-cost-model flag.
9503         * common.opt (fvect-cost-model): New flag.
9504         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
9505         cost fields in stmt_vec_info struct for STMT.
9506         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
9507         fields in stmt_vec_info struct and access functions for the same.
9508         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
9509         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
9510         load, store and vector to scalar operation.
9511         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
9512         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
9513         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
9514         (TARG_VEC_STORE_COST): Define cost of vector store.
9515         (vect_estimate_min_profitable_iters): Define new function.
9516         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
9517         check to evaluate if loop iterations are less than minimum profitable
9518         iterations determined by cost model or minimum vect loop bound defined
9519         by user, whichever is more conservative.
9520         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
9521         run-time check to evaluate if loop iterations are less than minimum
9522         profitable iterations determined by cost model or minimum vect loop
9523         bound defined by user, whichever is more conservative.
9524         (vect_estimate_min_profitable_iterations): New function to estimate
9525         mimimimum iterartions required for vector version of loop to be
9526         profitable over scalar version.
9527         (vect_model_reduction_cost): New function.
9528         (vect_model_induction_cost): New function.
9529         (vect_model_simple_cost): New function.
9530         (vect_cost_strided_group_size): New function.
9531         (vect_model_store_cost): New function.
9532         (vect_model_load_cost): New function.
9533         (vectorizable_reduction): Call vect_model_reduction_cost during
9534         analysis phase.
9535         (vectorizable_induction): Call vect_model_induction_cost during
9536         analysis phase.
9537         (vectorizable_load): Call vect_model_load_cost during analysis phase.
9538         (vectorizable_store): Call vect_model_store_cost during analysis phase.
9539         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
9540         vectorizable_promotion, vectorizable_demotion): Call
9541         vect_model_simple_cost during analysis phase.
9542
9543 2007-06-08  Simon Baldwin  <simonb@google.com>
9544
9545         * reg-stack.c (get_true_reg): Readability change.  Moved default case
9546         label into direct switch statement scope.
9547
9548 2007-06-08  Simon Baldwin  <simonb@google.com>
9549
9550         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
9551         in gcc_assert() with '==' comparison.
9552
9553 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
9554
9555         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
9556         TARGET_ABM handling of x86_popcnt variable.
9557
9558 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
9559
9560         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
9561         __builtin_copysignq and __builtin_infq built-in functions.
9562
9563 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
9564
9565         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
9566         SSE4.2 section.  Correct built-in function names in SSE4A section.
9567
9568 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
9569
9570         PR tree-optimization/32243
9571         * tree-vect-transform.c (vectorizable_type_promotion): Move check
9572         for ncopies after ratio check between nunits_out and nunits_in.
9573         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
9574
9575 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
9576
9577         PR tree-optimization/32224
9578         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
9579         vectorization upon a non GIMPLE_MODIFY_STMT.
9580
9581 2007-06-08  Christian Bruel  <christian.bruel@st.com>
9582
9583         PR target/29953
9584         * config/sh/sh.md (doloop_end): New pattern and splitter.
9585         * loop-iv.c (simple_rhs_p): Check for hardware registers.
9586
9587 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
9588
9589         PR middle-end/32209
9590         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
9591         functions.
9592         (verify_dominators): Do not change dominance tree.
9593
9594 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
9595
9596         * config/sh/constraints.md: New file.
9597         * config/sh/sh.c: Include tm-constrs.h.
9598         (reg_class_from_letter): Remove.
9599         (prepare_cbranch_operands): Use satisfies_constraint_*
9600         function instead of macro.
9601         (andcosts, broken_move, sh_secondary_reload): Likewise.
9602         * config/sh/predicates.md (trapping_target_operand): Likewise.
9603         (and_operand, arith_operand, arith_reg_or_0_operand,
9604         cmp_operand, logical_operand, target_operand,
9605         ua_address_operand, ua_offset, xor_operand): Likewise.
9606         * config/sh/sh.md: Include constraints.md.
9607         (*movsicc_t_false): Use satisfies_constraint_* function
9608         instead of macro.
9609         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
9610         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
9611         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
9612         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
9613         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
9614         (REG_CLASS_FROM_CONSTRAINT): Remove.
9615         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
9616         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
9617         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
9618         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
9619         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
9620         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
9621         function instead of macro.
9622         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
9623         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
9624         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
9625         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
9626         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
9627         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
9628         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
9629         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
9630         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
9631         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
9632         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
9633         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
9634         EXTRA_CONSTRAINT_STR): Likewise.
9635         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
9636
9637 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
9638
9639         * config/i386/darwin.h (STACK_BOUNDARY): Define.
9640
9641 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
9642
9643         PR c++/30759
9644         * c-common.h (flag_cpp0x): Replaced by...
9645         (cxx_dialect): ... this new variable specifying the C++ dialect that
9646         is used.
9647         * c-common.c (flag_cpp0x): Removed.
9648         (cxx_dialect): Defined.
9649         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
9650         cxx_dialect.
9651         * c-opts.c (c_common_post_options): Likewise.
9652         (set_std_cxx98): Set cxx_dialect to cxx98.
9653         (set_std_cxx0x): Set cxx_dialect to cxx0x.
9654
9655 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
9656             Hui-May Chang <hm.chang@apple.com>
9657
9658         * doc/invoke.texi (Darwin Options): Update documentation for
9659         -mmacosx-version-min.
9660         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
9661         * config/darwin-driver.c: New file.
9662         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
9663         * config/t-darwin (darwin-driver.o): New rule.
9664
9665         * config/darwin-c.c (version_as_macro): Ignore low digit.
9666
9667 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
9668
9669         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
9670         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
9671         (CSGNMODE): New mode macro.
9672         (CSGNVMODE): New mode attribute.
9673         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
9674         expander using CSGNMODE mode macro.  Handle TFmode.
9675         (copysign<mode>3_const): Rename from copysignsf3_const and
9676         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
9677         Handle TFmode.
9678         (copysign<mode>3_var): Rename from copysignsf3_var and
9679         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
9680         Handle TFmode.
9681         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
9682         mode macro.  Handle TFmode.
9683         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
9684         (iortf3, *iortf3): Ditto.
9685         (xortf3, *xortf3): Ditto.
9686         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
9687         TFmode and TImode masks.
9688         (ix86_expand_copysign): Expand TFmode copysign insn.
9689         (IX86_BUILTIN_INFQ): New.
9690         (IX86_BUILTIN_FABSQ): Ditto.
9691         (IX86_BUILTIN_COPYSIGNQ): Ditto.
9692         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
9693         [__builtin_fabsq]: Ditto.
9694         [__builtin_copysignq]: Ditto.
9695         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
9696         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
9697         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
9698         ix86_expand_binop_builtin().
9699
9700 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
9701
9702         * config/xtensa/lib1funcs.asm: Clean up whitespace.
9703
9704 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
9705
9706         PR target/31850
9707         * rtl.h (push_to_sequence2): New.
9708         * emit-rtl.c (push_to_sequence2): New.
9709         * function.c (assign_parm_data_all): Add new fields.
9710         (assign_parm_setup_block): Call push_to_sequence2 instead of
9711         push_to_sequence.
9712         (assign_parm_setup_reg): Ditto.
9713         (assign_parm_setup_stack): Ditto.
9714         (assign_parms_unsplit_complex): Ditto.
9715         (assign_parms): Change field name.
9716
9717 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
9718
9719         PR tree-optimization/32220
9720         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
9721         phi node is reached before defining statement.
9722
9723 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9724
9725         PR tree-opt/32231
9726         * tree-vect-transform.c (vectorizable_call): Call update_stmt
9727         after changing the right hand side of the assignment.
9728
9729 2007-06-06  Eric Christopher  <echristo@apple.com>
9730
9731         * config.gcc (i?86-*-darwin*): Remove arch parameter.
9732         (x86_64-*-darwin*): Ditto.
9733         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
9734         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
9735
9736 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
9737
9738         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
9739         coding conventions.
9740         (add_key): Likewise.
9741         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
9742         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
9743         variable names.
9744         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory
9745         macros.
9746         (add_cost_one_coalesce): Likewise.
9747         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
9748         variable names. Rename orig to orig_name for consistency.
9749         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the
9750         coding conventions.
9751         (cprop_into_successor_phis): Avoid using C++ keywords as variable
9752         names.
9753         (record_equivalences_from_stmt): Likewise.
9754         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
9755         the coding conventions.
9756         (memory_ssa_name_same): Likewise.
9757         (dse_optimize_stmt): Likewise.
9758         (dse_record_phis): Likewise.
9759         (dse_finalize_block): Likewise.
9760         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
9761         keywords as variable names.
9762         (may_move_till): Cast according to the coding conventions.
9763         (force_move_till_expr): Avoid using C++ keywords as variable names.
9764         (force_move_till): Cast according to the coding conventions.
9765         (memref_hash): Likewise.
9766         (memref_eq): Likewise.
9767         (gather_mem_refs_stmt): Likewise.
9768         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid
9769         using C++ keywords as variable names.
9770         (idx_find_step): Cast according to the coding conventions.
9771         (idx_record_use): Likewise.
9772         (find_depends): Likewise.
9773         (prepare_decl_rtl): Likewise.
9774         (mbc_entry_hash): Likewise.
9775         (mbc_entry_eq): Likewise.
9776         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
9777         (simplify_replace_tree): Avoid using C++ keywords as variable names.
9778         (idx_infer_loop_bounds): Cast according to the coding conventions.
9779         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
9780         * tree-ssa-math-opts.c (occ_new ): Likwise.
9781         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
9782         macros.
9783         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as
9784         variable names.
9785         (add_use_op): Likewise.
9786         (add_vop): Likewise.
9787         (add_vuse_op): Likewise.
9788         (add_vdef_op): Likewise.
9789         (get_expr_operands): Likewise.
9790         (push_stmt_changes): Use type safe memory macros.
9791         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
9792         keywords as variable names.
9793         (conditional_replacement): Likewise.
9794         (minmax_replacement): Likewise.
9795         (abs_replacement): Likewise.
9796         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
9797         coding conventions.
9798         (insert_fake_stores): Avoid using C++ keywords as variable names.
9799         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
9800         conventions.
9801         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
9802         (heapvar_insert): Use type safe memory macros.
9803         (new_var_info): Cast according to the coding conventions.
9804         (new_constraint): Likewise.
9805         (remove_preds_and_fake_succs): Use type safe memory macros.
9806         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
9807         conventions.
9808         (thread_single_edge): Likewise.
9809         (thread_through_loop_header): Likewise.
9810
9811 2007-06-06  Eric Christopher  <echristo@apple.com>
9812
9813         * config/i386/i386.c (override_options): Move handling
9814         of TARGET_SUBTARGET* earlier.
9815
9816 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
9817
9818         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
9819         use %n on printf.
9820
9821 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
9822
9823         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
9824         emited outside of basic block.
9825         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
9826         the created blocks.
9827         * rtl.h (delete_insn_chain): Declaration changed.
9828         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
9829         non-removed insns.
9830         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
9831         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
9832         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
9833         to delete_insn_chain.
9834         (rtl_verify_flow_info_1): Verify that the insns in header and footer
9835         do not have bb field set.
9836         (rtl_verify_flow_info): Verify that insns between basic blocks do not
9837         have bb field set.
9838         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
9839         * cfgcleanup.c (try_optimize_cfg): Ditto.
9840
9841 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
9842
9843         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
9844         (lambda_body_vector_new): Use type safe memory macros.
9845         (lambda_linear_expression_new): Likewise.
9846         (lambda_loopnest_new): Likewise.
9847         (lambda_lattice_new): Likewise.
9848         (replace_uses_equiv_to_x_with_y): Cast according to the coding
9849         conventions. Use type safe memory macros.
9850         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
9851         (lambda_body_vector_s): Likewise.
9852         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
9853         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
9854
9855 2007-06-06  Richard Guenther  <rguenther@suse.de>
9856
9857         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
9858         if we need to schedule cfg_cleanup.
9859         (tree_ssa_forward_propagate_single_use_vars): Do so.
9860
9861 2007-06-06  Ian Lance Taylor  <iant@google.com>
9862
9863         * fold-const.c (merge_ranges): If range_successor or
9864         range_predecessor fail, just return 0.
9865
9866 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
9867
9868         PR tree-optimization/32216
9869         * tree-vectorizer.c (supportable_widening_operation): Determine
9870         signedness of FIX_TRUNC_EXPR from output operand.
9871         (supportable_narrowing_operation): Ditto.
9872         * tree-vect-generic.c (expand_vector_operations_1): Determine
9873         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
9874         from input operand.
9875
9876 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
9877
9878         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
9879         (struct pta): ...from here. Change flags to unsigned to avoid
9880         excessive casting (as it is used as a bit mask).
9881         (override_options): Add casts according to the coding convenventions.
9882         (x86_64_elf_unique_section): Likewise.
9883         (examine_argument): Avoid using C++ keywords as variable names.
9884         (construct_container): Likewise.
9885         (legitimize_pic_address): Likewise.
9886         (get_dllimport_decl): Cast according to the coding conventions. Use
9887         type safe memory macros.
9888         (legitimize_address): Cast according to the coding conventions.
9889         (emit_i387_cw_initialization): Corrected the type of slot to enum
9890         ix86_stack_slot.
9891         (ix86_init_machine_status): Use type safe memory macros.
9892         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
9893         (bdesc_pcmpistr): Likewise.
9894         (bdesc_crc32): Likewise.
9895         (bdesc_sse_3arg): Likewise.
9896         (bdesc_2arg): Likewise.
9897         (bdesc_1arg): Likewise.
9898         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
9899         (ix86_expand_sse_pcmpistr): Likewise.
9900         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
9901         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
9902         int to match the langhook definition.
9903         (ix86_builtin_conversion): Change the type of code to unsigned init to
9904         match the langhook definition.
9905         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
9906         names.
9907         (ix86_preferred_output_reload_class): Likewise.
9908         (ix86_cannot_change_mode_class): Likewise.
9909         (ix86_memory_move_cost): Likewise.
9910         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
9911         avoid excessive casting later on.
9912         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
9913
9914 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
9915
9916         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
9917         as flags setting insn.
9918         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
9919
9920 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
9921
9922         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
9923         (UNSPEC_ROUND): New.
9924         ("sse4_1_round<mode>2"): New insn pattern.
9925         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
9926         SSE4.1 targets.
9927         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
9928         expander using SSEMODEF mode macro.  Expand using
9929         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
9930         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
9931         expander using SSEMODEF mode macro.  Expand using
9932         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
9933         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
9934         expander using SSEMODEF mode macro.  Expand using
9935         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
9936         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
9937         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
9938         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
9939         UNSPEC_ROUNDS.
9940
9941 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
9942             Sebastian Pop  <sebpop@gmail.com>
9943
9944         * lambda.h (build_linear_expr): New.
9945         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
9946         Use build_linear_expr, call fold and force_gimple_operand.
9947         (lambda_loopnest_to_gcc_loopnest): Check that there is
9948         something to insert.
9949         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
9950
9951 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
9952
9953         PR preprocessor/23479
9954         * doc/extend.texi: Document the 0b-prefixed binary integer
9955         constant extension.
9956
9957 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
9958
9959         PR tree-optimization/32215
9960         * tree-vectorizer.c (supportable_widening_operation): Return false
9961         for unsupported FIX_TRUNC_EXPR tree code.
9962         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
9963
9964 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
9965
9966         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
9967         register on SPE targets.  Change documentation to reflect
9968         reality.
9969         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
9970         Change FIXED_SCRATCH to 14 and document why we're keeping r14
9971         out of the register allocation pool.
9972         (rs6000_reg_live_or_pic_offset_p): New function.
9973         (rs6000_emit_prologue): Move the actual saving of LR up to free
9974         r0 for holding r11.  Split saving of SPE 64-bit registers into
9975         its own case.  Ensure that offsets will always be in-range for
9976         'evstdd' by using r11 as a scratch register to point at the start
9977         of the SPE save area.  Save r11 if necessary, as it is the static
9978         chain register.
9979         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
9980         into its own case.  Ensure that offsets will always be in-range
9981         for 'evldd' by using r11 as a scratch register to point at the
9982         start of the SPE save area.  Also adjust r11 when restoring
9983         the stack pointer to compensate for pre-loading r11.
9984
9985 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
9986
9987         * cfg.c (init_flow): Use type safe memory macros.
9988         (alloc_block): Likewise.
9989         (unchecked_make_edge): Likewise.
9990         (dump_flow_info): Avoid using C++ keywords as variable names.
9991         (copy_original_table_clear): Cast according to the coding conventions.
9992         (copy_original_table_set): Likewise.
9993         * cfgexpand (label_rtx_for_bb): Likewise.
9994         (expand_gimple_basic_block): Likewise.
9995         * cfghooks.c (dump_bb): Likewise.
9996         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
9997         variable names.
9998         (lv_add_condition_to_bb): Likewise.
9999         * cfglayout (relink_block_chain): Cast according to the coding
10000         conventions.
10001         (fixup_reorder_chain): Likewise.
10002         (fixup_fallthru_exit_predecessor): Likewise.
10003         * cfgloop.c (glb_enum_p): Likewise.
10004         (get_exit_description): Likewise.
10005         (dump_recorded_exit): Likewise.
10006         * cfgloop.h (enum loop_estimation): Move out of struct scope...
10007         (struct loop): ... from here.
10008         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
10009         conventions.
10010         * cfgrtl.c (rtl_create_basic_block): Likewise.
10011         (rtl_split_block): Likewise.
10012         (rtl_dump_bb): Likewise.
10013         (cfg_layout_split_block): Likewise.
10014         (init_rtl_bb_info): Use typesafe memory macros.
10015
10016         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
10017         * graphds.h: Updated all usages of edge to graph_edge.
10018         * graphds.c: Likewise.
10019         * cfgloopanal.c: Likewise.
10020
10021 2007-06-05  Ian Lance Taylor  <iant@google.com>
10022
10023         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
10024         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
10025         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
10026         expression.
10027         (test_for_singularity): Likewise.
10028
10029 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
10030
10031         * config/i386/constraints.md ("Y2"): Replaced by ...
10032         ("Yt"): This.
10033         * config/i386/i386.md: Likewise.
10034         * config/i386/mmx.md: Likewise.
10035         * config/i386/sse.md: Likewise.
10036
10037 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
10038
10039         * config/i386/constraints.md ("z"): Replaced by ...
10040         ("Y0"): This.
10041         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
10042         (sse4_1_blendvps): Likewise.
10043         (sse4_1_pblendvb): Likewise.
10044         (sse4_2_pcmpestr): Likewise.
10045         (sse4_2_pcmpestrm): Likewise.
10046         (sse4_2_pcmpestr_cconly): Likewise.
10047         (sse4_2_pcmpistr): Likewise.
10048         (sse4_2_pcmpistrm): Likewise.
10049         (sse4_2_pcmpistr_cconly): Likewise.
10050
10051 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
10052
10053         * matrix-reorg.c (transform_access_sites): Fix computation.
10054         (transform_allocation_sites): Same.
10055
10056 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
10057
10058         * config/i386/i386.c (override_options): Use
10059         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
10060
10061 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
10062
10063         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
10064         (nonimm_not_xmm0_operand): Ditto.
10065         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
10066         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
10067         as operand[2] predicate.  Require "z" class XMM register for
10068         operand[3].  Adjust asm template.
10069         ("sse4_1_blendvpd"): Ditto.
10070         ("sse4_1_pblendvb"): Ditto.
10071         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
10072         force op2 into xmm0 register for variable blend instructions.
10073
10074 2007-06-04  Tom Tromey  <tromey@redhat.com>
10075
10076         * c-tree.h (start_enum): Update.
10077         (build_enumerator): Likewise.
10078         * c-decl.c (enum_next_value): Removed.
10079         (enum_overflow): Likewise.
10080         (start_enum): Add c_enum_contents argument.  Don't use globals.
10081         (build_enumerator): Likewise.
10082         * c-tree.h (struct c_enum_contents): New struct.
10083
10084 2007-06-04  Tom Tromey  <tromey@redhat.com>
10085
10086         * c-common.c (c_common_get_alias_set): Fix indentation.
10087
10088 2007-06-04  Ian Lance Taylor  <iant@google.com>
10089
10090         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
10091         to overflow, reduce overflow infinity to regular infinity.
10092         (vrp_var_may_overflow): New static function.
10093         (vrp_visit_phi_node): Check vrp_var_may_overflow.
10094
10095 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
10096
10097         * stor-layout.c (layout_type): Remove duplicate code.
10098
10099 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
10100
10101         PR c/32191
10102         * c-common.c (c_define_builtins): Call targetm.init_builtins ()
10103         before build_common_builtin_nodes ().
10104
10105 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
10106
10107         PR target/31733
10108         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
10109
10110 2007-06-04  Jan Hubicka  <jh@suse.cz>
10111
10112         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
10113         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
10114         instead of _stat version.
10115
10116 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
10117
10118         PR tree-optimization/32194
10119         * tree-predcom.c (determine_offset): Check that both references have
10120         the same type.
10121
10122 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
10123
10124         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
10125         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
10126         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
10127         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
10128         Add argument to iterate_fix_dominators call.
10129         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
10130         * gcse.c (hoist_code): Change domby to vector.
10131         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
10132         Add argument to iterate_fix_dominators call.
10133         * loop-doloop.c (doloop_modify): Changed recount_dominator to
10134         recompute_dominator.
10135         * lambda-code.c (perfect_nestify): Ditto.
10136         * cfgloopanal.c: Include graphds.h.
10137         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
10138         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
10139         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
10140         add_edge call.
10141         * graphds.c: New file.
10142         * graphds.h: New file.
10143         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
10144         (get_dominated_by, get_dominated_by_region): Change return type to
10145         vector.
10146         (verify_dominators): Recompute all dominators and compare the results.
10147         (recount_dominator): Renamed to ...
10148         (recompute_dominator): ... this.  Do not check that the block is
10149         dominated by entry.
10150         (iterate_fix_dominators): Reimplemented.
10151         (prune_bbs_to_update_dominators, root_of_dom_tree,
10152         determine_dominators_for_sons): New functions.
10153         * et-forest.c (et_root): New function.
10154         * et-forest.h (et_root): Declare.
10155         * Makefile.in (graphds.o): Add.
10156         (cfgloopanal.o): Add graphds.h dependency.
10157         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
10158         * basic-block.h (get_dominated_by, get_dominated_by_region,
10159         iterate_fix_dominators): Declaration changed.
10160         (recount_dominator): Renamed to ...
10161         (recompute_dominator): ... this.
10162         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
10163         (thread_through_all_blocks): Do not free dominance info.
10164
10165 2007-06-03  Andreas Schwab  <schwab@suse.de>
10166
10167         * config/m68k/m68k.c (override_options): Don't override
10168         REAL_MODE_FORMAT.
10169         * config/m68k/m68k-modes.def (SF, DF): Define to use
10170         motorola_single_format and motorola_double_format, resp.
10171         * real.c (motorola_single_format): Renamed from
10172         coldfire_single_format.
10173         (motorola_double_format): Renamed from coldfire_double_format.
10174         (encode_ieee_extended): Generate a proper canonical NaN image
10175         respecting canonical_nan_lsbs_set.
10176         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
10177         true.
10178         * real.h: Adjust declarations.
10179
10180 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
10181
10182         PR target/32163
10183         * config/sh/sh.md (symGOT_load): Don't schedule insns when
10184         the symbol is generated with the stack protector.
10185
10186 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
10187
10188         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
10189         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
10190         "interrupt".
10191         * doc/extend.texi (interrupt): Mention m68k.
10192
10193 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
10194
10195         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
10196         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
10197         (ix86_expand_sse_pcmpestr): Do not check operands for
10198         "register_operand", when insn operand predicate is "register_operand".
10199         (ix86_expand_sse_pcmpistr): Ditto.
10200
10201 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
10202             Uros Bizjak  <ubizjak@gmail.com>
10203
10204         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
10205         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
10206         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
10207         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
10208         * config/i386/constraints.md ("z"): New register constraint
10209         for members of SSE_FIRST_REG class.
10210         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
10211         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
10212         SSE_FIRST_REG class.
10213         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
10214         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
10215         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
10216         (IX86_BUILTIN_PCMPESTRM128): Likewise.
10217         (IX86_BUILTIN_PCMPESTRA128): Likewise.
10218         (IX86_BUILTIN_PCMPESTRC128): Likewise.
10219         (IX86_BUILTIN_PCMPESTRO128): Likewise.
10220         (IX86_BUILTIN_PCMPESTRS128): Likewise.
10221         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
10222         (IX86_BUILTIN_PCMPISTRI128): Likewise.
10223         (IX86_BUILTIN_PCMPISTRM128): Likewise.
10224         (IX86_BUILTIN_PCMPISTRA128): Likewise.
10225         (IX86_BUILTIN_PCMPISTRC128): Likewise.
10226         (IX86_BUILTIN_PCMPISTRO128): Likewise.
10227         (IX86_BUILTIN_PCMPISTRS128): Likewise.
10228         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
10229         (struct builtin_description): Change "flag" field to unsigned.
10230         (bdesc_pcmpestr): New builtin description table.
10231         (bdesc_pcmpistr): Likewise.
10232         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
10233         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
10234         Initialize pcmp[ei]str[im] insns for SSE4.2.
10235         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
10236         (ix86_expand_sse_pcmpistr): Likewise.
10237         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
10238         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
10239         (UNSPEC_PCMPISTR): Likewise.
10240         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
10241         (sse4_2_pcmpestri):New isns pattern.
10242         (sse4_2_pcmpestrm): Likewise.
10243         (sse4_2_pcmpestr_cconly): Likewise.
10244         (sse4_2_pcmpistr): New insn patern and splitter.
10245         (sse4_2_pcmpistri):New isns pattern.
10246         (sse4_2_pcmpistrm): Likewise.
10247         (sse4_2_pcmpistr_cconly): Likewise.
10248         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
10249         in SSE4.2.
10250
10251 2007-06-01  David Daney  <ddaney@avtrex.com>
10252
10253         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
10254         LOADGP_ABSOLUTE and not binds_local_p.
10255
10256 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
10257
10258         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
10259
10260 2007-06-01  Ian Lance Taylor  <iant@google.com>
10261
10262         * tree-vrp.c (compare_name_with_value): Always set
10263         used_strict_overflow if we get a result from the variable itself.
10264
10265 2007-06-01  Ian Lance Taylor  <iant@google.com>
10266
10267         PR rtl-optimization/31455
10268         * lower-subreg.c (find_decomposable_subregs): Don't decompose
10269         subregs which have a cast between modes which are not tieable.
10270
10271 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
10272
10273         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
10274         breaks after return statements.
10275
10276 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
10277
10278         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
10279         only after no_new_pseudos.
10280
10281 2007-05-31  Eric Christopher  <echristo@apple.com>
10282
10283         * expr.c (convert_move): Assert that we don't have a BLKmode
10284         operand.
10285         (store_expr): Handle BLKmode moves by calling emit_block_move.
10286
10287 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
10288
10289         * c-typeck.c (build_indirect_ref): Include type in error message.
10290         (build_binary_op): Pass types to binary_op_error.
10291         * c-common.c (binary_op_error): Take two type arguments, print out
10292         types with error.
10293         * c-common.h (binary_op_error): Update prototype.
10294
10295 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
10296
10297         * config/i386/i386.c: Correct coments on -mno-sse4.
10298
10299 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
10300
10301         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
10302         (x86_64-*-*): Likewise.
10303         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
10304         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
10305         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
10306         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
10307         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
10308         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
10309         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
10310         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
10311         (OPTION_MASK_ISA_SSE4): Likewise.
10312         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
10313         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
10314         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
10315         (override_options): Support SSE4.2.
10316         (ix86_build_const_vector): Support SImode and DImode.
10317         (ix86_build_signbit_mask): Likewise.
10318         (ix86_expand_int_vcond): Support V2DImode.
10319         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
10320         (IX86_BUILTIN_CRC32HI): Likewise.
10321         (IX86_BUILTIN_CRC32SI): Likewise.
10322         (IX86_BUILTIN_CRC32DI): Likewise.
10323         (IX86_BUILTIN_PCMPGTQ): Likewise.
10324         (bdesc_crc32): Likewise.
10325         (bdesc_sse_3arg): Likewise.
10326         (ix86_expand_crc32): Likewise.
10327         (ix86_init_mmx_sse_builtins): Support SSE4.2.
10328         (ix86_expand_builtin): Likewise.
10329         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
10330         __SSE4_2__ for -msse4.2.
10331         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
10332         (CRC32MODE): Likewise.
10333         (crc32modesuffix): Likewise.
10334         (crc32modeconstraint): Likewise.
10335         (sse4_2_crc32<mode>): Likewise.
10336         (sse4_2_crc32di): Likewise.
10337         * config/i386/i386.opt (msse4.2): New for SSE4.2.
10338         (msse4): Likewise.
10339         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
10340         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
10341         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
10342         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
10343         (vcondu<mode>): Likewise.
10344         * doc/extend.texi: Document SSE4.2 built-in functions.
10345         * doc/invoke.texi: Document -msse4.2/-msse4.
10346
10347 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
10348
10349         PR tree-optimization/32160
10350         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
10351         variable as gimple reg.
10352         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
10353
10354 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
10355
10356         * gcc.c (main): Don't consider linker options when issuing the
10357         warning about a linker input file not being used.
10358
10359 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10360
10361         * tree-vrp.c (compare_names): Initialize sop.
10362
10363 2007-05-30  Dirk Mueller  <dmueller@suse.de>
10364
10365         * cgraphunit.c (cgraph_analyze_function): Remove
10366         computation of inline parameters.
10367
10368 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
10369
10370         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
10371
10372 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
10373
10374         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
10375         Add vx-common.h.  Include vxworks.h between vx-common.h and
10376         arm/vxworks.h.
10377         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
10378         redefining.
10379         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
10380         (TARGET_ASM_DESTRUCTOR): Likewise.
10381         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
10382         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
10383         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
10384         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
10385         (VXWORKS_ENDIAN_SPEC): Define.
10386         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
10387         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
10388         VXWORKS_* equivalents.
10389         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
10390         (ASM_FILE_START): Delete.
10391         (TARGET_VERSION): Reformat.
10392         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
10393         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
10394         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
10395         (FPBIT, DPBIT): Define.
10396         (fp-bit.c, dp-bit.c): New rules.
10397         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
10398         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
10399         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
10400         * config/arm/arm.h: Include vxworks-dummy.h.
10401         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
10402         Mark with ATTRIBUTE_UNUSED.
10403         (arm_override_options): Do not allow VxWorks RTP PIC to be used
10404         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
10405         make it incompatible with -msingle-pic-base.
10406         (arm_function_ok_for_sibcall): Return false for calls that might
10407         go through a VxWorks PIC PLT entry.
10408         (require_pic_register): New function, split out from...
10409         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
10410         for VxWorks RTPs.
10411         (arm_load_pic_register): Handle the VxWorks RTP initialization
10412         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
10413         (arm_emit_call_insn): New function.
10414         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
10415         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
10416         (pic_offset_arm): New pattern.
10417         (call, call_value): Use arm_emit_call_insn.
10418         (call_internal, call_value_internal): New expanders.
10419         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
10420         VxWorks unless __PIC__.
10421
10422 2007-05-30  Eric Christopher  <echristo@gmail.com>
10423
10424         * genrecog.c: Include regs.h in generated file.
10425         * genemit.c: Ditto. Fix up formatting.
10426         * config/mn10300/constraints.md: New.
10427         * config/mn10300/mn10300.md: Include.
10428         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
10429         Fix up for removed macro.
10430         * config/mn10300/predicates.md (call_address_operand):  Ditto.
10431         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
10432         (CONST_OK_FOR_I): Ditto.
10433         (CONST_OK_FOR_J): Ditto.
10434         (CONST_OK_FOR_K): Ditto.
10435         (CONST_OK_FOR_L): Ditto.
10436         (CONST_OK_FOR_M): Ditto.
10437         (CONST_OK_FOR_N): Ditto.
10438         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
10439         (OK_FOR_Q): Ditto.
10440         (OK_FOR_R): Ditto.
10441         (OK_FOR_T): Ditto.
10442         (EXTRA_CONSTRAINT): Ditto.
10443
10444 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
10445
10446         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
10447         Remove defines.
10448         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
10449         OPTION_MASK_ISA_64BIT.
10450         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
10451
10452 2007-05-30  Richard Guenther  <rguenther@suse.de>
10453
10454         PR middle-end/32152
10455         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
10456         types for comparison.
10457         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
10458         with original typed arguments.
10459         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
10460
10461 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
10462
10463         PR tree-optimization/31769
10464         * except.c (duplicate_eh_regions): Clear prev_try if
10465         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
10466
10467 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
10468
10469         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
10470         * tree-ssa-sink.c (statement_sink_location): Return basic block and
10471         bsi of the location where statements should be inserted.
10472         (sink_code_in_bb): Take bsi from statement_sink_location.
10473         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
10474         instead of bsi_start.
10475         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
10476         bsi_insert_after.
10477         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
10478         (bsi_move_before): Document inconsistency with bsi_move_after.
10479         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
10480
10481 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
10482
10483         * config/i386/i386.h (TARGET_ABM): New define.
10484         (TARGET_POPCNT): Ditto.
10485         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
10486         New temporary defines to redefine from OPTION_ISA_* defines.
10487         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
10488         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
10489         (ix86_isa_flags): New extern int declaration.
10490         (TARGET_SUBTARGET_DEFAULT): New define.
10491         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
10492         (TARGET_SUBTARGET32_DEFAULT): Ditto.
10493         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
10494         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
10495         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
10496         * config/i386/darwin.h: Change TARGET_64BIT define to
10497         OPTION_ISA_64BIT.
10498
10499         * config/i386/i386.opt (m3dnowa): Define as undocumented option
10500         using existing "ix86_isa_flags" varible.
10501         (m32, m64): Use existing "ix86_isa_flags" variable.
10502         (mmmx, m3dnow): Ditto.
10503         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
10504         (mabm): Define as non-negative option using "x86_abm" variable.
10505         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
10506
10507         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
10508         Rewrite feature test bitmap.
10509         (ix86_isa_flags): New initialized global int varible.
10510         (ix86_isa_flags_explicit): New static int variable.
10511         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
10512         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
10513         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
10514         target_flags_explicit.
10515         (override_options): Remove "target_enable" and "target_disable" fields
10516         from "struct ptt". Update processor_target_table accordingly. Remove
10517         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
10518         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
10519         "target_flags" and "ix86_isa_flags_explicit" instead of
10520         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
10521         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
10522         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
10523         to true when either of PTA_POPCNT or PTA_ABM is set in
10524         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
10525         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
10526         processor_alias_table flags entry.  Remove handling of
10527         "target_enable" and "target_disable" fields of processor_target_table.
10528         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
10529         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
10530         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
10531         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
10532         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
10533         "target_flags".
10534         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
10535
10536 2007-05-29  David Daney  <ddaney@avtrex.com>
10537
10538         PR gcc/31975
10539         * config/mips/mips.c (mips_output_mi_thunk): Emit
10540         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
10541
10542 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
10543         * config/i386/i386.c (ix86_function_regparm): Added checking of
10544         ix86_force_align_arg_pointer to determine the number of
10545         register parameters.
10546
10547 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
10548
10549         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
10550         (SET_DR_MISALIGNMENT): New.
10551         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
10552         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
10553         Use SET_DR_MISALIGNMENT.
10554         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
10555         pointer.
10556         * tree-data-ref.c (create_data_ref, compute_all_dependences,
10557         find_loop_nest): Export.
10558         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
10559         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
10560         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
10561         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
10562         New macros.
10563         (struct mem_ref): Add field reuse_distance.
10564         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
10565         Initialize reuse_distance field.
10566         (issue_prefetch_ref): Select temporality of prefetch according to
10567         reuse_distance.
10568         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
10569         self_reuse_distance, determine_loop_nest_reuse): New functions.
10570         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
10571         (tree_ssa_prefetch_arrays): Dump L2 cache size.
10572         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
10573         dependency.
10574
10575 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
10576
10577         * tree-ssa-alias.c: Add aliasing overview.
10578
10579 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
10580             Danny Smith  <dannysmith@users.sourceforge.net>
10581
10582         PR target/29498
10583         * config/i386/t-crtfm: Compile crtfastmath.o with
10584         -minline-all-stringops.
10585         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
10586         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
10587
10588 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10589
10590         * doc/md.texi: Document constraints on HP PA-RISC.
10591
10592         * pa/constraints.md: New file.
10593         * pa.md: Include constraints.md.
10594         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
10595         (integer_store_memory_operand, ldil_cint_p): New functions.
10596         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
10597         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
10598         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
10599         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
10600         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
10601
10602 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
10603
10604         PR c/31339
10605         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
10606         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
10607         case POSTDECREMENT_EXPR>): Return the error_mark_node
10608         if either the real or imaginary parts would an
10609         error_mark_node.
10610
10611 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
10612
10613         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
10614         name when we remove it from a call.
10615
10616 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
10617
10618         * targhooks.c (default_narrow_bitfield): Remove.
10619         * targhooks.h: Remove the prototype for
10620         default_narrow_bitfield.
10621
10622         * langhooks-def.h: Remove the prototype for
10623         hook_get_alias_set_0.
10624         * langhooks.c (hook_get_alias_set_0): Remove.
10625
10626         * global.c (EXECUTE_IF_CONFLICT): Remove.
10627
10628 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10629
10630         PR tree-opt/32100
10631         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
10632         return true when truth_value_p is true and the type
10633         is of signed:1.
10634
10635 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
10636
10637         * doc/install.texi (Prerequisites): We no longer require Autoconf
10638         2.13 for the top-level.
10639
10640 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
10641
10642         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
10643         memory access via x86_expand_vector_move_misalign() only for
10644         TImode values on 32-bit targets.
10645
10646 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
10647
10648         * matrix-reorg.c: New file. Implement matrix flattening and
10649         transposing optimization.
10650         * tree-pass.h: Add matrix reorg pass.
10651         * common.opt: Add fipa-mreorg flag.
10652         * Makefile.in: Add matrix-reorg.c.
10653         * passes.c: Add matrix reorg pass.
10654         * varpool.c (add_new_static_var): New function.
10655         * cgraph.h (add_new_static_var): Declare.
10656
10657 2007-05-27  Eric Christopher  <echristo@apple.com>
10658
10659         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
10660         sp_offset depending on stack size. Save r12 depending
10661         on registers we're saving later.
10662         (rs6000_emit_epilogue): Update sp_offset depending only
10663         on stack size.
10664
10665 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
10666
10667         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
10668         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
10669         * ifcvt.c (if_convert): Ditto.
10670         * tree-ssa-threadupdate.c (thread_block): Ditto.
10671         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
10672         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
10673         verify_loop_closed_ssa): Check number_of_loops instead of
10674         current_loops.
10675         * predict.c (tree_estimate_probability): Ditto.
10676         * tree-if-conv.c (main_tree_if_conversion): Ditto.
10677         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
10678         * modulo-sched.c (sms_schedule): Ditto.
10679         * tree-scalar-evolution.c (scev_const_prop): Ditto.
10680         (scev_finalize): Do not do anything if scev analysis was not
10681         initialized.
10682         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
10683         current_loops == NULL.
10684         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
10685         * loop-init.c (loop_optimizer_init): Do not free current_loops when
10686         there are no loops.
10687         (loop_optimizer_finalize): Assert that loops were analyzed.
10688         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
10689         rtl_doloop): Check number_of_loops instead of current_loops.
10690         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
10691         current_loops == NULL.
10692         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
10693         gate_tree_vectorize tree_linear_transform, check_data_deps,
10694         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
10695         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
10696         Check number_of_loops instead of current_loops.
10697         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
10698         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
10699         free loops if available.
10700         (execute_pre): Do not pass do_fre to fini_pre.
10701
10702 2007-05-27  Tobias Burnus  <burnus@net-b.de>
10703
10704         PR middle-end/32083
10705         * real.c (mpfr_from_real): Fix sign of -Inf.
10706
10707 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
10708
10709         * tree-vect-transform.c (vectorizable_conversion): Initialize
10710         tree_code variables to ERROR_MARK.
10711         (vectorizable_type_demotion): Likewise.
10712         (vectorizable_type_promotion): Likewise.
10713
10714 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
10715
10716         PR target/32065
10717         * config/i386/i386.md (movti): Handle push operands via
10718         ix86_expand_push().
10719
10720 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
10721
10722         * basic-block.h: Remove the prototype for merge_seq_blocks.
10723         * cfgcleanup.c (merge_seq_blocks): Remove.
10724
10725         * tree-flow.h: Remove the prototype for is_aliased_with.
10726         * tree-ssa-alias.c (is_aliased_with): Remove.
10727
10728 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
10729
10730         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
10731
10732         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
10733
10734         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
10735         ix86_expand_sse4_unpack if SSE4.1 is enabled.
10736         (vec_unpacks_hi_v16qi): Likewise.
10737         (vec_unpacku_lo_v16qi): Likewise.
10738         (vec_unpacks_lo_v16qi): Likewise.
10739         (vec_unpacku_hi_v8hi): Likewise.
10740         (vec_unpacks_hi_v8hi): Likewise.
10741         (vec_unpacku_lo_v8hi): Likewise.
10742         (vec_unpacks_lo_v8hi): Likewise.
10743         (vec_unpacku_hi_v4si): Likewise.
10744         (vec_unpacks_hi_v4si): Likewise.
10745         (vec_unpacku_lo_v4si): Likewise.
10746         (vec_unpacks_lo_v4si): Likewise.
10747
10748 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
10749
10750         * c-typeck.c, config/arm/arm.c, config/darwin.c,
10751         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
10752         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
10753         follow spelling conventions in various
10754         warning/error/diagnostic messages.
10755
10756         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
10757         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
10758         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
10759         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
10760         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
10761         * doc/tm.texi: Follow spelling conventions.
10762
10763 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10764
10765         PR tree-opt/32090
10766         * tree-ssa-forwprop.c
10767         (forward_propagate_addr_into_variable_array_index): Remove
10768         the lhs argument.  Use the type of def_rhs instead of lhs.
10769         (forward_propagate_addr_expr_1): Update use of
10770         forward_propagate_addr_into_variable_array_index.
10771
10772 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
10773             Nigel Stephens  <nigel@mips.com>
10774
10775         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
10776         function attributes, "far" being an alias for "long_call".
10777         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
10778         (mips_near_type_p, mips_far_type_p): New.
10779         (mips_comp_type_attributes): New function to check that attributes
10780         attached to a function type are compatible.
10781         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
10782         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
10783         to the target function of the thunk.
10784         (mips_encode_section_info): Check for "near" and "far" function
10785         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
10786
10787         * config/mips/predicates.md (const_call_insn_operand): Test only
10788         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
10789
10790         * doc/extend.texi (Function Attributes): Document MIPS "near" and
10791         "far" attributes.
10792
10793         * testsuite/gcc.target/mips/near-far-1.c:  New test case.
10794         * testsuite/gcc.target/mips/near-far-2.c:  New test case.
10795         * testsuite/gcc.target/mips/near-far-3.c:  New test case.
10796         * testsuite/gcc.target/mips/near-far-4.c:  New test case.
10797
10798 2007-05-25  Eric Christopher  <echristo@apple.com>
10799
10800         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
10801         to x86-darwin configurations.
10802         * config/i386/t-darwin: Add softfp support.
10803         * config/i386/t-darwin64: Ditto.
10804         * config/i386/sfp-machine.h: If mach then don't use
10805         aliasing, emit a stub to call.
10806
10807 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
10808
10809         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
10810         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
10811         tree-predcom.c, tree-ssa-alias-warnings.c,
10812         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
10813         comment typos.  Follow spelling conventions.
10814         * doc/cpp.texi, doc/invoke.texi: Fix typos.
10815
10816 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
10817
10818         PR target/32065
10819         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
10820         constants into memory.  Expand unaligned memory references for
10821         SSE modes via x86_expand_vector_move_misalign() function.
10822
10823 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
10824
10825         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
10826         "memory" attribute for "sseishft" type insn without operands[2].
10827
10828 2007-05-25  Dirk Mueller  <dmueller@suse.de>
10829             Marcus Meissner <meissner@suse.de>
10830
10831         * doc/extend.texi (alloc_size): New attribute.
10832         * c-common.c (handle_alloc_size_attribute): New.
10833         * tree-object-size.c (alloc_object_size): Use alloc_size
10834         attribute, if available.
10835
10836 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
10837
10838         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
10839         with MASK_SSE2.
10840         (__builtin_ia32_vec_ext_v2di): Likewise.
10841         (__builtin_ia32_vec_ext_v4si): Likewise.
10842         (__builtin_ia32_vec_ext_v8hi): Likewise.
10843         (__builtin_ia32_vec_ext_v16qi): Likewise.
10844         (__builtin_ia32_vec_set_v8hi): Likewise.
10845
10846 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
10847
10848         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
10849
10850 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
10851
10852         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
10853         (arm_is_longcall_p): Rename to...
10854         (arm_is_long_call_p): ...this.  Take a single tree argument and
10855         return a bool.
10856         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
10857         (CUMULATIVE_ARGS): Remove call_cookie.
10858         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
10859         (ENCODED_LONG_CALL_ATTR_P): Delete.
10860         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
10861         LONG_CALL_FLAG_CHAR cases.
10862         (ARM_DECLARE_FUNCTION_SIZE): Delete.
10863         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
10864         ARM_DECLARE_FUNCTION_SIZE.
10865         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
10866         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
10867         (arm_encode_call_attribute, current_file_function_operand): Delete.
10868         (arm_function_in_section_p): New function.
10869         (arm_is_longcall_p): Rename to...
10870         (arm_is_long_call_p): ...this.  Take the target function as a single
10871         argument and return a bool.  Do not rely on call cookies.  Check
10872         whether the target symbol is in the same section as the current
10873         function, not just the same compilation unit.
10874         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
10875         (arm_encode_section_info): Don't encode a call type.
10876         * config/arm/arm.md (call, call_value): Update calls to
10877         arm_is_long(_)call_p.  Simplify logic.
10878         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
10879         Update calls to arm_is_long(_)call_p.
10880
10881 2007-05-25  Richard Guenther  <rguenther@suse.de>
10882
10883         PR tree-optimization/31982
10884         * tree-ssa-forwprop.c
10885         (forward_propagate_addr_into_variable_array_index): Handle arrays
10886         with element size one.
10887
10888 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10889
10890         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
10891         (umulsi3_highpart): Likewise.
10892
10893 2007-05-24  Ian Lance Taylor  <iant@google.com>
10894
10895         PR rtl-optimization/32069
10896         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
10897         is NULL.
10898
10899 2007-05-24  Ollie Wild  <aaw@google.com>
10900
10901         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
10902         description.
10903
10904 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
10905
10906         * postreload-gcse.c (reg_changed_after_insn_p): New function.
10907         (oprs_unchanged_p): Use it to check all registers in a REG.
10908         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
10909         (reg_set_between_after_reload_p): Delete.
10910         (reg_used_between_after_reload_p): Likewise.
10911         (reg_set_or_used_since_bb_start): Likewise.
10912         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
10913         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
10914         Use reg_set_between_p instead of reg_set_between_after_reload_p.
10915         * rtlanal.c (reg_set_p): Check whether REG overlaps
10916         regs_invalidated_by_call, rather than just checking the
10917         membership of REGNO (REG).
10918
10919 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
10920
10921         * doc/passes.texi: Document predictive commoning.
10922         * doc/invoke.texi (-fpredictive-commoning): Document.
10923         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
10924         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
10925         adding indices to the generated name.
10926         (schedule_sm): Pass 0 to get_lsm_tmp_name.
10927         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
10928         * tree-pretty-print.c (op_symbol_1): Renamed to ...
10929         (op_symbol_code): ... and exported.
10930         (dump_omp_clause, op_symbol): Use op_symbol_code
10931         instead of op_symbol_1.
10932         * tree-pass.h (pass_predcom): Declare.
10933         * timevar.def (TV_PREDCOM): New timevar.
10934         * tree-ssa-loop.c (run_tree_predictive_commoning,
10935         gate_tree_predictive_commoning, pass_predcom): New.
10936         * tree-data-ref.c (find_data_references_in_loop): Find the
10937         references in dominance order.
10938         (canonicalize_base_object_address): Ensure that the result has
10939         pointer type.
10940         (dr_analyze_innermost): Export.
10941         (create_data_ref): Code to fail for references with invariant
10942         address moved ...
10943         (find_data_references_in_stmt): ... here.
10944         * tree-data-ref.h (dr_analyze_innermost): Declare.
10945         * tree-affine.c: Include tree-gimple.h and hashtab.h.
10946         (aff_combination_find_elt, name_expansion_hash,
10947         name_expansion_eq, tree_to_aff_combination_expand,
10948         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
10949         New functions.
10950         * tree-affine.h (aff_combination_constant_multiple_p,
10951         tree_to_aff_combination_expand): Declare.
10952         * tree-predcom.c: New file.
10953         * common.opt (fpredictive-commoning): New option.
10954         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
10955         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
10956         * Makefile.in (tree-predcom.o): Add.
10957         (tree-affine.o): Add TREE_GIMPLE_H dependency.
10958         * passes.c (init_optimization_passes):  Add dceloop after
10959         copy propagation in loop optimizer.  Add predictive commoning
10960         to loop optimizer passes.
10961
10962 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
10963
10964         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
10965         default hook.
10966
10967 2007-05-24  Jan Hubicka  <jh@suse.cz>
10968
10969         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
10970         statistics.
10971         (genheader): Include statistics.h.
10972
10973         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
10974         notes are gone.
10975         * print-rtl.c (flag_dump_unnumbered): Update comments.
10976         (print_rtl): Fix my previous change.
10977         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
10978         specific data.
10979
10980 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
10981
10982         PR middle-end/32018
10983         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
10984         set_loop_copy.
10985         (thread_through_all_blocks): Call initialize_original_copy_tables
10986         and free_original_copy_tables.
10987         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
10988         Use set_loop_copy.
10989         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
10990         * cfghooks.c (duplicate_block): Use get_loop_copy.
10991         * cfg.c: Include cfgloop.h.
10992         (loop_copy): New hash table.
10993         (initialize_original_copy_tables): Initialize loop_copy table.
10994         (free_original_copy_tables): Free loop_copy table.
10995         (copy_original_table_clear, copy_original_table_set,
10996         set_loop_copy, get_loop_copy): New functions.
10997         (set_bb_original, set_bb_copy): Use copy_original_table_set.
10998         * cfgloop.h (struct loop): Remove copy field.
10999         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
11000         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
11001
11002 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
11003
11004         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
11005         -msse/-msse2/-msse3.
11006
11007 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
11008
11009         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
11010         __builtin_ia32_vec_set_v2di with MASK_64BIT.
11011
11012 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
11013
11014         PR target/27067
11015         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
11016         * targhooks.h (default_mangle_decl_assembler_name): Declare
11017         default hook.
11018         * targhooks.c (default_mangle_decl_assembler_name): Define
11019         default hook.
11020         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
11021         default hook.
11022         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
11023         * langhooks.c (lhd_set_decl_assembler_name): Call
11024         targetm.mangle_decl_assembler_name for names with global scope.
11025
11026         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
11027         default.
11028         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
11029         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
11030         Declare.
11031         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
11032         New. Factored out of i386_pe_encode_section_info.
11033         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
11034         Move check for prior decoration of stdcall
11035         symbols to i386_pe_encode_section_info.
11036         (i386_pe_encode_section_info): Adjust call to
11037         gen_stdcall_or_fastcall_suffix.  Use
11038         i386_pe_maybe_mangle_decl_assembler_name, if needed.
11039         (i386_pe_mangle_decl_assembler_name): New. Wrap
11040         i386_pe_maybe_mangle_decl_assembler_name.
11041
11042 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
11043
11044         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
11045         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
11046         * langhooks.c (get_signed_or_unsigned_type): Don't check for
11047         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
11048         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
11049         TYPE_UNSIGNED.
11050
11051 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
11052             Nigel Stephens  <nigel@mips.com>
11053             Richard Sandiford  <richard@codesourcery.com>
11054
11055         Fix up MIPS16 hard float and add support for complex.
11056
11057         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
11058         (TARGET_SOFT_FLOAT_ABI): New.
11059         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
11060         __mips_soft_float to reflect the ABI in use, not whether the
11061         FPU is directly accessible (e.g., in MIPS16 mode).
11062         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
11063         (UNITS_PER_FPVALUE): Likewise.
11064
11065         * config/mips/mips.c (mips_expand_call): Remove redundant
11066         TARGET_MIPS16 check.
11067         (mips_arg_regno): New.
11068         (function_arg_advance): When setting bits in cum->fp_code for
11069         MIPS16, don't subtract 1 from cum->arg_number, since it is now
11070         zero-based.
11071         (function_arg): Use mips_arg_regno.
11072         (mips_return_mode_in_fpr_p): New.
11073         (mips16_call_stub_mode_suffix): New.
11074         (mips16_cfun_returns_in_fpr_p): New.
11075         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
11076         (mips_output_function_prologue): Test mips16_hard_float, not
11077         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
11078         (mips_expand_epilogue): Call MIPS16 helper routines to copy
11079         return value into a floating-point register.
11080         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
11081         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
11082         (mips16_fp_args): Handle MIPS32r2 ISA which supports
11083         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
11084         word of double arguments from or to the high bits of 64-bit
11085         floating point registers.
11086         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
11087         (mips16_fpret_double): New helper function.
11088         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
11089         support for complex modes.  Fill in DECL_RESULT for stubdecl.
11090         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
11091
11092         * config/mips/mips16.S
11093         (RET, ARG1, ARG2): New.
11094         (MERGE_GPRf, MERGE_GPRt): New.
11095         (DELAYt, DELAYf): New.
11096         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
11097         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
11098         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
11099         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
11100         (SFOP): Renamed to...
11101         (OPSF3): This, and macro-ified.  Updated all uses.
11102         (SFOP2): Renamed to...
11103         (OPSF2): This, and macro-ified.  Updated all uses.
11104         (SFCMP): Renamed to...
11105         (CMPSF): This, and macro-ified.  Updated all uses.
11106         (SFREVCMP): Renamed to...
11107         (REVCMPSF): This, and macro-ified.  Updated all uses.
11108         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
11109         (LDDBL1, LDDBL2, RETDBL): Deleted.
11110         (DFOP): Renamed to...
11111         (OPDF3): This, and macro-ified.  Updated all uses.
11112         (DFOP2): Renamed to...
11113         (OPDF2): This, and macro-ified.  Updated all uses.
11114         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
11115         (DFCMP): Renamed to...
11116         (CMPDF): This, and macro-ified.  Updated all uses.
11117         (DFREVCMP): Renamed to...
11118         (REVCMPDF): This, and macro-ified.  Updated all uses.
11119         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
11120         (RET_FUNCTION): New.
11121         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
11122         (__mips16_ret_sc, __mips16_ret_dc): New.
11123         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
11124         STUB_ARGS_6, STUB_ARGS_10): New.
11125         (CALL_STUB_NO_RET): New.
11126         (__mips16_call_stub_1): Macro-ified.
11127         (__mips16_call_stub_5): Macro-ified.
11128         (__mips16_call_stub_2): Macro-ified.
11129         (__mips16_call_stub_6): Macro-ified.
11130         (__mips16_call_stub_9): Macro-ified.
11131         (__mips16_call_stub_10): Macro-ified.
11132         (CALL_STUB_RET): New.
11133         (__mips16_call_stub_sf_0): Macro-ified.
11134         (__mips16_call_stub_sf_1): Macro-ified.
11135         (__mips16_call_stub_sf_5): Macro-ified.
11136         (__mips16_call_stub_sf_2): Macro-ified.
11137         (__mips16_call_stub_sf_6): Macro-ified.
11138         (__mips16_call_stub_sf_9): Macro-ified.
11139         (__mips16_call_stub_sf_10): Macro-ified.
11140         (__mips16_call_stub_df_0): Macro-ified.
11141         (__mips16_call_stub_df_1): Macro-ified.
11142         (__mips16_call_stub_df_5): Macro-ified.
11143         (__mips16_call_stub_df_2): Macro-ified.
11144         (__mips16_call_stub_df_6): Macro-ified.
11145         (__mips16_call_stub_df_9): Macro-ified.
11146         (__mips16_call_stub_df_10): Macro-ified.
11147         (__mips16_call_stub_sc_0): New.
11148         (__mips16_call_stub_sc_1): New.
11149         (__mips16_call_stub_sc_5): New.
11150         (__mips16_call_stub_sc_2): New.
11151         (__mips16_call_stub_sc_6): New.
11152         (__mips16_call_stub_sc_9): New.
11153         (__mips16_call_stub_sc_10): New.
11154         (__mips16_call_stub_dc_0): New.
11155         (__mips16_call_stub_dc_1): New.
11156         (__mips16_call_stub_dc_5): New.
11157         (__mips16_call_stub_dc_2): New.
11158         (__mips16_call_stub_dc_6): New.
11159         (__mips16_call_stub_dc_9): New.
11160         (__mips16_call_stub_dc_10): New.
11161
11162         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
11163         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
11164         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
11165
11166 2007-05-23  Ian Lance Taylor  <iant@google.com>
11167
11168         * doc/invoke.texi (Invoking GCC): Document that the order of the
11169         -l option matters.
11170
11171 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
11172
11173         PR target/30987
11174         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
11175         * config/score/predicate.md (const_pow2, const_npow2): Remove.
11176         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
11177         undef.
11178
11179         PR target/30474
11180         * config/score/score.c (score_print_operand): Make sure that only
11181         lower bits are used.
11182
11183 2007-05-22  Ian Lance Taylor  <iant@google.com>
11184
11185         * tree-vrp.c (avoid_overflow_infinity): New static function,
11186         broken out of set_value_range_to_value.
11187         (set_value_range_to_value): Call avoid_overflow_infinity.
11188         (extract_range_from_assert): Likewise.
11189
11190 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11191
11192         PR middle-end/31095
11193          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
11194         change the type before looking for a COMPOUND_EXPR.
11195
11196 2007-05-22  Ian Lance Taylor  <iant@google.com>
11197
11198         * lower-subreg.c (decompose_multiword_subregs): If we change an
11199         insn, call remove_retval_note on it.
11200
11201 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
11202
11203         * regs.h (end_hard_regno): New function.
11204         (END_HARD_REGNO, END_REGNO): New macros.
11205         (add_to_hard_reg_set): New function.
11206         (remove_from_hard_reg_set): Likewise.
11207         (in_hard_reg_set_p): Likewise.
11208         (overlaps_hard_reg_set_p): Likewise.
11209         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
11210         (note_btr_set): Use END_HARD_REGNO.
11211         * caller-save.c (setup_save_areas): Use end_hard_regno.
11212         (mark_set_regs): Use END_HARD_REGNO.
11213         (add_stored_regs): Use end_hard_regno.
11214         (mark_referenced_regs): Use add_to_hard_reg_set.
11215         * combine.c (update_table_tick): Use END_REGNO.
11216         (record_value_for_reg): Likewise.
11217         (record_dead_and_set_regs): Likewise.
11218         (get_last_value_validate): Likewise.
11219         (use_crosses_set_p): Likewise.
11220         (reg_dead_at_p_1): Likewise.
11221         (reg_dead_at_p): Likewise.
11222         (mark_used_regs_combine): Use add_to_hard_reg_set.
11223         (move_deaths): Use END_HARD_REGNO.
11224         (reg_bitfield_target_p): Use end_hard_regno.
11225         (distribute_notes): Use END_HARD_REGNO.
11226         * cse.c (mention_regs): Use END_REGNO.
11227         (insert): Use add_to_hard_reg_set.
11228         (invalidate): Use END_HARD_REGNO.
11229         (invalidate_for_call): Likewise.
11230         (exp_equiv_p): Use END_REGNO.
11231         (cse_insn): Likewise.
11232         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
11233         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
11234         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
11235         * function.c (keep_stack_depressed): Use end_hard_regno.
11236         * global.c (global_alloc): Use end_hard_regno.
11237         (global_conflicts): Use add_to_hard_reg_set instead of
11238         mark_reg_live_nc.
11239         (find_reg): Likewise.
11240         (mark_reg_store): Likewise.
11241         (mark_reg_conflicts): Likewise.
11242         (mark_reg_death): Use remove_from_hard_reg_set.
11243         (mark_reg_live_nc): Delete.
11244         (set_preference): Use end_hard_regno.
11245         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
11246         remove_from_hard_reg_set.
11247         (post_mark_life): Use add_to_hard_reg_set.
11248         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
11249         (reg_becomes_live): Use add_to_hard_reg_set.
11250         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
11251         (peep2_find_free_register): Use add_to_hard_reg_set.
11252         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
11253         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
11254         * regrename.c (note_sets): Use add_to_hard_reg_set.
11255         (clear_dead_regs): Use remove_from_hard_reg_set.
11256         (regrename_optimize): Use add_to_hard_reg_set.
11257         (find_oldest_value_reg): Use in_hard_reg_set_p.
11258         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
11259         (hard_reg_set_here_p): Use end_hard_regno.
11260         (decompose): Likewise.
11261         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
11262         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
11263         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
11264         (mark_home_live): Use end_hard_regno.
11265         (spill_hard_reg): Likewise.
11266         (clear_reload_reg_in_use): Likewise.
11267         * reorg.c (delete_prior_computation): Use END_REGNO.
11268         * resource.c (update_live_status): Use END_HARD_REGNO.
11269         (mark_referenced_resources): Use add_to_hard_reg_set.
11270         (mark_set_resources): Likewise.
11271         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
11272         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
11273         (reg_overlap_mentioned_p): Likewise.
11274         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
11275         (covers_regno_no_parallel_p): Use END_REGNO.
11276         (find_regno_note): Likewise.
11277         (find_reg_fusage): Use END_HARD_REGNO.
11278         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
11279         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
11280
11281 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
11282
11283         * mode-switching.c (reg_dies): Change type of second argument to
11284         "HARD_REG_SET *".
11285         (optimize_mode_switching): Update accordingly.
11286
11287 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
11288
11289         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
11290         in favor of...
11291         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
11292         (hard_reg_set_empty_p): ...these new functions.
11293         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
11294         GO_IF_HARD_REG_SUBSET.
11295         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
11296         instead of GO_IF_HARD_REG_EQUAL.
11297         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
11298         instead of GO_IF_HARD_REG_EQUAL.
11299         * global.c (find_reg): Use hard_reg_set_empty_p instead of
11300         GO_IF_HARD_REG_SUBSET.
11301         (modify_reg_pav): Use hard_reg_set_empty_p instead of
11302         GO_IF_HARD_REG_EQUAL.
11303         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
11304         of GO_IF_HARD_REG_SUBSET.
11305         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
11306         instead of GO_IF_HARD_REG_EQUAL.
11307         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
11308         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
11309         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
11310         of GO_IF_HARD_REG_SUBSET,
11311         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
11312         GO_IF_HARD_REG_SUBSET.
11313         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
11314         instead of GO_IF_HARD_REG_EQUAL.
11315         * config/sh/sh.c (push_regs, calc_live_regs): Use
11316         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
11317         (hard_regs_intersect_p): Delete.
11318
11319 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
11320
11321         * doc/sourcebuild.texi (Test Directives) Add dg-message.
11322
11323 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
11324             Richard Henderson  <rth@redhat.com>
11325
11326         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
11327         extra_headers.
11328         (x86_64-*-*): Likewise.
11329
11330         * i386/i386-modes.def (V2QI): New.
11331
11332         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
11333         SSE4A.
11334         (override_options): Support SSE4.1.
11335         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
11336         (IX86_BUILTIN_BLENDPS): Likewise.
11337         (IX86_BUILTIN_BLENDVPD): Likewise.
11338         (IX86_BUILTIN_BLENDVPS): Likewise.
11339         (IX86_BUILTIN_PBLENDVB128): Likewise.
11340         (IX86_BUILTIN_PBLENDW128): Likewise.
11341         (IX86_BUILTIN_DPPD): Likewise.
11342         (IX86_BUILTIN_DPPS): Likewise.
11343         (IX86_BUILTIN_INSERTPS128): Likewise.
11344         (IX86_BUILTIN_MOVNTDQA): Likewise.
11345         (IX86_BUILTIN_MPSADBW128): Likewise.
11346         (IX86_BUILTIN_PACKUSDW128): Likewise.
11347         (IX86_BUILTIN_PCMPEQQ): Likewise.
11348         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
11349         (IX86_BUILTIN_PMAXSB128): Likewise.
11350         (IX86_BUILTIN_PMAXSD128): Likewise.
11351         (IX86_BUILTIN_PMAXUD128): Likewise.
11352         (IX86_BUILTIN_PMAXUW128): Likewise.
11353         (IX86_BUILTIN_PMINSB128): Likewise.
11354         (IX86_BUILTIN_PMINSD128): Likewise.
11355         (IX86_BUILTIN_PMINUD128): Likewise.
11356         (IX86_BUILTIN_PMINUW128): Likewise.
11357         (IX86_BUILTIN_PMOVSXBW128): Likewise.
11358         (IX86_BUILTIN_PMOVSXBD128): Likewise.
11359         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
11360         (IX86_BUILTIN_PMOVSXWD128): Likewise.
11361         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
11362         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
11363         (IX86_BUILTIN_PMOVZXBW128): Likewise.
11364         (IX86_BUILTIN_PMOVZXBD128): Likewise.
11365         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
11366         (IX86_BUILTIN_PMOVZXWD128): Likewise.
11367         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
11368         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
11369         (IX86_BUILTIN_PMULDQ128): Likewise.
11370         (IX86_BUILTIN_PMULLD128): Likewise.
11371         (IX86_BUILTIN_ROUNDPD): Likewise.
11372         (IX86_BUILTIN_ROUNDPS): Likewise.
11373         (IX86_BUILTIN_ROUNDSD): Likewise.
11374         (IX86_BUILTIN_ROUNDSS): Likewise.
11375         (IX86_BUILTIN_PTESTZ): Likewise.
11376         (IX86_BUILTIN_PTESTC): Likewise.
11377         (IX86_BUILTIN_PTESTNZC): Likewise.
11378         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
11379         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
11380         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
11381         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
11382         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
11383         (bdesc_ptest): New.
11384         (bdesc_sse_3arg): Likewise.
11385         (bdesc_2arg): Likewise.
11386         (bdesc_1arg): Likewise.
11387         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
11388         with 3 args.
11389         (ix86_expand_sse_4_operands_builtin): New.
11390         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
11391         smaller than 8 bits as the 2nd arg.
11392         (ix86_expand_sse_ptest): New.
11393         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
11394         (ix86_expand_vector_set): Support SSE4.1.
11395         (ix86_expand_vector_extract): Likewise.
11396
11397         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
11398         __SSE4_1__ for -msse4.1.
11399
11400         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
11401         (UNSPEC_INSERTPS): Likewise.
11402         (UNSPEC_DP): Likewise.
11403         (UNSPEC_MOVNTDQA): Likewise.
11404         (UNSPEC_MPSADBW): Likewise.
11405         (UNSPEC_PHMINPOSUW): Likewise.
11406         (UNSPEC_PTEST): Likewise.
11407         (UNSPEC_ROUNDP): Likewise.
11408         (UNSPEC_ROUNDS): Likewise.
11409
11410         * config/i386/i386.opt (msse4.1): New for SSE4.1.
11411
11412         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
11413         (const_pow2_1_to_32768_operand): Likewise.
11414
11415         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
11416         file.
11417
11418         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
11419         SSE4.1.
11420         (sse4_1_insertps): Likewise.
11421         (*sse4_1_extractps): Likewise.
11422         (sse4_1_ptest): Likewise.
11423         (sse4_1_mulv2siv2di3): Likewise.
11424         (*sse4_1_mulv4si3): Likewise.
11425         (*sse4_1_smax<mode>3): Likewise.
11426         (*sse4_1_umax<mode>3): Likewise.
11427         (*sse4_1_smin<mode>3): Likewise.
11428         (*sse4_1_umin<mode>3): Likewise.
11429         (sse4_1_eqv2di3): Likewise.
11430         (*sse4_1_pinsrb): Likewise.
11431         (*sse4_1_pinsrd): Likewise.
11432         (*sse4_1_pinsrq): Likewise.
11433         (*sse4_1_pextrb): Likewise.
11434         (*sse4_1_pextrb_memory): Likewise.
11435         (*sse4_1_pextrw_memory): Likewise.
11436         (*sse4_1_pextrq): Likewise.
11437         (sse4_1_blendpd): Likewise.
11438         (sse4_1_blendps): Likewise.
11439         (sse4_1_blendvpd): Likewise.
11440         (sse4_1_blendvps): Likewise.
11441         (sse4_1_dppd): Likewise.
11442         (sse4_1_dpps): Likewise.
11443         (sse4_1_movntdqa): Likewise.
11444         (sse4_1_mpsadbw): Likewise.
11445         (sse4_1_packusdw): Likewise.
11446         (sse4_1_pblendvb): Likewise.
11447         (sse4_1_pblendw): Likewise.
11448         (sse4_1_phminposuw): Likewise.
11449         (sse4_1_extendv8qiv8hi2): Likewise.
11450         (*sse4_1_extendv8qiv8hi2): Likewise.
11451         (sse4_1_extendv4qiv4si2): Likewise.
11452         (*sse4_1_extendv4qiv4si2): Likewise.
11453         (sse4_1_extendv2qiv2di2): Likewise.
11454         (*sse4_1_extendv2qiv2di2): Likewise.
11455         (sse4_1_extendv4hiv4si2): Likewise.
11456         (*sse4_1_extendv4hiv4si2): Likewise.
11457         (sse4_1_extendv2hiv2di2): Likewise.
11458         (*sse4_1_extendv2hiv2di2): Likewise.
11459         (sse4_1_extendv2siv2di2): Likewise.
11460         (*sse4_1_extendv2siv2di2): Likewise.
11461         (sse4_1_zero_extendv8qiv8hi2): Likewise.
11462         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
11463         (sse4_1_zero_extendv4qiv4si2): Likewise.
11464         (*sse4_1_zero_extendv4qiv4si2): Likewise.
11465         (sse4_1_zero_extendv2qiv2di2): Likewise.
11466         (*sse4_1_zero_extendv2qiv2di2): Likewise.
11467         (sse4_1_zero_extendv4hiv4si2): Likewise.
11468         (*sse4_1_zero_extendv4hiv4si2): Likewise.
11469         (sse4_1_zero_extendv2hiv2di2): Likewise.
11470         (*sse4_1_zero_extendv2hiv2di2): Likewise.
11471         (sse4_1_zero_extendv2siv2di2): Likewise.
11472         (*sse4_1_zero_extendv2siv2di2): Likewise.
11473         (sse4_1_roundpd): Likewise.
11474         (sse4_1_roundps): Likewise.
11475         (sse4_1_roundsd): Likewise.
11476         (sse4_1_roundss): Likewise.
11477         (mulv4si3): Don't expand for SSE4.1.
11478         (smax<mode>3): Likewise.
11479         (umaxv4si3): Likewise.
11480         (uminv16qi3): Likewise.
11481         (umin<mode>3): Likewise.
11482         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
11483
11484         * doc/extend.texi: Document SSE4.1 built-in functions.
11485
11486         * doc/invoke.texi: Document -msse4.1.
11487
11488 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
11489
11490         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
11491         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
11492         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
11493         (ASM_SPEC): Add asm_pcrel_spec.
11494         (EXTRA_SPECS): Add asm_pcrel_spec.
11495
11496 2007-05-21  David Daney  <ddaney@avtrex.com>
11497
11498         * doc/install.texi (Building a cross compiler): Add requirements
11499         for Java cross compiler.
11500
11501 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11502
11503         PR middle-end/31995
11504         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
11505         Add loopno argument.  Use evolution_function_is_invariant_rec_p
11506         instead of evolution_function_is_constant_p.
11507         Update calls to evolution_function_is_affine_multivariate_p.
11508         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
11509         Add loopno argument.
11510         * tree-scalar-evolution.c (gather_chrec_stats): Call
11511         evolution_function_is_affine_multivariate_p with a loop
11512         number of 0.
11513         * tree-data-ref.c (analyze_miv_subscript): Likewise.
11514         (analyze_overlapping_iterations): Likewise.
11515         (access_functions_are_affine_or_constant_p): Likewise.
11516         (build_classic_dist_vector_1): If the access functions
11517         are equal, don't do anything.
11518
11519 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
11520             Paolo Carlini  <pcarlini@suse.de>
11521             Uros Bizjak  <ubizjak@gmail.com>
11522
11523         * c-cppbuiltin.c (c_cpp_builtins): Define
11524         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
11525         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
11526         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
11527         * doc/cpp.texi ([Standard Predefined Macros]): Document.
11528
11529 2007-05-21  Mike Stump  <mrs@apple.com>
11530
11531         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
11532         handling as well.
11533         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
11534
11535 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
11536
11537         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
11538         implementation if __OPTIMIZE__ is not defined.
11539         (_mm_alignr_pi8): Ditto.
11540         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
11541         (_mm_inserti_si64): Ditto.
11542         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
11543         (_mm_slli_epi16): Ditto.
11544         (_mm_slli_epi32): Ditto.
11545         (_mm_slli_epi64): Ditto.
11546         (_mm_srai_epi16): Ditto.
11547         (_mm_srai_epi32): Ditto.
11548         (_mm_srli_si128): Ditto.
11549         (_mm_slli_si128): Ditto.
11550         (_mm_srli_epi16): Ditto.
11551         (_mm_srli_epi32): Ditto.
11552         (_mm_srli_epi64): Ditto.
11553         (_mm_extract_epi16): Ditto.
11554         (_mm_insert_epi16): Ditto.
11555         (_mm_shufflehi_epi16): Ditto.
11556         (_mm_shufflelo_epi16): Ditto.
11557         (_mm_shuffle_epi32): Ditto.
11558         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
11559         (_m_pextrw): Ditto.
11560         (_mm_insert_pi16): Ditto.
11561         (_m_pinsrw): Ditto.
11562         (_mm_shuffle_pi16): Ditto.
11563         (_m_pshufw): Ditto.
11564         (_mm_shufle_ps): Ditto.
11565         (_mm_prefetch): Ditto.
11566
11567 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
11568
11569         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
11570         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
11571         * real.c (encode_i370_single, decode_i370_single,
11572         encode_i370_double, decode_i370_double): Functions removed.
11573         (i370_single_format, i370_double_format): Initializations removed.
11574         (real_maxval, round_for_format, exact_real_truncate, significand_size):
11575         Consider the log2_b field to always be one.
11576         (ieee_single_format, mips_single_format, coldfire_single_format,
11577         ieee_double_format, mips_double_format, coldfire_double_format,
11578         ieee_extended_motorola_format, ieee_extended_intel_96_format,
11579         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
11580         ibm_extended_format, mips_extended_format, ieee_quad_format,
11581         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
11582         decimal_single_format, decimal_double_format, decimal_quad_format,
11583         c4x_single_format, c4x_extended_format, real_internal_format): Remove
11584         initialization of log2_b.
11585         * real.h (i370_single_format, i370_double_format): Declarations
11586         removed.
11587         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
11588         field to always be one.
11589
11590 2007-05-21  Andreas Schwab  <schwab@suse.de>
11591
11592         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
11593         NOTE_INSN_BASIC_BLOCK_P.
11594         (process_for_unwind_directive): Likewise.
11595
11596 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
11597
11598         * builtins.c (expand_builtin_setjmp_setup): Update comment.
11599         * function.h (struct function): Move va_list_gpr_size,
11600         va_list_fpr_size, function_frequency to front of bitfields.  Add
11601         calls_unwind_init.
11602         (current_function_calls_unwind_init): New.
11603         * except.c (expand_builtin_unwind_init): Set
11604         current_function_calls_unwind_init not
11605         current_function_has_nonlocal_label.
11606         * reload1.c (has_nonexceptional_receiver): New.
11607         (reload): Use it and current_function_calls_unwind_init to
11608         determine whether call-saved regs must be saved.
11609
11610 2007-05-20  Jan Hubicka  <jh@suse.cz>
11611
11612         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
11613         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
11614         * ddg.c (create_ddg): LIkewise.
11615         * final.c (final): Remove hunk moving line number notes around since
11616         they are no longer present at this stage.
11617         (final_scan_insn): Use NOTE_KIND instead of
11618         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
11619         (output_asm_label): Likewise.
11620         * reorg.c (dbr_schedule): Likewise.
11621         * haifa-sched.c (unlink_other_notes): Likewise.
11622         * mode-switching.c (optimize_mode_switching): Likewise.
11623         * graph.c (start_bb): Likewise.
11624         * rtl.def (NOTE): Update description.
11625         * jump.c (squeeze_notes): Delete.
11626         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
11627         NOTE_INSN_BASIC_BLOCK_P when possible.
11628         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
11629         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
11630         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
11631         (dwarf2out_var_location): Likewise.
11632         * cfgbuild.c (make_edges): Likewise.
11633         (find_basic_blocks_1): Likewise.
11634         * function.c (reorder_blocks_1): Likewise.
11635         (epilogue_done): Likewise.
11636         (reposition_prologue_and_epilogue_notes): Likewise.
11637         * print-rtl.c (print_rtx): Likewise; drop code for printing
11638         line number notes.
11639         (print_rtl): Likewise.
11640         (print_rtl_single): Likewise.
11641         * gcse.c (insert_insn_start_bb): Likewise.
11642         * alias.c (init_alias_analysis): Likewise.
11643         * calls.c (fixup_tail_calls): Likewise.
11644         * except.c (sjlj_emit_function_enter): Likewise.
11645         * emit-rtl.c (add_insn_after): Likeiwse.
11646         (emit_label_before): Likewise.
11647         (emit_label_after): Likewise.
11648         (emit_note_before, emit_note_after, emit_note): Update
11649         parameter to be enum insn_note; do not deal with source
11650         files.
11651         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
11652         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
11653         when possible.
11654         (merge_blocks_move_successor_nojumps): Simplify now when
11655         we don't have BLOCK notes.
11656         (try_optimize_cfg): Likewise.
11657         * cfglayout.c (skip_insns_after_block): Likewise.
11658         (record_effective_endpoints): Likewise.
11659         (duplicate_insn_chain): Likewise.
11660         * varasm.c (output_constant_pool_1): Likewise.
11661         * sched-deps.c (sched_analyze): Likewise.
11662         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
11663         Exterminate.
11664         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
11665         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
11666         (SET_INSN_DELETED): Simplify.
11667         (NOTE_LINE_NUMBER): Exterminate.
11668         (NOTE_LINE_KIND): New.
11669         (NOTE_INSN_BASIC_BLOCK_P): Update.
11670         (enum insn_note): Simplify.
11671         (GET_NOTE_INSN_NAME) Simplify.
11672         (emit_note_before, emit_note_after, emit_note): Update prototype.
11673         (squeeze_notes): Remove.
11674         * sched-int.h (NOTE_NOT_BB_P): Update.
11675         * resource.c (mark_target_live_regs): Update.
11676         * sched-rgn.c (debug_dependencies): Update.
11677         * sched-vis.c (print_insn): Update.
11678         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
11679         * config/i386/i386.c (ix86_output_function_epilogue): Update.
11680         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
11681         (TARGET_ADJUST_UNROLL_MAX): Likewise.
11682         (split_branches): Update.
11683         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
11684         4.0.0.
11685         (sh_adjust_unroll_max): Exterminate.
11686         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
11687         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
11688         (m68hc11_reorg): Likewise.
11689         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
11690         (emit_predicate_relation_info): Update.
11691         (process_for_unwind_directive): Update.
11692         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
11693         (output_call): Update.
11694         * config/pa/pa.c (output_lbranch): Update.
11695         (output_millicode_call): Update.
11696         (output_call): Update.
11697         (pa_combine_instructions): Update.
11698         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
11699         * config/bfin/bfin.c (gen_one_bundle): Update.
11700         * cfgrtl.c (can_delete_note_p): Update.
11701         (delete_insn): Update.
11702         (rtl_merge_blocks): Update.
11703         (commit_one_edge_insertion): Update.
11704         (rtl_verify_flow_info): Update.
11705         * stmt.c (expand_case): Do not call squeeze_notes.
11706
11707 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11708
11709         PR middle-end/7651
11710         PR c++/11856
11711         PR c/12963
11712         PR c/23587
11713         PR other/29694
11714         * c.opt (Wtype-limits): New.
11715         * doc/invoke.texi (Wtype-limits): Document it.
11716         (Wextra): Enabled by -Wextra.
11717         * c-opts.c (c_common_post_options): Enabled by -Wextra.
11718         * c-common.c (shorten_compare): Warn with Wtype-limits.
11719
11720 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
11721
11722         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
11723         inlined function, not as a macro.
11724         (_mm_alignr_pi8): Ditto.
11725         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
11726         (_mm_inserti_si64): Ditto.
11727         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
11728         (_mm_extract_epi16): Ditto.
11729         (_mm_insert_epi16): Ditto.
11730         (_mm_shufflehi_epi16): Ditto.
11731         (_mm_shufflelo_epi16): Ditto.
11732         (_mm_shuffle_epi32): Ditto.
11733         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
11734         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
11735         all functions.
11736         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
11737         float constant.
11738         (_m_to_float): Use C89 compatible assignment.
11739
11740 2007-05-20  Martin Michlmayr  <tbm@cyrius.com>
11741
11742         PR target/32007
11743         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
11744
11745 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11746
11747         PR middle-end/7651
11748         * doc/invoke.texi (Wreturn-type): Complete description.
11749         (Wextra): Delete item about return-type warning.
11750         * c-decl.c: Delete redundant Wextra warning.
11751
11752 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
11753
11754         PR target/31585
11755         * config/i386/pmmintrin.h: Do not include xmmintrin.h
11756         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
11757         inlined function, not as a macro.
11758         (_mm_prefetch): Ditto.
11759         (_m_pextrw): Ditto.
11760         (_mm_insert_pi16): Ditto.
11761         (_m_pinsrw): Ditto.
11762         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
11763         (_m_pshufw): Ditto. Add const to __N argument.
11764         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
11765         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
11766         (_mm_slli_epi32): Ditto.
11767         (_mm_srli_si128): Implement as always inlined function, not as a
11768         macro.  Add __inline to function declaration.
11769         (_mm_slli_si128): Ditto.
11770
11771 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
11772
11773         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
11774         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
11775         New constants.
11776         (struct fenv): New structure.
11777         (FP_HANDLE_EXCEPTIONS): New define.
11778         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
11779         (_FP_DECL_EXP): New define.
11780         (FP_INIT_ROUNDMODE): New define.
11781         (FP_ROUNDMODE): New define.
11782
11783 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11784
11785         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
11786         (Wconversion): Update description.
11787         (Wconversion-sign): New.
11788         * c.opt (Wconversion-sign): New.
11789         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
11790         means disabled for C++. Otherwise, take the status of Wconversion.
11791         * c-common.c (conversion_warning): Warn with either Wconversion or
11792         Wconversion-sign.
11793         (warnings_for_convert_and_check): Conditions are already checked by
11794         conversion_warning.
11795         (convert_and_check): Don't check warnings if the conversion failed.
11796
11797 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
11798            Anatoly Sokolov <aesok@dol.ru>
11799
11800         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
11801         avr_epilogue_uses) : Add declaration.
11802         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
11803         * config/avr/constraints.md (R): New constraint.
11804         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
11805         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
11806         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
11807         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
11808         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
11809         call_prologue_saves, epilogue_restores, return_from_epilogue,
11810         return_from_main_epilogue, return_from_interrupt_epilogue,
11811         return_from_naked_epilogue, prologue, epilogue): New patterns.
11812         (jump): Handle symbol reference.
11813         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
11814         avr_output_function_prologue, avr_output_function_epilogue): Remove
11815         functions.
11816         (avr_init_machine_status, expand_prologue, expand_epilogue,
11817         avr_asm_function_end_prologue, avr_epilogue_uses,
11818         avr_asm_function_begin_epilogue): New functions.
11819         (prologue_size, epilogue_size, jump_tables_size): Remove global
11820         variables.
11821         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
11822         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
11823         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
11824         (avr_override_options): Initialise init_machine_status.
11825         (output_movhi): Handle all stack pointer loads.
11826         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
11827         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
11828         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
11829         (EPILOGUE_USES) Redefine.
11830         (machine_function) Declare.
11831
11832 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
11833
11834         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
11835         Use a single return statement.
11836
11837 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11838
11839         PR middle-end/30250
11840         * builtins.c (do_mpfr_lgamma_r): New.
11841         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
11842         * tree.h (CASE_FLT_FN_REENT): New.
11843
11844 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
11845
11846         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
11847         (output_die): Use 'unsigned long' with %x.
11848         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
11849         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
11850         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
11851
11852         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
11853
11854 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
11855
11856         PR target/31989
11857         PR target/31681
11858         PR target/31666
11859         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
11860         true if function has no argument.
11861
11862 2007-05-18  DJ Delorie  <dj@redhat.com>
11863
11864         * config/mips/mips.c (mips_offset_within_alignment_p): New.
11865         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
11866
11867 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
11868
11869         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
11870         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
11871         count_trailing_zeros.
11872         (__i386__): Implement count_leading_zeros using __builtin_clz().
11873         Implement count_trailing_zeros usign __builtin_ctz().
11874
11875 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
11876
11877         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
11878
11879 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
11880
11881         PR middle-end/31344
11882         * expr.c (emit_move_change_mode): Change mode of push operands here.
11883
11884 2007-05-17  Ian Lance Taylor  <iant@google.com>
11885
11886         PR tree-optimization/31953
11887         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
11888         Change all callers.
11889         (set_value_range_to_null): Call set_value_range_to_value.
11890         (extract_range_from_comparison): Likewise.
11891
11892 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11893
11894         * toplev.c (print_version): Output GMP/MPFR version info.
11895
11896         * builtins.c (CASE_MATHFN_REENT): New macro.
11897         (mathfn_built_in): Use it.
11898         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
11899         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
11900         BUILT_IN_LGAMMAL_R): New.
11901         * doc/extend.texi: Document new builtins.
11902
11903         PR middle-end/31796
11904         * builtins.c (do_mpfr_remquo): New.
11905         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
11906         (fold_builtin_3): Handle BUILT_IN_REMQUO.
11907
11908         PR middle-end/30251
11909         * builtins.c (fold_builtin_1): Handle y0, y1.
11910         (fold_builtin_2): Handle yn.
11911
11912         PR middle-end/30251
11913         * builtins.c (do_mpfr_bessel_n): New.
11914         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
11915         (fold_builtin_2): Handle BUILT_IN_JN.
11916
11917 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
11918
11919         PR target/31965
11920         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
11921         TYPE_PRECISION (intmax_type_node).
11922
11923 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
11924
11925         PR target/31850
11926         * reload.c (subst_reloads): Remove checking.
11927
11928 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
11929
11930         PR rtl-optimization/31691
11931         * combine.c (simplify_set): Build a new src pattern instead of
11932         substituting its operands in the COMPARE case.
11933
11934 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
11935
11936         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
11937         (execute_vrp): Preserve loops through jump threading.
11938         * tree-ssa-threadupdate.c (thread_single_edge,
11939         dbds_continue_enumeration_p, determine_bb_domination_status,
11940         thread_through_loop_header): New functions.
11941         (create_edge_and_update_destination_phis,
11942         create_edge_and_update_destination_phis): Set loops for the new blocks.
11943         (prune_undesirable_thread_requests): Removed.
11944         (redirect_edges): Do not pretend that redirect_edge_and_branch can
11945         create new blocks.
11946         (thread_block): Do not call prune_undesirable_thread_requests.
11947         Update loops.
11948         (mark_threaded_blocks): Select edges to thread here.
11949         (thread_through_all_blocks): Take may_peel_loop_headers argument.
11950         Thread edges through loop headers independently.
11951         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
11952         * tree-pass.h (TODO_mark_first_instance): New.
11953         (first_pass_instance): Declare.
11954         * cfghooks.c (duplicate_block): Put the block to the original loop
11955         if copy is not specified.
11956         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
11957         jump threading.  Pass may_peel_loop_headers to
11958         thread_through_all_blocks according to first_pass_instance.
11959         * cfgloop.h (create_preheader): Declare.
11960         * tree-flow.h (thread_through_all_blocks): Declaration changed.
11961         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
11962         * passes.c (first_pass_instance): New variable.
11963         (next_pass_1): Set TODO_mark_first_instance.
11964         (execute_todo): Set first_pass_instance.
11965
11966 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
11967
11968         PR tree-optimization/24659
11969         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
11970         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
11971         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
11972         OTI_vec_pack_ufix_trunc.
11973         (vec_unpacks_float_hi_optab): Define new macro.
11974         (vec_unpacks_float_lo_optab): Ditto.
11975         (vec_unpacku_float_hi_optab): Ditto.
11976         (vec_unpacku_float_lo_optab): Ditto.
11977         (vec_pack_sfix_trunc_optab): Ditto.
11978         (vec_pack_ufix_trunc_optab): Ditto.
11979         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
11980         and vec_pack_[s|u]fix_trunc_optab using
11981         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
11982         * tree-vectorizer.c (supportable_widening_operation): Handle
11983         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
11984         (supportable_narrowing_operation): New function.
11985         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
11986         * tree-vect-transform.c (vectorizable_conversion): Handle
11987         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
11988         (vect_gen_widened_results_half): Move before vectorizable_conversion.
11989         (vectorizable_type_demotion): Call supportable_narrowing_operation()
11990         to check for target support.
11991         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
11992         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
11993         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
11994         for VEC_PACK_FIX_TRUNC_EXPR.
11995         (expand_binop): Special case mode of the result for
11996         vec_pack_[u|s]fix_trunc_optab.
11997         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
11998         vec_pack_[u|s]fix_trunc_optab.
11999
12000         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
12001         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
12002         * tree-pretty-print.c (dump_generic_node): Handle
12003         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
12004         VEC_PACK_FIX_TRUNC_EXPR.
12005         (op_prio): Ditto.
12006         * expr.c (expand_expr_real_1): Ditto.
12007         * tree-inline.c (estimate_num_insns_1): Ditto.
12008         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
12009
12010         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
12011         (vec_unpacks_float_lo_v8hi): Ditto.
12012         (vec_unpacku_float_hi_v8hi): Ditto.
12013         (vec_unpacku_float_lo_v8hi): Ditto.
12014         (vec_unpacks_float_hi_v4si): Ditto.
12015         (vec_unpacks_float_lo_v4si): Ditto.
12016         (vec_pack_sfix_trunc_v2df): Ditto.
12017
12018         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
12019         Document.
12020         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
12021         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
12022         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
12023         [vec_pack_ufix_trunc]: Ditto.
12024         [vec_unpacks_float_hi]: Ditto.
12025         [vec_unpacks_float_lo]: Ditto.
12026         [vec_unpacku_float_hi]: Ditto.
12027         [vec_unpacku_float_lo]: Ditto.
12028
12029 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
12030
12031         * soft-fp/README: Update for new files.
12032         * soft-fp/floattisf.c: New file.
12033         * soft-fp/floattidf.c: New file.
12034         * soft-fp/floattitf.c: New file.
12035         * soft-fp/floatuntisf.c: New file.
12036         * soft-fp/floatuntidf.c: New file.
12037         * soft-fp/floatuntitf.c: New file.
12038         * soft-fp/fixsfti.c: New file.
12039         * soft-fp/fixdfti.c: New file.
12040         * soft-fp/fixtfti.c: New file.
12041         * soft-fp/fixunssfti.c: New file.
12042         * soft-fp/fixunsdfti.c: New file.
12043         * soft-fp/fixunstfti.c: New file.
12044         * soft-fp/extendxftf.c: New file.
12045         * soft-fp/trunctfxf.c: New file.
12046
12047         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
12048         (__trunctfxf2): Ditto.
12049
12050         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
12051         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
12052         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
12053         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
12054         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
12055         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
12056
12057         * config/i386/t-fprules-softfp64: New file.
12058         * config/i386/sfp-machine.h: New file.
12059         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
12060         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
12061         and soft-fp/t-softfp to tmake_file.
12062         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
12063         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
12064
12065         * config/i386/t-linux64 (softfp_wrap_start): New.
12066         (softfp_wrap_end): New.
12067         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
12068         supported for TARGET_64BIT.
12069
12070 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
12071
12072         * c-common.c (c_common_signed_or_unsigned_type): Emulate
12073         c_common_unsigned_type behavior.
12074
12075 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
12076
12077         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
12078         calls as pure.
12079
12080 2007-05-16  Eric Christopher  <echristo@apple.com>
12081
12082         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
12083         saving after stack push. Set sp_offset whenever we push.
12084         (rs6000_emit_epilogue): Move altivec register restore before
12085         stack push.
12086
12087 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
12088
12089         * configure.ac: Allow sysroots to be relocated under $prefix as
12090         well as $exec_prefix.
12091         * configure: Regenerate.
12092
12093 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
12094
12095         Revert:
12096
12097         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
12098
12099         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
12100         (gcc_tooldir): Likewise.
12101         * configure: Regenerate.
12102         * Makefile.in (libsubdir_to_prefix): New variable, based on the
12103         old configure.ac gcc_tooldir setting.
12104         (prefix_to_exec_prefix): New variable.
12105         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
12106         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
12107
12108 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
12109
12110         * c-typeck.c (build_binary_op): Return early for error.
12111
12112 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
12113
12114         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
12115         struct nb_iter_bound.
12116         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
12117         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
12118         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
12119         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
12120         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
12121         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
12122         (del_scev_info): Use ggc_free.
12123         (scev_initialize): Allocate scalar_evolution_info in gc memory.
12124         * loop-init.c: Include ggc.h.
12125         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
12126         (loop_optimizer_finalize): Use ggc_free.
12127         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
12128         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
12129         pass_iv_optimize): Add TODO_ggc_collect.
12130         * function.h (struct function): Remove skip marker from
12131         x_current_loops.
12132         * cfgloop.c: Include ggc.h.
12133         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
12134         memory.
12135         (establish_preds): Vector superloops is gc allocated.
12136         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
12137         loop->exits list.
12138         (flow_loops_find): Vector larray is gc allocated.
12139         (loop_exit_free): Use ggc_free.
12140         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
12141         that head of exits list is now not a part of struct loop.
12142         (record_loop_exits): Allocate exits table in gc memory.
12143         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect
12144         that head of exits list is now not a part of struct loop.
12145         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
12146         struct loop_exit): Add GTY marker.
12147         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
12148         Add skip marker to aux field.  Make head of exits list a separate
12149         object.
12150         (struct loops): Add GTY marker.  Make larray vector gc allocated.
12151         Add param marker to exits table.
12152         (get_loops): Type changed.
12153         * Makefile.in (tree-scalar-evolution.o): Add
12154         gt-tree-scalar-evolution.h dependency.
12155         (cfgloop.o, loop-init.o): Add ggc.h dependency.
12156         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
12157         * basic-block.h (struct basic_block_def): Remove skip marker from
12158         loop_father field.
12159
12160 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
12161
12162         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
12163         of 0 in the call to expand_expr().
12164         (expand_builtin_mathfn_3): Ditto.
12165         (expand_builtin_interclass_mathfn): Ditto.
12166         (expand_builtin_cexpi): Ditto.
12167         (expand_builtin_int_roundingfn): Ditto.
12168         (expand_builtin_int_roundingfn_2): Ditto.
12169         (expand_builtin_pow): Ditto.
12170         (expand_builtin_powi): Ditto.
12171         (expand_builtin_bswap): Ditto.
12172         (expand_builtin_unop): Ditto.
12173         (expand_builtin_fabs): Ditto.
12174         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
12175         the call to expand_expr().
12176         (expand_builtin_sync_operation): Ditto.
12177         (expand_builtin_compare_and_swap): Ditto.
12178         (expand_builtin_lock_test_and_set): Ditto.
12179         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
12180         instead of 0 in the call to expand_expr().
12181         (expand_builtin_extract_return_addr): Ditto.
12182         (expand_builtin_eh_return): Ditto.
12183         (expand_eh_return): Ditto.
12184         * explow.c (expr_size): Ditto.
12185         * expr.c (optimize_bitfield_assignment_op): Ditto.
12186         (expand_assignement): Ditto.
12187         (store_expr): Ditto.
12188         (store_field): Ditto.
12189         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
12190         the call to expand_expr().
12191         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
12192         in the call to expand_expr().
12193         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
12194         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
12195         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
12196         of expand_expr().
12197         * optabs.c (expand_vec_shift_expr): Ditto.
12198         (expand_vec_cond_expr): Ditto.
12199         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
12200         call to expand_expr().
12201         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
12202         in the call to expand_expr().
12203
12204 2007-05-14  Dave Korn  <dave.korn@artimi.com>
12205
12206         * genautomata.c (gen_regexp_el):  Allocate correct size for regexp.
12207
12208 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
12209
12210         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
12211         instead of c_common_unsigned_type.
12212         (c_common_unsigned_type): Remove.
12213         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
12214         c_common_unsigned_type.
12215         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
12216         c_common_unsigned_type.
12217         * c-common.h (c_common_unsigned_type): Remove.
12218         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
12219         c_common_unsigned_type.
12220         * c-format.c (check_format_types): Use unsigned_type_for instead of
12221         c_common_unsigned_type.
12222         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
12223         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead
12224         of c_common_unsigned_type.
12225         * convert.c (convert_to_integer): Use unsigned_type_for instead of
12226         lang_hooks.types.unsigned_type.
12227         * expmed.c (make_tree): Use unsigned_type_for instead of
12228         lang_hooks.types.unsigned_type.
12229         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
12230         lang_hooks.types.unsigned_type.
12231         (build_range_check): Likewise.
12232         (fold_unary): Likewise.
12233         (fold_binary): Likewise.
12234         (fold_ternary): Likewise.
12235         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
12236         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
12237         * tree.c (get_unsigned_type): New.
12238         (unsigned_type_for): Use get_unsigned_type instead of
12239         lang_hooks.types.unsigned_type.
12240
12241 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
12242
12243         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
12244         to m68k_get_function_kind.  Update its prototype.
12245         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
12246         interrupt_thread.
12247         (m68k_interrupt_function_p): Return enum m68k_function_type
12248         instead of bool.  Rename to m68k_get_function_kind.
12249         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
12250         target is not fido.
12251         (m68k_compute_frame_layout): Don't mark any register for save
12252         if an interrupt_thread attribute is specified.
12253         (m68k_hard_regno_rename_ok): Update a use of
12254         m68k_interrupt_function_p.
12255         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
12256         m68k_interrupt_function_p.
12257         (m68k_function_type): New.
12258         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
12259         for a function with an interrupt_thread attribute.
12260         * doc/extend.texi: Document the interrupt_thread attribute.
12261
12262 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
12263
12264         Fix PR tree-optimization/31911
12265         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
12266         if they didn't change the expression.
12267
12268 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
12269
12270         * tree-scalar-evolution.c (resolve_mixers): Exported.
12271         * tree-scalar-evolution.h (resolve_mixers): Declare.
12272         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
12273         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
12274         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
12275         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
12276         init_array_ref, init_pointer_ref, analyze_indirect_ref,
12277         strip_conversion, analyze_offset_expr, address_analysis,
12278         object_analysis, analyze_offset): Removed.
12279         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
12280         split_constant_offset, canonicalize_base_object_address,
12281         object_address_invariant_in_loop_p, disjoint_objects_p,
12282         dr_may_alias_p, dr_address_invariant_p): New functions.
12283         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
12284         and dr_analyze_alias.
12285         (initialize_data_dependence_relation): Use dr_may_alias_p
12286         and object_address_invariant_in_loop_p.
12287         (compute_self_dependence): Handle the case when
12288         DDR_ARE_DEPENDENT (ddr) is chrec_dont_know.
12289         (find_data_references_in_stmt): Restrict the analysis of data
12290         references to the given loop nest.
12291         (find_data_references_in_loop): Made static.  Pass loop nest to
12292         find_data_references_in_stmt.
12293         (compute_data_dependences_for_loop): Use DR_VOPS.
12294         (free_data_ref): Free DR_VOPS.
12295         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
12296         (struct innermost_loop_behavior): ... new.
12297         (struct base_object_info): Replaced by ...
12298         (struct indices): ... new.
12299         (struct dr_alias): New.
12300         (enum data_ref_type): Removed.
12301         (struct data_reference): Consist of struct innermost_loop_behavior,
12302         struct indices and struct dr_alias.
12303         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
12304         (DR_MEMTAG): Renamed to ...
12305         (DR_SYMBOL_TAG): ... this.
12306         (find_data_references_in_loop): Declaration removed.
12307         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
12308         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
12309         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
12310         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
12311
12312 2007-05-13  Revital Eres  <eres@il.ibm.com>
12313
12314         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
12315         which walks virtual def-use chains to find redundant stores.
12316         (dse_optimize_stmt): Call it.
12317
12318 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
12319
12320         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
12321         * passes.c (init_optimization_passes): Move pass_jump_bypass
12322         after loop2.
12323
12324         * basic-block.h (bb_has_eh_pred): Fix style issue.
12325
12326 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
12327
12328         PR rtl-optimization/31848
12329         * loop-invariant.c (move_invariant_reg): If we move an insn
12330         with a REG_EQUAL note, and that insn is not always executed,
12331         remove the REG_EQUAL note.
12332
12333 2007-05-12  Richard Guenther  <rguenther@suse.de>
12334
12335         PR tree-optimization/31797
12336         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
12337         propagate into a stmt that has volatile ops.
12338
12339 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
12340
12341         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
12342         (gcc_tooldir): Likewise.
12343         * configure: Regenerate.
12344         * Makefile.in (libsubdir_to_prefix): New variable, based on the
12345         old configure.ac gcc_tooldir setting.
12346         (prefix_to_exec_prefix): New variable.
12347         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
12348         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
12349
12350 2007-05-11  Silvius Rus  <rus@google.com>
12351
12352         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
12353         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
12354         * c-common.h (strict_aliasing_warning): Change return type.
12355         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
12356         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
12357         (build_c_cast): Condition call to strict_aliasing_warning.
12358         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
12359         * flags.h (set_Wstrict_aliasing): Declare.
12360         * opts.c (set_Wstrict_alising): Define, add call to.
12361         * tree-flow.h (strict_aliasing_warning_backend): Declare.
12362         * tree-ssa-alias-warnings.c: New file.
12363         * tree-ssa-alias.c (compute_may_aliases): Add call to
12364         strict_aliasing_warning_backend.
12365
12366 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
12367
12368         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
12369         Use loop_depth and loop_outer accessor functions.
12370         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
12371         determine_invariantness_stmt, move_computations_stmt): Ditto.
12372         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
12373         add_loop, loopify, unloop, fix_loop_structure): Ditto.
12374         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
12375         * tree-scalar-evolution.c (interpret_loop_phi,
12376         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
12377         instantiate_parameters_1, scev_const_prop): Ditto.
12378         * cfghooks.c (make_forwarder_block): Ditto.
12379         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
12380         * modulo-sched.c (loop_canon_p): Ditto.
12381         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
12382         slpeel_can_duplicate_loop_p): Ditto.
12383         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
12384         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
12385         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
12386         cancel_loop, verify_loop_structure): Ditto.
12387         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
12388         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
12389         superloops vector instead of "pred" array.
12390         (establish_preds): Take father loop as an argument.  Initialize the
12391         superloops vector.
12392         (flow_loop_tree_node_add): Pass father loop to establish_preds.
12393         Do not initialize loop->outer.
12394         (flow_loop_tree_node_remove): Truncate the superloops vector.
12395         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
12396         "pred" merged to "superloops" vector.
12397         (loop_depth, loop_outer): New.
12398         (fel_init): Use loop_outer.
12399
12400 2007-05-11  Jan Hubicka  <jh@suse.cz>
12401
12402         * cgraphunit.c: Include gt-cgraphunit.h
12403         (static_ctors, static_dtors): New static vars.
12404         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
12405         based on implementation in c-common.c
12406         (cgraph_finalize_function): Call record_cdtor_fn.
12407         (cgraph_optimize): Call cgraph_build_cdtor_fns.
12408         * decl.c (finish_function): Do not call c_record_cdtor_fn.
12409         (c_write_global_declarations): Do not call c_build_cdtor_fns.
12410         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
12411         build_cdtor, c_build_cdtor_fns): Remove.
12412         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
12413         c_build_cdtor_fns): Remove prototype.
12414
12415 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
12416
12417         PR other/31852
12418         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
12419         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
12420         * builtins.c (fold_builtin_memchr): New.
12421         (expand_builtin_memchr): Call the latter.
12422         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
12423         * doc/extend.texi ([Other built-in functions provided by GCC]):
12424         Document memchr.
12425
12426 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
12427
12428         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
12429         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
12430         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
12431         PFPO_OP1_TYPE_SHIFT): Constants added.
12432         (DFP_ALL): Mode macro defined.
12433         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
12434         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
12435         Insn definitions added.
12436         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
12437         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
12438         Expanders added.
12439
12440 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
12441
12442         PR tree-optimization/31885
12443         * tree-chrec.c (chrec_contains_undetermined): Do not consider
12444         NULL_TREE to be undetermined.
12445         (automatically_generated_chrec_p): Return false for NULL.
12446
12447 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
12448
12449         * config/bfin/bfin.h (MOVE_RATIO): Define.
12450
12451 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
12452
12453         * config.gcc (sparc-wrs-vxworks): New target.
12454         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
12455         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
12456         * config/sparc/sparc.h: Include vxworks-dummy.h.
12457         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
12458         include LABEL_REFs too.
12459         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
12460         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
12461         VxWorks.
12462         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
12463         on VxWorks.
12464         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
12465         (sparc_emit_call_insn): New function.
12466         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
12467         functions when generating VxWorks PIC.
12468         * config/sparc/sparc.md (vxworks_load_got): New pattern.
12469         (call, call_value): Use sparc_emit_call_insn instead of
12470         emit_call_insn.
12471
12472 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
12473
12474         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
12475
12476 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
12477
12478         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
12479         for floating-point values if HOST_BITS_PER_LONG > 32.  Use
12480         split_double instead of operand_subword.
12481
12482 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
12483
12484         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
12485         * config/bfin/bfin.c (bfin_local_alignment): New function.
12486         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
12487
12488 2007-05-08  Chao-ying Fu  <fu@mips.com>
12489
12490         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
12491         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
12492         (smsub_widen_optab, umsub_widen_optab): Define.
12493         * optabs.c (init_optabs): Initialize smsub_widen_optab and
12494         umsub_widen_optab.
12495         * genopinit.c (optabs): Fill in smsub_widen_optab and
12496         umsub_widen_optab.
12497         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
12498         and umsub_widen_optab to implement multiply-subtract sequences.
12499         * config/mips/mips.md (*msac<u>_di): Rename to...
12500         (<u>msubsidi4): ...this.  Extend condition to include
12501         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
12502         of operand 0 to "ka" and use the three-operand form of msub<u>
12503         for TARGET_DSPR2.
12504         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
12505         to define_expands.
12506
12507 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
12508
12509         PR rtl-optimization/28011
12510         * reload.c (push_reload): Set dont_share if IN appears in OUT
12511         also when IN is a PLUS rtx.
12512         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
12513         are same PLUS rtx.
12514
12515 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
12516
12517         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
12518         call unshare_all_decls.
12519         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
12520         (unshare_all_decls): Remove.
12521
12522 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
12523
12524         PR 31847
12525         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
12526         dumps.
12527
12528 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
12529             Nigel Stephens  <nigel@mips.com>
12530
12531         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
12532         Update comments and all uses.
12533         (MIN_FPRS_PER_FMT): Define.
12534         * config/mips/mips.c (function_arg): Fix to correctly handle
12535         the -mips32r2 -mfp64 -mabi=32 case.
12536         (override_options): Enable use of odd-numbered registers for
12537         SFmode values on MIPS32.
12538         (mips_save_reg_p): Save whole floating-point register pair if
12539         either half is used.
12540         (compute_frame_size): Fix comment.
12541
12542 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
12543
12544         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
12545         argument of type bool.
12546         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
12547         argument. Safely select temporary P register according to it.
12548         (do_link): Change call site of add_to_reg accordingly.
12549         (do_unlink): Add epilogue_p as a fourth argument and pass it
12550         to add_to_reg.
12551         (expand_interrupt_handler_epilogue): Change call of do_unlink
12552         accordingly.
12553         (bfin_expand_prologue): Add a third argument sibcall_p.
12554         * config/bfin/bfin.md (epilogue): Change call of
12555         bfin_expand_epilogue accordingly.
12556         (sibcall_epilogue): Likewise.
12557         (eh_return_internal): Likewise.
12558
12559         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
12560         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
12561         * config/bfin/bfin.c (bfin_handle_option): Handle
12562         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
12563         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
12564         Support bf534, bf536 and bf561.
12565         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
12566
12567 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
12568
12569         PR target/31854
12570         * config/i386/i386.c (ix86_function_regparm): Process local
12571         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
12572
12573 2007-05-07  Mike Stump  <mrs@apple.com>
12574
12575         * doc/invoke.texi (Warning Options): Document that -Wempty-body
12576         also checks for and while statements in C++.
12577
12578 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
12579
12580         * gcc.c (at_file_supplied): New variable.
12581         (main): Set it if we expanded argv.
12582         (do_spec_1): Pass an @-file to the linker if we were called with
12583         an @-file argument and HAVE_GNU_LD.
12584         * collect2.c (at_file_supplied): New variable.
12585         (response_file): New variable.
12586         (collect_exit): Unlink response_file if necessary.
12587         (handler): Likewise.
12588         (do_wait): Likewise.
12589         (main): Set at_file_supplied if we expanded argv.
12590         (collect_execute): Pass an @-file to subprocesses if we were called
12591         with an @-file argument.
12592         * configure.ac: Add define for HAVE_GNU_LD.
12593         * configure: Regenerate.
12594         * config.in: Regenerate.
12595
12596 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
12597
12598         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
12599         operand to HI mode.
12600         (mulsi3): New.
12601         (divsi3): New.
12602         (udivsi3): New.
12603
12604 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
12605
12606         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
12607         (TARGET_ENCODE_SECTION_INFO): Re-define.
12608         (m32c_encode_section_info): New
12609         (function_vector_handler): New
12610         (current_function_special_page_vector): New
12611         (m32c_special_page_vector_p): New.
12612         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
12613         Prototype.
12614         * config/m32c/jump.md: Added instruction JSRS for functions
12615         with attribute "function_vector".
12616         * doc/extend.texi (function_vector): Added description
12617         for M16C, M32C targets.
12618
12619 2007-05-07  DJ Delorie  <dj@redhat.com>
12620
12621         PR 31794
12622         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
12623         ashrpsi3, lshrpsi3): Update shift count constraint.
12624
12625 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
12626             Nathan Froyd  <froydnj@codesourcery.com>
12627
12628         PR 22133
12629         * c-incpath.c (add_path): Strip trailing path separators.
12630
12631 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
12632
12633         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
12634         Free dominance info before purging EH edges.
12635         (eliminate_degenerate_phis): Likewise.
12636         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
12637
12638 2007-05-07  Jan Hubicka  <jh@suse.cz>
12639
12640         * gimplify.c (gimplify_expr): Do not crash when folding
12641         (void *)(int)&a + 4.
12642
12643 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
12644
12645         PR driver/31694
12646         * c-opts.c (lang_fortran): Make it non static.
12647         * c-common.h (lang_fortran): New prototype.
12648         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
12649         -lang-fortran option was passed by the driver.
12650
12651 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
12652
12653         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
12654         of ASSERT_CHECKING.  Tweak message.
12655
12656 2007-05-06  Revital Eres  <eres@il.ibm.com>
12657
12658         PR 30957
12659         * loop-unroll.c (insert_var_expansion_initialization):
12660         Initialize the expansions with -zero instead of +zero.
12661
12662 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
12663
12664         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
12665         into pic and non-pic versions. Mark r19 as used for
12666         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
12667         for tgd_load, tld_load and tie_load .
12668         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
12669         version of tgd_load, tld_load and tie_load depending on the
12670         value of flag_pic.
12671
12672 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
12673             Jakub Jelinek  <jakub@redhat.com>
12674
12675         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
12676         (__do_global_dtors_aux): Use more paranoid loop to run
12677         destructors if HIDDEN_DTOR_LIST_END.
12678         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
12679
12680 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
12681
12682         * varasm.c (align_variable): Don't increase alignment for
12683         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
12684         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
12685
12686 2007-05-04  Josh Conner  <jconner@apple.com>
12687
12688         * basic-block.h (cdi_direction): Assign values to all enumeration
12689         constants.
12690         (dom_computed): Remove.
12691         (dom_info_state): New.
12692         (set_dom_info_availability): New.
12693         * tree-ssa-loop-im.c (determine_invariantness): Initialize
12694         walk_data.dom_direction.
12695         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
12696         instead of dom_computed[].
12697         (split_edge): Likewise.
12698         (create_basic_block): Likewise.
12699         (merge_blocks): Likewise.
12700         * ifcvt.c (find_if_header): Likewise.
12701         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
12702         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
12703         * tree-ssa.c (verify_ssa): Likewise.
12704         * tree-cfg.c (tree_verify_flow_info): Likewise.
12705         (remove_edge_and_dominated_blocks): Likewise.
12706         * dominance.c (dom_computed): Make static.
12707         (calc_dfs_tree_nonrec): Change third param to a bool.
12708         (calc_dfs_tree): Change second param to a bool.
12709         (calc_idioms): Change second param to a bool.  Use
12710         dom_convert_dir_to_idx.
12711         (init_dom_info): Validate dir before using.
12712         (dom_convert_dir_to_idx): New.
12713         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
12714         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
12715         (free_dominance_info): Use dom_convert_dir_to_idx.
12716         (get_immediate_dominator): Likewise.
12717         (set_immediate_dominator): Likewise.
12718         (get_dominated_by): Likewise.
12719         (redirect_immediate_dominators): Likewise.
12720         (nearest_common_denominator): Likewise.
12721         (dominated_by_p): Likewise.
12722         (bb_dom_dfs_in): Likewise.
12723         (bb_dom_dfs_out): Likewise.
12724         (recount_dominator): Likewise.
12725         (iterate_fix_dominators): Likewise.
12726         (add_to_dominance_info): Likewise.
12727         (delete_from_dominance_info): Likewise.
12728         (first_dom_son): Likewise.
12729         (next_dom_son): Likewise.
12730         (dom_info_available_p): Likewise.
12731         (dom_info_state): New.
12732         (set_dom_info_availability): New.
12733
12734 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
12735
12736         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
12737         Expander removed.
12738         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
12739
12740 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
12741
12742         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
12743         (subdi3, subdi_carry): Delete.
12744
12745 2007-05-04  Jan Hubicka  <jh@suse.cz>
12746             Richard Guenther  <rguenther@suse.de>
12747
12748         * opts.c (decode_options): Do not fiddle with inlining
12749         parameters in case of optimizing for size.
12750         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
12751         for size do nothing.
12752         (cgraph_decide_inlining_of_small_function): When optimizing for
12753         size never inline functions increasing caller size.
12754         (cgraph_early_inlining): Inline for size when optimizing for size.
12755
12756 2007-05-04  Bernd Schmidt  <bernd.schmidt@analog.com>
12757
12758         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
12759         logical operations piecewise.
12760         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
12761         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
12762         subdi_sesidi_di): Delete.
12763         (add_with_carry): Produce carry in CC instead of a DREG to shorten
12764         the generated sequence.  Allow three-reg add in constraints.  Rewrite
12765         the rtl expression for carry to avoid zero_extend of a constant.
12766         (sub_with_carry): New pattern.
12767         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
12768         different sequence not involving jumps.
12769         (notbi): Now a named pattern.
12770
12771 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
12772
12773         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
12774         Add the note about a significant loss of accuracy of some
12775         mathematical routines when these options are used.
12776
12777 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
12778
12779         * haifa-sched.c (rtx_vec_t): New typedef.
12780         (contributes_to_priority_p): Extract piece of priority () into new
12781         static function.
12782         (priority): Use the function.  Add assertion.
12783         (rank_for_schedule, set_priorities): Add assertion to check that
12784         insn's priority is initialized.
12785         (clear_priorities, calc_priorities): Change signature.  Make it update
12786         all relevant insns.  Update all callers ('add_to_speculative_block ()'
12787         and 'create_block_check_twin ()').
12788         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
12789         Add new field 'priority_status'.
12790         (INSN_PRIORITY_STATUS): New macro.
12791         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
12792
12793 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
12794
12795         * sched-ebb.c (debug_ebb_dependencies): New static function.
12796         (init_ready_list): Use it.
12797
12798         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
12799         with changed signature and 'debug_rgn_dependencies ()'.
12800         (debug_rgn_dependencies): New static function.
12801         (init_ready_list): Use it.
12802
12803         * sched-int.h (debug_dependencies): Declare.
12804
12805 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
12806
12807         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
12808
12809 2007-05-04  Dirk Mueller  <dmueller@suse.de>
12810
12811         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
12812
12813 2007-05-03  Jan Hubicka  <jh@suse.cz>
12814
12815         * fold-const.c (fold_unary): Convert (T1)(X op Y) into
12816         ((T1)X op (T1)Y), for pointer type in more cases than before.
12817
12818         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
12819
12820         * tree-object-size.c (plus_expr_object_size): When operand size is
12821         unknown, return unknown.
12822
12823 2007-05-03  Dirk Mueller  <dmueller@suse.de>
12824
12825         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
12826
12827         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
12828         options.
12829
12830         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
12831
12832 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
12833
12834         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
12835
12836 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
12837
12838         * config/soft-fp/double.h, config/soft-fp/extended.h,
12839         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
12840         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
12841         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
12842         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
12843         glibc CVS.
12844
12845 2007-05-03  Ian Lance Taylor  <iant@google.com>
12846
12847         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
12848         MASK_PPC_GFXOPT for 8540 or 8548.
12849
12850 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
12851
12852         * tree-vect-transform.c (vect_update_inits_of_drs): Use
12853         vect_print_dump_info() to output debug information.
12854
12855 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
12856
12857         PR target/31768
12858         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
12859         operands of size 2 when operand is not MEM_P.
12860
12861 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
12862
12863         PR tree-optimization/30565
12864         * lambda-code.c (perfect_nestify): Fix updating of dominators.
12865
12866 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
12867
12868         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
12869         (umulsi3_highpart): Use them.
12870         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
12871         for final accumulator to D regisster tranfser.
12872
12873 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
12874
12875         PR tree-optimization/31699
12876         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove
12877         wrong code.
12878         (vect_enhance_data_refs_alignment): Compute peel amount using
12879         TYPE_VECTOR_SUBPARTS instead of vf.
12880         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
12881
12882 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
12883
12884         PR bootstrap/31776
12885         * system.h: Remove inclusion of double-int.h
12886         * tree.h: Include double-int.h
12887         * gengtype.c: Likewise
12888         * cfgloop.h: Likewise
12889         * Makefile.in: Adjust dependencies on double-int.h
12890
12891 2007-05-02  Eric Christopher  <echristo@apple.com>
12892
12893         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
12894         -shared to -Zdynamiclib.
12895
12896 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
12897
12898         PR c++/31663
12899         * c-common.c (strip_pointer_or_array_types): New function.
12900         * c-common.h (strip_pointer_or_array_types): New function declaration.
12901
12902 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
12903
12904         PR tree-optimization/31771
12905         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
12906
12907 2007-05-02  Paul Brook  <paul@codesourcery.com>
12908
12909         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
12910
12911 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12912
12913         PR middle-end/29715
12914         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
12915         transformation.
12916
12917 2007-05-02  Nick Clifton  <nickc@redhat.com>
12918
12919         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
12920
12921 2007-05-02  Richard Guenther  <rguenther@suse.de>
12922
12923         PR tree-optimization/31146
12924         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
12925         argument, single_use_p.  If we have a single use that is
12926         a conversion to the definition rhs type, propagate that rhs.
12927         (forward_propagate_addr_expr): Pass single_use_p argument
12928         to forward_propagate_addr_expr_1.
12929
12930 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
12931
12932         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
12933         variable.
12934
12935 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
12936
12937         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
12938         'AMD Family 10 core'.
12939
12940 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
12941
12942         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
12943         and athlon64-sse3 as improved versions of k8, opteron and athlon64
12944         with SSE3 instruction set support.
12945         * doc/invoke.texi: Likewise.
12946
12947 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
12948
12949         * config/i386/i386.c (override_options): Tuning 32-byte loop
12950         alignment for amdfam10 architecture. Increasing the max loop
12951         alignment to 24 bytes.
12952
12953 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
12954
12955         * config/m68k/constraints.md: New.
12956         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
12957         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
12958         EXTRA_CONSTRAINT): Remove.
12959         * config/m68k/m68k.md: Include constraints.md.
12960         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
12961
12962 2007-05-01  Ian Lance Taylor  <iant@google.com>
12963
12964         PR tree-optimization/31739
12965         * tree-vrp.c (vrp_val_is_max): New static function.
12966         (vrp_val_is_min): New static function.
12967         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
12968         copying the node.
12969         (set_value_range): Use vrp_val_is_{max,min}.
12970         (extract_range_from_assert): Likewise.
12971         (extract_range_from_binary_expr): Likewise.
12972         (extract_range_from_unary_expr): Likewise.
12973         (dump_value_range, vrp_meet): Likewise.
12974         (vrp_visit_phi_node): Likewise.
12975         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
12976
12977 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
12978
12979         * config/i386/gmon-sol2.c (size_t): New type.
12980         (intptr_t): Likewise.
12981         (s_textsize): Declare as size_t.
12982         (sbrk): Declare.
12983         (monstartup): Use size_t for sizes.
12984         (_mcount): Save and restore registers.
12985         (internal_mcount): Pass 0 as the first argument to monstartup
12986         in 64-bit mode.
12987         (moncontrol): Convert pointer to appropriately sized integer
12988         before passing to profil.
12989
12990 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
12991
12992         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
12993         __NO_FPRS__, not just if _SOFT_DOUBLE.
12994         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
12995         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
12996         also for E500 double.
12997         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
12998         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
12999         && !TARGET_FPRS).
13000
13001 2007-05-01  Richard Guenther  <rguenther@suse.de>
13002
13003         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
13004         is NULL.
13005
13006 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
13007
13008         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
13009
13010 2007-05-01  Jan Hubicka  <jh@suse.cz>
13011
13012         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
13013         invariant.
13014
13015 2007-05-01  Jan Hubicka  <jh@suse.cz>
13016
13017         * tree.h (maybe_fold_offset_to_component_ref): Remove.
13018         (maybe_fold_offset_to_reference): Declare.
13019         * fold-const.c (fold_unary): Do not fold
13020         (type *)&A into &A->field_of_type_and_offset_0
13021         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
13022         size is unknown, give up.
13023         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
13024         offsets.
13025         (maybe_fold_offset_to_reference): New.
13026         (maybe_fold_stmt_indirect): Use it.
13027         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
13028         * gimplify.c (gimplify_conversion): Canonicalize conversions to
13029         field references.
13030         (gimplify_expr): Likewise for plus_expr.
13031
13032 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
13033
13034         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
13035         bsi_after_labels.  Always insert statements before bsi.
13036         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
13037         * predict.c (apply_return_prediction): Check for empty blocks.
13038         * cfgexpand.c (lab_rtx_for_bb): New variable.
13039         (label_rtx_for_bb): Do not create new tree labels.
13040         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
13041         (tree_expand_cfg): Initialize lab_rtx_for_bb.
13042         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
13043         creating edges.
13044         (label_for_bb): Add field used.
13045         (update_eh_label, main_block_label): Mark the label used.
13046         (cleanup_dead_labels): Remove unused labels.
13047
13048 2007-05-01  Richard Guenther  <rguenther@suse.de>
13049
13050         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
13051         if it is not about to be set.
13052         (get_value_range): Do not pre-allocate equiv bitmap.
13053         (update_value_range): No need to clear equiv field.
13054         (add_equivalence): Change prototype to get bitmap pointer.
13055         Allocate bitmap here if it is not already.
13056         (extract_range_from_assert): Do not allocate bitmap here.
13057         Update callers to add_equivalence.
13058         (extract_range_from_ssa_name): Likewise.
13059         (get_vr_for_comparison): New static helper.
13060         (compare_name_with_value): Handle NULL equiv bitmap by
13061         peeling the first iteration of the comparison loop.
13062         Use get_vr_for_comparison.
13063         (compare_names): Handle NULL equiv bitmaps by using fake
13064         ones.  Use get_vr_for_comparison.
13065
13066 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
13067
13068         * double-int.c (mpz_set_double_int): Moved from
13069         tree-ssa-loop-niter.c.
13070         (mpz_get_double_int): Likewise; also, add option to wrap
13071         out-of-range integers.
13072         * double-int.h: New prototypes for above.
13073         * tree.c (get_static_type_bounds): Moved from
13074         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
13075         TYPE_MAX_VALUE if they exist..
13076         * tree.h: New prototype for above.
13077         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
13078         get_type_bounds calls.
13079         (mpz_set_double_int): Move to double-int.c.
13080         (get_type_bounds): Move to tree.c, rename to
13081         get_static_type_bounds.
13082         (mpz_to_double_int): Move to double-int.c, rename to
13083         mpz_get_double_int.
13084
13085 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
13086
13087         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
13088         DIV0 exception can fall through to a normal return.
13089
13090 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
13091
13092         PR middle-end/22156
13093         Temporarily revert:
13094         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
13095         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
13096         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
13097         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
13098         initialize align to silence bogus warning.
13099         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
13100         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
13101         all_no_warning.
13102         (struct sra_walk_fns): Remove use_all parameter from use.
13103         (sra_hash_tree): Handle BIT_FIELD_REFs.
13104         (sra_elt_hash): Don't hash bitfld blocks.
13105         (sra_elt_eq): Skip them in parent compares as well.  Handle
13106         BIT_FIELD_REFs.
13107         (sra_walk_expr): Don't maintain or pass down use_all_p.
13108         (scan_use): Remove use_all parameter.
13109         (scalarize_use): Likewise.  Re-expand assignment to
13110         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
13111         output, and re-scalarize after output.  Don't mark anything
13112         for no warning.
13113         (scalarize_ldst): Adjust.
13114         (scalarize_walk_gimple_modify_statement): Likewise.
13115         (build_element_name_1): Handle BIT_FIELD_REFs.
13116         (instantiate_element): Don't warn for any element whose parent
13117         is used as a whole.
13118         (instantiate_missing_elements_1): Return the sra_elt.
13119         (canon_type_for_field): New.
13120         (try_instantiate_multiple_fields): New.
13121         (instantiate_missing_elemnts): Use them.
13122         (mark_no_warning): Removed.
13123         (generate_one_element_ref): Handle BIT_FIELD_REFs.
13124         (REPLDUP, sra_build_elt_assignment): New.
13125         (generate_copy_inout): Use them.
13126         (generate_element_copy): Likewise.  Handle bitfld differences.
13127         (generate_element_zero): Don't recurse for blocks.  Use
13128         sra_build_elt_assignment.
13129         (generate_one_element_int): Take elt instead of var.  Use
13130         sra_build_elt_assignment.
13131         (generate_element_init_1): Adjust.
13132         (scalarize_use, scalarize_copy): Use REPLDUP.
13133         (scalarize_ldst): Move assert before dereference.
13134         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
13135
13136 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13137
13138         PR C++/31721
13139         * tree.c (reconstruct_complex_type): Reconstruct a reference
13140         correctly.
13141         Also use the same mode for the pointer as the old pointer type.
13142
13143 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
13144
13145         * doc/trouble.texi (Interoperation): Remove note about Ultrix
13146         Fortran compiler.
13147
13148 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
13149
13150         PR rtl-optimization/31676
13151         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
13152         (df_refs_record): Call it.
13153
13154 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
13155
13156         * rtl.def (SS_ABS): New code.
13157         * config/bfin/bfin.c (print_operand): New modifier 'v'.
13158         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
13159         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
13160         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
13161         (bfin_init_builtins): Define them.
13162         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
13163         (bfin_expand_builtin): ... and handle the others here.
13164         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
13165         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
13166         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
13167         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
13168         operand is only HImode.
13169
13170 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
13171
13172         * regclass.c (scan_one_insn): Remove splitting of
13173         two address insns.
13174
13175 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
13176             Nigel Stephens  <nigel@mips.com>
13177
13178         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
13179
13180 2007-04-28  Jan Hubicka  <jh@suse.cz>
13181
13182         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
13183         insn_locators_alloc instead of insn_locators_initialize;
13184         call reset_block_changes.
13185         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
13186         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
13187         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
13188         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
13189         * config/score/score.c (th_output_mi_thunk): Likewise.
13190         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
13191         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
13192         tolerate uninitialized locator info.
13193
13194         Re-apply:
13195         * function.c (init_function_start): Don't init line number info.
13196         (expand_function_end): Update.
13197         (reset_block_changes, record_block_change, finalize_block_changes,
13198         check_block_change, free_block_changes): Kill.
13199         * function.h (reset_block_changes, record_block_change,
13200         finalize_block_changes, check_block_change, free_block_changes):
13201         Remove prototypes.
13202         (struct function): Remove ib_boundaries_block.
13203         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
13204         Use curr_insn_locator to initialize locator.
13205         (emit_line_note): Remove.
13206         * cfgexpand.c (expand_gimple_cond_expr): Update.
13207         (construct_exit_block): Likewise.
13208         (tree_expand_cfg): Initialize/finalize locators.
13209         * expr.c (expand_expr_real): Update.
13210         * cfglayout.c (line_locators_locs, line_locators_lines,
13211         file_locators_locs, file_locators_files): Remove.
13212         (set_block_levels): Move to cfgexpand.c.
13213         (insn_locators_initialize): Remove.
13214         (pass_insn_locators_initialize): Remove.
13215         (locations_locators_locs, locations_locators_vals): New static vars.
13216         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
13217         Likewise.
13218         (insn_locators_alloc, insn_locators_finalize,
13219         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
13220         New functions.
13221         (locator_location): New.
13222         (locator_line, locator_file): Rewrite.
13223         * rtl.h (emit_line_note): Kill.
13224         (insn_locators_alloc, insn_locators_finalize,
13225         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
13226         Declare.
13227         * tree-inline.c (initialize_cfun): Do not initialize
13228         ib_boundaries_block.
13229         * passes.c (pass_insn_locators_initialize): Remove.
13230
13231 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
13232
13233         * tree-cfg.c (move_block_to_fn): Release bb from dominance
13234         info.  Update last_basic_block correctly.
13235
13236 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
13237
13238         PR target/31701
13239         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
13240         register itself to hold the offset constant.  Tell flow the use
13241         of r4 and r5 when they are used.
13242
13243 2007-04-27  Richard Guenther  <rguenther@suse.de>
13244
13245         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
13246         if we simplified anything.
13247         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
13248         warnings until we did a simplification and the stmt was not
13249         marked as TREE_NO_WARNING.
13250
13251 2007-04-27  Mike Stump  <mrs@apple.com>
13252
13253         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
13254
13255 2007-04-27  Ian Lance Taylor  <iant@google.com>
13256
13257         PR middle-end/31710
13258         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
13259         TYPE_MAX_VALUE exist, convert them to the new type.
13260
13261 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
13262
13263         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
13264         if it claims to be available.
13265         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
13266         edge is redirected.
13267         (perform_tree_ssa_dce): Always free postdominators.
13268
13269 2007-04-27  Richard Henderson  <rth@redhat.com>
13270
13271         * config/alpha/predicates.md (aligned_memory_operand): Mark
13272         as define_special_predicate.
13273         (unaligned_memory_operand, normal_memory_operand): Likewise.
13274         (reg_or_unaligned_mem_operand): Remove.
13275         (any_memory_operand): Match the documentation and check for
13276         non-renumbered pseudos during reload.
13277         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
13278         alpha_secondary_reload_class, update to new interface, make static.
13279         Handle CQImode like HImode.  Remove FP subreg check.
13280         (alpha_expand_mov): Use replace_equiv_address.
13281         (alpha_expand_mov_nobwx): Use any_memory_operand.
13282         (TARGET_SECONDARY_RELOAD): New.
13283         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
13284         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
13285         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
13286         * config/alpha/alpha.md: ... here.
13287         (RELOAD12, reloadmode): New.
13288         (movcqi): New.
13289         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
13290         Don't handle the aligned case here.
13291         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
13292         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
13293         reload_inhi_help.  Don't expect a scratch register.
13294         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
13295         reload_outhi_help.
13296         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
13297
13298 2007-04-27  Richard Guenther  <rguenther@suse.de>
13299
13300         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
13301
13302 2007-04-27  Richard Guenther  <rguenther@suse.de>
13303
13304         PR tree-optimization/30965
13305         PR tree-optimization/30978
13306         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
13307         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
13308         (find_equivalent_equality_comparison): Likewise.
13309         (simplify_cond): Likewise.
13310         (get_prop_source_stmt): New helper.
13311         (get_prop_dest_stmt): Likewise.
13312         (can_propagate_from): Likewise.
13313         (remove_prop_source_from_use): Likewise.
13314         (combine_cond_expr_cond): Likewise.
13315         (forward_propagate_comparison): New function.
13316         (forward_propagate_into_cond): Rewrite to use fold for
13317         tree combining.
13318         (tree_ssa_forward_propagate_single_use_vars): Call
13319         forward_propagate_comparison to propagate comparisons.
13320
13321 2007-04-27  Richard Guenther  <rguenther@suse.de>
13322
13323         PR tree-optimization/31715
13324         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
13325         sure to do computation on the offset in an appropriate
13326         signed type.
13327
13328 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
13329
13330         * reload.h (elimination_target_reg_p): Declare.
13331         * reload.c (find_reloads): Don't apply the reg_rtx move
13332         optimization if the SET_DEST satisfies elimination_target_reg_p.
13333         * reload1.c (elimination_target_reg_p): New function.
13334         (gen_reload): In the move/add2 fallback, make sure that op0
13335         does not overlap the destination register.
13336
13337 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
13338
13339         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
13340         transform only GIMPLE_MODIFY_STMTs.
13341         * tree-complex.c (expand_complex_operations_1): Ditto.
13342         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
13343         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
13344         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
13345         branches.
13346         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
13347         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
13348         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
13349         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
13350         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
13351         slpeel_add_loop_guard): Ditto.
13352         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
13353         * lambda-code.c (perfect_nestify): Ditto.
13354         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
13355         before the first statement.
13356         * tree-optimize.c (execute_free_datastructures): Fix comments.
13357         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
13358         * tree-flow.h (disband_implicit_edges): Declaration removed.
13359         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
13360         branches.
13361         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle
13362         COND_EXPRs without gotos.
13363         (disband_implicit_edges, has_label_p): Removed.
13364         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
13365         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
13366         branches.
13367         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
13368         side effects.
13369         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
13370         also for COND_EXPRs.
13371         * cfgexpand.c (label_rtx_for_bb): New function.
13372         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
13373         Use label_rtx_for_bb to find the labels.
13374         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
13375         last block.  Detect fallthru edges.
13376
13377 2007-04-26  Ian Lance Taylor  <iant@google.com>
13378
13379         PR target/28675
13380         * reload.c (find_reloads_subreg_address): If the address was valid
13381         in the original mode but not in the new mode, reload the whole
13382         address.
13383
13384 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
13385
13386         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
13387         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
13388         (cleanup_control_expr_graph): Do not invalidate dominance info.
13389         Record altered blocks.
13390         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
13391         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
13392         cleanup_tree_cfg_bb): New functions.
13393         (remove_forwarder_block): Do not maintain the worklist of blocks.
13394         Record altered blocks.
13395         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
13396         not over whole cfg.
13397         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
13398         delete_unreachable_blocks if dominators are not available.
13399         * tree-inline.c (optimize_inline_calls): Free dominance information
13400         earlier.
13401         * tree-flow.h (remove_edge_and_dominated_blocks,
13402         cfgcleanup_altered_bbs): Altered.
13403         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
13404         blocks.
13405         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
13406         functions.
13407         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
13408         do not invalidate dominators.
13409
13410 2007-04-26  Anatoly Sokolov <aesok@post.ru>
13411
13412         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
13413         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
13414         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
13415         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
13416
13417 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
13418
13419         * config/ia64/ia64.md (ip_value):  Fix itanium_class attribute.
13420
13421 2007-04-26  Richard Guenther  <rguenther@suse.de>
13422
13423         PR tree-optimization/31703
13424         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
13425         the right type for the target of the bittest.
13426
13427 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
13428
13429         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
13430         ix86_sol10_return_in_memory.
13431
13432 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
13433
13434         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
13435         variables.
13436
13437 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
13438
13439         PR c++/31598
13440         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
13441
13442         PR tree-optimization/30558
13443         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
13444         clear this_state.prev_try.
13445
13446 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
13447             Mark Mitchell  <mark@codesourcery.com>
13448
13449         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
13450         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
13451         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
13452
13453 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
13454
13455         PR driver/31107
13456         * doc/invoke.texi (%:print-asm-header): Document.
13457         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
13458         and -ftarget-help.
13459         (static_spec_functions): Add print-asm-header.
13460         (main): Print a banner before the --target-help linker options.
13461         (print_asm_header_spec_function): New function.
13462
13463 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
13464
13465         PR target/31403
13466         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
13467         (movsf_ie): Likewise.
13468
13469 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
13470
13471         * doc/extend.texi ([Type Traits]): Adjust per N2255.
13472
13473 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
13474
13475         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an
13476         exception for divide-by-zero.
13477         (__umodsi3, __modsi3): Likewise.
13478
13479 2007-04-25  Dirk Mueller  <dmueller@suse.de>
13480
13481         * c-typeck.c (build_compound_expr): Annotate warning()
13482         call with OPT_Wunused_value.
13483         * tree-ssa.c (warn_uninit): Annotate warning with
13484         OPT_Wunintialized.
13485         * c-common.c (handle_sentinel_attribute): Annotate warning
13486         call with OPT_Wattributes.
13487
13488 2007-04-25  Thiemo Seufer  <ths@mips.com>
13489
13490         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
13491         (mips16): Fix typo.
13492         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
13493         on to the assembler.  Improve handling of -mno-mips16.  Add handling
13494         of -mno-mips3d, -mno-dsp, -mno-dspr2.
13495         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
13496         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
13497         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
13498
13499 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
13500
13501         PR target/31680
13502         * config/i386/winnt.c (i386_pe_file_end): Strip only
13503         USER_LABEL_PREFIX when writing export name.
13504
13505 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
13506
13507         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
13508         sh/elf.h, vx-common.h and vxworks.h.
13509         * config/sh/sh.h: Include config/vxworks-dummy.h.
13510         (SUBTARGET_OVERRIDE_OPTIONS): Define.
13511         (OVERRIDE_OPTIONS): Use it.
13512         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
13513         (vxworks_picreg): New pattern.
13514         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
13515         VXWORKS_OS_CPP_BUILTINS.
13516         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
13517         to their VXWORKS_* equivalents.
13518         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
13519         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
13520         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
13521         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
13522         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
13523         -mrtp/-fPIC multilibs.
13524         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
13525         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
13526         (MULTILIB_OSDIRNAMES): Delete.
13527
13528 2007-04-25  Anatoly Sokolov <aesok@post.ru>
13529
13530         PR target/18989
13531         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
13532
13533 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
13534
13535         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
13536         rounding mode to be specified by the caller.
13537         (real_to_mpfr) Likewise.
13538         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
13539         include new arguments.
13540         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
13541
13542 2007-04-24  Ian Lance Taylor  <iant@google.com>
13543
13544         PR tree-optimization/31605
13545         * tree-vrp.c (set_value_range): Check that min and max are not
13546         both overflow infinities.
13547         (set_value_range_to_value): New static function.
13548         (extract_range_from_binary_expr): Call set_value_range_to_value.
13549         (extract_range_from_cond_expr): Likewise.
13550         (extract_range_from_expr): Likewise.
13551         (extract_range_from_unary_expr): Likewise.  Don't create a range
13552         which overflows on both sides.
13553         (vrp_meet): Check for a useless range.
13554         (vrp_visit_phi_node): If we see a constant which looks like an
13555         overflow infinity, turn off the TREE_OVERFLOW flag.
13556
13557 2007-04-24  Ian Lance Taylor  <iant@google.com>
13558
13559         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
13560
13561 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
13562
13563         PR diagnostic/25923
13564         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
13565         diagnostic message is being built.
13566         * tree-pretty-print.c (dump_generic_node): Only write the
13567         formatted text into BUFFER's stream if we are not building a
13568         diagnostic message.
13569         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
13570         dump_generic_node.
13571         * Makefile.in (toplev.o): Depend on tree-pass.h.
13572
13573 2007-04-24  Ian Lance Taylor  <iant@google.com>
13574
13575         PR tree-optimization/31602
13576         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
13577         conditionals in the copied loop header.
13578         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
13579         warnings if TREE_NO_WARNING is set.
13580         * doc/invoke.texi (Warning Options): Clarify that
13581         -Wstrict-overflow does not warn about loops.
13582
13583 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
13584
13585         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
13586         expand on the comment about _Decimal128 arguments and check the
13587         integer result of the modulus operation; for 64-bit ELF ABI, ensure
13588         that _Decimal128 argument uses even/odd register pair.
13589         (function_arg): Ditto.
13590
13591 2007-04-24  Hui-May Chang <hm.chang@apple.com>
13592
13593         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
13594         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
13595
13596 2007-04-24  Richard Guenther  <rguenther@suse.de>
13597             Olga Golovanevsky  <olga@il.ibm.com>
13598
13599         * fold-const.c (multiple_of_p): Check for bottom
13600         to be zero.
13601
13602 2007-04-24  Richard Henderson  <rth@redhat.com>
13603
13604         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
13605         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
13606         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
13607         looking for non-zero bits shifted out.  Avoid a recursive call
13608         when constructing the scalar.
13609         (__floatundisf): Likewise.
13610
13611 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
13612
13613         * dwarf2out.c (field_byte_offset): Move the existing logic
13614         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
13615         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
13616
13617 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
13618
13619         PR target/31641
13620         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant
13621         length argument of 0 for memset.
13622         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
13623         unsigned shift instead of the signed variant.
13624
13625 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
13626
13627         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
13628         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
13629         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
13630         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
13631         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
13632         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
13633         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
13634         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
13635         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
13636         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
13637         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
13638         "mul<mode>3", "div<mode>3"): Insn definitions added.
13639         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
13640         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
13641         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
13642         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
13643         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
13644         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
13645         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
13646         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
13647         TARGET_FLOAT_FORMAT): Macro definitions removed.
13648         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
13649         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
13650         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
13651         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
13652         (s390_gen_rtx_const_DI): Function removed.
13653         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
13654
13655 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
13656
13657         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
13658         over an external ffs function.
13659
13660 2007-04-24  Chao-ying Fu  <fu@mips.com>
13661             Richard Sandiford  <richard@nildram.co.uk>
13662
13663         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
13664         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
13665         (smadd_widen_optab, umadd_widen_optab): Define.
13666         * optabs.c (init_optabs): Initialize smadd_widen_optab and
13667         umadd_widen_optab.
13668         * genopinit.c (optabs): Fill in smadd_widen_optab and
13669         umadd_widen_optab.
13670         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
13671         and umadd_widen_optab to implement multiply-add sequences.
13672         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
13673         (<u>maddsidi4): ...this.  Extend condition to include
13674         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
13675         of operand 0 to "ka" and use the three-operand form of madd<u>
13676         for TARGET_DSPR2.
13677         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
13678         to define_expands.
13679         * config/mips/constraints.md (ka): New register constraint.
13680
13681 2007-04-24  Jan Hubicka  <j@suse.cz>
13682
13683         Revert:
13684
13685         2007-04-23  Jan Hubicka  <jh@suse.cz>
13686         * function.c (init_function_start): Don't init line number info.
13687         (expand_function_end): Update.
13688         (reset_block_changes, record_block_change, finalize_block_changes,
13689         check_block_change, free_block_changes): Kill.
13690         * function.h (reset_block_changes, record_block_change,
13691         finalize_block_changes, check_block_change, free_block_changes):
13692         Remove prototypes.
13693         (struct function): Remove ib_boundaries_block.
13694         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
13695         Use curr_insn_locator to initialize locator.
13696         (emit_line_note): Remove.
13697         * cfgexpand.c (expand_gimple_cond_expr): Update.
13698         (construct_exit_block): Likewise.
13699         (tree_expand_cfg): Initialize/finalize locators.
13700         * expr.c (expand_expr_real): Update.
13701         * cfglayout.c (line_locators_locs, line_locators_lines,
13702         file_locators_locs, file_locators_files): Remove.
13703         (set_block_levels): Move to cfgexpand.c.
13704         (insn_locators_initialize): Remove.
13705         (pass_insn_locators_initialize): Remove.
13706         (locations_locators_locs, locations_locators_vals): New static vars.
13707         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
13708         Likewise.
13709         (insn_locators_alloc, insn_locators_finalize,
13710         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
13711         New functions.
13712         (locator_location): New.
13713         (locator_line, locator_file): Rewrite.
13714         * rtl.h (emit_line_note): Kill.
13715         (insn_locators_alloc, insn_locators_finalize,
13716         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
13717         Declare.
13718         * tree-inline.c (initialize_cfun): Do not initialize
13719         ib_boundaries_block.
13720         * passes.c (pass_insn_locators_initialize): Remove.
13721
13722 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
13723
13724         * doc/invoke.texi: Removed leading '-' from option index entries.
13725
13726 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
13727
13728         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
13729         Use phi_nodes_ptr.
13730         (create_phi_node): Use set_phi_nodes.
13731         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
13732         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
13733         (combine_blocks):  Use bb_stmt_list and set_bb_stmt_list.
13734         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
13735         (bsi_start, bsi_last): Use bb_stmt_list.
13736         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
13737         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
13738         Traverse the statements using tsi iterator.
13739         * basic-block.h (struct basic_block_def): Fields stmt_list
13740         and phi_nodes moved to ...
13741         (struct tree_bb_info): ... new structure.
13742         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
13743         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
13744         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
13745         (tree_verify_flow_info): Verify that il.tree is not set for
13746         entry and exit block.
13747         (tree_split_block): Use set_bb_stmt_list.
13748
13749 2007-04-23  Mike Stump  <mrs@apple.com>
13750
13751         * config/i386/i386.c (ix86_tune_features
13752         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
13753         nocona and core2.
13754
13755 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
13756
13757         * config/i386/i386.md (prefix_extra): New attribute.
13758         (length): Add prefix_extra.
13759
13760         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
13761         (sse2_movntv2di): Likewise.
13762         (sse2_cvtps2dq): Likewise.
13763         (sse2_cvtpd2pi): Likewise.
13764         (sse2_cvttpd2pi): Likewise.
13765         (*sse2_cvtpd2ps): Likewise.
13766         (*add<mode>3): Likewise.
13767         (sse2_ssadd<mode>3): Likewise.
13768         (sse2_usadd<mode>3): Likewise.
13769         (*sub<mode>3): Likewise.
13770         (sse2_sssub<mode>3): Likewise.
13771         (sse2_ussub<mode>3): Likewise.
13772         (*mulv8hi3): Likewise.
13773         (*smulv8hi3_highpart): Likewise.
13774         (*umulv8hi3_highpart): Likewise.
13775         (sse2_umulv2siv2di3): Likewise.
13776         (sse2_pmaddwd): Likewise.
13777         (ashr<mode>3): Likewise.
13778         (lshr<mode>3): Likewise.
13779         (ashl<mode>3): Likewise.
13780         (sse2_ashlti3): Likewise.
13781         (sse2_lshrti3): Likewise.
13782         (*umaxv16qi3): Likewise.
13783         (*smaxv8hi3): Likewise.
13784         (*uminv16qi3): Likewise.
13785         (*sminv8hi3): Likewise.
13786         (sse2_eq<mode>3): Likewise.
13787         (sse2_gt<mode>3): Likewise.
13788         (*and<mode>3): Likewise.
13789         (sse2_nand<mode>3): Likewise.
13790         (*ior<mode>3): Likewise.
13791         (*xor<mode>3): Likewise.
13792         (sse2_packsswb): Likewise.
13793         (sse2_packssdw): Likewise.
13794         (sse2_packuswb): Likewise.
13795         (sse2_punpckhbw): Likewise.
13796         (sse2_punpcklbw): Likewise.
13797         (sse2_punpckhwd): Likewise.
13798         (sse2_punpcklwd): Likewise.
13799         (sse2_punpckhdq): Likewise.
13800         (sse2_punpckldq): Likewise.
13801         (sse2_punpckhqdq): Likewise.
13802         (sse2_punpcklqdq): Likewise.
13803         (*sse2_pinsrw): Likewise.
13804         (*sse2_pextrw): Likewise.
13805         (sse2_pshufd_1): Likewise.
13806         (sse2_uavgv16qi3): Likewise.
13807         (sse2_uavgv8hi3): Likewise.
13808         (sse2_psadbw): Likewise.
13809         (sse2_pmovmskb): Likewise.
13810         (*sse2_maskmovdqu): Likewise.
13811         (*sse2_maskmovdqu_rex64): Likewise.
13812         (sse4a_extrqi): Likewise.
13813         (sse4a_extrq): Likewise.
13814         (sse3_lddqu): Set prefix_rep.
13815         (sse3_addsubv4sf3): Likewise.
13816         (sse3_haddv4sf3): Likewise.
13817         (sse3_hsubv4sf3): Likewise.
13818         (sse_cvtss2si): Likewise.
13819         (sse_cvtss2si_2): Likewise.
13820         (sse_cvtss2siq): Likewise.
13821         (sse_cvtss2siq_2): Likewise.
13822         (sse_cvttss2si): Likewise.
13823         (sse_cvttss2siq): Likewise.
13824         (sse2_cvttps2dq): Likewise.
13825         (sse3_movshdup): Likewise.
13826         (sse3_movsldup): Likewise.
13827         (sse2_cvtsd2si): Likewise.
13828         (sse2_cvtsd2si_2): Likewise.
13829         (sse2_cvtsd2siq): Likewise.
13830         (sse2_cvtsd2siq_2): Likewise.
13831         (sse2_cvttsd2si): Likewise.
13832         (sse2_cvttsd2siq): Likewise.
13833         (*sse2_cvtpd2dq): Likewise.
13834         (*sse2_cvttpd2dq): Likewise.
13835         (sse2_pshuflw_1): Likewise.
13836         (sse2_pshufhw_1): Likewise.
13837         (sse4a_insertqi): Likewise.
13838         (sse4a_insertq): Likewise.
13839         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
13840         (ssse3_phadddv4si3): Likewise.
13841         (ssse3_phaddswv8hi3): Likewise.
13842         (ssse3_phsubwv8hi3): Likewise.
13843         (ssse3_phsubdv4si3): Likewise.
13844         (ssse3_phsubswv8hi3): Likewise.
13845         (ssse3_pmaddubswv8hi3): Likewise.
13846         (ssse3_pmulhrswv8hi3): Likewise.
13847         (ssse3_pshufbv16qi3): Likewise.
13848         (ssse3_psign<mode>3): Likewise.
13849         (ssse3_palignrti): Likewise.
13850         (abs<mode>2): Likewise.
13851         (ssse3_phaddwv4hi3): Set prefix_extra.
13852         (ssse3_phadddv2si3): Likewise.
13853         (ssse3_phaddswv4hi3): Likewise.
13854         (ssse3_phsubwv4hi3): Likewise.
13855         (ssse3_phsubdv2si3): Likewise.
13856         (ssse3_phsubswv4hi3): Likewise.
13857         (ssse3_pmaddubswv4hi3): Likewise.
13858         (ssse3_pmulhrswv4hi3): Likewise.
13859         (ssse3_pshufbv8qi3): Likewise.
13860         (ssse3_psign<mode>3): Likewise.
13861         (ssse3_palignrdi): Likewise.
13862         (abs<mode>2): Likewise.
13863         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
13864         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
13865         (sse2_pmovmskb): Set mode to SI instead of V2DF.
13866
13867 2007-04-23  Nick Clifton  <nickc@redhat.com>
13868
13869         * params.def: Fix formatting of emacs local variables.
13870
13871 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
13872
13873         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
13874         move if inter-unit move isn't allowed.
13875         Don't split moving the first element of V2DI to DI to inter-unit
13876         move if inter-unit move isn't allowed.
13877
13878 2007-04-23  Richard Guenther  <rguenther@suse.de>
13879
13880         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
13881         and CDI_POST_DOMINATORS separately.
13882
13883 2007-04-23  Nick Clifton  <nickc@redhat.com>
13884
13885         * c.opt (Wformat-contains-nul): Add warning attribute.
13886
13887 2007-04-23  Jan Hubicka  <jh@suse.cz>
13888
13889         * function.c (init_function_start): Don't init line number info.
13890         (expand_function_end): Update.
13891         (reset_block_changes, record_block_change, finalize_block_changes,
13892         check_block_change, free_block_changes): Kill.
13893         * function.h (reset_block_changes, record_block_change,
13894         finalize_block_changes, check_block_change, free_block_changes):
13895         Remove prototypes.
13896         (struct function): Remove ib_boundaries_block.
13897         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
13898         Use curr_insn_locator to initialize locator.
13899         (emit_line_note): Remove.
13900         * cfgexpand.c (expand_gimple_cond_expr): Update.
13901         (construct_exit_block): Likewise.
13902         (tree_expand_cfg): Initialize/finalize locators.
13903         * expr.c (expand_expr_real): Update.
13904         * cfglayout.c (line_locators_locs, line_locators_lines,
13905         file_locators_locs, file_locators_files): Remove.
13906         (set_block_levels): Move to cfgexpand.c.
13907         (insn_locators_initialize): Remove.
13908         (pass_insn_locators_initialize): Remove.
13909         (locations_locators_locs, locations_locators_vals): New static vars.
13910         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
13911         Likewise.
13912         (insn_locators_alloc, insn_locators_finalize,
13913         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
13914         New functions.
13915         (locator_location): New.
13916         (locator_line, locator_file): Rewrite.
13917         * rtl.h (emit_line_note): Kill.
13918         (insn_locators_alloc, insn_locators_finalize,
13919         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
13920         Declare.
13921         * tree-inline.c (initialize_cfun): Do not initialize
13922         ib_boundaries_block.
13923         * passes.c (pass_insn_locators_initialize): Remove.
13924
13925 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13926
13927         PR middle-end/31448
13928         * expr.c (reduce_to_bit_field_precision): Handle
13929         CONST_INT rtx's.
13930
13931 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
13932
13933         PR tree-optimization/24659
13934         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
13935         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
13936         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
13937         * genopinit.c (optabs): Rename vec_pack_mod_optab
13938         to vec_pack_trunc_optab.
13939         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
13940         early for scalar floating point operands for NOP_EXPR.
13941         (vectorizable_type_promotion): Ditto.
13942         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
13943         vec_pack_trunc_optab.
13944         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
13945
13946         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
13947         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
13948         Rename from VEC_PACK_MOD_EXPR.
13949         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
13950         * expr.c (expand_expr_real_1): Ditto.
13951         * tree-inline.c (estimate_num_insns_1): Ditto.
13952         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
13953
13954         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
13955         (vec_unpacks_lo_v4sf): Ditto.
13956         (vec_pack_trunc_v2df): Ditto.
13957         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
13958         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
13959         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
13960
13961         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
13962         vec_pack_mod_v8hi.
13963         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
13964
13965         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
13966         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
13967         packing of floating point operands.
13968         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
13969         represent unpacking of floating point operands.
13970         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
13971         [vec_unpacks_hi]: Ditto.
13972         [vec_unpacks_lo]: Ditto.
13973
13974 2007-04-22  Jan Hubicka  <jh@suse.cz>
13975
13976         * final.c (rest_of_handle_final): Call
13977         targetm.asm_out.constructor/targetm.asm_out.destructor
13978         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
13979         proper priority via decl_*_priority_insert.
13980         * c-common.c (c_expand_body): Likewise.
13981
13982 2007-04-22  Richard Guenther  <rguenther@suse.de>
13983
13984         PR tree-optimization/29789
13985         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
13986         (rewrite_reciprocal): New helper split out from
13987         determine_invariantness_stmt.
13988         (rewrite_bittest): Likewise.
13989         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
13990         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
13991         is not.
13992
13993 2007-04-22  Revital Eres  <eres@il.ibm.com>
13994
13995         * loop-unroll.c (var_to_expand): New field to support also
13996         insns of the form x = something + x.
13997         (analyze_insn_to_expand_var): Use it.
13998         (expand_var_during_unrolling): Likewise.
13999
14000 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
14001
14002         * predict.c: Include pointer-set.h.
14003         (bb_predictions): New variable.
14004         (tree_predicted_by_p, tree_predict_edge,
14005         remove_predictions_associated_with_edge): Use bb_predictions map
14006         instead of bb->predictions.
14007         (clear_bb_predictions, assert_is_empty): New functions.
14008         (combine_predictions_for_bb): Use bb_predictions map.  Call
14009         clear_bb_predictions.
14010         (tree_estimate_probability): Create and free bb_predictions map.
14011         * Makefile.in (predict.o): Add pointer-set.h dependency.
14012         * basic-block.h (struct basic_block_def): Remove predictions
14013         field.
14014         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
14015
14016 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
14017
14018         PR target/31480
14019         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
14020         is null.
14021
14022 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14023
14024         * timevar.c (timevar_print): Change reference of --disable-checking to
14025         --enable-checking=release.  Also warn if assert checking is disabled.
14026
14027 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14028
14029         PR C/30265
14030         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
14031         decl as addressable if the compound literal was marked as
14032         addressable.
14033         Mark the decl as a gimple register if it is a complex or
14034         vector decl and does not live in memory.
14035
14036 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14037
14038         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
14039         (GENERIC_NEXT): New function macro.
14040         (PHI_CHAIN): Use phi_node's new chain variable.
14041         (tree_phi_node): Change tree_common to tree_base
14042         and add the chain field.
14043         * tree-phinodes.c (make_phi_node): Don't set
14044         TREE_TYPE on the new node.
14045         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
14046         instead of checking GIMPLE_TUPLE_P in chain_next.
14047         * tree-vect-transform.c
14048         (get_initial_def_for_induction): Look at
14049         PHI_RESULT_TREE for the type of the phi node.
14050         (update_vuses_to_preheader): Use PHI_CHAIN
14051         instead of TREE_CHAIN on the phi node.
14052         * tree-ssa-structalias.c (compute_points_to_sets):
14053         Likewise.
14054         (ipa_pta_execute): Likewise.
14055
14056 2007-04-21  Richard Guenther  <rguenther@suse.de>
14057
14058         PR middle-end/31136
14059         * fold-const.c (fold_unary): Call fold_convert_const on the
14060         original tree.
14061
14062 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
14063
14064         * gcse.c (store_killed_in_insn): Handle PARALLELs.
14065         (store_killed_in_pat): New.
14066
14067 2007-04-20  Richard Henderson  <rth@redhat.com>
14068
14069         PR target/31628
14070         * config/i386/i386.c (type_has_variadic_args_p): Look for any
14071         TREE_LIST with a void_type_node value, not void_list_node exactly.
14072
14073 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
14074
14075         * doc/standards.texi: Re-arrange into language-specific
14076         subsections. Add a C++ section, documenting which standards we
14077         support.
14078
14079 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
14080
14081         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
14082         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
14083
14084 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
14085
14086         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
14087         ecrti.o and crtbegin.o.
14088         (LIB_DEFAULT_SPEC): Include -lc.
14089         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
14090
14091 2007-04-20  Richard Henderson  <rth@redhat.com>
14092
14093         PR target/28623
14094         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
14095         argument; update all callers.
14096         (get_unaligned_offset): New.
14097         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
14098         get_unaligned_address, just pass on the address directly.
14099         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
14100         the subreg in the helper patterns.
14101         (unaligned_extendqidi_le): Use get_unaligned_offset.
14102         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
14103         (unaligned_extendhidi_be): Likewise.
14104         (unaligned_extendhidi): Tidy.
14105         * config/alpha/alpha-protos.h: Update.
14106
14107 2007-04-20  Richard Henderson  <rth@redhat.com>
14108
14109         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
14110         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
14111         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
14112         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
14113         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
14114         (CPP_SPEC): Don't include %(cpp_subtarget).
14115         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
14116         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
14117         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
14118
14119 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
14120
14121         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
14122         for __builtin_ia32_cmpordss.
14123
14124         PR tree-optimization/31632
14125         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
14126         and arg1 for optimizations of comparison against min/max values.
14127         Fold arg0 to arg1's type for optimizations of comparison against
14128         min+1 and max-1 values.
14129
14130 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
14131
14132         * reload.c (combine_reloads): When trying to use a dying register,
14133         check whether it's uninitialized and don't use if so.
14134
14135 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
14136
14137         * fold-const.c: Remove prototypes for native_encode_expr and
14138         native_interpret_expr.
14139         (native_encode_expr): Make non-static.
14140         (native_interpret_expr): Likewise.
14141         * tree.h: Add prototypes for the above.
14142
14143 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
14144
14145         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
14146         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
14147         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
14148         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
14149         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
14150         Add length attributes.
14151
14152 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
14153
14154         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
14155         not that it is 1.
14156
14157         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
14158         __STDC_WANT_DEC_FP__.
14159
14160 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
14161
14162         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
14163         for long double compatibility.
14164         * configure: Regenerate.
14165
14166 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
14167
14168         PR rtl-optimization/29841
14169         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
14170         trap instructions.
14171         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
14172         that may cause control flow transfer from being moved.
14173
14174 2007-04-18  Jan Hubicka  <jh@suse.cz>
14175
14176         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
14177         types.
14178
14179 2007-04-18  Eric Christopher  <echristo@apple.com>
14180
14181         * config/rs6000/darwin.md (load_macho_picbase): Use link register
14182         only. Update operands.
14183         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
14184         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
14185         link register to pic register.
14186
14187 2007-04-18  Dirk Mueller  <dmueller@suse.de>
14188
14189         PR diagnostic/31227
14190         * tree-vrp.c (search_for_addr_array): New.
14191         (check_array_bounds): Suppress warning about
14192         address taken of array refs if its not de-referenced.
14193
14194 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
14195
14196         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
14197         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
14198
14199         * tree-vectorizer.h (NITERS_KNOWN_P): New.
14200         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
14201         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
14202
14203         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
14204         dump print.
14205         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
14206         print message.
14207         (vect_analyze_scalar_cycles): Fix indentation.
14208         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
14209         (vect_mark_relevant): Include phis in relevance analysis.
14210
14211         * tree-vect-transform.c (vect_transform_loop): Add an assert.
14212
14213 2007-04-18  Anatoly Sokolov <aesok@post.ru>
14214
14215         * config/avr/avr.c (ptrreg_to_str): Replace error() with
14216         output_operand_lossage().
14217
14218 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
14219
14220         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
14221         the unused code for reduction without adjust-in-epilog to simplify the
14222         function.
14223
14224 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
14225
14226         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
14227         (S390_TDC_NEGATIVE_ZERO): New constant.
14228         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
14229         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
14230         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
14231         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
14232         (S390_TDC_POSITIVE_INFINITY): New constant.
14233         (S390_TDC_NEGATIVE_INFINITY): New constant.
14234         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
14235         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
14236         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
14237         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
14238         (S390_TDC_INFINITY): New constant.
14239         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
14240         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
14241         optimization for UNSPEC_CCZ_TO_INT.
14242         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
14243         ("*ccz_to_int"): New insn.
14244         ("isinf<mode>2"): New insn.
14245         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
14246         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
14247         (UNSPEC_CCZ_TO_INT): New constant.
14248
14249 2007-04-18  Richard Guenther  <rguenther@suse.de>
14250
14251         PR tree-optimization/19431
14252         PR tree-optimization/21463
14253         * tree-pass.h (pass_phiprop): Declare.
14254         * passes.c (init_optimization_passes): New phiprop pass.
14255         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
14256         (phivn_valid_p): New helper function.
14257         (phiprop_insert_phi): Likewise.
14258         (propagate_with_phi): Likewise.
14259         (tree_ssa_phiprop): New propagator propagating loads
14260         through phi nodes if profitable.
14261
14262 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
14263
14264         * tree-vect-analyze.c (process_use): New function.
14265         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
14266         Check phis in all bbs.
14267         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
14268         assert.
14269
14270 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
14271
14272         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
14273         we use REG_EQUAL.
14274
14275 2007-04-17  Anatoly Sokolov <aesok@post.ru>
14276
14277         PR target/30483
14278         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
14279         error().
14280
14281 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
14282
14283         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
14284         on "0".
14285         (sse_vmmulv4sf3): Likewise.
14286         (sse2_vmaddv2df3): Likewise.
14287         (sse2_vmmulv2df3): Likewise.
14288
14289 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
14290
14291         PR rtl-optimization/31360
14292         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
14293         (target_reg_cost): New.
14294         (init_set_costs): Initialize target_reg_cost.  Add comments
14295         regarding the rationale of the costs.
14296         (global_cost_for_size): Renamed to...
14297         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
14298         of register pressure.
14299         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
14300         estimate_reg_pressure_cost.  Add number of ivs.
14301         (determine_set_costs): Dump target_reg_cost.
14302         * loop-invariant.c (gain_for_invariant):  Use
14303         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
14304         (best_gain_for_invariant, find_invariants_to_move): Remove
14305         n_inv_uses.
14306         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
14307         (target_reg_cost): Declare.
14308         (global_cost_for_size): Declaration removed.
14309         (estimate_reg_pressure_cost): Declare.
14310
14311 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
14312
14313         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
14314         regnos into even/odd register pairs.
14315         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
14316         TDmode similar to the other floating point modes.
14317         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
14318         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
14319         define_expand's.
14320         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
14321         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
14322         (movdd_hardfloat64): Use TARGET_MFPGPR.
14323
14324 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
14325
14326         * reload1.c (delete_output_reload): Don't count output in n_inherited.
14327
14328         Revert
14329         2005-01-05  Richard Henderson  <rth@redhat.com>
14330         PR rtl-opt/10692
14331         * reload1.c (do_input_reload): Restrict the optimization deleteing
14332         a previous output reload to RELOAD_FOR_INPUT.
14333
14334 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
14335
14336         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
14337         induc_vec_info_type.
14338         (vectorizable_induction): New function declaration.
14339         * tree-vect-transform.c (get_initial_def_for_induction): No need to
14340         check if already vectorized.  Find first place in BB where new stmts
14341         can be inserted.  Takes only one argument.
14342         (vectorizable_induction): New function.
14343         (vect_transform_stmt): Add case for induc_vec_info_type to call
14344         vectorizable_induction.
14345         (vect_transform_loop): Consider phis for vectorization.
14346         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
14347         condition.
14348         (analyze_operations): Call vectorizable_induction when analyzing phis.
14349         Fix comment.
14350         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
14351         (vect_mark_relevant): Include phis in relevance analysis.
14352         (vect_mark_stmts_to_be_vectorize): Likewise.
14353         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
14354
14355 2007-04-16  Lawrence Crowl  <crowl@google.com>
14356
14357         * doc/invoke.texi (Debugging Options): Add documentation for the
14358         -femit-struct-debug options -femit-struct-debug-baseonly,
14359         -femit-struct-debug-reduced, and
14360         -femit-struct-debug-detailed[=...].
14361
14362         * c-opts.c (c_common_handle_option): Add
14363         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
14364         and OPT_femit_struct_debug_detailed_.
14365         * c.opt: Add specifications for
14366         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
14367         and -femit-struct-debug-detailed[=...].
14368         * opts.c (set_struct_debug_option): Parse the
14369         -femit-struct-debug-... options.
14370         * opts.c (matches_main_base, main_input_basename,
14371         main_input_baselength, base_of_path, matches_main_base): Add
14372         variables and functions to compare header base name to compilation
14373         unit base name.
14374         * opts.c (should_emit_struct_debug): Add to determine to emit a
14375         structure based on the option.
14376         (dump_struct_debug) Also disabled function to debug this
14377         function.
14378         * opts.c (handle_options): Save the base name of the
14379         compilation unit.
14380
14381         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
14382         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
14383         This hook indicates if a type is generic.  Set it by default
14384         to "never generic".
14385         * langhooks.h (struct lang_hooks_for_types): Add a new hook
14386         to determine if a struct type is generic or not.
14387         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
14388         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
14389         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
14390         with live C++ hook.
14391
14392         * flags.h (enum debug_info_usage): Add an enumeration to describe
14393         a program's use of a structure type.
14394         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
14395         to indicate the program's usage of the type.  Filter structs based
14396         on the -femit-struct-debug-... specification.
14397         (gen_type_die): Split into two routines, gen_type_die and
14398         gen_type_die_with_usage.  gen_type_die is now a wrapper
14399         that assumes direct usage.
14400         (gen_type_die_with_usage): Replace calls to gen_type_die
14401         with gen_type_die_with_usage adding the program usage of
14402         the referenced type.
14403         (dwarf2out_imported_module_or_decl): Suppress struct debug
14404         information using should_emit_struct_debug when appropriate.
14405
14406 2007-04-16  Ian Lance Taylor  <iant@google.com>
14407
14408         PR tree-optimization/31522
14409         * tree-vrp.c (vr_phi_edge_counts): New static variable.
14410         (vrp_initialize): Allocate vr_phi_edge_counts.
14411         (vrp_visit_phi_node): Don't push to infinity if we saw a new
14412         executable edge.  Drop test for all constants.
14413         (vrp_finalize): Free vrp_phi_edge_counts.
14414
14415         * doc/cpp.texi (Common Predefined Macros): Clarify description of
14416         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
14417
14418         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
14419         predecessors at head rather than tail.
14420
14421 2007-04-16  Matthias Klose  <doko@debian.org>
14422
14423         * config/alpha/linux.h (CPP_SPEC): Define.
14424         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
14425
14426 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
14427
14428         * function.h: Remove sequence_stack extern declaration.
14429
14430 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
14431
14432         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
14433         TARGET_FIDOA.
14434         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
14435         defined.
14436
14437 2007-04-16  Anatoly Sokolov <aesok@post.ru>
14438
14439         * config/avr/avr.c (avr_arch_types): Rearranging  array.
14440         (enum avr_arch): Add.
14441         (avr_mcu_types): Use avr_arch enumeration constants instead of
14442         numbers.
14443         * config/avr/avr.h (LINK_SPEC): Simplify.
14444
14445 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
14446
14447         * config/m68k/m68k.c (m68k_libcall_value,
14448         m68k_function_value): Use macros for register names more.
14449
14450         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
14451         instead.
14452         (M68K_REGNAME): Use A6_REG.
14453         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
14454
14455 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
14456
14457         PR middle-end/28071
14458         * sched-int.h (struct deps): Split field 'pending_lists_length' into
14459         'pending_read_list_length' and 'pending_write_list_length'.  Update
14460         comment.
14461         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
14462         to handle two length counters instead of one.  Update all uses.
14463         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
14464         two length counters instead of one.
14465         * sched-rgn.c (propagate_deps): Update to handle two length counters
14466         instead of one.
14467
14468 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
14469
14470         PR target/31582
14471         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
14472         copy of source, pass it to ix86_expand_vector_set and return
14473         it as target.
14474
14475 2007-04-16  David Ung  <davidu@mips.com>
14476             Joseph Myers  <joseph@codesourcery.com>
14477
14478         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
14479         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
14480         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
14481         Add 74K processor information.
14482         * config/mips/mips.md: Include 74k.md.
14483         (cpu): Add 74kc,74kf,74kx.
14484         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
14485         * config/mips/74k.md: New.
14486         * doc/invoke.texi (MIPS Options): Document 74K support.
14487
14488 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
14489
14490         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
14491         vectorizable_* functions.
14492         * tree-vect-transform.c (vectorizable_call): Add check for
14493         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
14494         (vectorizable_store): likewise.
14495         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
14496         Add comments.
14497         (vectorizable_operation, vectorizable_type_demotion): Likewise.
14498         (vectorizable_type_promotion, vectorizable_load): Likewise.
14499         (vectorizable_live_operation, vectorizable_condition): Likewise.
14500         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
14501         STMT_VINFO_LIVE_P.
14502         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
14503
14504 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
14505
14506         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
14507         register numbers more.
14508         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
14509         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
14510         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
14511         FUNCTION_VALUE_REGNO_P): Likewise.
14512         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
14513         STATIC_CHAIN_REGNUM): Likewise.
14514         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
14515         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
14516         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
14517         * config/m68k/m68k.md (FP_REG): New.
14518
14519 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
14520
14521         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
14522         alignment on fido.
14523
14524 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
14525
14526         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
14527         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
14528         comment typos.
14529
14530 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
14531
14532         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
14533         cold loops.
14534
14535 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14536
14537         PR c/31520
14538         * c-decl.c (finish_decl): Grab the type of the decl after the call
14539         to store_init_value.
14540
14541 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
14542
14543         * common.opt (fforward-propagate): Fix "Optimization" annotation.
14544
14545 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
14546
14547         PR c++/25874
14548         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free
14549         dominators, post dominators and cleanup cfg before returning.
14550
14551 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
14552
14553         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
14554         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
14555
14556 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
14557
14558         * config.gcc: Recognize fido.
14559         * config/m68k/m68k-devices.def (fidoa): New.
14560         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
14561         __mfido__.
14562         (FL_FIDOA, TARGET_FIDOA): New.
14563         * config/m68k/m68k.opt (mfidoa): New.
14564
14565 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14566
14567         PR middle-end/31322
14568         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
14569         when a personality function is used.
14570
14571 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
14572
14573         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
14574
14575 2007-04-13  Mike Stump  <mrs@apple.com>
14576
14577         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
14578         we can...
14579         * config/darwin.opt (fapple-kext): Make C++ only.
14580         * config/darwin.c (darwin_override_options): Remove code to ensure
14581         -fapple-kext is given for C++ only.
14582
14583 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
14584
14585         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
14586         * config/mips/mips.c (override_options): Call
14587         SUBTARGET_OVERRIDE_OPTIONS, if defined.
14588
14589 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
14590
14591         * config/i386/i386.opt (msvr3-shlib): Removed.
14592
14593         * doc/invoke.texi: Remove -msvr3-shlib.
14594
14595 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
14596
14597         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
14598         with "popcnt" instruction.
14599
14600 2007-04-13  Richard Guenther  <rguenther@suse.de>
14601
14602         PR tree-optimization/21258
14603         * tree-vrp.c (compare_case_labels): New helper.
14604         (find_switch_asserts): New function.
14605         (find_assert_locations): Call it for SWITCH_EXPRs.
14606
14607 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
14608
14609         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
14610         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
14611         check is now implied in X87_FLOAT_MODE_P.
14612         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
14613         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
14614         (fix_trunc<mode>_i386_fisttp): Ditto.
14615         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
14616         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
14617         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
14618         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
14619         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
14620         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
14621         (unnamed_splitters): Ditto.
14622         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
14623         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
14624         FIRST_SSE_REG for local functions when SSE math is enabled or
14625         for functions with sseregparm attribute.
14626         (standard_80387_constant_p): Return -1 if mode is not
14627         X87_FLOAT_MODE_P.
14628         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
14629         (ix86_expand_compare): Ditto.
14630         (ix86_expand_carry_flag_compare): Ditto.
14631         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
14632         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
14633         DECIMAL_FLOAT_MODE_P.
14634         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
14635         of SCALAR_FLOAT_MODE_P.
14636         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
14637         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
14638         checks before FLOAT_MODE_P.
14639         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
14640         before FLOAT_MODE_P.
14641         [DIV]: Ditto.
14642         [NEG]: Ditto.
14643         [ABS]: Ditto.
14644         [SQRT]: Ditto.
14645         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
14646
14647 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
14648             Charles Wilson  <libtool@cwilson.fastmail.fm>
14649
14650         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
14651         (libgcc.mvars): Don't depend on them.
14652         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
14653         * exec-tool.in: New.
14654
14655 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
14656
14657         * doc/invoke.text (--help): Document --help=common.
14658
14659 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
14660
14661         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
14662
14663 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14664
14665         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
14666         * genemit.c (main): Emit #include "integrate.h".
14667         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
14668         (LOADGP_RTP): New mips_loadgp_style.
14669         * config/mips/mips.h: Include config/vxworks-dummy.h.
14670         (TARGET_RTP_PIC): New macro.
14671         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
14672         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
14673         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
14674         for TARGET_RTP_PIC.
14675         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
14676         -mvxworks-pic when using -mrtp and a PIC option.
14677         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
14678         for RTP PIC.
14679         (mips_symbolic_constant_p, mips_symbolic_address_p)
14680         (mips_symbol_insns): Handle SYMBOL_HALF.
14681         (override_options): Warn about -G and -mrtp being used together.
14682         Initialize mips_lo_relocs[SYMBOL_HALF].
14683         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
14684         (mips_emit_loadgp): Handle LOADGP_RTP.
14685         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
14686         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
14687         (tablejump): Handle function-relative case table entries if
14688         TARGET_RTP_PIC.
14689         * config/mips/predicates.md (symbol_ref_operand): New predicate.
14690
14691 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14692
14693         * config/mips/mips.md (load_call<mode>): Allow any general register.
14694         destination.
14695         (sibcall_value_internal, sibcall_value_multiple_internal)
14696         (call_value_internal, call_value_split, call_value_multiple_internal)
14697         (call_value_multiple_split): Remove constraints from operand 0.
14698
14699 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14700
14701         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
14702         rather than loadgp_noshared.
14703         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
14704         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
14705         gen_loadgp.
14706         * config/mips/mips.md (loadgp): Rename to...
14707         (loadgp_newabi): ...this.
14708         (loadgp_noshared): Rename to...
14709         (loadgp_absolute): ...this.
14710
14711 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14712
14713         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
14714         false for locally-binding symbols.
14715         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
14716
14717 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14718
14719         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
14720         (SYMBOL_GOT_PAGE_OFST): ...this.
14721         (SYMBOL_GOT_GLOBAL): Rename to...
14722         (SYMBOL_GOT_DISP): ...this.
14723         (SYMBOL_GOTOFF_GLOBAL): Rename to...
14724         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
14725         * config/mips/mips.c (mips_global_symbol_p): New function.
14726         (mips_symbol_binds_local_p): Likewise.
14727         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
14728         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use
14729         mips_global_symbol_p and mips_symbol_binds_local_p.
14730         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
14731         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
14732         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
14733         SYMBOL_GOTOFF_DISP.
14734         (mips_ok_for_lazy_binding_p): New function.
14735         (mips_load_call_address, mips_expand_call): Use it.
14736         (mips_dangerous_for_la25_p): Likewise.
14737         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
14738         (*got_disp<mode>): Use got_disp_operand instead of
14739         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
14740         SYMBOL_GOTOFF_GLOBAL.
14741         (*got_page<mode>): Use got_page_ofst_operand instead of
14742         local_got_operand.
14743         * config/mips/predicates.md (const_call_insn_operand): Use
14744         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
14745         (global_got_operand): Rename to...
14746         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
14747         SYMBOL_GOT_GLOBAL.
14748         (local_got_operand): Rename to...
14749         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
14750         of SYMBOL_GOT_LOCAL.
14751
14752 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14753
14754         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
14755         TARGET_CALL_CLOBBERED_GP.
14756         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
14757         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
14758         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
14759         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
14760         of TARGET_ABICALLS && !TARGET_NEWABI.
14761         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
14762         * config/mips/mips.c (mips_load_call_address): Check
14763         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
14764         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
14765         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
14766         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
14767         TARGET_ABICALLS && TARGET_NEWABI.
14768         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
14769         TARGET_ABICALLS.
14770         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
14771         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
14772         TARGET_ABICALLS && TARGET_NEWABI.
14773         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
14774         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
14775         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
14776         whether indirect calls must use $25.
14777         (mips_extra_live_on_entry): Check TARGET_GOT instead of
14778         TARGET_ABICALLS.
14779         * config/mips/mips.md (jal_macro): Check flag_pic and
14780         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
14781         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
14782         instead of TARGET_ABICALLS.
14783         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
14784         TARGET_ABICALLS && TARGET_OLDABI.
14785         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
14786         (sibcall): In the comment above the define_insn, mention
14787         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
14788         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
14789         instead of TARGET_ABICALLS.
14790
14791 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
14792
14793         * doc/md.texi (Blackfin family constraints): Document PA and PB.
14794         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
14795         (MACFLAGS_MATCH_P): New macro.
14796         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
14797         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
14798         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
14799         the other MACFLAG constants.
14800         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
14801         (flag_machi): Tighten constraints.  Renumber some of the operands.
14802         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
14803         output template.
14804         (flag_machi_parts_acconly): New pattern.
14805         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
14806         used.
14807         (flag_macinit1hi): Tighten constraints.
14808         (flag_mul_macv2hi_parts_acconly): New pattern.
14809
14810         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
14811         Use a more efficient implementation.
14812         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
14813         inline sequences when not optimizing for size.
14814
14815         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
14816         movhi_high2low): Delete, merge functionality into...
14817         (packv2hi): ... this pattern.
14818
14819         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
14820         * config/bfin/bfin.opt (msim): New option.
14821         (mcpu=): New option.
14822         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
14823         (bfin_cpu_t): Typedef of enum bfin_cpu.
14824         (bfin_cpu_type): New declaration.
14825         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
14826         -msim and -mcpu= options.
14827         (LIB_SPEC): Likewise.
14828         * config/bfin/bfin.c (bfin_cpu_type): Define.
14829         (bfin_handle_option): Handle -mcpu= option.
14830         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
14831         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
14832         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
14833
14834 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14835
14836         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
14837         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
14838         (powerpc-wrs-vxworksae): Use ${tm_file}.
14839         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
14840         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
14841         * config/i386/vx-common.h: New file.
14842
14843 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
14844
14845         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
14846         of crt0.o%s.
14847
14848 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
14849
14850         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
14851         ldxtr.
14852
14853 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
14854
14855         PR c++/31078
14856         PR c++/31103
14857         * c-common.c (c_build_qualified_type): Set canonical type
14858         appropriately.
14859
14860 2007-04-12  Richard Guenther  <rguenther@suse.de>
14861
14862         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
14863         lower bound and element size if lower bound is not zero
14864         or either of the ARRAY_REF operands is set.
14865
14866 2007-04-12  Richard Guenther  <rguenther@suse.de>
14867
14868         PR tree-optimization/24689
14869         PR tree-optimization/31307
14870         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
14871         indices by value.
14872         * gimplify.c (canonicalize_addr_expr): To be consistent with
14873         gimplify_compound_lval only set operands two and three of
14874         ARRAY_REFs if they are not gimple_min_invariant.  This makes
14875         it never at this place.
14876         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
14877
14878 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14879
14880         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
14881         null before emitting a .nsubspa directive.
14882
14883 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
14884
14885         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
14886         need_to_partition_p if there are no memory statements in the
14887         function.
14888
14889 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
14890
14891         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
14892         (gcd_of_steps_may_divide_p): New function.
14893         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
14894
14895 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
14896
14897         * reload.c (find_reloads_toplev, find_reloads_address,
14898         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
14899         not a pointer equality test, to decide if we need to call
14900         push_reg_equiv_alt_mem.
14901
14902 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
14903
14904         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
14905         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps):
14906         New.
14907         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
14908
14909 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
14910
14911         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
14912         vector to be positive.
14913
14914 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
14915
14916         PR 30735
14917         PR 31090
14918         * doc/invoke.texi: Document --params max-aliased-vops and
14919         avg-aliased-vops.
14920         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
14921         debug_memory_partitions): Move to tree-flow.h
14922         * params.h (AVG_ALIASED_VOPS): Define.
14923         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
14924         users.
14925         (mp_info_t): Likewise.
14926         (get_mem_sym_stats_for): New.
14927         (set_memory_partition): Move from tree-flow-inline.h.
14928         (mark_non_addressable): Only clear the set of symbols for the
14929         partition if it exists.
14930         (dump_memory_partitions): Move from tree-ssa-operands.c
14931         (debug_memory_partitions): Likewise.
14932         (need_to_partition_p): New.
14933         (dump_mem_ref_stats): New.
14934         (debug_mem_ref_stats): New.
14935         (dump_mem_sym_stats): New.
14936         (debug_mem_sym_stats): New.
14937         (update_mem_sym_stats_from_stmt): New.
14938         (compare_mp_info_entries): New.
14939         (mp_info_cmp): Call it.
14940         (sort_mp_info): Change argument to a list of mem_sym_stats_t
14941         objects.
14942         (get_mpt_for): Move from tree-ssa-operands.c.
14943         (find_partition_for): New.
14944         (create_partition_for): Remove.
14945         (estimate_vop_reduction): New.
14946         (update_reference_counts): New.
14947         (build_mp_info): New.
14948         (compute_memory_partitions): Refactor.
14949         Document new heuristic.
14950         Call build_mp_info, update_reference_counts,
14951         find_partition_for and estimate_vop_reduction.
14952         (compute_may_aliases): Populate virtual operands before
14953         calling debugging dumps.
14954         (delete_mem_sym_stats): New.
14955         (delete_mem_ref_stats): New.
14956         (init_mem_ref_stats): New.
14957         (init_alias_info): Call it.
14958         (maybe_create_global_var): Remove alias_info argument.
14959         Get number of call sites and number of pure/const call sites
14960         from gimple_mem_ref_stats().
14961         (dump_alias_info): Call dump_memory_partitions first.
14962         (dump_points_to_info_for): Show how many times a pointer has
14963         been dereferenced.
14964         * opts.c (decode_options): For -O2 set --param
14965         max-aliased-vops to 500.
14966         For -O3 set --param max-aliased-vops to 1000 and --param
14967         avg-aliased-vops to 3.
14968         * fortran/options.c (gfc_init_options): Remove assignment to
14969         MAX_ALIASED_VOPS.
14970         * tree-flow-inline.h (gimple_mem_ref_stats): New.
14971         * tree-dfa.c (dump_variable): Dump memory reference
14972         statistics.
14973         Dump NO_ALIAS* settings.
14974         (referenced_var_lookup): Tidy.
14975         (mem_sym_stats): New.
14976         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
14977         and ORIG are different SSA names for a memory partition.
14978         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
14979         * tree-flow.h (struct mem_sym_stats_d): Define.
14980         (mem_sym_stats_t): Define.
14981         (struct mem_ref_stats_d): Define.
14982         (struct gimple_df): Add field mem_ref_stats.
14983         (enum noalias_state): Define.
14984         (struct var_ann_d): Add bitfield noalias_state.
14985         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
14986         debug_mem_ref_stats, debug_memory_partitions,
14987         debug_mem_sym_stats): Declare.
14988         * tree-ssa-structalias.c (update_alias_info): Update call
14989         sites, pure/const call sites and asm sites in structure
14990         returned by gimple_mem_ref_stats.
14991         Remove local variable IS_POTENTIAL_DEREF.
14992         Increase NUM_DEREFS if the memory expression is a potential
14993         dereference.
14994         Call update_mem_sym_stats_from_stmt.
14995         If the memory references memory, call
14996         update_mem_sym_stats_from_stmt for all the direct memory
14997         symbol references found.
14998         (intra_create_variable_infos): Set noalias_state field for
14999         pointer arguments according to the value of
15000         flag_argument_noalias.
15001         * tree-ssa-structalias.h (struct alias_info): Remove fields
15002         num_calls_found and num_pure_const_calls_found.
15003         (update_mem_sym_stats_from_stmt): Declare.
15004         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
15005         Set default value to 100.
15006         (PARAM_AVG_ALIASED_VOPS): Define.
15007
15008 2007-04-11  Richard Guenther  <rguenther@suse.de>
15009
15010         PR middle-end/31530
15011         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
15012         a * -b + c as c - a * b if we honor sign dependent rounding.
15013
15014 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
15015
15016         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
15017         bfin_expand_strmov.
15018         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
15019         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
15020         variables.
15021         (initialize_trampoline): Don't use old-style function definition.
15022         (bfin_secondary_reload): Mark IN_P argument as unused.
15023
15024 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
15025
15026         PR tree-optimization/31343
15027         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
15028         (build_polynomial_chrec): Return a scalar when the evolution is zero.
15029         * testsuite/gcc.dg/vect/pr31343.c: New.
15030
15031 2007-04-10  Eric Christopher  <echristo@apple.com>
15032
15033         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
15034         * config/i386/i386.md (*cmpfp0): Use.
15035         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
15036         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
15037         (fix_trunc<mode>_i386_fisttp): Ditto.
15038         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
15039         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
15040         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
15041         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
15042         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
15043         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
15044         (unnamed_splitters): Ditto.
15045         * config/i386/i386.c (output_fix_trunc): Assert that
15046         we're not being passed a TFmode operand.
15047
15048 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
15049
15050         PR tree-optimization/31526
15051         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
15052         n_basic_blocks to find newly added blocks.
15053
15054 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
15055
15056         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
15057         alternative.
15058         (fix_trunc<mode>si_sse): Ditto.
15059         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
15060         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
15061         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
15062         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
15063         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
15064         expander using SSEMODEF mode macro.
15065         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
15066         expander using SSEMODEF mode macro.
15067         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
15068         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
15069         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
15070         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
15071         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
15072         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
15073         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
15074         Macroize insn using X87MODEF mode macro.
15075
15076 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
15077
15078         * config/i386/sse.md (sse2_pinsrw): Removed.
15079         (sse2_pextrw): Renamed to ...
15080         (*sse2_pextrw): This.
15081
15082 2007-04-09  Jan Hubicka  <jh@suse.cz>
15083
15084         PR target/27869
15085         * config/i386/sse.md
15086         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
15087         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
15088         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
15089         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
15090
15091 2007-04-09  Jan Hubicka  <jh@suse.cz>
15092
15093         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
15094         multiple fields of union.
15095
15096 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
15097
15098         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
15099         (create_preheaders): Check that loops are available.
15100         (fix_loop_structure): Clean up, improve comments.
15101         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
15102         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
15103         state flags.
15104         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
15105         * predict.c (tree_estimate_probability): Do not call
15106         calculate_dominance_info.  Call create_preheaders.
15107         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
15108         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
15109         flags.
15110         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
15111         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
15112         * tree-cfg.c (tree_split_edge): Make an assert more precise.
15113         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
15114         arguments.
15115
15116 2007-04-08  Jan Hubicka  <jh@suse.cz>
15117
15118         * tree.h (maybe_fold_offset_to_component_ref): Declare.
15119         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
15120         * fold-const.c (fold_unary): Use it.
15121
15122 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15123
15124         * varasm.c (assemble_variable): Remove call to
15125         lang_hooks.decls.prepare_assemble_variable.
15126         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
15127         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
15128         * langhooks.h (lang_hooks_for_decls): Remove
15129         prepare_assemble_variable.
15130
15131 2007-04-08  Mike Stump  <mrs@apple.com>
15132
15133         * config/i386/i386.c: Use inc/dec on Core2.
15134
15135 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
15136
15137         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
15138         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
15139         lhd_tree_inlining_end_inlining): Remove.
15140         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
15141         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
15142         end_inlining hooks.
15143         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
15144         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
15145         lhd_tree_inlining_end_inlining): Remove prototypes.
15146         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
15147         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
15148         LANG_HOOKS_TREE_INLINING_START_INLINING,
15149         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
15150
15151         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
15152         not set it.
15153
15154 2007-04-08  Anatoly Sokolov <aesok@post.ru>
15155
15156         PR target/29932
15157         * config/avr/predicates.md (io_address_operand): Delete predicate.
15158         (low_io_address_operand): Don't use 'mode' argument.
15159         (higth_io_address_operand): Rename ...
15160         (high_io_address_operand): ... to this. Don't use 'mode' argument.
15161         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
15162         for above change.
15163
15164 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
15165
15166         Revert change removing staticp.
15167
15168 2007-04-07  Anatoly Sokolov <aesok@post.ru>
15169
15170         PR target/30289
15171         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
15172         earlyclobber.
15173
15174 2007-04-07  Bruce Korb  <bkorb@gnu.org>
15175
15176         * c.opt: Add -Wformat-contains-nul.
15177         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
15178           -Wformat setting.
15179         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
15180         the NUL byte warning.
15181
15182 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
15183
15184         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
15185
15186 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
15187
15188         * tree.c (staticp): No longer use staticp langhook.
15189         * langhooks.c (lhd_staticp): Removed.
15190         * langhooks.h (struct lang_hooks): Remove staticp.
15191         * c-common.c (c_staticp): Remove.
15192         * c-common.h (c_staticp): Ditto.
15193         * langhooks-defs.h (lhd_staticp): Ditto.
15194         (LHD_HOOKS_STATICP): Ditto
15195         * tree.h (gcc_assert_lowered): New macro.
15196
15197 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
15198
15199         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
15200         argument "reliable".
15201         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
15202         Add argument "reliable".  Propagate it through calls.
15203         (infer_loop_bounds_from_undefined):  Derive number of iterations
15204         estimates from references in blocks that do not dominate loop latch.
15205         (gcov_type_to_double_int): New function.
15206         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
15207         and expected_loop_iterations_unbounded.
15208         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
15209         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
15210         * tree-data-ref.c (estimated_loop_iterations): Export.
15211         (get_references_in_stmt): Fix -- do not return addresses of local
15212         objects.
15213         * cfgloop.h (expected_loop_iterations_unbounded,
15214         estimated_loop_iterations): Declare.
15215
15216 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
15217
15218         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
15219
15220 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
15221
15222         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
15223         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
15224         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
15225         Use output_387_reg_move().
15226         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
15227         expander using X87MODEF12 mode macro.
15228         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
15229         choosing register preferences.  Use output_387_reg_move().
15230         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
15231         instead of "x".  Use output_387_reg_move().
15232         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
15233         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
15234         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
15235         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
15236         Use output_387_reg_move().
15237         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
15238         mode macro.
15239         (*truncxf?f_i387 splitter): Ditto.
15240
15241 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
15242
15243         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
15244         LANG_HOOKS_SAFE_FROM_P.
15245         * expr.c (safe_from_p): Remove langhook call.
15246         * langhooks.h (lang_hooks): Remove safe_from_p.
15247         (lhd_safe_from_p): Remove prototype.
15248         * langhooks.c (lhd_safe_from_p): Remove.
15249
15250 2007-04-06  Jan Hubicka  <jh@suse.cz>
15251
15252         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
15253         functions.
15254
15255 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
15256
15257         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
15258         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
15259         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
15260         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
15261         alternative.
15262         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
15263         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
15264
15265 2007-04-05  Richard Henderson  <rth@redhat.com>
15266
15267         * config/alpha/alpha.c (print_operand) [+]: Remove.
15268         (alpha_end_function): Print nop if call at end of function.
15269         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
15270         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
15271         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
15272         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
15273         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
15274         the call pattern. Update peepholes to match.
15275
15276 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
15277
15278         * doc/extend.texi (Other Builtins): Add decimal float variants
15279         of signbit.
15280         * builtins.def: Ditto.
15281         * builtins.c (expand_builtin): Ditto.
15282
15283 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
15284             H.J. Lu  <hongjiu.lu@intel.com>
15285
15286         PR target/31478
15287         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
15288         of V8HImode when calling ix86_binary_operator_ok.
15289         (sse2_pmaddwd): Call ix86_binary_operator_ok.
15290         (sdot_prodv8hi): Operands 1 and 2 must be register.
15291
15292 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
15293
15294         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
15295         initialize align to silence bogus warning.
15296
15297 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
15298
15299         PR middle-end/22156
15300         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
15301         all_no_warning.
15302         (struct sra_walk_fns): Remove use_all parameter from use.
15303         (sra_hash_tree): Handle BIT_FIELD_REFs.
15304         (sra_elt_hash): Don't hash bitfld blocks.
15305         (sra_elt_eq): Skip them in parent compares as well.  Handle
15306         BIT_FIELD_REFs.
15307         (sra_walk_expr): Don't maintain or pass down use_all_p.
15308         (scan_use): Remove use_all parameter.
15309         (scalarize_use): Likewise.  Re-expand assignment to
15310         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
15311         output, and re-scalarize after output.  Don't mark anything
15312         for no warning.
15313         (scalarize_ldst): Adjust.
15314         (scalarize_walk_gimple_modify_statement): Likewise.
15315         (build_element_name_1): Handle BIT_FIELD_REFs.
15316         (instantiate_element): Don't warn for any element whose parent
15317         is used as a whole.
15318         (instantiate_missing_elements_1): Return the sra_elt.
15319         (canon_type_for_field): New.
15320         (try_instantiate_multiple_fields): New.
15321         (instantiate_missing_elemnts): Use them.
15322         (mark_no_warning): Removed.
15323         (generate_one_element_ref): Handle BIT_FIELD_REFs.
15324         (REPLDUP, sra_build_elt_assignment): New.
15325         (generate_copy_inout): Use them.
15326         (generate_element_copy): Likewise.  Handle bitfld differences.
15327         (generate_element_zero): Don't recurse for blocks.  Use
15328         sra_build_elt_assignment.
15329         (generate_one_element_int): Take elt instead of var.  Use
15330         sra_build_elt_assignment.
15331         (generate_element_init_1): Adjust.
15332         (scalarize_use, scalarize_copy): Use REPLDUP.
15333         (scalarize_ldst): Move assert before dereference.
15334         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
15335
15336 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
15337
15338         * regmove.c: Fix unused variable warnings due to previous commit.
15339
15340 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
15341
15342         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
15343         (regmove_bb_head): Remove.
15344         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
15345         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
15346         problems with fixup_match_1.
15347         Don't initialize/free regmove_bb_head.
15348
15349         (reg_is_remote_constant_p): If an insn is in the same basic block
15350         but not before INSN, consider it remote, too.
15351
15352 2007-04-05  Anatoly Sokolov <aesok@post.ru>
15353
15354         PR target/25448
15355         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
15356         DECL_ASSEMBLER_NAME, not the DECL_NAME.
15357
15358 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
15359
15360         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
15361         (CONDITIONAL_REGISTER_USAGE): Likewise.
15362
15363 2007-04-04  Richard Henderson  <rth@redhat.com>
15364
15365         * config/alpha/lib1funcs.asm: Remove unused file.
15366
15367 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
15368
15369         PR other/31356
15370         * opts.c (print_specific_help): Fix --help=<language>
15371         header line.
15372         (common_handle_option): Support --help=common.
15373
15374 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
15375
15376         PR other/31353
15377         * gcc.c (main): Do not run the linker if
15378         print_subprocess_help indicates that it shouldn't be
15379         run.
15380
15381 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
15382
15383         PR doc/31355
15384         * doc/invoke.texi (--help=): Document <languages> value, fix
15385         formatting in tables of values.
15386
15387 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
15388
15389         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
15390         dllimport attribute of virtual methods.
15391
15392 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
15393
15394         * config/score/crti.asm: Change _bss_start to __bss_start.
15395         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
15396         (OUTGOING_REG_PARM_STACK_SPACE) update.
15397         * config/score/score.opt: add options to make backend support
15398         score5, score5u, score7 and score7d.
15399         * config/score/score.md: Likewise.
15400         * config/score/misc.md: Likewise.
15401         * config/score/mac.md: Likewise.
15402         * doc/invoke.texi: Likewise.
15403         * doc/md.texi: update constraints define.
15404
15405 2007-04-03  Richard Henderson  <rth@redhat.com>
15406
15407         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
15408         an appropriate type, use the mode instead.
15409
15410 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
15411
15412         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
15413         Set the default --with-arch setting to mips2.
15414         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
15415         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
15416         (MULTILIB_OSDIRNAMES): Delete.
15417         (MULTILIB_DIRNAMES): Define.
15418         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
15419         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
15420         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
15421         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
15422         VXWORKS_OS_CPP_BUILTINS.
15423         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
15424         (MIPS_DEBUGGING_INFO): Undefine.
15425         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
15426
15427 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
15428
15429         PR middle-end/30704
15430         * fold-const.c (native_encode_real): Encode real.c provided longs
15431         as a series of 32-bit native integers.
15432         (native_interpret_real): Interpret buffer as a series of 32-bit
15433         native integers.
15434
15435 2007-04-03  Richard Guenther  <rguenther@suse.de>
15436
15437         * genpreds.c (write_insn_constraint_len): Write function
15438         optimized for CONSTRAINT_LEN implementation.
15439         (write_tm_preds_h): Output insn_constraint_len inline and
15440         use it for CONSTRAINT_LEN.
15441         (write_insn_preds_c): Don't output insn_constraint_len.
15442         * doc/md.texi (define_register_constraint): Document multi-letter
15443         constraints shall have the same length if they start with the same
15444         letter.
15445
15446 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
15447
15448         PR target/31175
15449         * config/i386/i386.md (isinf<mode>2): Expand only when
15450         TARGET_C99_FUNCTIONS is set.
15451
15452 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
15453
15454         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
15455         (x86_64-*-linux*): Ditto.
15456         * config/i386/i386.opt (mpc): New option.
15457         * config/i386/i386.c (overrride_options): Handle
15458         ix87_precision_string.
15459         * config/i386/crtprec.c: New file.
15460         * config/i386/t-crtpc: Ditto.
15461         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
15462         and -mpc80 options.
15463         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
15464         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
15465         crtprec32.o, crtprec64.o and crtprec80.o.
15466
15467         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
15468         and -mpc80 options.
15469         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
15470
15471 2007-04-02  Eric Christopher  <echristo@apple.com>
15472
15473         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
15474         limitations on darwin.
15475
15476 2007-04-02  Anatoly Sokolov <aesok@post.ru>
15477
15478         PR target/31137
15479         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
15480
15481 2007-04-02  Dave Korn  <dave.korn@artimi.com>
15482
15483         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
15484
15485 2007-04-02  Dave Korn  <dave.korn@artimi.com>
15486
15487         * libgcc2.h (exception_descriptor): Don't forward-declare.
15488         (__get_eh_table_language, __get_eh_table_version): Delete
15489         prototypes of long-dead functions.
15490
15491 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
15492
15493         * ebitmap.h: New file
15494         * ebitmap.c: New file
15495         * Makefile.in (ebitmap.o): New target.
15496
15497 2007-04-01  Jan Hubicka  <jh@suse.cz>
15498
15499         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
15500         before very first instruction.
15501
15502 2007-04-01  Jan Hubicka  <jh@suse.cz>
15503
15504         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
15505         waring on 64bit hosts.
15506         * bitmap.h: Fix typo in bitmap_head_def.
15507
15508 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
15509
15510         PR rtl-optimization/31391
15511         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
15512         into a DELETED_LABEL note, and the label is in an empty basic
15513         block, update BB_END as well as BB_HEAD.
15514
15515 2007-04-01  Richard Henderson  <rth@redhat.com>
15516
15517         PR tree-optimization/31169
15518         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
15519         to varying if the range is outside [0,  prec-1].
15520
15521 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
15522
15523         PR target/31388
15524         * config/mips/mips.md (load_const_gp): New insn.
15525         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
15526         the MIPS16 GP pseudo register if no_new_pseudos.
15527         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
15528
15529 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15530
15531         PR target/31364
15532         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
15533         secureplt.
15534         (call_value): Likewise.
15535
15536 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
15537             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15538
15539         PR 14737
15540         * doc/invoke.texi: (optimization options): Reword description
15541         of -ffast-math. Document its primary purpose.
15542
15543 2007-03-31  Richard Guenther  <rguenther@suse.de>
15544
15545         * omp-low.c (splay-tree.h): Include.
15546         (lookup_decl): Replace splay-tree usage by pointer-map.
15547         (maybe_lookup_decl): Likewise.
15548         (new_omp_context): Likewise.
15549         (delete_omp_context): Likewise.
15550         * gimplify.c (splay-tree.h): Include.
15551         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
15552         pointer-map.
15553         (remap_ssa_name): Likewise.
15554         (remap_decl): Likewise.
15555         (remap_type_1): Likewise.
15556         (remap_type): Likewise.
15557         (copy_body_r): Likewise.
15558         (expand_call_inline): Likewise.
15559         (clone_body): Likewise.
15560         (copy_tree_r): Likewise.
15561         (remap_save_expr): Likewise.
15562         (unsave_r): Likewise.
15563         (unsave_expr_now): Likewise.
15564         (tree_function_versioning): Likewise.
15565         (build_duplicate_type): Likewise.
15566         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
15567         (struct copy_body_data): Replace splay-tree by pointer-map.
15568         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
15569         not $(SPLAY_TREE_H).
15570         (gimplify.o): Depend on $(SPLAY_TREE_H).
15571         (omp-low.p): Likewise.
15572
15573 2007-03-31  Anatoly Sokolov <aesok@post.ru>
15574
15575         * config/avr/predicates.md (even_register_operand,
15576         odd_register_operand): New predicates.
15577         * config/avr/avr.md (movw peephole2): New.
15578         (movw_r peephole2): New.
15579
15580 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
15581
15582         * tree.h (get_signed_or_unsigned_type): New.
15583         * fold-const.c (operand_equal_for_comparison_p): Use
15584         get_signed_or_unsigned_type instead of
15585         lang_hooks.types.signed_or_unsigned_type.
15586         * expr.c (store_expr): Ditto.
15587         * langhooks.c (get_signed_or_unsigned_type): New.
15588         (lhd_signed_or_unsigned_type): New.
15589         * langhooks.h (lhd_signed_or_unsigned_type): New.
15590         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
15591
15592 2007-03-30  Richard Henderson  <rth@redhat.com>
15593
15594         * tree-ssa-loop-ivopts.c: Include target.h.
15595         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
15596         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
15597         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
15598         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
15599
15600 2007-03-30  Richard Henderson  <rth@redhat.com>
15601             Kai Tietz  <kai.tietz@onevision.com>
15602
15603         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
15604         default for 64-bit.
15605         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
15606         (TARGET_64BIT_MS_ABI): New.
15607         (DBX_REGISTER_NUMBER): Handle 64-bit.
15608         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
15609         (LONG_TYPE_SIZE): Force to 32.
15610         (REG_PARM_STACK_SPACE): New.
15611         (OUTGOING_REG_PARM_STACK_SPACE): New.
15612         (REGPARM_MAX, SSE_REGPARM_MAX): New.
15613         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
15614         (STACK_BOUNDARY): Use 128 for 64-bit.
15615         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
15616         Add 64-bit implementation.
15617         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
15618         argument unused.
15619         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
15620         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
15621         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
15622         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
15623         (ix86_handle_cconv_attribute): Don't warn when ignoring if
15624         TARGET_64BIT_MS_ABI.
15625         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
15626         (ix86_pass_by_reference): Likewise.
15627         (ix86_function_value_regno_p): Likewise.
15628         (ix86_build_builtin_va_list): Likewise.
15629         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
15630         (function_arg_advance_ms_64): New.
15631         (function_arg_advance): Call it.
15632         (function_arg_ms_64): New.
15633         (function_arg): Call it.
15634         (function_value_ms_64): New.
15635         (ix86_function_value_1): Call it.
15636         (return_in_memory_ms_64): New.
15637         (ix86_return_in_memory): Call it.
15638         (setup_incoming_varargs_ms_64): New.
15639         (ix86_setup_incoming_varargs): Call it.
15640         (ix86_expand_prologue): Handle 64-bit stack probing.
15641         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
15642         (output_pic_addr_const): Likewise.
15643         (x86_this_parameter): Likewise.
15644         (x86_output_mi_thunk): Likewise.
15645         (x86_function_profiler): Likewise.
15646         (TARGET_STRICT_ARGUMENT_NAMING): New.
15647         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
15648         (TARGET_64BIT_MS_ABI): New.
15649         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
15650         * config/i386/i386.md (allocate_stack_worker): Remove.
15651         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
15652         describe the clobber of eax without a match_scratch.
15653         (allocate_stack_worker_postreload): Remove.
15654         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
15655         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
15656         (allocate_stack_worker_rex64_postreload): Remove.
15657         (allocate_stack): Handle 64-bit.
15658         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
15659         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
15660         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
15661         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
15662         (STANDARD_STARTFILE_PREFIX_1): Likewise.
15663         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
15664         * config.build (x86_64-*-mingw*): New host.
15665         * config.host (x86_64-*-mingw*): New host.
15666         * config.gcc (x86_64-*-mingw*): New target.
15667         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
15668
15669 2007-03-30  Richard Henderson  <rth@redhat.com>
15670             Kai Tietz  <kai.tietz@onevision.com>
15671
15672         * c-pragma.c (struct def_pragma_macro_value): New.
15673         (struct def_pragma_macro): New.
15674         (pushed_macro_table): New.
15675         (dpm_hash, dpm_eq): New.
15676         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
15677         (init_pragma): Install them.
15678         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
15679
15680 2007-03-30  Anatoly Sokolov <aesok@post.ru>
15681
15682         * config/avr/avr.c (avr_override_options): Clear
15683         'flag_delete_null_pointer_checks'.
15684
15685 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
15686
15687         PR c++/26099
15688         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
15689         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
15690         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
15691         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
15692         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
15693         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
15694         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
15695         C++ extensions.
15696         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
15697
15698 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
15699
15700         * regmove.c: Move all of pass_stack_adjustments from here...
15701         * combine-stack-adj.c: ...to this new file.
15702         * Makefile.in: Add rules for combine-stack-adj.o.
15703
15704 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
15705
15706         PR tree-optimization/31383
15707         * tree-data-ref.c (affine_function_equal_p): Do not require the
15708         vectors to have the same length.
15709
15710 2007-03-30  Jan Hubicka  <jh@suse.cz>
15711
15712         PR middle-end/30700
15713         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
15714         availablility; add more sanity checking; ask varpool only about
15715         VAR_DECL.
15716
15717 2007-03-29  Richard Henderson  <rth@redhat.com>
15718
15719         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
15720         to decide, but __SIZEOF_LONG_LONG__.
15721
15722 2007-03-29  Richard Henderson  <rth@redhat.com>
15723
15724         * emutls.c (struct __emutls_array): New.
15725         (emutls_destroy): Use it instead of casting element 0 from void*.
15726         (__emutls_get_address): Likewise.
15727
15728 2007-03-29  Richard Henderson  <rth@redhat.com>
15729
15730         * varasm.c (initializer_constant_valid_p): Don't deny
15731         DECL_DLLIMPORT_P on functions.
15732
15733         * config/i386/cygming.h: Remove function declarations.
15734         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
15735         (ASM_OUTPUT_LABELREF): Remove.
15736         (COMMON_ASM_OP): Remove.
15737         (ASM_OUTPUT_COMMON): Remove.
15738         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
15739         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
15740         (ASM_DECLARE_FUNCTION_NAME): Likewise.
15741         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
15742         Rename from TARGET_ENCODE_SECTION_INFO.
15743         * config/i386/netware.h: Likewise.
15744         * config/i386/i386-protos.h: Update.
15745         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
15746         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
15747         (legitimate_constant_p): Reject dllimports.
15748         (dllimport_map, get_dllimport_decl): New.
15749         (legitimize_dllimport_symbol): New.
15750         (legitimize_address, ix86_expand_move): Use it.
15751         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
15752         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
15753         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
15754         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
15755         * config/i386/predicates.md (constant_call_address_operand): Only
15756         accept symbols; reject dllimport_p symbols.
15757         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
15758         i386_pe_maybe_record_exported_symbol.
15759         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
15760         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
15761         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
15762         trust the setting of DECL_DLLIMPORT_P.
15763         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
15764         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
15765         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
15766         tidy the argument scanning loop.
15767         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
15768         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
15769         (i386_pe_strip_name_encoding): Remove.
15770         (i386_pe_binds_local_p): New.
15771         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
15772         (i386_pe_output_labelref): Remove.
15773         (i386_pe_asm_output_aligned_decl_common): New.
15774         (i386_pe_maybe_record_exported_symbol): Rename from
15775         i386_pe_record_exported_symbol; check for dllexported symbols.
15776
15777 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
15778
15779         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
15780         add comment explaining why vsnprintf cannot be used.
15781
15782 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
15783
15784         PR tree-optimization/30666
15785         * tree.c (build_complex_type): When creating type names for DWARF2
15786         debug info, create TYPE_DECLs for TYPE_NAME instead of
15787         IDENTIFIER_NODEs.
15788         (build_common_tree_nodes_2): Use build_complex_type when building
15789         predefined complex types, to preserve canonical types.
15790
15791 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
15792
15793         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
15794         (noce_get_alt_condition): Look at it to determine whether to
15795         reverse the condition or not.
15796         (noce_get_condition): Substitute the truth for lies.
15797         (noce_find_if_block): Set the then_else_reversed field.
15798
15799 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
15800
15801         * config/fr30/fr30.md (movdi): Do not accept immediates as the
15802         destination of this insn.
15803         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
15804         than calling gen_rtx_SET directly.  Use r0 to hold the value of
15805         'address + 4' rather than a stack based temporary which can be
15806         mis-optimized away.
15807
15808 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
15809
15810         * config/s390/s390.c (s390_secondary_input_reload_class,
15811         s390_secondary_output_reload_class): Functions removed.
15812         (s390_secondary_reload): New function.
15813         (TARGET_SECONDARY_RELOAD): Target macro defined.
15814         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
15815         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
15816         * config/s390/s390.md ("reload_outti", "reload_outdi",
15817         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
15818         "reload_out<mode>"): Expanders removed.
15819         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
15820         "reload<mode>_nonoffmem_out"): Expanders added.
15821
15822 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
15823
15824         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair
15825         action if SRC->DEST replacement failed anyway.
15826
15827 2007-03-28  Mike Stump  <mrs@apple.com>
15828
15829         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
15830         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
15831         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
15832
15833 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
15834
15835         * config.gcc: Accept barcelona as a variant of amdfam10.
15836         * config/i386/i386.c (override_options): Likewise.
15837         * doc/invoke.texi: Likewise.
15838
15839 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
15840
15841         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
15842         offsets for BIT_FIELD_REF and COMPONENT_REF.
15843
15844 2007-03-28  Richard Guenther  <rguenther@suse.de>
15845
15846         * tree.c (is_global_var): Move ...
15847         * tree-flow-inline.h (is_global_var): ... here.
15848         * tree.h (is_global_var): Remove declaration.
15849
15850 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
15851
15852         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
15853         option.
15854         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
15855         * config/i386/i386.c (ix86_tune_features): Initialize new
15856         tuning option.
15857         * config/i386/predicates.md (promotable_binary_operator): Use
15858         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
15859
15860 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
15861
15862         PR target/31380
15863         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
15864
15865 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
15866
15867         * config/fr30/fr30.md (movsi_internal): Change destination
15868         constraint from m to V and add m to the end.
15869
15870 2007-03-28  Christian Bruel  <christian.bruel@st.com>
15871
15872         * config/sh/sh.md (movsi_i): Fix type attribute.
15873
15874 2007-03-28  Christian Bruel  <christian.bruel@st.com>
15875
15876         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
15877         (movsf_ie): Likewise.
15878
15879 2007-03-28  Christian Bruel  <christian.bruel@st.com>
15880
15881         * config.gcc: Add sh4-300 to multilib.
15882         * config/sh/t-mlib-sh4-300: New file.
15883
15884 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
15885
15886         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
15887         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
15888         fix_trunc<mode>di2.
15889         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
15890         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
15891         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
15892         "fixuns_trunctddi2"): Whitespace fix.
15893
15894 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
15895
15896         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
15897         the definition of struct sh_args.
15898         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
15899         CALL_COOKIE_INT_REG_GET): Likewise.
15900
15901 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
15902
15903         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
15904         transformations are applied successfully.
15905
15906 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
15907
15908         * tree.c (tree_contains_struct): Permit 512 tree codes.
15909         * tree.h (tree_contains_struct): Ditto.
15910         (MAX_TREE_CODES): Ditto.
15911         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
15912         SPARE member to store remaining padding bits.
15913
15914 2007-03-27  Anatoly Sokolov <aesok@post.ru>
15915
15916         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
15917         architecture.
15918
15919 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
15920
15921         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
15922         * configure: Regenerate.
15923
15924         * configure: Regenerate using the correct version of autoconf.
15925
15926 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
15927
15928         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
15929         pointer regs.
15930         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
15931         regs to "__SP_L__" and "__SP_H__".
15932
15933 2007-03-27  Richard Guenther  <rguenther@suse.de>
15934
15935         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
15936         computations with it with a HOST_WIDE_INT variable.
15937
15938 2007-03-26  Mike Stump  <mrs@apple.com>
15939
15940         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
15941         objective-c-header, objective-c++-header and objc++-cpp-output
15942         support.
15943         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
15944
15945 2007-03-26  Richard Henderson  <rth@redhat.com>
15946
15947         PR target/31361
15948         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
15949         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
15950         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
15951         IX86_BUILTIN_PSRLQ128): New.
15952         (ix86_init_mmx_sse_builtins): Add them.
15953         (ix86_expand_builtin): Expand them.
15954         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
15955         operand 2 be TImode.
15956         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
15957         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
15958         _mm_srli_epi64): Mark __B const.
15959         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
15960         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
15961         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
15962         new two-vector shift builtins.
15963
15964 2007-03-26  Ian Lance Taylor  <iant@google.com>
15965
15966         PR tree-optimization/31345
15967         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
15968         [+INF, +INF(OVF)] into VARYING.
15969
15970 2007-03-26  Zack Weinberg  <zackw@panix.com>
15971
15972         * gengtype-parse.c: New file.
15973         * gengtype-yacc.y: Delete.
15974         * gengtype-lex.l: Don't include gengtype-yacc.h.
15975         Define YY_DECL and yyterminate appropriately for recursive
15976         descent parser.  yylval is now a string out-parameter to yylex.
15977         (HWS, EOID): New shorthand.
15978         (IWORD): Add a couple more types.
15979         (yylex): Add a setup stanza.  Remove the complex rules for
15980         detecting GTY'ed types and typedefs; replace with simple
15981         keyword detectors.  Adjust everything for the changed
15982         definition of yylval.  Ignore all pp-directives, not just #define.
15983         (yyerror): Delete.
15984         (parse_file): Rename yybegin; do not call yyparse.
15985         (yyend): New.
15986         * gengtype.c (xasprintf): Export again.
15987         (this_file): New.  Use everywhere __FILE__ was being used.
15988         (get_lang_bitmap): Special case types defined in gengtype.c.
15989         (do_typedef, new_structure): Suppress definition of certain types.
15990         (new_structure): Improve diagnostics of duplicate definitions.
15991         Make sure location_s is associated with input.h.
15992         (nreverse_pairs, define_location_structures): New functions.
15993         (main): Improve tagging of kludge types.  Remove old kludges
15994         for input.h types; use define_location_structures.
15995         * gengtype.h: Update prototypes.  Define token codes here.
15996         * Makefile.in: Remove all references to gengtype-yacc.
15997         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
15998         and gengtype.
15999         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
16000         add GTY((skip)) to the field that's only conditionally there.
16001         * doc/install.texi: Document that Bison is no longer required
16002         unless building treelang.
16003
16004         * gengtype.c: Don't include gtyp-gen.h.
16005         (srcdir): Declare here.
16006         (base_files, lang_dir_names): Allocate dynamically.
16007         (gt_files, num_gt_files, num_lang_dirs): New globals.
16008         (measure_input_list, read_input_line, read_input_list)
16009         (set_lang_bitmap): New functions.
16010         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
16011         simplify, relying on read_input_list to set up the bitmaps.
16012         (main): Arguments are no longer unused.  Check for correct number
16013         of command line arguments, set srcdir and srcdir_len, then call
16014         read_input_list, before doing anything else.  No need to worry
16015         about duplicates in main loop.
16016         * configure.ac: Simplify the calculation of all_gtfiles.
16017         Put language tags in there.  Don't set or substitute
16018         all_gtfiles_files_langs or all_gtfiles_files_frags.
16019         * Makefile.in: Revamp the way gengtype is invoked, now that it
16020         takes a file on its command line with a much simpler format.
16021         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
16022         (GTFILES): Remove duplicates and C source files.
16023         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
16024         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
16025         * configure: Regenerate.
16026
16027         * gengtype.h: Remove all type definitions to gengtype.c; leave
16028         only definitions of options_p, type_p, and pair_p as opaque
16029         pointers.  Update prototypes.
16030         * gengtype.c: Many type definitions moved here from gengtype.h.
16031         Consolidate type definitions at the top of the file.
16032         (xvasprintf): Delete.
16033         (xasprintf): Make static.
16034         (create_nested_pointer_option): Add 'next' parameter.
16035         (create_field_all, create_field_at): New functions.
16036         (create_field): Now a thin wrapper around create_field_all.
16037         (create_optional_field): Rename create_optional_field_ and add
16038         line argument.  Original name is now a macro which supplies
16039         __LINE__.
16040         (oprintf): Use vsnprintf directly.
16041         (close_output_files): Use fatal rather than perror/exit.
16042         (note_def_vec, note_def_vec_alloc): Use create_field_at.
16043         (main): Set progname.  Don't use exit.
16044         * gengtype-yacc.y (struct_fields): Use create_field_at.
16045         (option, optionseqopt): Delete.
16046         (optionseq): Consolidate productions from option here so we
16047         can use the first argument to create_option.
16048
16049         * gengtype-lex.l: Distinguish unions from structures in the
16050         token type.  Don't call find_structure; return the tag as a string.
16051         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and
16052         ENT_UNION.  Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is
16053         string.  Reorganize typedef_struct production accordingly.
16054         Use create_nested_ptr_option.
16055         * gengtype.c (create_nested_ptr_option): New function.
16056         * gengtype.h: Declare it.
16057
16058         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
16059         (string_type): Don't declare.
16060         (do_scalar_typedef): Declare.
16061         (create_scalar_type): Update prototype.
16062         * gengtype.c (string_type): Make static.
16063         (scalar_nonchar, scalar_char): New.
16064         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
16065         (resolve_typedef): Use scalar_nonchar for error recovery.
16066         (create_scalar_type): Remove name_len field.  Return scalar_char
16067         or scalar_nonchar as appropriate.
16068         (adjust_field_type): Look at scalar_is_char boolean to decide whether
16069         to use string_type.
16070         (throughout): Use scalar_nonchar instead of calling
16071         create_scalar_type, whenever possible.
16072         (main): Initialize scalar_char and scalar_nonchar before calling
16073         gen_rtx_next.
16074         * gengtype-lex.l: Adjust for removal of second argument to
16075         create_scalar_type.  Use yylval.s instead of yylval.t when
16076         returning SCALAR.
16077         * gengtype-yacc.y: Type of SCALAR is string.  Call
16078         create_scalar_type from type:SCALAR rule.  Adjust for removal of
16079         second argument to create_scalar_type.
16080
16081         * vec.h: Remove all #if IN_GENGTYPE blocks.
16082         Add comment saying that changes may require adjustments to gengtype.
16083         * gengtype.c: Don't include coretypes.h or tm.h.
16084         Add comment to inclusion of errors.h.
16085         (note_def_vec, note_def_vec_alloc): New functions.
16086         * gengtype.h: Declare new functions.
16087         * gengtype-lex.l: Don't include coretypes.h.
16088         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
16089         Delete.
16090         (update_lineno): Remove unnecessary prototype.
16091         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
16092         (VEC rule): Just return VEC_TOKEN.
16093         * gengtype-yacc.y (VEC_TOKEN): New token type.
16094         (type): Add a production for VEC(a,b).
16095         * Makefile.in: Update dependencies.
16096
16097         * gengtype-lex.l: Remove rules for parsing pointer-to-function
16098         typedefs that use the old PARAMS macro.
16099
16100         * gengtype-lex.l: Remove all rules and states relating to yacc
16101         input files.
16102         * gengtype-yacc.y: Similarly.
16103         * gengtype.c (note_yacc_type): Delete function.
16104         * gengtype.h: Update prototypes.
16105
16106 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
16107
16108         * tree-pretty-print.c (dump_generic_node): Report precision of
16109         unnamed integer types.
16110
16111 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
16112
16113         * ifcvt.c (noce_try_store_flag_constants): Don't check
16114         no_new_pseudos here.
16115         (noce_try_store_flag_constants): Don't check no_new_pseudos.
16116         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
16117         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
16118         noce_try_sign_mask): Likewise.
16119         (if_convert): Check no_new_pseudos here.
16120
16121         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
16122         Remove prototypes.
16123         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
16124         (noce_get_condition): Handle new then_else_reversed argument.
16125         (noce_init_if_info): Remove, fold into noce_find_if_block.
16126         (noce_process_if_block): Take a struct noce_if_info as the
16127         argument.  Don't set up one based on ce_if_info.  Update pointer
16128         references accordingly.
16129         (cond_move_process_if_block): Likewise.
16130         (process_if_block): Removed.
16131         (find_if_block): Removed.  Move functionality two new functions,
16132         noce_find_if_block and cond_exec_find_if_block.
16133         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
16134         blocks and the symmetric IF-ELSE-JOIN case.
16135         (cond_exec_find_if_block): Also new function mostly based on old
16136         find_if_block and process_if_block.
16137         (find_if_header): Replace find_if_block call with separately
16138         guarded calls to noce_find_if_block and cond_exec_find_if_block.
16139         (find_cond_trap): Update noce_get_condition call.
16140         (dead_or_predicable): Likewise.
16141
16142 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
16143
16144         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
16145         Remove.
16146         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
16147         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
16148         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
16149         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
16150         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
16151         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
16152         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
16153         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
16154         __builtin_ia32_psrad128 builtins.
16155
16156 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
16157
16158         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
16159         * config/i386/constraints.md
16160         (define_constraint "I"): Use IN_RANGE macro.
16161         (define_constraint "J"): Ditto.
16162         (define_constraint "K"): Ditto.
16163         (define_constraint "M"): Ditto.
16164         (define_constraint "N"): Ditto.
16165         (define_constraint "O"): Ditto.
16166         * config/i386/predicates.md
16167         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
16168         (define_predicate "const_0_to_3_operand"): Ditto.
16169         (define_predicate "const_0_to_7_operand"): Ditto.
16170         (define_predicate "const_0_to_15_operand"): Ditto.
16171         (define_predicate "const_0_to_63_operand"): Ditto.
16172         (define_predicate "const_0_to_255_operand"): Ditto.
16173         (define_predicate "const_1_to_31_operand"): Ditto.
16174         (define_predicate "const_2_to_3_operand"): Ditto.
16175         (define_predicate "const_4_to_7_operand"): Ditto.
16176
16177 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
16178
16179         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
16180         in SImode for save_world.
16181         * config/rs6000/altivec.md (save_world, restore_world): Convert to
16182         LR hard reg.
16183
16184 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
16185
16186         PR tree-optimization/30784
16187         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
16188         BIT_FIELD_REF.
16189
16190 2007-03-25  Revital Eres  <eres@il.ibm.com>
16191
16192         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
16193           Fold movement_possibility function into it.
16194
16195 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
16196
16197         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
16198         (load_macho_picbase_{si,di}): Convert to LR hard reg.
16199         (call_indirect_nonlocal_darwin64): Same.
16200         (call_nonlocal_darwin64): Same.
16201         (call_value_indirect_nonlocal_darwin64): Same.
16202         (call_value_nonlocal_darwin64): Same.
16203         (sibcall_nonlocal_darwin64): Same.
16204         (sibcall_value_nonlocal_darwin64): Same.
16205         (sibcall_symbolic_64): Same.
16206         (sibcall_value_symbolic_64): Same.
16207         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
16208         LR pseudo.
16209         (rs6000_emit_load_toc_table): Same.
16210         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
16211         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
16212         (mull_call): Same.
16213         (divss_call): Same.
16214         (divus_call): Same.
16215         (quoss_call): Same.
16216         (quous_call): Same.
16217         (load_toc_v4_pic_si): Same
16218         (load_toc_v4_PIC_1): Same.
16219         (load_toc_v4_PIC_1b): Same.
16220         (call_indirect_aix{32,64}): Same.
16221         (call_value_indirect_aix{32,64}): Same.
16222         (call): Same.
16223         (call_value): Same.
16224         (call_local{32,64}): Same.
16225         (call_value_local{32,64}): Same.
16226         (call_indirect_nonlocal_aix{32,64}): Same.
16227         (call_nonlocal_aix{32,64}): Same.
16228         (call_value_indirect_nonlocal_aix{32,64}): Same.
16229         (call_value_nonlocal_aix{32,64}): Same.
16230         (call_indirect_nonlocal_sysv<mode>): Same.
16231         (call_nonlocal_sysv<mode>): Same.
16232         (call_value_indirect_nonlocal_sysv<mode>): Same.
16233         (call_value_nonlocal_sysv<mode>): Same.
16234         (sibcall): Same.
16235         (sibcall_local{32,64}): Same.
16236         (sibcall_value_local{32,64}): Same.
16237         (sibcall_nonlocal_aix{32,64}): Same.
16238         (sibcall_value_nonlocal_aix{32,64}): Same.
16239         (sibcall_nonlocal_sysv<mode>): Same.
16240         (sibcall_value): Same.
16241         (sibcall_value_nonlocal_sysv<mode>): Same.
16242
16243 2007-03-24  Paul Brook  <paul@codesourcery.com>
16244
16245         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
16246         * config/arm/linux-eabi.h: Remove legacy syscall hack.
16247
16248 2007-03-24  Richard Henderson  <rth@redhat.com>
16249
16250         * config/ia64/constraints.md: New file.
16251         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
16252         satisfies_constraint_?.
16253         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
16254         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
16255         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
16256         ia64_output_mi_thunk): Likewise.
16257         (ia64_const_ok_for_letter_p): Remove.
16258         (ia64_const_double_ok_for_letter_p): Remove.
16259         (ia64_extra_constraint): Remove.
16260         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
16261         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
16262         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
16263         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
16264         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
16265         EXTRA_MEMORY_CONSTRAINT): Remove.
16266         * config/ia64/ia64.md: Include constriants.md.  Replace
16267         CONST_OK_FOR_? with satisfies_constraint_?.
16268
16269 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
16270             H.J. Lu  <hongjiu.lu@intel.com>
16271
16272         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
16273         DPD or BID name.
16274         (name macros): Use DPD_BID_NAME to convert names properly.
16275
16276         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
16277         decimal floating point format.
16278         (init_floating_libfuncs): Change decimal functions so that they
16279         have a "bid_" prefix if the decimal system uses the BID format,
16280         and "dpd_" prefix if the decimal system uses the DPD format.
16281         (init_interclass_conv_libfuncs): Ditto.
16282         (init_intraclass_conv_libfuncs): Ditto.
16283
16284         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
16285         using the BID format.
16286
16287         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
16288         whether we are using the BID decimal format.
16289         * configure: Regenerate.
16290
16291         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
16292         the compiler has decimal floating point enabled.  Define
16293         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
16294         instead of DPD.
16295
16296         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
16297         using the BID format.
16298
16299         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
16300         whether we are using the BID decimal format.
16301         * configure: Regenerate.
16302
16303         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
16304         the compiler has decimal floating point enabled.  Define
16305         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
16306         instead of DPD.
16307
16308         * doc/install.texi (--enable-decimal-float): Document BID and DPD
16309         options, and that it is enabled for i386/x86_64 systems.
16310
16311         * Makefile.in (enable_decimal_float): New.
16312         (DECNUMFMT): New.
16313         (DECNUMINC): Add  -I$(DECNUMFMT).
16314         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
16315         to $(DECNUMFMT) from $(DECNUM).
16316
16317         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
16318         Substitute enable_decimal_float.
16319         * configure: Regenerated.
16320
16321         PR other/30529
16322         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
16323         unsigned long.
16324
16325         * configure.ac: Enable decimal float for x86_64-*-linux*.
16326         * configure: Regenerated.
16327
16328         PR other/30530
16329         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
16330         decimal128ClearSign to flip and clear the sign bit in decimal128.
16331         (decimal_real_maxval): Set decimal128SetSign to set the sign
16332         bit in decimal128.
16333
16334 2007-03-23  Ian Lance Taylor  <iant@google.com>
16335
16336         * fold-const.c (fold_binary): Correct warning for X - c >= X.
16337
16338 2007-03-23  Ian Lance Taylor  <iant@google.com>
16339
16340         * tree-dump.c (dump_files): Correct comment.
16341
16342 2007-03-23  Ian Lance Taylor  <iant@google.com>
16343
16344         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
16345
16346 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
16347
16348         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
16349         in cfglayout mode.  Don't go into and out of cfglayout mode.
16350         Link the blocks in the order of the constructed traces.
16351         (rest_of_handle_tracer): Adjust call to tracer.
16352         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
16353         Don't go into cfglayout mode.
16354         (rtl_loop_done): Don't go out of cfglayout mode.
16355         * cfglayout.c (relink_block_chain): New function, split out from...
16356         (fixup_reorder_chain): ...here.  Remove redundant checking.
16357         (cfg_layout_finalize): Don't clear the header, footer, and aux
16358         fields here, move the code to do so to relink_block_chain.  Likewise
16359         for free_original_copy_tables.
16360         * rtl.h (tracer): Update prototype.
16361         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
16362         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
16363         mode.  Use relink_block_chain to serialize the CFG according to the
16364         new basic block order.  Move targetm.cannot_modify_jumps_p check from
16365         here...
16366         (gate_handle_reorder_blocks): ...to here.
16367         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
16368         from here...
16369         (gate_duplicate_computed_gotos): ...to here.
16370         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
16371         something always changes when going into and out of cfglayout mode.
16372         Perform an expensive cfg cleanup while going into cfglayout mode.
16373         Always update liveness information on HAVE_conditional_execution
16374         targets.  Reserialize the basic blocks and go out of cfglayout mode.
16375         * reg-stack.c: Include cfglayout.h.
16376         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
16377         the call to reorder_basic_blocks.
16378         * basic-block.h (reorder_basic_blocks): Update prototype.
16379         (relink_block_chain): New prototype.
16380         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
16381
16382 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
16383
16384         * config/mips/mips.md (type, hazard, *movdi_32bit,
16385         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
16386         *movhi_internal, *movqi_internal, *movsf_hardfloat,
16387         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
16388         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
16389         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
16390         applicable.
16391         (movcc): Change first xfer to multi.
16392         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
16393         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
16394         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
16395         config/mips/generic.md: Change reservations using "xfer" to use
16396         "mfc,mtc".
16397         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
16398         using match_operand.
16399         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
16400         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
16401         examining mode.
16402         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
16403
16404 2007-03-22  Richard Henderson  <rth@redhat.com>
16405
16406         * config/i386/i386.c: Remove unnecessary function declarations.
16407         Move targetm definition, and all related macros, to the end of
16408         the file.  Resort some functions to put definitions before uses.
16409         (ix86_attribute_table): Make static.  Move to end of file.
16410         (ix86_gimplify_va_arg): Make static.
16411
16412 2007-03-22  Richard Henderson  <rth@redhat.com>
16413
16414         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
16415         don't increase local_regparm with force_align_arg_pointer check.
16416         (ix86_function_sseregparm): Assert 32-bit.
16417         (type_has_variadic_args_p): New.
16418         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
16419         type_has_variadic_args_p.
16420         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
16421         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
16422         use memset instead.  Do maybe_vaarg check first; skip attribute
16423         tests if true; skip attribute tests for 64-bit.
16424         (construct_container): Remove TARGET_DEBUG_ARG.
16425         (function_arg_advance_32, function_arg_advance_64): Split out ...
16426         (function_arg_advance): ... from here.
16427         (function_arg_32, function_arg_64): Split out ...
16428         (function_arg): ... from here.
16429         (ix86_pass_by_reference): Tidy.
16430         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
16431         (function_value_32): New, from parts of ix86_function_value
16432         and ix86_value_regno.
16433         (function_value_64): New, from parts of ix86_function_value
16434         and ix86_libcall_value.
16435         (ix86_function_value_1): New.
16436         (ix86_function_value, ix86_libcall_value): Use it.
16437         (return_in_memory_32, return_in_memory_64): Split out ...
16438         (ix86_return_in_memory): ... from here.
16439         (ix86_struct_value_rtx): Skip for 64-bit.
16440         (ix86_libcall_value, ix86_value_regno): Remove.
16441         (setup_incoming_varargs_64): Split out ...
16442         (ix86_setup_incoming_varargs): ... from here.
16443         (ix86_va_start): Remove TARGET_DEBUG_ARG.
16444         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
16445         * config/i386/i386-protos.h (ix86_function_value): Remove.
16446         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
16447
16448 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16449
16450         PR other/23572
16451         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
16452         infinities not supported, otherwise emit warning if -Woverflow. On
16453         underflow, emit warning if -Woverflow.
16454         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
16455         and 0 otherwise.
16456         * real.h (real_from_string): Update declaration
16457
16458 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
16459             Richard Henderson  <rth@redhat.com>
16460
16461         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
16462         * calls.c (compute_argument_block_size, expand_call,
16463         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
16464         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
16465         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
16466         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
16467         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
16468         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
16469         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
16470         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
16471         Set to 1.
16472
16473 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
16474
16475         * c-incpath.c (add_sysroot_to_chain): New.
16476         (merge_include_chains): Add sysroot argument.  Call
16477         add_sysroot_to_chain if sysrooted.
16478         (register_include_chains): Update call to merge_include_chains.
16479         * doc/cppopts.texi: Document use of '=' in include directory
16480         arguments.
16481
16482 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
16483
16484         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
16485         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
16486         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
16487         insn pattern using X87MODEF12 mode macro.
16488
16489 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
16490
16491         * regmove.c (regmove_optimize): Use reg_mentioned_p
16492         instead of reg_overlap_mentioned_p for DST.
16493
16494 2007-03-21  Mike Stump  <mrs@apple.com>
16495
16496         * c.opt: Fixup for Objective-C/C++.
16497
16498 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
16499
16500         * explow.c (convert_memory_address): Fold memory reference when
16501         POINTERS_EXTEND_UNSIGNED < 0
16502
16503 2007-03-21  Richard Henderson  <rth@redhat.com>
16504
16505         PR target/31245
16506         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
16507         * config/i386/mmintrin.h (__m64): Likewise.
16508         * config/i386/xmmintrin.h (__m128): Likewise.
16509
16510 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
16511
16512         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
16513         (VXWORKS_OS_CPP_BUILTINS): Define.
16514         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
16515         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
16516
16517 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
16518
16519         * rtl.h (constant_pool_reference_p): Delete.
16520         (find_constant_src): Declare.
16521         * rtlanal.c (find_constant_src): New function.
16522         * simplify-rtx.c (constant_pool_reference_p): Delete.
16523         * config/i386/i386.md: Use find_constant_src instead of
16524         constant_pool_reference_p/avoid_constant_pool_reference pairs.
16525
16526 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
16527
16528         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
16529         * c-cppbuiltin.c (c_cpp_builtins): Define them.
16530
16531 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
16532
16533         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
16534         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
16535         (arm_elf_asm_constructor): Use it.
16536         (arm_elf_asm_destructor): New function.
16537
16538 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
16539
16540         * jump.c (mark_jump_label): Treat SEQUENCE specially.
16541
16542 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
16543
16544         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
16545
16546 2007-03-19  Andrew Haley  <aph@redhat.com>
16547
16548         PR tree-optimization/31264
16549         * tree-vrp.c (register_edge_assert_for_1): Don't look though
16550         VIEW_CONVERT_EXPRs.
16551
16552 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
16553
16554         PR rtl-optimization/30907
16555         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
16556         (fwprop_init): Always call loop_optimizer_initialize.
16557         (fwprop_done): Always call loop_optimizer_finalize.
16558         (fwprop): We always have loop info now.
16559         (gate_fwprop_addr): Remove.
16560         (pass_fwprop_addr): Use gate_fwprop as gate.
16561
16562         PR rtl-optimization/30841
16563         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
16564         df_chain_alloc): Call df_reorganize_refs unconditionally.
16565         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
16566         refs_organized to refs_organized_size.
16567         (df_ref_create_structure): Use refs_organized_size instead of
16568         bitmap_size if refs had been organized, and keep refs_organized_size
16569         up-to-date.
16570         * df.h (struct df_ref_info): Change refs_organized to
16571         refs_organized_size.
16572         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
16573         bitmap_size.
16574
16575 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
16576
16577         * except.c (output_function_exception_table): Do not reference the
16578         EH personality routine for functions that do not require an
16579         exception table.
16580
16581 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
16582
16583         PR c/30762
16584         * c-typeck.c (convert_for_assignment): Call comptypes for
16585         RECORD_TYPE or UNION_TYPE.
16586
16587         PR inline-asm/30505
16588         * reload1.c (reload): Do invalid ASM checking after
16589         cleanup_subreg_operands.
16590
16591 2007-03-19  Jeff Law  <law@redhat.com>
16592
16593         * tree-cfg.c (find_taken_edge): Tighten conditions for
16594         optimizing computed gotos.
16595
16596 2007-03-19  Michael Matz  <matz@suse.de>
16597
16598         * builtins.c (expand_builtin_sync_operation,
16599         expand_builtin_compare_and_swap,
16600         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
16601         correctly.
16602
16603         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
16604         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
16605         for operand 3.
16606
16607 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
16608
16609         * doc/tm.texi: Add brackets around the return type of
16610         TARGET_SECONDARY_RELOAD.
16611
16612 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16613         Richard Guenther  <rguenther@suse.de>
16614
16615         PR tree-optimization/31254
16616         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
16617         Use handled_component_p () where appropriate.  Continue
16618         propagating into the rhs if we propagated into an INDIRECT_REF
16619         on the lhs.
16620
16621 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
16622
16623         * config/s390/s390.md (op_type attribute): RRR instruction type added.
16624         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
16625         (xde, xdee): Mode attributes adjusted to support DFP modes.
16626         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
16627         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
16628         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
16629         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
16630         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
16631         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
16632         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
16633         numbers.
16634         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
16635         "movsf"): Insn definitions removed.
16636         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
16637         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
16638         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
16639         definitions added.
16640         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
16641         "reload_in<mode>", "reload_out<mode>"): Expander added.
16642         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
16643         Expander removed.
16644
16645 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
16646
16647         * config/s390/s390.md: Only non-functional changes.  Renamed
16648         FPR mode macro to BFP all over the file.
16649
16650 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
16651
16652         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
16653         (op_type attribute): RRF instruction type added.
16654         (fT0): New mode attribute.
16655         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
16656         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
16657         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new
16658         instruction no secondary memory is needed when moving DFmode values
16659         between GPRs and FPRs.
16660
16661 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
16662
16663         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
16664         inverted and documentation adjusted.
16665         ("mhard-dfp", "msoft-dfp"): New options.
16666         * config/s390/s390.c (s390_handle_arch_option): New architecture
16667         switch: z9-ec.
16668         (override_options): Sanity checks for the new options added.
16669         * config.gcc: New architecture switch: z9-ec.
16670         * config/s390/s390.h (processor_flags): PF_DFP added.
16671         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
16672         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
16673         when the bit is NOT set so remove it from the defaults.
16674
16675 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
16676
16677         * genemit.c (main): Print include statement for dfp.h.
16678         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
16679         is not available.
16680
16681 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
16682
16683         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
16684
16685 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
16686
16687         PR target/31022
16688         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
16689         instead of PATTERN.
16690
16691 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16692
16693         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
16694         attr_length_call, output_call, output_indirect_call): Cleanup
16695         formatting of targetm calls.
16696
16697 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
16698
16699         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
16700
16701 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16702
16703         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
16704         reservation, bypass and anti-bypass descriptions for these
16705         instructions.  Update move patterns.
16706         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
16707         TYPE_FPSTORE.
16708
16709 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
16710
16711         * tree-vect-transform.c (get_initial_def_for_induction): Replace
16712         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
16713         (get_initial_def_for_reduction): Likewise.
16714
16715 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
16716
16717         Fix PR tree-optimization/29922
16718         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
16719         (get_representative): Removed.
16720         (value_dies_in_block_x): Update for rvuse removal.
16721         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
16722         (compute_antic_aux): Handle when PHI nodes appear in
16723         non-single-successors.
16724         (dump_bitmap_of_names): Removed.
16725         (compute_antic_safe): Renamed and removed rvuse calculation.
16726         Calculate only antic safe.
16727         (insert_into_preds_of_block): Remove assert.
16728         (execute_pre): Update for renamed functions.
16729         (defer_or_phi_translate_block): New function.
16730
16731 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
16732
16733         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
16734         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
16735         typos.
16736         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
16737         Follow spelling conventions.
16738
16739         * tree-data-ref.h: Remove the prototype for analyze_array.
16740
16741 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
16742
16743         PR tree-optimization/31041
16744         * tree-vect-transform.c (get_initial_def_for_induction): Call
16745         force_gimple_operand.
16746
16747 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
16748
16749         * ipa-type-escape.c (look_for_casts) : Revert code to use
16750         handled_component_p due to ada test a-numaux.adb.
16751
16752 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
16753
16754         * final.c (final_scan_insn): Alter the condition of a
16755         conditional trap if we have nonstandard CC.
16756
16757 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
16758
16759         * configure.ac: Remove excess quoting from asm line 0 test.
16760         * configure: Rebuilt.
16761
16762 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16763
16764         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
16765         * c-common.c (convert_and_check): Move warning logic to...
16766         (warnings_for_convert_and_check): ...here. Define.
16767         * c-common.h (warnings_for_convert_and_check): Declare.
16768
16769 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16770
16771         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
16772         (output_call): Likewise.
16773
16774 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
16775
16776         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
16777
16778 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
16779
16780         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
16781
16782 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
16783
16784         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
16785         opteron, athlon-64 and athlon-fx processor_alias_table entries.
16786
16787 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
16788
16789         PR tree-optimization/31183
16790         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
16791         Use double_int instead of unsigned int for representing access_strides.
16792         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
16793
16794 2007-03-16  Richard Guenther  <rguenther@suse.de>
16795
16796         PR tree-optimization/31146
16797         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
16798         to allow recursion of forward_propagate_addr_expr.
16799         (forward_propagate_addr_into_variable_array_index): Likewise.
16800         (forward_propagate_addr_expr): Likewise.
16801         (tree_ssa_forward_propagate_single_use_vars): Likewise.
16802         (forward_propagate_addr_expr_1): Recurse on simple copies
16803         instead of propagating into them.  Do so for useless conversions
16804         as well.
16805         (forward_propagate_addr_expr): Clean up unused statements after
16806         recursion.
16807
16808 2007-03-16  Richard Guenther  <rguenther@suse.de>
16809
16810         * builtins.c (expand_builtin_cexpi): Use the right argument
16811         for the expansion via cexp.
16812
16813 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
16814
16815         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
16816         * configure: Rebuilt.
16817
16818 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
16819
16820         PR debug/29906
16821         * dwarf2out.c (force_type_die): Adjust comment.
16822         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
16823
16824 2007-03-15  DJ Delorie  <dj@redhat.com>
16825
16826         * config/frv/predicates.md (minmax_operator): Don't check operands
16827         here.
16828
16829 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
16830
16831         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
16832         Update constant estimates of number of iterations.
16833         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
16834         argument renamed to "realistic".
16835         (compute_estimated_nb_iterations): Removed.
16836         (record_niter_bound): New function.
16837         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
16838         call record_nonwrapping_iv with upper = false.
16839         (infer_loop_bounds_from_signedness): Pass upper argument to
16840         record_nonwrapping_iv.
16841         (estimate_numbers_of_iterations_loop): Do not call
16842         compute_estimated_nb_iterations.  Record estimate based on profile
16843         information.  Initialize the constant estimates of number of
16844         iterations.
16845         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
16846         estimates.
16847         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
16848         number of iterations is too small.
16849         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
16850         (EST_NOT_AVAILABLE): Removed.
16851         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
16852         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
16853         fields.
16854
16855 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
16856
16857         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
16858         Handle NE_EXPR guards.
16859
16860 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16861
16862         PR c++/24924
16863         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
16864         Set also -pedantic-errors by default for the  preprocessor unless
16865         -fpermissive is given.
16866
16867 2007-03-15  Richard Guenther  <rguenther@suse.de>
16868
16869         PR middle-end/29719
16870         PR middle-end/31161
16871         * builtins.c (expand_builtin_cexpi): As a fallback if we
16872         don't have builtins for sincos or cexp create a function
16873         declaration for cexp and expand to a call to that.
16874         (expand_builtin_int_roundingfn): Always fall
16875         back to floor/ceil and its variants even if they may be
16876         not available.
16877
16878 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
16879
16880         PR middle-end/31159
16881         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
16882         jump tables, move the call to delete_dead_jumptables from here...
16883         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
16884         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
16885         don't allow merging of blocks that try_redirect_by_replacing_jump
16886         also does not handle when not optimizing.
16887
16888 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
16889             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
16890
16891         * config/i386/i386.md (x86_sahf_1): Correctly handle
16892         HAVE_AS_IX86_SAHF.
16893
16894 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
16895
16896         PR target/31167
16897         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
16898         x86_64_general_operand as operand[2] predicate.  Remove "iF"
16899         from operand constraints and use "e" constraint instead.
16900         (*subti3_1, *subti3_1 splitter): Ditto.
16901         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
16902         operand[1] predicate.
16903
16904 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
16905
16906         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
16907         arrays, multiply the access strides by the size of the sub-array.
16908         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
16909
16910 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
16911
16912         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
16913         the configured assembler supports the sahf mnemonic.
16914         * configure: Regenerate.
16915         * config.in: Regenerate.
16916
16917         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
16918         emit "sahf" or ".byte\t0x9e" as asm template.
16919
16920 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
16921
16922         PR 31018
16923         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
16924         option to replace hard coded TARGET_xxx in md file.
16925         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
16926         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
16927         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
16928         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
16929         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
16930         (X86_TUNE_NOT_VECTORMODE): Ditto.
16931         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
16932         (TUNE_AVOID_VECTOR_DECODE): Ditto.
16933         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
16934         (TUNE_SLOW_IMUL_IMM8): Ditto.
16935         (TUNE_MOVE_M1_VIA_OR): Ditto.
16936         (TUNE_NOT_UNPAIRABLE): Ditto.
16937         (TUNE_NOT_VECTORMODE): Ditto.
16938
16939         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
16940         options.
16941
16942         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
16943         tuning options instead of hard coded TARGET_xxx.
16944         (fix ssemode peephole2's): Ditto.
16945         (imul peephole2's): Ditto.
16946         (movsi_or): Ditto.
16947         (movdi_or_rex64): Ditto.
16948         (move peephole2): Ditto.
16949         (not peephole2's): Ditto.
16950
16951 2007-03-14  Dirk Mueller  <dmueller@suse.de>
16952
16953         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
16954         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
16955         * c-parser.c (c_parser_if_body): Always add an empty statement in case
16956         of empty body.
16957         * c-parser.c (c_parser_do_statement): Warn about empty body in
16958         do/while statement.
16959         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
16960         * doc/invoke.texi (-Wempty-body): Update documentation.
16961
16962 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16963
16964         PR c/21438
16965         * c-common.h (warn_for_div_by_zero): Declare.
16966         * c-common.c (warn_for_div_by_zero): Define.
16967         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
16968         warning.
16969
16970 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
16971
16972         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
16973         to PREFIX and STANDARD_PREFIX.
16974
16975 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
16976             Phil Edwards  <phil@codesourcery.com>
16977
16978         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
16979         (__gthread_once_t): Remove busy field for RTPs.
16980         (__GTHREAD_ONCE_INIT): Update accordingly.
16981
16982 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
16983
16984         * doc/invoke.texi: Document VxWorks options.
16985
16986 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
16987
16988         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
16989
16990 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
16991
16992         PR tree-optimization/30590
16993         * tree-nrv.c (tree_nrv): Check for the partial update of the
16994         return value.
16995
16996 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
16997
16998         * flags.h (flag_random_seed): Remove declaration, in favor of...
16999         * toplev.h (get_random_seed, set_random_seed): ... these.
17000         * tree.c (get_file_function_name): Use the former.
17001         * opts.c (common_handle_option): Use the latter.
17002         * toplev.c
17003
17004 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
17005
17006         PR middle-end/31127
17007         * cse.c (cse_find_path): Do not bail out if a basic block that
17008         we already visited now becomes part of a path that starts at a
17009         different basic block.  Just disallow this, to make sure we
17010         visit each basic block at most once.
17011
17012 2007-03-13  Jan Hubicka  <jh@suse.cz>
17013
17014         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold
17015         attributes, when profile esitmate is present, calls with very low
17016         frequency are cold.
17017
17018 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
17019
17020         PR tree-optimization/30730
17021         PR tree-optimization/26900
17022         * tree-ssa-loop-niter.c: Include gmp.h.
17023         (bounds): New type.
17024         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
17025         split_to_var_and_offset, determine_value_range,
17026         bound_difference_of_offsetted_base, refine_bounds_using_guard,
17027         bound_difference, bounds_add, bounds_negate,
17028         number_of_iterations_ne_max, dump_affine_iv): New functions.
17029         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
17030         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
17031         difference of initial and final value of control iv to validate
17032         results.
17033         (number_of_iterations_cond): Add loop parameter.  Determine bounds
17034         on the difference of the extremes of the control iv.  Add dumps.
17035         (expand_simple_operations): Handle phi nodes.
17036         (simplify_using_initial_conditions): Do not record used conditions.
17037         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
17038         Do not set additional_info.
17039         (implies_nonnegative_p, implies_ge_p): Removed.
17040         (derive_constant_upper_bound): Do not use parameter `additional'.
17041         (record_estimate): Parameter `additional' removed.  Parameter
17042         `i_bound' added.  Do not call derive_constant_upper_bound.
17043         (record_nonwrapping_iv): Use derive_constant_upper_bound to
17044         bound the number of iterations estimate.
17045         (estimate_numbers_of_iterations_loop): Pass the estimate from
17046         the number of iterations analysis to record_estimate.
17047         * tree.h (multiple_of_p): Declare.
17048         * tree-scalar-evolution.c (expression_expensive_p): Removed.
17049         (scev_const_prop): Do not check expression_expensive_p.
17050         * fold-const.c (multiple_of_p): Exported.
17051         * double-int.c (double_int_mask): Exported.
17052         * double-int.h (double_int_mask): Declare.
17053         * tree-flow.h (struct tree_niter_desc): Removed additional_info
17054         field.  Added max field.
17055
17056 2007-03-13  David Taylor  <taylor@candd.org>
17057
17058         PR driver/12448:
17059         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
17060         default -MQ.
17061
17062 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17063
17064         PR target/31123
17065         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
17066         two unamed patterns.
17067
17068 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
17069
17070         * config/i386/i386.opt (mcx16, msahf): New options.
17071         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
17072         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
17073
17074         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
17075         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
17076         Output -mcx16 and -msahf options when corresponding bit is set.
17077
17078         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
17079         and -msahf options.
17080
17081 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
17082
17083         * configure.ac: Test for assembler tolerance to # 0 "".
17084         * configure, config.in: Rebuilt.
17085         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
17086
17087 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
17088
17089         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
17090
17091         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
17092         (handle_syscall): Handle direct system calls.
17093         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
17094
17095 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
17096
17097         * doc/invoke.texi: Fix cpp.info cross-reference.
17098         * doc/passes.texi: Fix gcc.info cross-reference.
17099
17100 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
17101
17102         PR tree-optimization/30835
17103         * lambda-code.c (can_convert_to_perfect_nest): Check whether
17104         bb_for_stmt is not NULL before accessing it.
17105
17106 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
17107
17108         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
17109         some multilibs.
17110
17111 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
17112
17113         PR 30635
17114         * doc/install.texi: Document --enable-stage1-languages
17115
17116 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
17117
17118         * tree-pass.h (pass_into_cfg_layout_mode,
17119         pass_outof_cfg_layout_mode): Declare.
17120         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
17121         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
17122         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
17123         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
17124
17125 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
17126
17127         * c-decl.c (warn_variable_length_array): New function.
17128         Refactored from grokdeclarator to handle warn_vla
17129         and handle unnamed array case.
17130         (grokdeclarator): Refactored VLA warning case.
17131         * c.opt (Wvla): New flag.
17132         * doc/invoke.texi (Wvla): New warning.
17133
17134 2007-03-12  Richard Henderson  <rth@redhat.com>
17135
17136         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
17137         (TARGET_SECTION_TYPE_FLAGS): New.
17138
17139 2007-03-12  Richard Henderson  <rth@redhat.com>
17140
17141         * config/darwin.c (machopic_reloc_rw_mask): New.
17142         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
17143         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
17144
17145 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
17146
17147         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
17148         * cppdefault.h (cpp_PREFIX): Document.
17149         (cpp_PREFIX_len): Likewise.
17150         (cpp_EXEC_PREFIX): New variable.
17151         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
17152         * c-incpath.c (add_standard_paths): Correct logic for relocating
17153         paths within prefix.
17154
17155 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
17156
17157         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
17158         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
17159         mode macro.
17160         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
17161         fix_truncdfdi_sse using SSEMODEF mode macro.
17162         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
17163         fix_truncdfsi_sse using SSEMODEF mode macro.
17164         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
17165         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
17166
17167 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
17168
17169         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
17170         elfos.h to tm_file.
17171
17172 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
17173
17174         * tree.h : Add multiple_of_p declaration.
17175         * fold-const.c (multiple_of_p): Make multiple_of_p public.
17176         * ipa-type-escape.c (results_of_malloc): Redundant.
17177         (visited_stmts): New. Visited stmt for walk_use_def_chains.
17178         (cast_type): Extended with new members.
17179         (check_cast): Returns cast_type.
17180         (cast): New structure for data of walk_use_def_chains.
17181         (is_malloc_result, is_cast_from_non_pointer_1,
17182         is_cast_from_non_pointer,
17183         is_array_access_through_pointer_and_index): New functions.
17184         (look_for_casts): Returns cast types.
17185         (check_call): Returns void.
17186         (okay_pointer_operation): Use support of pointer plus index,
17187         pointer plus constant and allow all multiplications.
17188
17189 2007-03-11  Richard Guenther  <rguenther@suse.de>
17190
17191         PR tree-optimization/31115
17192         * tree-vrp.c (extract_range_from_binary_expr): Make sure
17193         the shift count is positive and non-anti-range for RSHIFT_EXPR.
17194         A shift count of zero is not special as with *_DIV_EXPR.
17195         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
17196         direction.
17197
17198 2007-03-11  Ian Lance Taylor  <iant@google.com>
17199
17200         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
17201         the *_DIV_EXPR codes correctly with overflow infinities.
17202
17203 2007-03-11  Ira Rosen  <irar@il.ibm.com>
17204
17205         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
17206         indicate success/failure of the analysis. Add negation to subtrahend
17207         in case of subtraction. Fail if both operands contain constants.
17208         (create_data_ref): Fail if analyze_offset fails.
17209
17210 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
17211
17212         * config/i386/i386.md (frndintxf2): Rename to ...
17213         (rintxf2): ... this. Remove expander having same name.
17214         (rintsf2, rintdf2): Implement using SSEMODEF macro.
17215         (roundsf2, rounddf2): Ditto.
17216         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
17217         (lround<mode>di2, lround<mode>si2): Ditto.
17218
17219 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
17220
17221         * lower-subreg.c: Include except.h.
17222         (decompose_multiword_subregs): Verify that the only control flow
17223         insns we can split are loads to multi-words pseudos.
17224         Handle breaking such blocks after splitting, instead of calling
17225         find_many_sub_basic_blocks.
17226
17227         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
17228         on the new basic block.  Add a lengthy comment explaining why we
17229         thought this was necessary.
17230         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
17231
17232 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
17233
17234         PR c++/30924
17235         * tree.c (walk_type_fields): Recurse into the element type of
17236         ARRAY_TYPEs if there is a pointer set.
17237
17238 2007-03-10  Dirk Mueller  <dmueller@suse.de>
17239
17240         * c-common.c (warn_logical_operator): Fix condition.
17241
17242 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
17243
17244         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
17245         quotation mark.
17246         * config/darwin.c (machopic_select_section): Remove superfluous
17247         argument in call to categorize_decl_for_section.  Remove unused
17248         variable shlib.
17249
17250 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
17251
17252         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
17253         defined.
17254         * configure: Regenerate.
17255
17256 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
17257
17258         PR target/31101
17259         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
17260         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
17261         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
17262         Add LABEL_NUSES to emitted label.
17263         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
17264         branch probability value to emitted jump insn.
17265         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
17266         Do not check life information and do not re-arrange input operands
17267         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
17268
17269 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
17270
17271         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
17272         the change of decode_asm_operands.
17273
17274 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
17275
17276         * mode-switching.c (create_pre_exit): Skip blockage insn.
17277
17278 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
17279
17280         * tree-pass.h (TODO_update_smt_usage): Remove.
17281         Update all users.
17282         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
17283         argument SOME.
17284         Update all users.
17285
17286 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17287
17288         * pa.c (attr_length_call): Revise condition for long
17289         pc-relative branch.
17290         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long
17291         local calls on the SOM target.  Don't use "LONG_PIC_PCREL" call
17292         sequence on SOM target.
17293
17294 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
17295
17296         * gcc.c: Document %{, in big comment at top.
17297         (input_suffix_matches): Remove special handling for .s and
17298         .S.
17299         (input_spec_matches): New.
17300         (handle_braces): Handle %{,.
17301         (validate_switches): ',' indicates a value which is not a switch.
17302         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
17303         to detect assembler input.
17304         * config/i386/sol2.h (CPP_SPEC): Likewise.
17305         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
17306         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
17307         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
17308         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
17309         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
17310         -m64 causes deployment target to default to 10.5.
17311         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
17312
17313 2007-03-09  Richard Henderson  <rth@redhat.com>
17314
17315         PR target/26090
17316         * target.h (targetm.asm.out.reloc_rw_mask): New.
17317         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
17318         (TARGET_ASM_OUT): Use it.
17319         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
17320         * varasm.c (categorize_decl_for_section): Remove shlib argument;
17321         use the new reloc_rw_mask target hook instead.
17322         (default_section_type_flags_1): Merge into...
17323         (default_section_type_flags): ... here.
17324         (decl_readonly_section_1): Merge into...
17325         (decl_readonly_section): ... here.
17326         (default_elf_select_section_1): Merge into...
17327         (default_elf_select_section): ... here.
17328         (default_unique_section_1): Merge into...
17329         (default_unique_section): ... here.
17330         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
17331         (default_select_rtx_section): Use it.
17332         (default_elf_select_rtx_section): Likewise.
17333         * output.h: Update to match.
17334         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
17335         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
17336         (TARGET_ASM_RELOC_RW_MASK): New.
17337         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
17338         to categorize_decl_for_section.
17339         (x86_64_elf_unique_section): Likewise.
17340         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
17341         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
17342         (TARGET_ASM_RELOC_RW_MASK): New.
17343         * config/ia64/ia64.c (ia64_rwreloc_select_section,
17344         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
17345         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
17346         (TARGET_RWRELOC): Remove.
17347         (ia64_section_type_flags): Adjust call to default_section_type_flags.
17348         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
17349         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
17350         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
17351         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
17352         (rs6000_xcoff_select_section): Use decl_readonly_section.
17353         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
17354         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
17355         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
17356         (TARGET_SECTION_TYPE_FLAGS): Remove.
17357         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
17358
17359 2007-03-09  Roger Sayle  <roger@eyesopen.com>
17360
17361         * fold-const.c (fold_comparison): Remove compile-time evaluation of
17362         complex constant equality/inequality comparisons for here.
17363         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
17364         known at compile-time or can be simplified to a scalar comparison.
17365         (fold_relational_const): Move compile-time evaluation of complex
17366         constant equality/inequality comparisons to here.
17367
17368 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
17369
17370         PR rtl-optimization/30643
17371         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
17372         dest_addr_elt.
17373         (fold_rtx): Recurse, like before 2006-11-03.
17374
17375 2007-03-09  DJ Delorie  <dj@redhat.com>
17376
17377         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
17378         m32c-pragma.o.
17379
17380 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
17381
17382         PR tree-optimization/30375
17383         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
17384         LHS of statements is not the same.
17385         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
17386
17387 2007-03-09  Chao-ying Fu  <fu@mips.com>
17388
17389         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
17390         REV 2.
17391         * doc/invoke.texi (-mdspr2): Document new option.
17392         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
17393         New unspec for DSP REV 2.
17394         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
17395         these instructions are extended in DSP REV 2.
17396         (mips-dspr2.md): Include.
17397         * config/mips/mips.opt (mdspr2): New option.
17398         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
17399         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
17400         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
17401         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
17402         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
17403         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
17404         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
17405         and 2 builtins.
17406         (bdesc_map): Add one field of unsupported_target_flags.
17407         (bdesc_arrays):  Update entries to have extra fields.  Add
17408         dsp_32only_bdesc.
17409         (mips_init_builtins): Initialize new function types.
17410         Check unsupported_target_fileds to filter out builtins.
17411         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
17412         TARGET_DSPR2.
17413         (ASM_SPEC): Pass mdspr2 to the assembler.
17414         * config/mips/mips-dspr2.md: New file.
17415
17416 2007-03-09  Sa Liu  <saliu@de.ibm.com>
17417
17418         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
17419
17420 2007-03-09  Ian Lance Taylor  <iant@google.com>
17421
17422         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
17423         argument) like -Wstrict-overflow=2.
17424         * doc/invoke.texi (Warning Options): Update documentation.
17425
17426 2007-03-09  Dirk Mueller  <dmueller@suse.de>
17427
17428         PR c++/17946
17429         * doc/invoke.texi (-Wlogical-op): Document.
17430         * common.opt (-Wlogical-op): New.
17431         * c-common.h (warn_logical_operator): Declare.
17432         * c-common.c (warn_logical_operator): Define.
17433         * c-typeck.c (parser_build_binary_op): Call
17434         warn_logical_operator.
17435
17436 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
17437
17438         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
17439         * final.c (final_scan_insn): Test for non-"" file name.
17440
17441 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
17442
17443         * doc/loop.texi: Document the Omega linear constraints solver.
17444         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
17445         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
17446         omega-hash-table-size, omega-max-keys, and
17447         omega-eliminate-redundant-constraints.
17448         * tree-pass.h (pass_check_data_deps): Declared.
17449         * omega.c: New.
17450         * omega.h: New.
17451         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
17452         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
17453         pass_check_data_deps): New.
17454         * tree-data-ref.c (init_data_ref): Remove declaration.
17455         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
17456         (analyze_array): Renamed init_array_ref, move up initializations.
17457         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
17458         Removed arguments that are set to NULL.
17459         (analyze_indirect_ref): Correct indentation, correct call to
17460         init_pointer_ref.
17461         (object_analysis): Call init_array_ref instead of analyze_array.
17462         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
17463         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
17464         of DR_ACCESS_FNS_ADDR.
17465         (init_omega_eq_with_af, omega_extract_distance_vectors,
17466         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
17467         ddr_consistent_p): New.
17468         (compute_affine_dependence): Check consistency of ddrs when
17469         flag_check_data_deps is passed.
17470         (analyze_all_data_dependences): Uncomment.
17471         (tree_check_data_deps): New.
17472         * tree-data-ref.h: Include omega.h.
17473         (DR_ACCESS_FNS_ADDR): Removed.
17474         (data_dependence_relation): Add inner_loop.
17475         (DDR_INNER_LOOP): New.
17476         * common.opt (fcheck-data-deps): New.
17477         * tree-flow.h (tree_check_data_deps): Declare.
17478         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
17479         (OBJS-common): Depend on omega.o.
17480         (omega.o): Define.
17481         * passes.c (pass_check_data_deps): Scheduled.
17482         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
17483         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
17484         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
17485         PARAM_VECT_MAX_VERSION_CHECKS,
17486         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
17487
17488 2007-03-09  Richard Guenther  <rguenther@suse.de>
17489
17490         PR tree-optimization/30904
17491         PR middle-end/31058
17492         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
17493         the same way as *_DIV_EXPR.
17494
17495 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
17496
17497         * recog.c (decode_asm_operands): No mixed declarations and code.
17498
17499 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
17500
17501         * rtl.def (ASM_INPUT): Add location.
17502         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
17503         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
17504         (decode_asm_operands): Add loc operand.
17505         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
17506         * stmt.c (expand_asm): Rename to...
17507         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
17508         gen_rtx_ASM_INPUT_loc.
17509         (expand_asm_expr): Adjust.
17510         * recog.c (decode_asm_operands): Add loc operand.
17511         (check_asm_operands, extract_insn): Adjust.
17512         * reload1.c (maybe_fix_stack_asms): Likewise.
17513         * final.c (asm_insn_count): Likewise.
17514         (final_scan_insn): Output # line before and after asm.
17515
17516 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
17517
17518         * tree-ssa-structalias.c (variable_info): Remove
17519         finished_solution.
17520         (new_var_info): Ditto.
17521         (shared_bitmap_info_t): New structure.
17522         (shared_bitmap_table): New variable.
17523         (shared_bitmap_hash): New function.
17524         (shared_bitmap_eq): Ditto
17525         (shared_bitmap_lookup): Ditto.
17526         (shared_bitmap_add): Ditto.
17527         (merge_smts_into): Change to take bitmap directly.
17528         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
17529         (init_alias_vars): Init shared bitmap hashtable.
17530         (delete_points_to_sets): Delete shared bitmap hashtable.
17531         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
17532         is_aliased removal as a change that was still necessary was
17533         deleted.
17534
17535 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
17536
17537         * config/i386/i386.h (override_options): Conditionally disable
17538         x86_sahf for 64bit targets only.
17539
17540 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17541
17542         PR C/31072
17543         * c-decl.c (merge_decls): Don't call make_var_volatile.
17544         * varasm.c (make_var_volatile): Remove.
17545         * output.h (make_var_volatile): Remove.
17546
17547 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
17548
17549         PR tree-optimization/31085
17550         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
17551
17552 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17553
17554         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
17555         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
17556         ATTR_CONST_NOTHROW_LIST.
17557
17558         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
17559         FIX_TRUNC_EXPR.
17560
17561 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
17562
17563         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
17564
17565 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
17566
17567         PR 31013
17568         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
17569         is declared.
17570         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
17571         passed, use shared libgcc.
17572
17573 2007-03-08  Roger Sayle  <roger@eyesopen.com>
17574
17575         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
17576         instead of calling build2 with a GIMPLE_MODIFY_STMT.
17577         (honor_protect_cleanup_actions, lower_try_finally_switch):
17578         Likewise.
17579         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
17580         ifc_temp_var): Likewise.
17581         * tree-inline.c (setup_one_parameter): Likewise.
17582         * tree-mudflap.c (mf_decl_cache_locals,
17583         mf_build_check_statement_for): Likewise.
17584         * tree-nested.c (init_tmp_var, save_tmp_var,
17585         finalize_nesting_tree_1): Likewise.
17586         * tree-outof-ssa.c (insert_copy_on_edge,
17587         insert_backedge_copies): Likewise.
17588         * tree-profile.c (tree_gen_edge_profiler,
17589         tree_gen_ic_profiler): Likewise.
17590         * tree-scalar-evolution.c (scev_const_prop): Likewise.
17591         * tree-sra.c (sra_build_assignment): Likewise.
17592         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
17593         * tree-ssa-math-opts.c (insert_reciprocals,
17594         execute_cse_sincos_1): Likewise.
17595         * tree-tailcall.c (adjust_accumulator_values,
17596         adjust_return_value): Likewise.
17597         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
17598         * tree-vect-transform.c (vect_create_data_ref_ptr,
17599         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
17600         vect_create_epilog_for_reduction, vectorizable_reduction,
17601         vectorizable_call, vectorizable_conversion,
17602         vectorizable_assignment, vectorizable_operation,
17603         vectorizable_type_demotion, vect_gen_widened_results_half,
17604         vect_permute_store_chain, vectorizable_store,
17605         vect_setup_realignment, vect_permute_load_chain,
17606         vectorizable_load, vectorizable_condition,
17607         vect_create_cond_for_align_checks): Likewise.
17608         * tree-vrp.c (build_assert_expr_for): Likewise.
17609
17610 2007-03-08  Ian Lance Taylor  <iant@google.com>
17611
17612         * tree-vrp.c: Include "intl.h".
17613         (usable_range_p): New static function.
17614         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
17615         overflowed values, juts set *strict_overflow_p.
17616         (compare_values): Only return -2 if one of the operands is not a
17617         constant.
17618         (compare_ranges): Call usable_range_p.
17619         (compare_range_with_value): Likewise.
17620         (vrp_evaluate_conditional_warnv): Rename from
17621         vrp_evaluate_conditional.  Make static.  Change all callers.
17622         (vrp_evaluate_conditional): New function.
17623         (simplify_div_or_mod_using_ranges): Issue warning about reliance
17624         on signed overflow.
17625         (simplify_abs_using_ranges): Likewise.
17626         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
17627         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
17628         within_stmt parameter.
17629         * tree-ssa-propagate.c (fold_predicate_in): Update call to
17630         vrp_evaluate_conditional.
17631         * tree-ssa-threadedge.c
17632         (record_temporary_equivalences_from_stmts_at_dest): Change
17633         simplify parameter to take a second tree parameter.
17634         (simplify_control_stmt_condition): Likewise.
17635         (thread_across_edge): Likewise.
17636         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
17637         (thread_across_edge): Likewise.
17638         * Makefile.in (tree-vrp.o): Depend upon intl.h.
17639
17640 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
17641
17642         * config/i386/i386.h (TARGET_SAHF): New define.
17643         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
17644         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
17645         (x86_sahf): New global variable.
17646         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
17647         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
17648         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
17649         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
17650         for 64-bit.
17651         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
17652         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
17653         when expanding fcomi/sahf based tests.
17654         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
17655         expanding sahf based alternative. Emit sahf based sequence when
17656         optimizing for code size.
17657         * config/i386/i386.md (x86_sahf_1): Do not disable for
17658         TARGET_64BIT, enable for TARGET_SAHF.
17659
17660 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
17661
17662         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
17663         spurious whitespace from error message.
17664
17665 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
17666
17667         PR c++/30852
17668         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
17669
17670 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
17671
17672         * c-decl.c (grokdeclarator): Disable warnings for anonymous
17673         bitfields.
17674         * tree-sra.c (instantiate_element): Propagate disabled warnings
17675         from the element itself to the created variable.
17676
17677 2007-03-07  Richard Henderson  <rth@redhat.com>
17678
17679         PR target/30848
17680         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
17681         silently fix up the stack in the case of a missing register.
17682
17683 2007-03-07  Paul Brook  <paul@codesourcery.com>
17684
17685         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
17686
17687 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
17688
17689         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
17690         New.
17691         (phase1_vrs): Use them.
17692         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
17693         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
17694         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
17695         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
17696         __gnu_Unwind_Restore_WMMXC if required.
17697         (_Unwind_VRS_Pop): Implement iWMMXt support.
17698         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
17699         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
17700         gnu_Unwind_Save_WMMXC): Define.
17701
17702 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
17703
17704         * config/vxworks.h (vxworks_override_options): Declare.
17705         (VXWORKS_OVERRIDE_OPTIONS): Use it.
17706         * config/vxworks.c: Include target.h and toplev.h.
17707         (vxworks_override_options): New function.
17708         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
17709
17710 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
17711
17712         * config/s390/s390.c (override_options): Don't emit an error when
17713         -mstack-size is used without providing -mstack-guard.
17714         (s390_emit_prologue): Choose stack_guard value automatically if not
17715         provided via command line.
17716         * doc/invoke.texi: Adjust description of -mstack-guard and
17717         -mstack-size.
17718
17719 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
17720
17721         * config/i386/i386.c (output_set_got): Add a GOT initialization
17722         sequence for VxWorks PIC.
17723         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
17724         around labels as well as symbols.  Use gotoff_operand instead
17725         of local_symbolic_operand.
17726         (legitimize_pic_address): Use gotoff_operand instead of
17727         local_symbolic_operand.  Use @GOT accesses for labels as
17728         well as symbols.
17729         (ix86_output_addr_diff_elt): Use PC-relative rather than
17730         GP-relative offsets for VxWorks PIC.
17731         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
17732         no_new_pseudos.  Check whether the returned register is op0.
17733         * config/i386/i386.md (tablejump): Use PC-relative rather than
17734         GP-relative offsets for VxWorks PIC.
17735         * config/i386/predicates.md (gotoff_operand): New predicate.
17736
17737 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17738
17739         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
17740         before defining.
17741         * config/vxworks-dummy.h: New file.
17742         * config/i386/i386.h: Include it.
17743
17744 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
17745
17746         * dwarf2out.c (is_inlined_entry_point): New
17747         (add_high_low_attributes): Emit DW_AT_entry_pc along with
17748         DW_AT_ranges if the first subblock is the entry point.
17749
17750 2007-03-06  David Daney  <ddaney@avtrex.com>
17751
17752         * doc/install.texi (mips-*-*): Change recommended binutils
17753         version.
17754
17755 2007-03-06  Anatoly Sokolov <aesok@post.ru>
17756
17757         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
17758         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
17759         devices.
17760         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
17761         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
17762
17763 2007-03-06  Jan Hubicka  <jh@suse.cz>
17764
17765         * errors.h (warning, error, fatal, internal_error): Mark as cold.
17766         * predict.c (maybe_hot_bb): Cold functions are never hot; hot
17767         functions are hot.
17768         (probably_cold_bb_p): Cold functions are cold.
17769         (probably_never_executed_bb_p): Cold functions are cold.
17770         (tree_bb_level_predictions): Predict calls to cold functions as not
17771         taken.
17772         (compute_function_frequency): Check hot/cold attributes.
17773         * function.h (function_frequency): Update comments.
17774         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
17775         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
17776         (c_common_att): Add cold and hot.
17777
17778         * doc/extend.texi (hot,cold attributes): Document.
17779
17780 2007-03-06  Andrew Haley  <aph@redhat.com>
17781
17782         * function.c (expand_function_end): Move blockage to just after we
17783         emit the label for the naked return from the function.
17784
17785 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17786
17787         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
17788         before redefining.
17789
17790 2007-03-06  Jan Hubicka  <jh@suse.cz>
17791
17792         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
17793         loaded for constant large models.  Non-large 64bit PIC can do.
17794         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
17795         * cmodel.h: Add LARGE PIC.
17796         * i386.md (UNSPEC_PLTOFF): New.
17797         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other
17798         unspecs as needed.
17799         (*call_1_rex64): Disable for large models.
17800         (*call_1_rex64_large): New.
17801         (*call_value_1_rex64): Disable for large models.
17802         (*call_value_1_rex64_large): New.
17803         (set_rip_rex4): New.
17804         (set_got_offset_rex64): New.
17805         * predicates.md (constant_call_address_operand): For large model
17806         constant calls are not possible.
17807         * i386-protos.h (construct_plt_address): Declare.
17808         * i386.c (override_options): Accept large models.
17809         (ix86_expand_prologue): Expand large PIC GOT pointer load.
17810         (legitimate_constant_p): Add new UNSPECs.
17811         (legitimate_pic_operand_p): Likewise.
17812         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
17813         (legitimize_pic_address): Do easy RIP relative way for TLS only for
17814         non-large model.
17815         (output_pic_addr_const): Add PLTOFF.
17816         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
17817         (ix86_expand_move): Legitimize pic address when in PIC mode.
17818         (construct_plt_address): New function.
17819         (ix86_expand_call): Offload the address to register and use GOT
17820         pointer for large model.
17821         * invoke.texi (mcmodel=large): Update documentation.
17822
17823 2007-03-06  Richard Henderson  <rth@redhat.com>
17824
17825         * config/i386/i386.c (x86_use_leave, x86_push_memory,
17826         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
17827         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
17828         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
17829         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
17830         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
17831         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
17832         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
17833         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
17834         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
17835         x86_partial_reg_dependency, x86_memory_mismatch_stall,
17836         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
17837         x86_sse_partial_reg_dependency, x86_sse_split_regs,
17838         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
17839         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
17840         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
17841         x86_schedule, x86_use_bt, x86_pad_returns,
17842         x86_use_xchgb): Merge into ...
17843         (ix86_tune_features): ... here.  New array.
17844         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
17845         x86_bswap): Merge into ...
17846         (ix86_arch_features): ... here.  New array.
17847         (x86_3dnow_a): Remove.
17848         (x86_accumulate_outgoing_args): Make static.
17849         (x86_arch_always_fancy_math_387): Make static.
17850         (ix86_tune_mask, ix86_arch_mask): Move ...
17851         (override_options): ... to local variables here.  Apply the
17852         appropriate mask to each element of ix86_arch_features and
17853         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
17854         as were done in the old macros.
17855         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
17856         * config/i386/i386.h (x86_use_leave, x86_push_memory,
17857         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
17858         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
17859         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
17860         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
17861         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
17862         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
17863         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
17864         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
17865         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
17866         x86_partial_reg_dependency, x86_memory_mismatch_stall,
17867         x86_accumulate_outgoing_args, x86_prologue_using_move,
17868         x86_epilogue_using_move, x86_decompose_lea,
17869         x86_arch_always_fancy_math_387, x86_shift1,
17870         x86_sse_partial_reg_dependency, x86_sse_split_regs,
17871         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
17872         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
17873         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
17874         x86_use_incdec, x86_pad_returns, x86_bswap,
17875         x86_partial_flag_reg_stall): Remove.
17876         (enum ix86_tune_indices): New.
17877         (ix86_tune_features): New.
17878         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
17879         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
17880         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
17881         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
17882         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
17883         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
17884         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
17885         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
17886         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
17887         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
17888         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
17889         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
17890         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
17891         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
17892         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
17893         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
17894         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
17895         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
17896         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
17897         TARGET_EXT_80387_CONSTANTS): Use it.
17898         (enum ix86_arch_indices): New.
17899         (ix86_arch_features): New.
17900         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
17901         TARGET_BSWAP): Use it.
17902         (ix86_tune_mask, ix86_arch_mask): Remove.
17903
17904 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
17905
17906         PR bootstrap/31020
17907         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
17908         Define using $${sysroot_headers_suffix}.
17909         * configure: Regenerate.
17910         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
17911         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
17912         defined.
17913         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
17914         * gcc.c (print_sysroot_headers_suffix): New.
17915         (option_map): Include --print-sysroot-headers-suffix.
17916         (display_help): Mention -print-sysroot-headers-suffix.
17917         (process_command): Handle -print-sysroot-headers-suffix.
17918         (do_spec_1): Append multilib directory to include-fixed path if
17919         sysroot suffixes in use.
17920         (main): Handle -print-sysroot-headers-suffix.
17921         * Makefile.in (start.encap): Don't depend on xlimits.h
17922         (xlimits.h): Remove.
17923         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
17924         limits.h for each multilib in fixinc_list.
17925         (fixinc_list, s-fixinc_list): New.
17926         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
17927         generate them for each multilib in fixinc_list.
17928         (stmp-fixproto): Use include-fixed.  Run fixproto for each
17929         multilib in fixinc_list.
17930         (mostlyclean): Don't remove xlimits.h.
17931         (clean): Remove include-fixed.
17932         (real-install-headers-tar, real-install-headers-cpio,
17933         real-install-headers-cp): Don't copy include, only include-fixed.
17934         (install-mkheaders): Depend on fixinc_list.  Don't depend on
17935         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
17936         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
17937         SYSTEM_HEADER_DIR setting in mkheaders.conf.
17938
17939 2007-03-06  Jan Hubicka  <jh@suse.cz>
17940
17941         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
17942         NANs easilly.
17943
17944 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17945
17946         * configure.ac: Allow tm_file to contain build-directory files.
17947         * configure: Regenerate.
17948         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
17949         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
17950         * config/m68k/print-sysroot-suffix.sh: New file.
17951
17952 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17953
17954         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
17955         of pic_offset_table_rtx if reload_completed.
17956         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
17957         PIC_OFFSET_TABLE_REGNUM.
17958         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
17959         return true.
17960         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
17961         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
17962
17963 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17964
17965         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
17966         functions that call eh_return.
17967
17968 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17969
17970         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
17971         functions that need a constant pool.
17972
17973 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17974
17975         PR target/28181
17976         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
17977         (m68k_preferred_reload_class): Likewise.
17978         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
17979         (SECONDARY_RELOAD_CLASS): Define.
17980         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
17981         (LIMIT_RELOAD_CLASS): Delete.
17982         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
17983         registers from storing bytes.
17984         (m68k_secondary_reload_class): New function.
17985         (m68k_preferred_reload_class): Likewise.
17986
17987 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17988
17989         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
17990         leaf functions.
17991         (m68k_expand_prologue): Likewise.
17992
17993 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
17994
17995         * config/m68k/m68k-protos.h (output_sibcall): Declare.
17996         (mips_expand_epilogue): Add a bool parameter.
17997         (m68k_legitimize_sibcall_address): Declare.
17998         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
17999         (m68k_expand_epilogue): Add a parameter to select between sibling
18000         and normal epilogues.  Only generate a return for the latter.
18001         (m68k_ok_for_sibcall_p): New function.
18002         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
18003         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
18004         (sibcall_value, *sibcall_value): Likewise.
18005         (*call, *call_value): Require !SIBLING_CALL_P.
18006         (epilogue): Update call to m68k_expand_epilogue.
18007         (sibcall_epilogue): New pattern.
18008         * config/m68k/predicates.md (const_call_operand): Say that this
18009         predicate applies to sibling calls too.
18010         (sibcall_operand): New predicate.
18011
18012 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18013
18014         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
18015         alternatives as movsi_cf.
18016         (movsf_cf_hard): Add commentary.
18017
18018 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
18019             Richard Sandiford  <richard@codesourcery.com>
18020
18021         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
18022         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
18023         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
18024         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
18025         as being live on exit from an interrupt function.
18026         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
18027         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
18028         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
18029         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
18030         (m68k_interrupt_function_p): Globalize.
18031         (m68k_compute_frame_layout): Remove reverse mask code.
18032         (m68k_emit_movem, m68k_set_frame_related): New functions.
18033         (m68k_output_function_prologue): Delete in favor of...
18034         (m68k_expand_prologue): ...this new function.
18035         (m68k_output_function_epilogue): Delete in favor of...
18036         (m68k_expand_epilogue): ...this new function.
18037         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
18038         functions.
18039         (print_operand): Handle %?.
18040         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
18041         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
18042         (prologue, epilogue): New patterns.
18043         (return): Turn into a define_expand.
18044         (*return): New pattern, derived from old "return" pattern.  Use rte
18045         rather than rts for interrupt functions.  Only use rtd if the pop
18046         count is nonzero.
18047         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
18048         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
18049         (link, *link, unlink, *unlink, load_got): Likewise.
18050
18051 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
18052
18053         PR target/23482
18054         PR target/17114
18055         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
18056         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
18057         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
18058         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
18059         and m68k_matches_u_p.
18060         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
18061         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
18062         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
18063         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
18064         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
18065         (REG_STRICT_P): New macro.
18066         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
18067         PCREL_GENERAL_OPERAND_OK.
18068         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
18069         m68k_legitimate_base_reg_p.
18070         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
18071         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
18072         (PIC_CASE_VECTOR_ADDRESS): Update comment.
18073         * config/m68k/m68k.c (m68k_address): New structure.
18074         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
18075         (m68k_decompose_index, m68k_legitimate_constant_address_p)
18076         (m68k_jump_table_ref_p, m68k_decompose_address)
18077         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
18078         (m68k_matches_u_p): New functions.
18079         (print_operand_address): Rewrite to use m68k_decompose_index.
18080
18081 2007-03-05  David Taylor  <dtaylor@emc.com>
18082
18083         * gcc.c: Correct copyright date in --version output.
18084
18085 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18086
18087         * pa.md: In unamed move patterns, disparge copies between general
18088         and floating point registers using '?' modifier.  Don't include 'f'
18089         constraint for register preferences in DImode, SImode, HImode and
18090         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
18091         Remove constraints for copies between general and floating registers
18092         in soft-float DFmode pattern.
18093         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
18094         floating register.
18095         (movsf): Likewise.
18096
18097 2007-03-05  Mike Stump  <mrs@apple.com>
18098
18099         * c-common.c (targetcm): Add.
18100         * c-opts.c (c_common_handle_option): Handle language specific
18101         target options.
18102         * opts.c (handle_option): Verify language for target options, if
18103         any are given.
18104         * opth-gen.awk: Add CL_LANG_ALL.
18105         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
18106         (TARGETCM_INITIALIZER): Add.
18107         * target.h (struct gcc_targetcm): Add.
18108         (targetcm): Add.
18109         * targhooks.c (default_handle_c_option): Add.
18110         * targhooks.h (default_handle_c_option): Add.
18111         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
18112
18113         * config/darwin.opt (iframework): Add.
18114         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
18115         * config/darwin-c.c (handle_c_option): Add.
18116         (TARGET_HANDLE_C_OPTION): Add.
18117         (targetcm): Add.
18118         * doc/invoke.texi (Darwin Options): Add -iframework.
18119
18120 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18121
18122         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
18123         conversion.
18124
18125 2007-03-05  Ian Lance Taylor  <iant@google.com>
18126
18127         * c.opt (fgnu89-inline): New option.
18128         * c-opts.c (c_common_post_options): Set default value for
18129         flag_gnu89_inline.
18130         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
18131         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
18132         inline functions.
18133         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
18134         (grokdeclarator, start_function): Likewise.
18135         * c-cppbuiltin.c (c_cpp_builtins): Define either
18136         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
18137         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
18138         (C Dialect Options): Document -fgnu89-inline.
18139         * doc/extend.texi (Function Attributes): Explain what the
18140         gnu_inline attribute does.
18141         * doc/cpp.texi (Common Predefined Macros): Document
18142         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
18143
18144 2007-03-05  Ian Lance Taylor  <iant@google.com>
18145
18146         PR tree-optimization/31034
18147         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
18148         half-range if the other side is an overflow infinity.
18149
18150 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
18151
18152         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
18153         (bfin*-linux-uclibc*): New configuration.
18154         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
18155         defining.
18156         * config/bfin/linux.h: New file.
18157         * config/bfin/libgcc-bfin.ver: New file.
18158         * config/bfin/t-bfin-uclinux: New file.
18159         * config/bfin/t-bfin-linux: New file.
18160         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
18161         (TARGET_OS_CPP_BUILTINS): New macro.
18162
18163 2007-03-05  Richard Guenther  <rguenther@suse.de>
18164
18165         * fold-const.c (fold_binary): Remove duplicate folding
18166         of comparison of non-null ADDR_EXPR against null.
18167
18168 2007-03-05  Richard Guenther  <rguenther@suse.de>
18169             Dorit Nuzman  <dorit@il.ibm.com>
18170
18171         PR tree-optimization/26420
18172         * tree-vectorizer.c (vectorize_loops): Bail out early if there
18173         are no loops in the function.  Only print the number of
18174         vectorized loops if it is greater than zero or we are supposed
18175         to print information about unvectorized loops.
18176
18177 2007-03-05  Revital Eres  <eres@il.ibm.com>
18178
18179         * gcc.dg/var-expand1.c: New test.
18180         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
18181         when an accumulator is expanded.
18182
18183 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18184
18185         PR other/30465
18186         * c-common.c (convert_and_check): Don't give warnings for
18187         conversion if 'expr' already overflowed.
18188
18189 2007-03-04  Roger Sayle  <roger@eyesopen.com>
18190
18191         PR middle-end/30744
18192         * fold-const.c (fold_comparison): Enforce type consistency when
18193         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
18194
18195 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
18196
18197         * tree-ssa-address.c (create_mem_ref): Do not put an expression
18198         containing a cast to the base of TARGET_MEM_REF.
18199
18200 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
18201
18202         * tree.c (tree_contains_struct_check_failed): Remove spurious
18203         whitespace from error message.
18204
18205 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
18206
18207         PR target/30406
18208         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
18209         instead of precision.
18210
18211 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
18212             Nathan Sidwell  <nathan@codesourcery.com>
18213
18214         * emit-rtl.c (find_auto_inc): New.
18215         (try_split): recreate REG_INC notes,
18216         Use regular for loops rather than whiles.
18217
18218 2007-03-03  Andreas Schwab  <schwab@suse.de>
18219
18220         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
18221         * configure: Regenerate.
18222
18223 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18224
18225         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
18226         flag_rounding_math, not flag_unsafe_math_optimizations.
18227
18228         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
18229         fold_build2.
18230         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
18231         alpha_fold_vector_minmax): Likewise.
18232         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
18233         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
18234
18235 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
18236
18237         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
18238         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
18239         if the lhs has side-effects.
18240         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
18241
18242 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
18243
18244         * config/i386/i386.h (TUNEMASK): Remove define.
18245         (ARCHMASK): Remove define.
18246         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
18247          Use ix86_arch_mask variable instead of ARCHMASK.
18248         * config/i386/i386.c (override_options): Ditto.
18249         (standard_80387_constant_p): Ditto.
18250
18251 2007-03-02  Ian Lance Taylor  <iant@google.com>
18252
18253         Used signed infinities in VRP.
18254         * tree-vrp.c (uses_overflow_infinity): New static function.
18255         (supports_overflow_infinity): New static function.
18256         (make_overflow_infinity): New static function.
18257         (negative_overflow_infinity): New static function.
18258         (positive_overflow_infinity): New static function.
18259         (is_negative_overflow_infinity): New static function.
18260         (is_positive_overflow_infinity): New static function.
18261         (is_overflow_infinity): New static function.
18262         (overflow_infinity_range_p): New static function.
18263         (compare_values_warnv): New function split out of compare_values.
18264         (compare_value): Call it.
18265         (set_value_range_to_nonnegative): Add overflow_infinity
18266         parameter.  Change caller.
18267         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
18268         Change callers.
18269         (vrp_expr_computes_nonzero): Likewise.
18270         (compare_ranges, compare_range_with_value): Likewise.
18271         (compare_name_with_value, compare_names): Likewise.
18272         (vrp_evaluate_conditional): Likewise.
18273         (set_value_range): Handle infinity
18274         (vrp_operand_equal_p, operand_less_p): Likewise.
18275         (extract_range_from_assert): Likewise.
18276         (vrp_int_const_binop): Likewise.
18277         (extract_range_from_binary_expr): Likewise.
18278         (extract_range_from_unary_expr): Likewise.
18279         (extract_range_from_comparison): Likewise.
18280         (extract_range_from_expr): Likewise.
18281         (dump_value_range): Likewise.
18282         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
18283         (test_for_singularity): Likewise.
18284         (vrp_int_const_binop): Remove inline qualifier.
18285         (adjust_range_with_scev): Add comment.
18286         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
18287
18288 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
18289
18290         * tree-ssa-structalias.c (could_have_pointers): Tidy.
18291         (get_constraint_for): Likewise.
18292         (do_structure_copy): Likewise.
18293         (find_func_aliases): Fix references to MODIFY_EXPR.
18294         (intra_create_variable_infos): Tidy.
18295         * tree-ssa-operands.c (add_virtual_operand): Add argument
18296         IS_CALL_SITE.
18297         When adding members of alias sets, if IS_CALL_SITE is true and
18298         the symbol is not call-clobbered, skip it.
18299         Adjust all callers.
18300
18301 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
18302
18303         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
18304         entry by means of emit_insn_at_entry.
18305
18306 2007-03-02  Richard Henderson  <rth@redhat.com>
18307
18308         * expr.h (promoted_input_arg): Remove decl.
18309         * function.c (promoted_input_arg): Merge into ...
18310         * combine.c (setup_incoming_promotions): ... only caller.
18311         Rearrange to avoid double loop.
18312
18313 2007-03-02  Ben Elliston  <bje@au.ibm.com>
18314             Peter Bergner  <bergner@vnet.ibm.com>
18315             Janis Johnson  <janis187@us.ibm.com>
18316
18317         * config/rs6000/dfp.md: New file.
18318         * config/rs6000/rs6000.md: Include dfp.md.
18319         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
18320         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
18321         and TDmode decimal float modes in FP registers.
18322         (num_insns_constant): Likewise.
18323         (rs6000_legitimate_offset_address_p): Likewise.
18324         (rs6000_legitimize_address): Likewise.
18325         (rs6000_legitimize_reload_address): Likewise.
18326         (rs6000_legitimate_address): Likewise.
18327         (rs6000_emit_move): Likewise.
18328         (function_arg_boundary): Likewise.
18329         (function_arg_advance): Likewise.
18330         (rs6000_darwin64_record_arg_recurse): Likewise.
18331         (function_arg): Likewise.
18332         (rs6000_gimplify_va_arg): Likewise.
18333         (rs6000_split_multireg_move): Likewise.
18334         (rs6000_output_function_epilogue): Likewise.
18335         (rs6000_output_function_epilogue): Likewise.
18336         (rs6000_register_move_cost): Likewise.
18337         (rs6000_function_value): Likewise.
18338         (rs6000_libcall_value): Likewise.
18339
18340 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
18341
18342         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
18343
18344 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
18345
18346         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
18347         Use $MULTIDIR to choose between the kernel and RTP headers,
18348         and use $WIND_BASE and $WIND_USR to locate them.
18349
18350 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
18351
18352         * config/i386/i386.c (override_options): Put initialization of
18353         ix86_tune_mask and ix86_arch_mask to the correct place.
18354
18355 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
18356             Michael Meissner  <michael.meissner@amd.com>
18357
18358         PR target/31019
18359         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
18360         (ARCHMASK): Define.
18361         (TARGET_CMOVE): Use ARCHMASK.
18362         (TARGET_CMPXCHG): Ditto.
18363         (TARGET_CMPXCHG8B): Ditto.
18364         (TARGET_XADD): Ditto.
18365         (TARGET_BSWAP): Ditto.
18366         * config/i386/i386.c (ix86_tune_mask): New global variable.
18367         (ix86_arch_mask): Ditto.
18368         (override_options): Initialize ix86_tune_mask and
18369         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
18370         target_flags.
18371
18372 2007-03-02  Ben Elliston  <bje@au.ibm.com>
18373
18374         PR 30992
18375         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
18376
18377 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
18378
18379         * target.h (init_dwarf_reg_sizes_extra): New target hook.
18380         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
18381         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
18382         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
18383         hook.
18384         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
18385         rs6000_init_dwarf_reg_sizes_extra): New.
18386         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
18387         SPE register high parts.
18388
18389 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
18390
18391         * Makefile.in: Add install-pdf target as
18392         copied from automake v1.10 rules.
18393         * configure.ac: Add install-pdf to target list.
18394         * configure: Regenerate.
18395
18396 2007-03-01  Paul Brook  <paul@codesourcery.com>
18397
18398         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
18399         modes to LDRD for DImode.
18400         (output_move_double): Fixup out of range ldrd/strd.
18401         (vfp_secondary_reload_class): Rename...
18402         (coproc_secondary_reload_class): ... to this.  Add wb argument.
18403         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
18404         coproc_secondary_reload_class for CLASS_IWMMXT.
18405         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
18406         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
18407
18408 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
18409
18410         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the
18411         unroll factor by the estimated number of iterations.
18412         (loop_prefetch_arrays): Do not prefetch in loops that iterate less
18413         than prefetch latency.
18414
18415         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
18416         decode_caches_intel, detect_caches_intel): New functions.
18417         (host_detect_local_cpu): Use detect_caches_amd and
18418         detect_caches_intel.
18419
18420 2007-03-01  Richard Henderson  <rth@redhat.com>
18421
18422         * expr.c (emit_move_complex_push): Export.
18423         (emit_move_complex_parts): Split out from ...
18424         (emit_move_complex): ... here.
18425         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
18426         * config/i386/i386.md (movcdi): New.
18427
18428 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
18429
18430         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
18431         size of mode1 to check for tieable modes in MMX case.
18432
18433 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
18434
18435         * Makefile.in (rtlanal.o): Depend on tree.h.
18436         * rtl.h (offset_within_section_p, split_const): Declare.
18437         * rtlanal.c: Include tree.h.
18438         (offset_within_block_p): New function, taken from
18439         mips_offset_within_object_p.
18440         (split_const): New function, taken from mips_split_const.
18441         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
18442         Declare.
18443         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
18444         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
18445         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
18446         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
18447         (m68k_illegitimate_symbolic_constant_p): New function.
18448         * config/m68k/m68k.md (movsi): Remove misleading predicates.
18449         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
18450         symbolic constant that might be outside the symbol's section,
18451         move the symbol first and then add the offset.
18452         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
18453         Override.
18454         * config/mips/mips.c (mips_split_const): Delete.
18455         (mips_offset_within_object_p): Delete.
18456         (mips_symbolic_constant_p): Use offset_within_section_p and
18457         split_const instead of mips_offset_within_object_p and
18458         mips_split_const.
18459         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
18460         (mips_legitimize_const_move, print_operand_reloc)
18461         (mips_dangerous_for_la25_p): Use split_const instead of
18462         mips_split_const.
18463
18464 2007-02-28  Eric Christopher  <echristo@apple.com>
18465
18466         * Makefile.in (install-include-dir): Don't rm -rf include.
18467
18468 2007-02-28  Richard Guenther  <rguenther@suse.de>
18469
18470         PR middle-end/30364
18471         * fold-const.c (fold_binary): Do not associate expressions
18472         with more than one variable for integer types that do not wrap.
18473
18474 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
18475
18476         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
18477         Delete, and replace with...
18478         (fold_builtin_call_array): This.  Update callers to use it.
18479         * fold-const.c (fold_build_call_list): Delete, and replace with...
18480         (fold_build_call_array): This.
18481         (fold_build_call_list_initializer): Delete, and replace with...
18482         (fold_build_call_array_initializer): This.
18483         * tree.h: Update declarations to reflect above changes.
18484
18485         * c-typeck.c (build_function_call): Store converted arguments
18486         in a stack-allocated array instead of building a list.
18487         (convert_arguments): Store arguments in the array passed in as an
18488         argument, and return the actual number of arguments.
18489         * c-format.c: (check_function_format): Pass arguments in an
18490         array instead of a list.
18491         * c-common.c (check_function_nonnull): Likewise.
18492         (check_function_sentinel): Likewise.
18493         (check_function_arguments): Likewise.
18494         * c-common.h: Update declarations to reflect above changes.
18495
18496 2007-02-28  Jan Hubicka  <jh@suse.cz>
18497
18498         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
18499         PRED_NEGATIVE_RETURN): Update outcomes.
18500
18501 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
18502
18503         * calls.c (emit_library_call_value_1): Handle partial registers
18504         correctly when building up CALL_INSN_FUNCTION_USAGE.
18505
18506 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18507
18508         * pa/predicates.md (move_src_operand): Allow zero for mode.
18509         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
18510         move pattern.
18511
18512 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
18513
18514         PR target/30970
18515         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
18516         *movv2df_internal): Enable pattern only for valid operand
18517         combinations.
18518         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
18519         tie only 128bit modes. For MMX registers, tie only 64bit modes.
18520
18521 2007-02-27  Mike Stump  <mrs@apple.com>
18522
18523         * config/darwin-crt3.c: Avoid compilation when compiling for a
18524         kext multilib.
18525
18526 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
18527
18528         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
18529         FIXED_INCLUDE_DIR.
18530         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
18531         for fixed headers and limits.h.
18532         (install-include-dir, install-headers-tar, install-headers-cpio,
18533         install-headers-cp, real-install-headers-tar,
18534         real-install-headers-cpio, real-install-headers-cp): Handle
18535         include-fixed as well as include.
18536         (install-mkheaders): Don't install files that go only in include
18537         not include-fixed.
18538         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
18539         from GCC_INCLUDE_DIR.
18540         * gcc.c (process_command): Remove special -BstageN/ handling.
18541         (do_spec_1): Add include-fixed directories.
18542
18543 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
18544
18545         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
18546         _smulsi3_highpart.
18547         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
18548         New functions.
18549         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
18550         patterns.
18551
18552 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
18553
18554         * c-common.c (get_priority): Add check for
18555         SUPPORTS_INIT_PRIORITY.
18556
18557 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
18558
18559         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
18560
18561         * config/bfin/bfin.c: Include "cfglayout.h".
18562         (MAX_LSETUP_DISTANCE): New macro.
18563         (struct loop_info): New members incoming, incoming_src and
18564         incoming_dest.  Delete member predecessor.
18565         (length_for_loop): New function.
18566         (bfin_optimize_loop): Handle more different loop structures.
18567         (bfin_discover_loop): Rework detection of predecessor blocks by
18568         examining incoming edges.
18569         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
18570         bfin_reorg_loops.
18571         (bfin_reorder_loops): New function.
18572         (bfin_reorg_loops): Use these three new functions.
18573
18574         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
18575         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
18576         (CONSTRAINT_LEN): Add entry for 'q'.
18577         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
18578         Add 'q' constraints.
18579         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
18580         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
18581
18582         * config/bfin/bfin.md (add_with_carry): New pattern.
18583         (s_or_u, su_optab, su_modifier): New code macros/attrs.
18584         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
18585         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
18586         support unsigned multiplies too.  Removed incorrect commutativity from
18587         operand 1 constraint where appropriate.
18588         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
18589         patterns.
18590         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
18591         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
18592         New patterns.
18593         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
18594         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
18595         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
18596         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
18597         usmulhisi_hh_huh): New patterns.
18598
18599         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
18600         lshifthi3): Fix output template to use half reg for operand 2.
18601
18602         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
18603         instead of R2.
18604
18605         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
18606
18607 2007-02-27  Andreas Schwab  <schwab@suse.de>
18608
18609         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
18610
18611 2007-02-27  Jan Hubicka  <jh@suse.cz>
18612
18613         * predict.c (last_basic_block_p): Remove.
18614         (tree_estimate_probability): Update return heuristic for commonized
18615         return blocks.
18616
18617 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
18618
18619         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
18620
18621 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
18622
18623         * doc/include/gcc-common.texi (versionsubtitle): New macro.
18624         * doc/cpp.texi: Standardize title page.
18625         * doc/cppinternals.texi: Likewise.
18626         * doc/gcc.texi: Standardize title page, remove version number
18627         from copyright page.
18628         * doc/gccint.texi: Likewise.
18629         * doc/install.texi: Standardize title page, add table of
18630         contents.
18631
18632 2007-02-26  Jan Hubicka  <jh@suse.cz>
18633
18634         * predict.def: Set outcomes according to more recent results.
18635         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
18636         Remove dead predictors.
18637         * predict.c (return_prediction): Fix pasto.
18638
18639 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
18640
18641         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
18642         change; avoid a memory leak when returning early.
18643
18644 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
18645
18646         * c-decl.c (static_ctors): Move to c-common.c.
18647         (static_dtors): Likewise.
18648         (finish_function): Use c_record_cdtor_fn.
18649         (build_cdtor): Move to c-common.c.
18650         (c_write_global_declarations): Use c_build_cdtor_fns.
18651         * c-common.h (static_ctors): Declare.
18652         (static_dtors): Likewise.
18653         (c_record_cdtor_fn): Likewise.
18654         (c_build_cdtor_fns): Likewise.
18655         * c-common.c (static_ctors): New variable.
18656         (static_dtors): Likewise.
18657         (c_record_cdtor_fn): New function.
18658         (build_cdtor): Move from c-decl.c
18659         (c_build_cdtor_fns): New function.
18660
18661         * output.h (assemble_addr_to_section): Declare.
18662         (get_cdtor_priority_section): Likewise.
18663         * varasm.c (assemble_addr_to_section): New function.
18664         (get_cdtor_priority_section): Likewise.
18665         (default_named_section_asm_out_destructor): Use them.
18666         (destor_dtor_section_asm_out_destructor): Likewise.
18667         (default_named_section_asm_out_constructor): Likewise.
18668         (default_ctor_section_asm_out_constructor): Likewise.
18669         * config.gcc (*-*-vxworks*): Include vxworks.o.
18670         * config/t-vxworks (vxworks.o): New target.
18671         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
18672         (TARGET_ASM_CONSTRUCTOR): Define.
18673         (TARGET_ASM_DESTRUCTOR): Likewise.
18674         (vxworks_asm_out_constructor): Declare.
18675         (vxworks_asm_out_destructor): Likewise.
18676
18677         * c-common.c (get_priority): Check that we have not just an
18678         INTEGER_CST, but an integer constant with integeral type.
18679
18680 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
18681
18682         PR tree-optimization/30938
18683         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
18684         use &dt[nargs-1] instead of &dt[nargs] in the call to
18685         vect_is_simple_use().
18686
18687 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
18688
18689         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
18690         from register elimination as PRE_MODIFY / POST_MODIFY increments.
18691         Do not attempt to handle MEM inside auto-inc expressions.
18692         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
18693         of a register modified by an auto-inc expression.  However, do handle
18694         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
18695         (elimination_effects): Prohibit elimination of a register modified
18696         by an auto-inc expression.  Disable register elimination rules whose
18697         target register is modified by an auto-inc expression with variable
18698         increment.
18699
18700 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
18701
18702         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
18703         off-by-one error.
18704         (array_at_struct_end_p): New function.
18705         (idx_infer_loop_bounds): Use it.
18706         (estimate_numbers_of_iterations_loop): Export.
18707         * predict.c (predict_loops): Use estimated_loop_iterations_int.
18708         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
18709         (tree_estimate_probability): Call record_loop_exits.
18710         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
18711         (estimated_loop_iterations, estimated_loop_iterations_int,
18712         estimated_loop_iterations_tree): New functions.
18713         (analyze_siv_subscript_cst_affine,
18714         compute_overlap_steps_for_affine_1_2,
18715         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
18716         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
18717         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
18718         (PRED_LOOP_ITERATIONS_GUESSED): New.
18719         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
18720         * cfgloop.h (estimate_numbers_of_iterations_loop,
18721         estimated_loop_iterations_int): Declare.
18722
18723 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
18724
18725         * doc/extend.texi: Document optional priority argument to
18726         constructors and destructors.
18727         * tree.c (init_priority_for_decl): Adjust GTY markers.
18728         (init_ttree): Use priority-info hash functions for
18729         init_priority_for_decl.
18730         (tree_map_eq): Rename to ...
18731         (tree_map_base_eq): ... this.
18732         (tree_map_marked_p): Rename to ...
18733         (tree_map_base_marked_p): ... this.
18734         (tree_map_base_hash): New function.
18735         (decl_init_priority_lookup): Rework.
18736         (decl_fini_priority_lookup): New function.
18737         (decl_priority_info): New function.
18738         (decl_init_priority_insert): Use it.
18739         (decl_fini_priority_insert): Likewise.
18740         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
18741         hierarchy.
18742         (decl_restrict_base_insert): Likewise.
18743         (decl_debug_expr_insert): Likewise.
18744         (decl_value_expr_lookup): Likewise.
18745         (decl_value_expr_insert): Likewise.
18746         * tree.h (priority_type): New type.
18747         (decl_init_priority_lookup): Use priority_type.
18748         (decl_fini_priority_lookup): New function.
18749         (decl_init_priority_insert): Use priority_type.
18750         (decl_fini_priority_insert): New function.
18751         (DECL_HAS_INIT_PRIORITY): Tweak comments.
18752         (DECL_INIT_PRIORITY): Likewise.
18753         (SET_DECL_INIT_PRIORITY): Add comment.
18754         (DECL_FINI_PRIORITY): New macro.
18755         (SET_DECL_FINI_PRIORITY): Likewise.
18756         (DEFAULT_INIT_PRIORITY): Document.
18757         (MAX_INIT_PRIORITY): Likewise.
18758         (MAX_RESERVED_INIT_PRIORITY): Likewise.
18759         (tree_map_base): New type.
18760         (tree_map_base_eq): New function.
18761         (tree_map_base_hash): Likewise.
18762         (tree_map_base_marked_p): Likewise.
18763         (tree_map): Inherit from tree_map_base.
18764         (tree_map_eq): Make it a macro.
18765         (tree_map_marked_p): Likewise.
18766         (tree_int_map): Inherit from tree_map_base.
18767         (tree_int_map_eq): Make it a macro.
18768         (tree_int_map_hash): Likewise.
18769         (tree_int_map_marked_p): Likewise.
18770         (tree_priority_map): New type.
18771         (tree_priority_map_eq): New macro.
18772         (tree_priority_map_hash): Likewise.
18773         (tree_priority_map_marked_p): Likewise.
18774         * varasm.c (emults_decl): Adjust for refactoring of tree_map
18775         hierarchy.
18776         (emutls_common_1): Likewise.
18777         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
18778         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
18779         of tree_map hierarchy.
18780         * tree-cfg.c (move_stmt_r): Likewise.
18781         (new_label_mapper): Likewise.
18782         * c-tree.h (c_expand_body): Move to ...
18783         * c-common.h (c_expand_body): ... here.
18784         * c-decl.c (c_expand_body): Move to ...
18785         * c-common.c (c_expand_body): ... here.
18786         (c_common_attribute_table): Allow 1 argument for the constructor
18787         and destructor attributes.
18788         (get_priority): New function.
18789         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
18790         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
18791
18792 2007-02-24  Jan Hubicka  <jh@suse.cz>
18793
18794         PR middle-end/30509
18795         * tree-inline.c (copy_bb): Produce exact copy of EH info when
18796         copying for inlining.
18797
18798 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
18799             Jan Hubicka  <jh@suse.cz>
18800
18801         PR target/30778
18802         * i386.c (counter_mode): New function.
18803         (expand_set_or_movmem_via_loop): Use it.
18804         (expand_movmem_epilogue): Likewise; fix pasto.
18805         (ix86_expand_movmem): Do emit guard even for constant counts.
18806         (ix86_expand_setmem): Likewise.
18807
18808 2007-02-25  Nick Clifton  <nickc@redhat.com>
18809
18810         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
18811         (JUMP_TABLES_IN_TEXT_SECTION): Define.
18812
18813 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
18814
18815         PR target/30770
18816         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
18817         count argument with 0x10, not with 0x16.
18818         (expand_setmem_epilogue): Ditto.
18819
18820 2007-02-24  Mike Stump  <mrs@apple.com>
18821
18822         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
18823         symbols.
18824
18825 2007-02-24  Richard Guenther  <rguenther@suse.de>
18826
18827         PR middle-end/30951
18828         * fold-const.c (fold_binary): Fold x +- CST op x for
18829         EQ_EXPR and NE_EXPR.
18830
18831 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18832
18833         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
18834
18835 2007-02-24  Jan Hubicka  <jh@suse.cz>
18836
18837         * cgraphunit.c (decide_is_function_needed): Honor
18838         -fkeep-inline-functions.
18839
18840 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18841
18842         * builtins.c (fold_builtin_modf): New.
18843         (fold_builtin_2): Use it.
18844
18845 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
18846
18847         * loop-iv.c (implies_p): Detect additional cases where A implies B.
18848         (determine_max_iter): Take additional LOOP arg; all callers changed.
18849         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
18850         one using simplifications.
18851         (simplify_using_initial_values): Return if the expression becomes
18852         invalid due to altered regs.
18853
18854 2007-02-23  DJ Delorie  <dj@redhat.com>
18855
18856         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
18857
18858 2007-02-23  Mike Stump  <mrs@apple.com>
18859
18860         * tlink.c (scan_linker_output): Parse linker messages from
18861         darwin9's linker better.
18862
18863 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
18864
18865         PR debug/29614
18866         * varpool.c (varpool_assemble_pending_decls):  Set
18867         varpool_last_needed_node to null.
18868
18869 2007-02-23  DJ Delorie  <dj@redhat.com>
18870
18871         * config/i386/i386.c (ix86_data_alignment): Don't specify an
18872         alignment bigger than the object file can handle.
18873
18874 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
18875
18876         PR target/30825
18877         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
18878         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
18879         (*movsf_1): Penalize MMX moves.
18880
18881 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
18882
18883         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
18884         2^32-1 or more times unless flag_unsafe_loop_optimizations.
18885
18886         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
18887
18888 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18889
18890         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
18891         (fold_builtin_1): Use them.
18892         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
18893         BUILT_IN_SIGNIFICAND.
18894
18895 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
18896
18897         * config/i386/i386.c (bdesc_1arg): Initialize
18898         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
18899         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
18900         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
18901         and IX86_BUILTIN_MOVSLDUP.
18902
18903 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
18904
18905         PR rtl-optimization/30841
18906         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
18907
18908 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18909
18910         * builtins.c (fold_builtin_frexp): New.
18911         (fold_builtin_2): Use it.
18912
18913 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
18914
18915         * doc/invoke.texi (Spec Files): Document getenv spec function.
18916
18917         * gcc.c (getenv_spec_function): New function.
18918         (static_spec_functions): Add it.
18919         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
18920         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
18921         header files.
18922
18923 2007-02-22  Michael Matz  <matz@suse.de
18924
18925         PR c++/29433
18926         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
18927         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
18928
18929 2007-02-22  Ian Lance Taylor  <iant@google.com>
18930
18931         PR debug/30898
18932         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
18933         (mem_loc_descriptor): Call it.
18934
18935 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
18936             Ira Rosen  <irar@il.ibm.com>
18937
18938         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
18939
18940 2007-02-22  Ira Rosen  <irar@il.ibm.com>
18941
18942         PR tree-optimization/30843
18943         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
18944         stores only after all the group is vectorized.
18945
18946 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
18947
18948         PR tree-optimization/30858
18949         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
18950         in the reduction cycle have a single use in the loop.
18951         * tree-vectorizer.h (relevant): Add documentation.
18952
18953 2007-02-20  Mike Stump  <mrs@apple.com>
18954
18955         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
18956         * configure: Regenerate.
18957
18958 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
18959
18960         Change the defaults of some parameters and options.
18961         * config/spu/spu-protos.h (spu_optimization_options): Declare.
18962         * config/spu/spu.c (spu_optimization_options): Add.
18963         (spu_override_options): Change params in spu_optimization_options.
18964         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
18965
18966         Register 127 is only 16 byte aligned when used as a frame pointer.
18967         * config/spu/spu-protos.h (spu_init_expanders): Declare.
18968         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
18969         HARD_FRAME_POINTER_REGNUM.
18970         (spu_legitimate_address):  Use regno_aligned_for_reload.
18971         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
18972         aligned when frame_pointer_needed is true.
18973         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
18974         to 8 bits.
18975         * config/spu/spu.h (INIT_EXPANDERS): Define.
18976
18977         Make sure shift and rotate instructions have valid immediate operands.
18978         * config/spu/predicates.md (spu_shift_operand): Remove.
18979         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
18980         * config/spu/constraints.md (W, O): Extend range.
18981         * config/spu/spu.md (umask, nmask): Define.
18982         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
18983         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
18984         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
18985         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
18986         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
18987         (lshr<mode>3_reg):  Fix rtl description.
18988
18989         Make sure mulhisi immediate operands are valid.
18990         * config/spu/predicates.md (imm_K_operand): Add.
18991         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
18992
18993         Generate constants using fsmbi and andi.
18994         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
18995         (print_operand, spu_split_immediate, classify_immediate,
18996         fsmbi_const_p): Handle IC_FSMBI2.
18997
18998         Correctly handle a CONST_VECTOR containing symbols.
18999         * config/spu/spu.c (print_operand): Handle HIGH correctly.
19000         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
19001         (immediate_load_p): Allow symbols that use 2 instructions to create.
19002         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
19003         with symbols when flag_pic is set.
19004         (const_vector_immediate_p): New.
19005         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
19006         accept a CONST_VECTOR with symbols.
19007         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
19008         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
19009         correctly.
19010         * config/spu/spu.md (high, low): Delete.
19011         (low_<mode>): Define.
19012
19013         Remove INTRmode and INTR_REGNUM, which didn't work.
19014         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
19015         of INTR_REGNUM.
19016         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
19017         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
19018         peephole2 pattern): Don't use INTR or 131.
19019         (movintrcc): Delete.
19020         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
19021         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
19022         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
19023         (UNSPEC_SET_INTR): Add.
19024         * config/spu/spu-modes.def (INTR): Remove.
19025
19026         More accurate warnings about run-time relocations.
19027         * config/spu/spu.c (reloc_diagnostic): Test in_section.
19028
19029         Correctly warn about immediate arguments to specific intrinsics.
19030         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
19031         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
19032         the instruction predicate.
19033
19034         Fix tree check errors with latest update.
19035         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
19036         CALL_EXPR_ARG.
19037         (spu_expand_builtin): Use CALL_EXPR_FN.
19038
19039         Add missing specific intrinsics.
19040         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
19041         si_bislede.
19042         * config/spu/spu_internals.h: Ditto.
19043
19044         Fix incorrect operand modifiers.
19045         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
19046         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
19047
19048         Optimize one case of zero_extend of a vec_select.
19049         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
19050
19051         Accept any immediate for hbr.
19052         * config/spu/spu.md (hbr):  Change s constraints to i.
19053
19054 2007-02-21  Paul Brook  <paul@codesourcery.com>
19055
19056         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
19057         condexec_count when skipping USE and CLOBBER.
19058
19059 2007-02-21  Nick Clifton  <nickc@redhat.com>
19060
19061         * common.opt (Warray-bounds): Add Warning attribute.
19062         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
19063         Likewise.
19064         (fsized-zeroes): Add Optimization attribute.
19065         (fsplit-wide-types, ftree-scev-cprop): Likewise.
19066         * c.opt (Wc++0x-compat): Add Warning attribute.
19067
19068 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
19069
19070         PR middle-end/30761
19071         * reload1.c (eliminate_regs_in_insn): In the single_set special
19072         case, attempt to re-recognize the insn before falling back to
19073         having reload fix it up.
19074
19075 2007-02-20  Eric Christopher  <echristo@gmail.com>
19076
19077         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
19078         Rewrite accordingly.
19079         (frv_read_iacc_argument): Ditto.
19080         (frv_expand_set_builtin): Take a call instead of arglist, update for
19081         above changes.
19082         (frv_expand_unop_builtin): Ditto.
19083         (frv_expand_binop_builtin): Ditto.
19084         (frv_expand_cut_builtin): Ditto.
19085         (frv_expand_binopimm_builtin): Ditto.
19086         (frv_expand_voidbinop_builtin): Ditto.
19087         (frv_expand_int_void2arg): Ditto.
19088         (frv_expand_prefetches): Ditto.
19089         (frv_expand_voidtriop_builtin): Ditto.
19090         (frv_expand_voidaccop_builtin): Ditto.
19091         (frv_expand_load_builtin): Ditto.
19092         (frv_expand_store_builtin): Ditto.
19093         (frv_expand_mdpackh_builtin): Ditto.
19094         (frv_expand_mclracc_builtin): Ditto.
19095         (frv_expand_mrdacc_builtin): Ditto.
19096         (frv_expand_mwtacc_builtin): Ditto.
19097         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
19098         calls for above.
19099
19100 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
19101
19102         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
19103         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
19104         cmpb instruction.
19105         (HAVE_GAS_DFP): Check for assembler support of decimal floating
19106         point instructions.
19107         * configure: Regenerate.
19108         * config.in: Regenerate.
19109         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
19110         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
19111         masks to power6 and power6x and to POWERPC_MASKS.
19112         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
19113         _ARCH_PWR6.
19114         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
19115         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
19116         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
19117         Access PROTOTYPE as variable, not mask.
19118
19119 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
19120
19121         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
19122         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
19123         * combine.c (adjust_for_new_dest): Use it.
19124         * postreload.c (reload_combine): Likewise.
19125
19126 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
19127
19128         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
19129         notes on an insn with multiple sets, even if single_set returns
19130         non-NULL for that insn.
19131
19132 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19133
19134         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
19135         scalbn and scalbln.
19136
19137 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
19138
19139         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
19140         if user didn't pass it.
19141         * config/i386/darwin.h (CC1_SPEC): Likewise.
19142         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
19143         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
19144         -mmacosx-version-min.
19145
19146 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19147             Uros Bizjak  <ubizjak@gmail.com>
19148
19149         * optabs.h (enum optab_index): Add new OTI_scalb.
19150         (scalb_optab): Define corresponding macro.
19151         * optabs.c (init_optabs): Initialize scalb_optab.
19152         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
19153         patterns.
19154         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
19155         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
19156         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
19157         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
19158         flag_unsafe_math_optimizations is set.
19159
19160         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
19161         to implement scalbf, scalb and scalbl built-ins as inline x87
19162         intrinsics.
19163
19164 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19165             DJ Delorie <dj@redhat.com>
19166
19167         PR other/30824
19168         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
19169         (diagnostic_report_diagnostic): ... here, and turn them into real
19170         errors. If warnings are inhibited, no need to do anything.
19171
19172 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
19173
19174         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
19175         better code generation.
19176
19177 2007-02-20  Ben Elliston  <bje@au.ibm.com>
19178
19179         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
19180
19181 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
19182
19183         * config/alpha/alpha.c, config/alpha/alpha.md,
19184         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
19185         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
19186         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
19187         config/arm/lib1funcs.asm: Follow spelling conventions.
19188
19189         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
19190         config/fr30/fr30.md, config/i386/i386.h,
19191         config/iq2000/iq2000.h, config/iq2000/predicates.md,
19192         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
19193         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
19194         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
19195         config/rs6000/altivec.md, config/rs6000/rs6000.c,
19196         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
19197         config/sparc/sparc.c, config/sparc/sparc.h,
19198         config/sparc/sparc.md, config/spu/constraints.md,
19199         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
19200         conventions.
19201
19202 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
19203
19204         PR target/29943
19205         * varasm.c (use_blocks_for_decl_p): Return false for decls with
19206         alias attribute.
19207
19208 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
19209
19210         * doc/invoke.texi (-ftree-lrs): Remove.
19211
19212 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
19213
19214         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
19215         NULL.
19216
19217 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
19218
19219         * config/ia64/ia64.c (ia64_expand_builtin): Use the
19220         new CALL_EXPR_FN macro for retrieving the function
19221         declaration of the input expression.
19222
19223 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19224
19225         * c.opt (Waddress): New.
19226         * common.opt (Walways-true): Delete.
19227         (Wstring-literal-comparison): Delete.
19228         * doc/invoke.texi (Warning Options): Delete -Walways-true and
19229         -Wstring-literal-comparison. Add -Waddress.
19230         (Waddress): New.
19231         (Walways-true): Delete.
19232         (Wstring-literal-comparison): Delete.
19233         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
19234         consistently instead of -Walways-true in example.
19235         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
19236         * c-typeck.c (parser_build_binary_op): Replace
19237         -Wstring-literal-comparison and -Walways-true with -Waddress.
19238         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
19239         with -Waddress.
19240
19241 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
19242
19243         * tree-cfg.c (dump_function_to_file): Be prepared for functions
19244         without DECL_STRUCT_FUNCTION initialized.
19245
19246 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
19247
19248         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
19249         due to calls to functions taking pointers as parameters.
19250
19251 2007-02-19  Richard Henderson  <rth@redhat.com>
19252
19253         PR debug/29558
19254         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
19255         in memory.
19256
19257 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
19258
19259         * config/s390/s390.c (s390_call_saved_register_used,
19260         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
19261         accessed to the new scheme.
19262
19263 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
19264
19265         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
19266         (cris_print_index, cris_print_operand, cris_print_operand_address)
19267         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
19268         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
19269         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
19270         GET_CODE () == xxx.
19271         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
19272         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
19273         GO_IF_LEGITIMATE_ADDRESS): Ditto.
19274         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
19275         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
19276         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
19277         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
19278         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
19279         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
19280         (uminsi3, call, call_value): Ditto.
19281         (define_split: indir_to_reg_split, unnamed): Ditto.
19282
19283 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
19284
19285         PR tree-optimization/30975
19286         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
19287         wrong assert.
19288
19289 2007-02-18  Eric Christopher  <echristo@gmail.com>
19290
19291         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
19292         Remove use of arglist.
19293         (mips_expand_builtin): Remove use of arglist, pass in expr.
19294         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
19295         (mips_expand_builtin_movtf): Ditto.
19296         (mips_expand_builtin_compare): Ditto.
19297
19298 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
19299
19300         * tree-sra.c (sra_build_assignment): Replace assertion
19301         checking with a comment explaining why it can't be done.
19302
19303 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
19304
19305         PR middle-end/30833
19306         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
19307         during CALL_EXPR representation conversion.
19308         * tree-ssa-propagate.c (set_rhs): Likewise.
19309
19310 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
19311
19312         * tree-sra.c (sra_build_assignment): Disable assertion checking
19313         for now.
19314
19315 2007-02-18  Roger Sayle  <roger@eyesopen.com>
19316
19317         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
19318         instead of calling build2 with a GIMPLE_MODIFY_STMT.
19319         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
19320         Likewise.
19321         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
19322         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
19323         gimplify_init_ctor_eval_range, gimple_push_cleanup,
19324         gimplify_omp_for, gimplify_omp_atomic_pipeline,
19325         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
19326         force_gimple_operand): Likewise.
19327         * ipa-cp.c (constant_val_insert): Likewise.
19328         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
19329         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
19330         perfect_nestify): Likewise.
19331         * langhooks.c (lhd_omp_assignment): Likewise.
19332         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
19333         lower_copyprivate_clauses, lower_send_clauses,
19334         lower_send_shared_vars, expand_parallel_call,
19335         expand_omp_for_generic, expand_omp_for_static_nochunk,
19336         expand_omp_for_static_chunk, expand_omp_sections,
19337         lower_omp_single_copy, lower_omp_for_lastprivate,
19338         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
19339         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
19340         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
19341         Likewise.
19342
19343 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
19344
19345         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
19346         config/sh/sh.md: Follow spelling conventions.
19347
19348         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
19349         config/frv/predicates.md: Follow spelling conventions.
19350
19351         * config/m68k/linux-unwind.h: Fix a comment typo.
19352         * target.h: Follow spelling conventions.
19353
19354 2007-02-18  Roger Sayle  <roger@eyesopen.com>
19355
19356         PR rtl-optimization/28173
19357         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
19358         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
19359         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
19360         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
19361         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
19362
19363 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19364
19365         * builtins.c (fold_builtin_load_exponent): New.
19366         (fold_builtin_2): Use it.
19367
19368 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
19369
19370         PR rtl-optimization/30773
19371         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
19372         if we fail to attach a REG_EQUIV note.
19373
19374 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
19375             Roger Sayle  <roger@eyesopen.com>
19376
19377         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
19378
19379 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
19380
19381         * calls.c (initialize_argument_information): Pass original EXP
19382         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
19383         code to split complex arguments here, as part of initializing the
19384         ARGS array.
19385         (expand_call): Remove code that builds a list of arguments and
19386         inserts implicit arguments into it.  Instead, just count how many
19387         implicit arguments there will be so we can determine the size of
19388         the ARGS array, and let initialize_argument_information do the work.
19389         (split_complex_values): Delete unused function.
19390
19391 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
19392
19393         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
19394
19395 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
19396
19397         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
19398         for arg pointer based indexed addressing.
19399
19400 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
19401
19402         * config/ia64/ia64.h, config/ia64/ia64.md,
19403         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
19404         spelling conventions.
19405
19406 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
19407
19408         * config/m68k/m68k.c (split_di): New.
19409         * config/m68k/m68k-protos.h: Declare split_di.
19410         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
19411           Improve predicate handling and split constant shifts.
19412
19413 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
19414
19415         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
19416         parameter for register bitfield operations, general predicates
19417         cleanup
19418
19419 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
19420
19421         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
19422         * config/m68k/linux-unwind.h: New file.
19423
19424 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
19425
19426         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
19427         config/i386/athlon.md, config/ia64/ia64.md,
19428         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
19429         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
19430         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
19431         tree-ssa-loop-niter.c, tree-vect-analyze.c,
19432         tree-vect-transform.c: Fix comment typos.
19433
19434 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
19435
19436         * sched-deps.c (find_insn_list): Remove.
19437         * sched-int.h: Remove the prototype for find_insn_list.
19438
19439 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
19440
19441         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
19442         to linker.
19443         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
19444         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
19445         darwin_rs6000_override_options.
19446         (C_COMMON_OVERRIDE_OPTIONS): Expect
19447         darwin_macosx_version_min to be non-NULL always.
19448         (TARGET_C99_FUNCTIONS): Likewise.
19449         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
19450         (DARWIN_MINVERSION_SPEC): New.
19451         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
19452         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
19453         to cc1*.
19454         (DARWIN_MINVERSION_SPEC): New.
19455         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
19456         value.
19457         * config/darwin-c.c (darwin_cpp_builtins): Expect
19458         darwin_macosx_version_min to be non-NULL always.
19459
19460         * config/rs6000/rs6000.c: Clean up trailing whitespace.
19461
19462 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
19463
19464         * config/i386/i386.h (x86_use_xchgb): New.
19465         (TARGET_USE_XCHGB): New macro.
19466         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
19467         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
19468         Split after reload into bswaphi for shifts of 8.
19469         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
19470         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
19471         or when optimizing for size.
19472
19473 2007-02-16  Richard Guenther  <rguenther@suse.de>
19474             Christian Bruel  <christian.bruel@st.com>
19475
19476         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
19477         DECLs but prefer SSA_NAMEs over DECLs.
19478
19479 2007-02-16  Richard Guenther  <rguenther@suse.de>
19480
19481         * tree-flow-inline.h (single_imm_use_p): Remove.
19482         (zero_imm_uses_p): Likewise.
19483         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
19484         instead of single_imm_use_p.
19485         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
19486         zero_imm_uses_p.
19487
19488 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19489
19490         PR other/27843
19491         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
19492         nested double- and backquotes.
19493
19494 2007-02-15  Roger Sayle  <roger@eyesopen.com>
19495
19496         PR middle-end/30391
19497         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
19498         should be unreachable.
19499         (build2_stat): Allow construction of MODIFY_EXPR at any time.
19500         For the time being redirect GIMPLE_MODIFY_STMT to the new
19501         (renamed) build_gimple_modify_stmt_stat.
19502         (build2_gimple_stat): Rename to...
19503         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
19504         Always build a GIMPLE_MODIFY_STMT node.
19505         * tree.h (build2_gimple, build2_gimple_stat): Delete.
19506         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
19507         declarations.
19508
19509         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
19510         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
19511         * tree-complex.c (set_component_ssa_name, expand_complex_move,
19512         expand_complex_div_wide): Likewise.
19513         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
19514         * tree-ssa-loop-im.c (schedule_sm): Likewise.
19515         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
19516         * tree-ssa-loop-manip.c (create_iv): Likewise.
19517         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
19518         abs_replacement): Likewise.
19519         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
19520         realify_fake_stores): Likewise.
19521
19522         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
19523         node rather than a GIMPLE_MODIFY_STMT node.
19524         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
19525         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
19526         Likewise.
19527         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
19528         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
19529         GIMPLE_MODIFY_STMT.
19530
19531 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19532
19533         PR middle-end/30433
19534         * fold-const.c (fold_comparison): Add back the
19535         folding of constant complex comparisions.
19536
19537 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19538
19539         PR middle-end/30729
19540         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
19541         effects unknown to this function, return early.
19542
19543 2007-02-15  Ian Lance Taylor  <iant@google.com>
19544
19545         * lower-subreg.c (move_eh_region_note): New static function.
19546         (resolve_simple_move): Call it.
19547         (decompose_multiword_subregs): Track blocks for which we resolve a
19548         simple move which is also a control flow insn.  Pass them to
19549         find_many_sub_basic_blocks.
19550         (pass_lower_subreg): Add TODO_verify_flow.
19551         (pass_lower_subreg2): Likewise.
19552
19553 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
19554             Brooks Moses  <brooks.moses@codesourcery.com>
19555             Lee Millward  <lee.millward@codesourcery.com>
19556
19557         * tree.h (enum tree_code_class): Add tcc_vl_exp.
19558         (VL_EXP_CLASS_P): New.
19559         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
19560         TREE_CODE_LENGTH.
19561         (TREE_OPERAND_CHECK_CODE): Likewise.
19562         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
19563         (TREE_RTL_OPERAND_CHECK): Likewise.
19564         (tree_operand_check_failed): Make second parameter the whole tree
19565         instead of its code.  Fixed callers.
19566         (VL_EXP_CHECK): New.
19567         (TREE_OPERAND_LENGTH): New.
19568         (VL_EXP_OPERAND_LENGTH): New.
19569         (CALL_EXPR_FN): New.
19570         (CALL_EXPR_STATIC_CHAIN): New.
19571         (CALL_EXPR_ARGS): New.
19572         (CALL_EXPR_ARG): New.
19573         (call_expr_nargs): New.
19574         (CALL_EXPR_ARGP): New.
19575         (build_nt_call_list): Declare.
19576         (build_vl_exp_stat): Declare.
19577         (build_vl_exp): New.
19578         (build_call_list): Declare.
19579         (build_call_nary): Declare.
19580         (build_call_valist): Declare.
19581         (build_call_array): Declare.
19582         (call_expr_arg): Declare.
19583         (call_expr_argp): Declare.
19584         (call_expr_arglist): Declare.
19585         (fold_build_call_list): Declare.
19586         (fold_build_call_list_initializer): Declare.
19587         (fold_call_expr): Declare to replace fold_builtin.
19588         (fold_builtin_fputs): Update to agree with modified definition.
19589         (fold_builtin_strcpy): Likewise.
19590         (fold_builtin_strncpy): Likewise.
19591         (fold_builtin_memory_chk): Likewise.
19592         (fold_builtin_stxcpy_chk): Likewise.
19593         (fold_builtin_strncpy_chk): Likewise.
19594         (fold_builtin_next_arg): Likewise.
19595         (fold_build_call_expr): Declare.
19596         (fold_builtin_call_list): Declare.
19597         (fold_builtin_call_valist): Declare.
19598         (build_call_expr): Declare.
19599         (validate_arglist): Update to agree with modified definition.
19600         (tree_operand_length): New.
19601         (call_expr_arg_iterator): New.
19602         (init_call_expr_arg_iterator): New.
19603         (next_call_expr_arg): New.
19604         (first_call_expr_arg): New.
19605         (more_call_expr_args_p): New.
19606         (FOR_EACH_CALL_EXPR_ARG): New.
19607
19608         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
19609         and tcc_gimple_stmt.
19610         (tree_code_size): Update documentation.  Use sizeof (tree) rather
19611         than sizeof (char *).
19612         (tree_size): Likewise.  Add case for tcc_vl_exp.
19613         (tree_node_structure): Add case for tcc_vl_exp.
19614         (contains_placeholder_p): Likewise.
19615         (substitute_in_expr): Likewise.
19616         (substitute_placeholder_in_expr): Likewise.
19617         (stabilize_reference_1): Likewise.
19618         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
19619         to diagnose breakage of this interface for constructing CALL_EXPRs.
19620         (build_nt): Add similar assertion here.
19621         (build_nt_call_list): New.
19622         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
19623         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
19624         TREE_CODE_LENGTH.
19625         (get_callee_fndecl): Use new CALL_EXPR accessors.
19626         (tree_operand_check_failed): Change parameters to pass entire node
19627         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
19628         (process_call_operands): New.
19629         (build_vl_exp_stat): New.
19630         (build_call_list): New.
19631         (build_call_nary): New.
19632         (build_call_valist): New.
19633         (build_call_array): New.
19634         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19635         (call_expr_arglist): New.
19636
19637         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
19638         tcc_vl_exp instead of a fixed-size tcc_expression.
19639
19640         * doc/c-tree.texi (CALL_EXPR): Document new representation and
19641         accessors for CALL_EXPRs.
19642         (AGGR_INIT_EXPR): Likewise.
19643
19644 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
19645             Brooks Moses  <brooks.moses@codesourcery.com>
19646             Lee Millward  <lee.millward@codesourcery.com>
19647
19648         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
19649         (expand_builtin_nonlocal_goto): Change parameter to be entire
19650         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
19651         (expand_builtin_prefetch): Likewise.
19652         (expand_builtin_classify_type): Likewise.
19653         (mathfn_built_in): Return NULL_TREE instead of 0.
19654         (expand_errno_check): Use new CALL_EXPR accessors.
19655         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
19656         Return NULL_RTX instead of 0.
19657         (expand_builtin_mathfn_2): Likewise.
19658         (expand_builtin_mathfn_3): Likewise.
19659         (expand_builtin_interclass_mathfn): Likewise.
19660         (expand_builtin_sincos): Likewise.
19661         (expand_builtin_cexpi): Likewise.
19662         (expand_builtin_int_roundingfn): Likewise.
19663         (expand_builtin_int_roundingfn_2): Likewise.
19664         (expand_builtin_pow): Likewise.
19665         (expand_builtin_powi): Likewise.
19666         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
19667         of arglist, fixing callers appropriately.  Use new CALL_EXPR
19668         accessors and constructors.  Return NULL_RTX instead of 0.
19669         (expand_builtin_strstr): Likewise.
19670         (expand_builtin_strchr): Likewise.
19671         (expand_builtin_strrchr): Likewise.
19672         (expand_builtin_strpbrk): Likewise.
19673         (expand_builtin_memcpy): Likewise.
19674         (expand_builtin_mempcpy): Likewise.
19675         (expand_builtin_mempcpy_args): New.
19676         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
19677         (expand_builtin_memmove_args): New.
19678         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
19679         (expand_movstr): Likewise.
19680         (expand_builtin_strcpy): Likewise.
19681         (expand_builtin_strcpy_args): New.
19682         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
19683         (expand_builtin_strncpy): Likewise.
19684         (expand_builtin_memset): Likewise.
19685         (expand_builtin_memset_args): New.
19686         (expand_builtin_bzero): Similarly to expand_builtin_memset.
19687         (expand_builtin_memcmp): Likewise.
19688         (expand_builtin_strcmp): Likewise.
19689         (expand_builtin_strncmp): Likewise.
19690         (expand_builtin_strcat): Likewise.
19691         (expand_builtin_strncat): Likewise.
19692         (expand_builtin_strspn): Likewise.
19693         (expand_builtin_strcspn): Likewise.
19694         (expand_builtin_args_info): Likewise.
19695         (expand_builtin_va_start): Likewise.
19696         (gimplify_va_arg_expr): Likewise.
19697         (expand_builtin_va_end): Likewise.
19698         (expand_builtin_va_copy): Likewise.
19699         (expand_builtin_frame_address): Likewise.
19700         (expand_builtin_alloca): Likewise.
19701         (expand_builtin_bswap): Likewise.
19702         (expand_builtin_unop): Likewise.
19703         (expand_builtin_fputs): Likewise.
19704         (expand_builtin_expect): Likewise.
19705         (expand_builtin_fabs): Likewise.
19706         (expand_builtin_copysign): Likewise.
19707         (expand_builtin_printf): Likewise.
19708         (expand_builtin_fprintf): Likewise.
19709         (expand_builtin_sprintf): Likewise.
19710         (expand_builtin_init_trampoline): Likewise.
19711         (expand_builtin_signbit): Likewise.
19712         (expand_builtin_fork_or_exec): Likewise.
19713         (expand_builtin_sync_operation): Likewise.
19714         (expand_builtin_compare_and_swap): Likewise.
19715         (expand_builtin_lock_test_and_set): Likewise.
19716         (expand_builtin_lock_release): Likewise.
19717         (expand_builtin): Likewise.
19718         (builtin_mathfn_code): Likewise.
19719
19720         (fold_builtin_constant_p): Pass call arguments individually instead
19721         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
19722         accessors and constructors.  Return NULL_TREE instead of 0.
19723         (fold_builtin_expect): Likewise.
19724         (fold_builtin_classify_type): Likewise.
19725         (fold_builtin_strlen): Likewise.
19726         (fold_builtin_nan): Likewise.
19727         (integer_valued_real_p): Likewise.
19728         (fold_trunc_transparent_mathfn): Likewise.
19729         (fold_fixed_mathfn): Likewise.
19730         (fold_builtin_cabs): Likewise.
19731         (fold_builtin_sqrt): Likewise.
19732         (fold_builtin_cbrt): Likewise.
19733         (fold_builtin_cos): Likewise.
19734         (fold_builtin_cosh): Likewise.
19735         (fold_builtin_tan): Likewise.
19736         (fold_builtin_sincos): Likewise.
19737         (fold_builtin_cexp): Likewise.
19738         (fold_builtin_trunc): Likewise.
19739         (fold_builtin_floor): Likewise.
19740         (fold_builtin_ceil): Likewise.
19741         (fold_builtin_round): Likewise.
19742         (fold_builtin_int_roundingfn): Likewise.
19743         (fold_builtin_bitop): Likewise.
19744         (fold_builtin_bswap): Likewise.
19745         (fold_builtin_logarithm): Likewise.
19746         (fold_builtin_hypot): Likewise.
19747         (fold_builtin_pow): Likewise.
19748         (fold_builtin_powi): Likewise.
19749         (fold_builtin_exponent): Likewise.
19750         (fold_builtin_memset): Likewise.
19751         (fold_builtin_bzero): Likewise.
19752         (fold_builtin_memory_op): Likewise.
19753         (fold_builtin_bcopy): Deleted; call site changed to invoke
19754         fold_builtin_memory_op directly.
19755         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
19756         (fold_builtin_strncpy): Likewise.
19757         (fold_builtin_memcmp): Likewise.
19758         (fold_builtin_strcmp): Likewise.
19759         (fold_builtin_strncmp): Likewise.
19760         (fold_builtin_signbit): Likewise.
19761         (fold_builtin_copysign): Likewise.
19762         (fold_builtin_isascii): Likewise.
19763         (fold_builtin_toascii): Likewise.
19764         (fold_builtin_isdigit): Likewise.
19765         (fold_builtin_fabs): Likewise.
19766         (fold_builtin_abs): Likewise.
19767         (fold_builtin_fmin_fmax): Likewise.
19768         (fold_builtin_carg): Likewise.
19769         (fold_builtin_classify): Likewise.
19770         (fold_builtin_unordered_cmp): Likewise.
19771
19772         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
19773         New functions split out from fold_builtin_1.
19774         (fold_builtin_n): New.
19775         (fold_builtin_varargs): New.
19776         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
19777         instead.
19778         (fold_call_expr): New.
19779         (build_function_call_expr): Rewrite to use new helper function.
19780         (fold_builtin_call_list): New.
19781         (build_call_expr): New.
19782         (fold_builtin_call_valist): New.
19783         (rewrite_call_expr): New.
19784         (validate_arg): New.
19785         (validate_arglist): Change parameter to be entire CALL_EXPR instead
19786         of an arglist.  Change return type to bool.  Use new CALL_EXPR
19787         accessors.
19788
19789         (fold_builtin_strstr):  Pass call arguments individually instead
19790         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
19791         accessors and constructors.  Return NULL_TREE instead of 0.
19792         (fold_builtin_strchr): Likewise.
19793         (fold_builtin_strrchr): Likewise.
19794         (fold_builtin_strpbrk): Likewise.
19795         (fold_builtin_strcat): Likewise.
19796         (fold_builtin_strncat): Likewise.
19797         (fold_builtin_strspn): Likewise.
19798         (fold_builtin_strcspn): Likewise.
19799         (fold_builtin_fputs): Likewise.
19800         (fold_builtin_next_arg): Likewise.
19801         (fold_builtin_sprintf): Likewise.
19802
19803         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
19804         NULL_RTX instead of 0.
19805         (expand_builtin_memory_chk): Likewise.
19806         (maybe_emit_chk_warning): Likewise.
19807         (maybe_emit_sprintf_chk_warning): Likewise.
19808
19809         (fold_builtin_object_size): Pass call arguments individually instead
19810         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
19811         accessors and constructors.  Return NULL_TREE instead of 0.
19812         (fold_builtin_memory_chk): Likewise.
19813         (fold_builtin_stxcpy_chk): Likewise.
19814         (fold_builtin_strncpy_chk): Likewise.
19815         (fold_builtin_strcat_chk): Likewise.
19816         (fold_builtin_strcat_chk): Likewise.
19817         (fold_builtin_strncat_chk): Likewise.
19818         (fold_builtin_sprintf_chk): Likewise.
19819         (fold_builtin_snprintf_chk): Likewise.
19820         (fold_builtin_printf): Likewise.
19821         (fold_builtin_vprintf): Likewise.
19822
19823         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
19824         constructors.
19825         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
19826         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19827         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
19828         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
19829         (fold_unary): Likewise.
19830         (fold_binary): Likewise.
19831         (fold_ternary): Remove CALL_EXPR case, since they are no longer
19832         ternary expressions.
19833         (fold): Add logic for tcc_vl_exp.
19834         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
19835         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19836         (fold_build3_stat): Add assertion to flag broken interface for
19837         constructing CALL_EXPRs.
19838         (fold_build_call_list): New.
19839         (fold_build_call_list_initializer): New.
19840         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
19841         constructors.
19842         (fold_strip_sign_ops): Likewise.
19843
19844 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
19845             Brooks Moses  <brooks.moses@codesourcery.com>
19846             Lee Millward  <lee.millward@codesourcery.com>
19847
19848         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
19849         accessors and dump arguments explicitly.
19850
19851         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
19852         TREE_CODE_LENGTH.
19853         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
19854         explicitly.
19855         (print_call_name): Use new CALL_EXPR accessors.
19856
19857         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
19858         CALL_EXPR arguments explicitly instead of as a list.  Use
19859         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19860
19861         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
19862         (vrp_visit_stmt): Likewise.
19863
19864         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
19865         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
19866         TREE_CODE_LENGTH.
19867         (force_move_till_expr): Likewise.
19868
19869         * targhooks.c (default_external_stack_protect_fail): Use
19870         build_call_expr instead of build_function_call_expr.
19871         (default_hidden_stack_protect_fail): Likewise.
19872
19873         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
19874         build the call.
19875
19876         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
19877         and walk arguments explicitly.
19878
19879         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
19880         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19881         (expand_simple_operations): Likewise.
19882         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
19883
19884         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
19885         of TREE_CODE_LENGTH.
19886         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
19887
19888         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
19889         instead of TREE_CODE_LENGTH.
19890
19891         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
19892         (tree_ic_transform): Likewise.
19893         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
19894         parameter instead of arglist.  Fix callers.
19895         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
19896         (tree_stringops_transform): Likewise.
19897         (tree_indirect_call_to_profile): Likewise.
19898         (tree_stringops_values_to_profile): Likewise.
19899
19900         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
19901         (eliminate_tail_call): Likewise.
19902
19903         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
19904
19905         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
19906         Use TREE_OPERAND_LENGTH and generalize to handle any number of
19907         operands.
19908         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
19909
19910         * omp-low.c (build_omp_barrier): Use build_call_expr.
19911         (lower_rec_input_clauses): Likewise.
19912         (lower_reduction_clauses): Likewise.
19913         (expand_parallel_call): Likewise.
19914         (maybe_catch_exception): Likewise.
19915         (expand_omp_for_generic): Likewise.
19916         (expand_omp_for_static_nochunk): Likewise.
19917         (expand_omp_sections): Likewise.
19918         (lower_omp_single_simple): Likewise.
19919         (lower_omp_single_copy): Likewise.
19920         (lower_omp_master): Likewise.
19921         (lower_omp_ordered): Likewise.
19922         (lower_omp_critical): Likewise.
19923
19924         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
19925         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
19926
19927         * tree-gimple.c (is_gimple_call_addr): Fix doc.
19928         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
19929         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
19930
19931         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
19932         and generalize to handle any number of operands.
19933         (chrec_contains_undetermined): Likewise.
19934         (tree_contains_chrecs): Likewise.
19935         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
19936
19937         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
19938
19939         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
19940         fold_call_expr instead of fold_builtin.
19941         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
19942         match declarations there.
19943         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
19944         updates.
19945
19946         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
19947         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19948
19949         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
19950         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
19951
19952         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
19953         accessors.
19954
19955         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
19956         (execute_cse_sincos): Use new CALL_EXPR accessors.
19957
19958         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
19959
19960         * gimple-low.c (lower_function_body): Use build_call_expr.
19961         (lower_builtin_setjmp): Likewise.
19962
19963         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
19964         (set_storage_via_libcall): Likewise.
19965         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
19966         instead of TREE_CODE_LENGTH.
19967         (expand_expr_real_1): Use new CALL_EXPR accessors.
19968
19969         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
19970         generalize to handle any number of operands.
19971         (TB_parent_eq): Likewise.
19972
19973         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
19974         (strip_builtin_expect): Likewise.
19975
19976         * function.c (gimplify_parameters): Use build_call_expr.
19977
19978         * tree-vectorizer.c (vect_is_simple_reduction): Use
19979         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
19980
19981         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
19982         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
19983
19984         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
19985         iterators.
19986
19987         * gimplify.c (build_stack_save_restore): Use build_call_expr.
19988         (gimplify_decl_expr): Likewise.
19989         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
19990         Use new CALL_EXPR iterators.
19991         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
19992         (gimplify_modify_expr_to_memset): Likewise.
19993         (gimplify_variable_sized_compare): Likewise.
19994         (gimplify_omp_atomic_fetch_op): Likewise.
19995         (gimplify_omp_atomic_pipeline): Likewise.
19996         (gimplify_omp_atomic_mutex): Likewise.
19997         (gimplify_function_tree): Likewise.
19998
19999         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
20000         (call_expr_flags): Likewise.
20001         (expand_call): Likewise.
20002
20003         * except.c (expand_builtin_eh_return_data_regno): Pass entire
20004         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
20005         accessors.
20006
20007         * coverage.c (create_coverage): Use build_call_expr.
20008
20009         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
20010         (temp_call_expr_obstack): New.
20011         (pool_copy_list): Delete.
20012         (temp_copy_call_expr): New.
20013         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
20014         CALL_EXPR accessors.  Get rid of special goo for copying argument
20015         lists and use temp_copy_call_expr instead.
20016         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
20017         CALL_EXPR accessors.
20018         (create_expression_by_pieces): Likewise.  Use build_call_array
20019         to construct the result instead of fold_build3.
20020         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
20021         dealing with argument lists.
20022         (init_pre): Remove references to expression_node_pool and
20023         list_node_pool.  Init temp_call_expr_obstack instead.
20024         (fini_pre): Remove references to expression_node_pool and
20025         list_node_pool.
20026
20027         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
20028         and walk arguments explicitly instead of as a list.
20029
20030         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
20031         (mx_register_decls): Likewise.
20032         (mudflap_register_call): Likewise.
20033         (mudflap_finish_file): Likewise.
20034
20035         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
20036         (ipa_callsite_compute_param): Likewise.
20037
20038         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
20039         accessors and constructor.
20040
20041         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
20042         accessors and constructor.
20043         (convert_tramp_reference): Likewise.
20044         (convert_call_expr): Likewise.
20045         (finalize_nesting_tree_1): Likewise.
20046
20047         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
20048         accessors.
20049
20050         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
20051
20052         * tree-inline.c (initialize_inlined_parameters): Pass entire
20053         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
20054         accessors.
20055         (estimate_num_insns_1): Use new CALL_EXPR accessors.
20056         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
20057
20058         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
20059         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
20060         (vectorizable_reduction): Likewise.
20061         (vectorizable_call): Use new CALL_EXPR iterators.
20062         (vectorizable_conversion): Use build_call_expr.
20063         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
20064         (vect_gen_widened_results_half): Use build_call_expr.
20065         (vect_setup_realignment): Likewise.
20066         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
20067
20068         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
20069         (pass_through_call): Likewise.
20070         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
20071         fold_builtin.
20072
20073         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
20074         (tree_gen_pow2_profiler): Likewise.
20075         (tree_gen_one_value_profiler): Likewise.
20076         (tree_gen_ic_func_profiler): Likewise.
20077         (tree_gen_average_profiler): Likewise.
20078         (tree_gen_ior_profiler): Likewise.
20079
20080         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
20081         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
20082         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
20083
20084         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
20085         of TREE_CODE_LENGTH.
20086
20087         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
20088         of TREE_CODE_LENGTH.
20089
20090         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
20091         constructor.
20092         (convert_to_integer): Likewise.
20093
20094         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
20095         accessors.
20096
20097 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
20098             Brooks Moses  <brooks.moses@codesourcery.com>
20099             Lee Millward  <lee.millward@codesourcery.com>
20100
20101         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
20102         accessors.
20103         * config/frv/frv.c (frv_expand_builtin): Likewise.
20104         * config/s390/s390.c (s390_expand_builtin): Likewise.
20105
20106         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
20107         (sparc_expand_builtin): Use new CALL_EXPR accessors.
20108
20109         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
20110         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
20111         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
20112         (ix86_expand_store_builtin): Likewise.
20113         (ix86_expand_unop_builtin): Likewise.
20114         (ix86_expand_unop1_builtin): Likewise.
20115         (ix86_expand_sse_compare): Likewise.
20116         (ix86_expand_sse_comi): Likewise.
20117         (ix86_expand_vec_init_builtin): Likewise.
20118         (ix86_expand_vec_ext_builtin): Likewise.
20119         (ix86_expand_vec_set_builtin): Likewise.
20120         (ix86_expand_builtin): Use new CALL_EXPR accessors.
20121
20122         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
20123         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
20124
20125         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
20126         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
20127         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
20128
20129         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
20130         build_call_expr.
20131         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
20132         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
20133         arglist.  Use new CALL_EXPR accessors.  Fix callers.
20134         (altivec_expand_abs_builtin): Likewise.
20135         (rs6000_expand_binop_builtin): Likewise.
20136         (altivec_expand_predicate_builtin): Likewise.
20137         (altivec_expand_lv_builtin): Likewise.
20138         (spe_expand_stv_builtin): Likewise.
20139         (altivec_expand_stv_builtin): Likewise.
20140         (rs6000_expand_ternop_builtin): Likewise.
20141         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
20142         (altivec_expand_st_builtin): Likewise.
20143         (altivec_expand_dst_builtin): Likewise.
20144         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
20145         arglist.  Use new CALL_EXPR accessors.  Fix callers.
20146         (altivec_expand_vec_set_builtin): Likewise.
20147         (altivec_expand_vec_ext_builtin): Likewise.
20148         (altivec_expand_builtin): Use new CALL_EXPR accessors.
20149         (spe_expand_builtin): Likewise.
20150         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
20151         arglist.  Use new CALL_EXPR accessors.  Fix callers.
20152         (spe_expand_evsel_builtin): Likewise.
20153         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
20154         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
20155
20156         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
20157         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
20158         (arm_expand_unop_builtin): Likewise.
20159         (arm_expand_builtin): Use new CALL_EXPR accessors.
20160
20161         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
20162         accessors.
20163
20164         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire
20165         CALL_EXPR instead of arglist.  Use new CALL_EXPR accessors.
20166         Fix callers.
20167         (bfin_expand_unop_builtin): Likewise.
20168         (bfin_expand_builtin): Use new CALL_EXPR accessors.
20169
20170 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
20171             Brooks Moses  <brooks.moses@codesourcery.com>
20172             Lee Millward  <lee.millward@codesourcery.com>
20173
20174         * c-semantics.c (build_stmt): Add internal diagnostic check.
20175
20176         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
20177         accessors.  Print arguments explicitly instead of as a list.
20178
20179         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
20180
20181         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
20182         (c_finish_omp_flish): Likewise.
20183
20184         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
20185         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
20186         instead of TREE_CODE_LENGTH.
20187         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
20188         (c_warn_unused_result): Likewise.
20189
20190 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20191
20192         PR c/26494
20193         * doc/invoke.texi (Warning Options): Remove
20194         -Werror-implicit-function-declaration.
20195         (Wimplicit-function-declaration): Update description.
20196         * opts.c (common_handle_option): Move handling of -Werror=* to...
20197         (enable_warning_as_error): ...here.
20198         * opts.h (enable_warning_as_error): Declare.
20199         * c-decl.c (implicit_decl_warning): Unless
20200         -Wno-implicit-function-declaration is given, emit a pedwarn if
20201         -std=c99 or emit a warning if -Wimplicit-function-declaration.
20202         * c.opt (Wimplicit-function-declaration): Replace
20203         mesg_implicit_function_declaration with
20204         warn_implicit_function_declaration.
20205         * c-opts.c (c_common_handle_option):
20206         -Werror-implicit-function-declaration is exactly equal as
20207         -Werror=implicit-function-declaration.
20208         (set_Wimplicit): Replace mesg_implicit_function_declaration with
20209         warn_implicit_function_declaration.
20210         (c_common_post_options): -Wimplict-function-declaration is enabled
20211         by default by -std=c99, otherwise is disabled by default.
20212         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
20213
20214 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
20215
20216         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
20217         DECL on the rhs to a DECL on the lhs for debug info purposes if the
20218         former is ignored but not the latter.
20219
20220 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
20221
20222         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
20223         is made and the reference doesn't use the alias set of its type,
20224         do not create the temporary using that type.
20225
20226 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
20227
20228         * jump.c: Remove prototypes for delete_computation and
20229         delete_prior_computation.
20230
20231 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
20232
20233         * jump.c (get_label_after): Delete.
20234         (get_label_before, delete_computation, delete_jump,
20235         delete_prior_computation, follow_jumps): Move...
20236         * reorg.c (delete_computation, delete_prior_computation): ... here...
20237         (get_label_before, delete_jump): ... making these static ...
20238         (follow_jumps): ... and simplifying this since it only runs after
20239         reload.
20240         * rtl.h (get_label_after, get_label_before, delete_jump,
20241         follow_jumps): Delete prototypes.
20242
20243 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
20244
20245         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
20246
20247 2007-02-15  Nick Clifton  <nickc@redhat.com>
20248
20249         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
20250         order to prevent it from being munged by the target.
20251
20252 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
20253
20254         * config/i386/i386.md: Remove misleading comment.
20255
20256 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
20257
20258         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
20259         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
20260         invalid patterns.
20261
20262 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
20263
20264         * tree-sra.c (instantiate_missing_elements): Canonicalize
20265         bit-field types.
20266         (sra_build_assignment): New.
20267         (generate_copy_inout, generate_element_copy,
20268         generate_element_zero, generate_one_element_init): Use it.
20269
20270 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
20271
20272         * tree-sra.c (instantiate_missing_elements): Canonicalize
20273         bit-field types.
20274         (sra_build_assignment): New.
20275         (generate_copy_inout, generate_element_copy,
20276         generate_element_zero, generate_one_element_init): Use it.
20277
20278 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
20279
20280         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
20281         limbo die nodes.
20282
20283 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
20284
20285         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
20286         types as aggregates not scalars.
20287         * function.c (assign_stack_temp_for_type): Likewise.
20288
20289 2007-02-14  Roger Sayle  <roger@eyesopen.com>
20290             Zdenek Dvorak  <dvorakz@suse.cz>
20291
20292         * tree-dump.c (dump_switch_p_1): Require exact match of the option
20293         name.
20294
20295 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
20296
20297         * passes.c (next_pass_1): Clear the next field of the copied
20298         pass structure.
20299
20300 2007-02-14  Richard Henderson  <rth@redhat.com>
20301
20302         * tree-sra.c (early_sra): New.
20303         (decl_can_be_decomposed_p): Deny va_list if early_sra.
20304         (tree_sra_early, pass_sra_early): New.
20305         * tree-pass.h (pass_sra_early): Declare.
20306         * passes.c (init_optimization_passes): Use it.
20307
20308 2007-02-14  Richard Guenther  <rguenther@suse.de>
20309
20310         * flags.h (issue_strict_overflow_warning): Convert to a macro.
20311
20312 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
20313
20314          PR tree-optimization/30771
20315         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
20316         also phi nodes.
20317         (vect_analyze_operations): Induction phis can now be marked as
20318         used_in_loop.
20319         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
20320         Update documentation accordingly.
20321
20322 2007-02-14  Nick Clifton  <nickc@redhat.com>
20323
20324         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
20325         most 3 arguments are supported.
20326         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
20327
20328 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
20329
20330         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
20331         Ensure dst->current is valid.
20332
20333 2007-02-13  Paul Brook  <paul@codesourcery.com>
20334
20335         * config.gcc: Add arm*-*-uclinux-*eabi.
20336         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
20337         (SUBTARGET_EXTRA_LINK_SPEC): Define.
20338         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
20339         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
20340         (LINK_SPEC): Define.
20341         (LIB_SPEC): Define.
20342         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
20343         register.
20344         * config/arm/uclinux-eabi.h: New file.
20345         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
20346         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
20347         based targets.
20348
20349 2007-02-13  Ian Lance Taylor  <iant@google.com>
20350
20351         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
20352         * flags.h (warn_strict_overflow): Declare.
20353         (enum warn_strict_overflow_code): Define.
20354         (issue_strict_overflow_warning): New static inline function.
20355         * opts.c (warn_strict_overflow): New variable.
20356         (common_handle_option): Handle OPT_Wstrict_overflow and
20357         OPT_Wstrict_overflow_.
20358         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
20359         OPT_Wall.
20360         * fold-const.c: Include intl.h.
20361         (fold_deferring_overflow_warnings): New static variable.
20362         (fold_deferred_overflow_warning): New static variable.
20363         (fold_deferred_overflow_code): New static variable.
20364         (fold_defer_overflow_warnings): New function.
20365         (fold_undefer_overflow_warnings): New function.
20366         (fold_undefer_and_ignore_overflow_warnings): New function.
20367         (fold_deferring_overflow_warnings_p): New function.
20368         (fold_overflow_warning): New static function.
20369         (make_range): Add strict_overflow_p parameter.  Change all
20370         callers.
20371         (extract_muldiv, extract_muldiv_1): Likewise.
20372         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
20373         tree_expr_nonnegative_p.
20374         (fold_negate_expr): Call fold_overflow_warning.
20375         (fold_range_test): Likewise.
20376         (fold_comparison): Likewise.
20377         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
20378         instead of tree_expr_nonnegative_p.
20379         (tree_expr_nonnegative_warnv_p): Rename from
20380         tree_expr_nonnegative_p, add strict_overflow_p parameter.
20381         (tree_expr_nonnegative_p): New function.
20382         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
20383         strict_overflow_p parameter.
20384         (tree_expr_nonzero_p): New function.
20385         * passes.c (verify_interpass_invariants): New static function.
20386         (execute_one_pass): Call it.
20387         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
20388         warnings.
20389         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
20390         (estimate_numbers_of_iterations): Likewise.
20391         (scev_probably_wraps_p): Likewise.
20392         * tree-ssa-ccp.c: Include "toplev.h".
20393         (evaluate_stmt): Defer fold overflow warnings until we know we are
20394         going to optimize.
20395         (struct fold_stmt_r_data): Add stmt field.
20396         (fold_stmt_r): Defer fold overflow warnings until we know we
20397         optimized.
20398         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
20399         (fold_stmt_inplace): Likewise.
20400         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
20401         (cleanup_control_expr_graph): Defer fold overflow warnings until
20402         we know we are going to optimize.
20403         * tree-cfg.c (fold_cond_expr_cond): Likewise.
20404         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
20405         Likewise.
20406         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
20407         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
20408         * tree-ssa-loop-manip.c (create_iv): Likewise.
20409         * c-typeck.c (build_conditional_expr): Likewise.
20410         (build_binary_op): Likewise.
20411         * tree-vrp.c (vrp_expr_computes_nonzero): Call
20412         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
20413         (extract_range_from_unary_expr): Likewise.
20414         * simplify-rtx.c (simplify_const_relational_operation): Warn when
20415         assuming that signed overflow does not occur.
20416         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
20417         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
20418         (fold_defer_overflow_warnings): Declare.
20419         (fold_undefer_overflow_warnings): Declare.
20420         (fold_undefer_and_ignore_overflow_warnings): Declare.
20421         (fold_deferring_overflow_warnings_p): Declare.
20422         (tree_expr_nonzero_warnv_p): Declare.
20423         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
20424         of warning options.
20425         (Warning Options): Document -Wstrict-overflow.
20426         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
20427         (tree-ssa-ccp.o): Likewise.
20428         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
20429         (fold-const.o): Depend on intl.h.
20430
20431 2007-02-13  Ian Lance Taylor  <iant@google.com>
20432
20433         PR middle-end/30751
20434         * lower-subreg.c (resolve_simple_move): Decompose subregs in
20435         addresses.
20436
20437 2007-02-13  Stuart Hastings  <stuart@apple.com>
20438
20439         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
20440
20441 2007-02-13  Richard Henderson  <rth@redhat.com>
20442
20443         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
20444         handled_component_p before looking for the indirect_ref.
20445
20446 2007-02-13  Richard Henderson  <rth@redhat.com>
20447
20448         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
20449         remove flags clobber.
20450         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
20451         (bswaphi_lowpart): New.
20452         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
20453         remove TARGET_BSWAP test.  Delete expander of the same name.
20454
20455         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
20456         (expand_unop): Use them.
20457
20458 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
20459
20460         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
20461         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
20462         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
20463         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
20464         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
20465         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
20466         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
20467         assembler dialect choice from asm templates.
20468
20469 2007-02-12  Richard Henderson  <rth@redhat.com>
20470
20471         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
20472         (fixuns_trunc<SSEMODEF>si2): Use it.
20473         * config/i386/sse.md (vec_setv4sf_0): Export.
20474         * config/i386/i386.c (ix86_build_const_vector): Export.
20475         (ix86_split_convert_uns_si_sse): Rename from
20476         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
20477         * config/i386/i386-protos.h: Update.
20478
20479 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20480
20481         PR c/29521
20482         * c-typeck.c (c_finish_return): Improve warning message.
20483
20484 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20485
20486         * alias.c (find_symbolic_term): Delete unused function.
20487
20488 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
20489
20490         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
20491         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
20492         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
20493
20494 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
20495
20496         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
20497         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
20498         the function, temporarily point the debug interface to the null one.
20499
20500 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
20501
20502         * dwarf2out.c (round_up_to_align): New static function.
20503         (field_byte_offset): Use it to round the offset.
20504
20505 2007-02-12  Richard Henderson  <rth@redhat.com>
20506
20507         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
20508         (inswl_const): Export.
20509
20510 2007-02-12  Richard Henderson  <rth@redhat.com>
20511
20512         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
20513         result mode of the libcall, convert back to outmode.
20514
20515 2007-02-12  Roger Sayle  <roger@eyesopen.com>
20516
20517         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
20518         (bswapdi2): New define_expand to implement 32-bit implementation.
20519
20520 2007-02-12  Nick Clifton  <nickc@redhat.com>
20521
20522         * doc/invoke.texi (Overall Options): Document --help=.
20523         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
20524         (cc1_options): Pass --help= on to cc1.
20525         (display_help): Add description of --help=.
20526         (process_command): Add code to handle --help=.  Allow translated
20527         --help and --target-help switches to be passed on to compiler
20528         sub-process.
20529         (main): Remove unused if statement.
20530         * opts.c (columns): Remove.
20531         (LEFT_COLUMN): Define.
20532         (wrap_help): Add columns argument.
20533         (print_filtered_help): Change parameters to be an include bitmask,
20534         an exclude bitmask, an any bitmask and the column width.  Move the
20535         code to display the params list here.  Add code to display the
20536         status of options rather than their descriptions if the quiet flag
20537         is not active.
20538         (print_specific_help): Change parameters to be an include bitmask,
20539         an exclude bitmask and an any bitmask.  Move code to look up the
20540         column width here.  Decide upon the title for an options listing.
20541         (common_handle_options): Add code to handle --help=.  Adapt code
20542         for --help and --target-help to use the revised form of the
20543         print_specific_help function.
20544         (print_help): Delete.
20545         (print_param_help): Delete.
20546         (print_switch): Delete.
20547         * opts.h (cl_lang_count): Add prototype.
20548         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
20549         CL_MAX_OPTION_CLASS): New defines.
20550         * optc-gen.awk: Add construction of cl_lang_count.
20551         * c.opt: Add Warning attribute to warning options and Optimization
20552         attribute to optimization options.
20553         * common.opt: Likewise.
20554         Add --help=.
20555         Add -fhelp and -ftarget-help as aliases for the transformed --help
20556         and --target-help options.
20557         * opt-functions.awk: Add code to handle Warning and Optimization
20558         attributes.
20559
20560 2007-02-12  Richard Henderson  <rth@redhat.com>
20561
20562         * config/alpha/constraints.md: New file.
20563         * config/alpha/alpha.c: Include tm-constrs.h.
20564         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
20565         alpha_extra_constraint): Remove.
20566         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
20567         * config/alpha/alpha-protos.h: Update.
20568         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
20569         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
20570         (EXTRA_CONSTRAINT): Remove.
20571         * config/alpha/alpha.md: Include constraints.md.
20572         (adddi splitter): Use satisfies_constraint_*.
20573         * config/alpha/predicates.md (add_operand): Likewise.
20574         (sext_add_operand, addition_operation): Likewise.
20575
20576 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
20577
20578         PR tree-optimization/29145
20579         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
20580         in our handling of restrict qualified pointers.
20581
20582 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20583
20584         PR middle-end/7651
20585         * doc/invoke.texi (Wunused-value): Update description.
20586         (Wextra): Delete item.
20587         * opts.c (set_Wextra): Don't use the value of Wextra to set the
20588         value of Wunused-value.
20589         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
20590         (c_finish_stmt_expr): Don't check extra_warnings.
20591         (emit_side_effect_warnings): The caller is responsible to check
20592         warn_unused_value.
20593
20594 2007-02-11  Roger Sayle  <roger@eyesopen.com>
20595             Matt Thomas  <matt@3am-software.com>
20596
20597         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
20598
20599 2007-02-11  Roger Sayle  <roger@eyesopen.com>
20600
20601         * simplify-rtx.c (simplify_relational_operation_1): Optimize
20602         comparisons of POPCOUNT against zero.
20603         (simplify_const_relational_operation): Likewise.
20604
20605 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20606
20607         * doc/invoke.texi (Wextra): Delete outdated paragraph.
20608
20609 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20610
20611         * dwarf2out.c (root_type): Delete unused function.
20612
20613 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20614
20615         * genattrtab.c (contained_in_p): Delete unused function.
20616         (write_expr_attr_cache): Likewise.
20617
20618 2007-02-11  Jan Hubicka  <jh@suse.cz>
20619
20620         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
20621         previous patch.
20622
20623 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
20624
20625         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
20626         to add the REG_EQ* note.
20627         * see.c (see_merge_one_use_extension): Likewise.
20628         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
20629         turn REG_EQUAL notes into REG_EQUIV notes if the target
20630         register may have more than one set.
20631         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
20632         * gcse.c (try_replace_reg): Likewise.
20633         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
20634         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
20635         more than one REG_EQUIV note.
20636         * reload1.c (gen_reload): Use set_unique_reg_note.
20637
20638 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
20639
20640         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
20641         (ix86_builtin_conversion): New function.
20642
20643 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
20644
20645         PR target/29487
20646         * tree.h (DECL_REPLACEABLE_P): New macro.
20647         * except.c (set_nothrow_function_flags): Likewise.
20648
20649 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
20650             Ira Rosen  <irar@il.ibm.com>
20651             Dorit Nuzman  <dorit@il.ibm.com>
20652
20653         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
20654         * targhooks.c (default_builtin_vectorized_conversion): New.
20655         * targhooks.h (default_builtin_vectorized_function): New declaration.
20656         * target.h (struct vectorize): Add builtin_conversion field.
20657         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
20658         stmt_vec_info_type value.
20659         (vectorizable_conversion): New declaration.
20660         * tree-vect-analyze.c (vect_analyze_operations): Add
20661         vectorizable_conversion call.
20662         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
20663         * tree-vect-transform.c (vectorizable_conversion): New function.
20664         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
20665         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
20666         mode.
20667         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
20668         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
20669         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
20670         or ALTIVEC_BUILTIN_VCFSX.
20671
20672 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20673
20674         PR target/30634
20675         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
20676         CONST_DOUBLE and operand 0 is a hard register.
20677         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
20678         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
20679         is a hard floating-point register.
20680
20681 2007-02-10  Richard Henderson  <rth@redhat.com>
20682             Jakub Jelinek  <jakub@redhat.com>
20683             Alexandre Oliva  <aoliva@redhat.com>
20684
20685         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
20686         * builtin-types.def (BT_WORD): Make unsigned.
20687         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
20688         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
20689         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
20690         * c-decl.c (grokdeclarator): Don't error if !have_tls.
20691         * c-parser.c (c_parser_omp_threadprivate): Likewise.
20692         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
20693         emulated tls.
20694         * expr.c (emutls_var_address): New.
20695         (expand_expr_real_1): Expand emulated tls.
20696         (expand_expr_addr_expr_1): Likewise.
20697         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
20698         * output.h (emutls_finish): Declare.
20699         * toplev.c (compile_file): Call it.
20700         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
20701         address before wrapping in CONST.
20702         * varasm.c (emutls_htab, emutls_object_type): New.
20703         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
20704         (get_emutls_object_name, get_emutls_object_type): New.
20705         (get_emutls_init_templ_addr, emutls_decl): New.
20706         (emutls_common_1, emutls_finish): New.
20707         (assemble_variable): When emulating tls, swap decls; generate
20708         constructor for the emutls objects.
20709         (do_assemble_alias): When emulating tls, swap decl and target name.
20710         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
20711         for emulated tls.
20712         * varpool.c (decide_is_variable_needed): Look at force_output.
20713         Recurse for emulated tls.
20714         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
20715         with decide_is_variable_needed.
20716         * emutls.c: New file.
20717         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
20718         tls_object for real tls.
20719
20720 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
20721
20722         PR rtl-optimization/29599
20723         * reload1.c (eliminate_regs_in_insn): Take the destination
20724         mode into account when computing the offset.
20725
20726 2007-02-09  Stuart Hastings  <stuart@apple.com>
20727             Richard Henderson  <rth@redhat.com>
20728
20729         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
20730         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
20731         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
20732         fixuns_truncdfhi2): New.
20733         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
20734         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
20735         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
20736         (floatunssidf2): Allow nonimmediate source.
20737         * config/i386/sse.md (movdi_to_sse): New.
20738         (vec_concatv2di): Drop '*'.
20739         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
20740         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
20741         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
20742         New.
20743         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
20744         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
20745         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
20746         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
20747         (ix86_build_signbit_mask): Fix decl of v, refactor to call
20748         ix86_build_const_vector.
20749         (x86_emit_floatuns): Rewrite.
20750
20751 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20752
20753         * genautomata.c (longest_path_length): Delete unused function.
20754         (struct state): Delete unused longest_path_length.
20755         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
20756         (get_free_state): Delete unused.
20757
20758 2007-02-09  Jan Hubicka  <jh@suse.cz>
20759
20760         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
20761         * doc/invoke.texi (inline-unit-growth): Update default value.
20762
20763         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
20764         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
20765         (rebuild_cgraph_edges): Likewise.
20766         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
20767         (dump_cgraph_node): Dump frequencies.
20768         (cgraph_clone_edge): Add frequency scales.
20769         (cgraph_clone_node): Add freuqnecy.
20770         * cgraph.h (cgraph_edge): Add freuqnecy argument.
20771         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
20772         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
20773         * tree-pass.h (TODO_rebuild_frequencies): New constant.
20774         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
20775         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
20776         (save_inline_function_body): Likewise.
20777         * ipa-inline.c: inluce rtl.h
20778         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
20779         (cgraph_edge_badness): Use frequencies.
20780         (cgraph_decide_recursive_inlining): Update clonning.
20781         (cgraph_decide_inlining_of_small_function): Dump frequency.
20782         * predict.c (estimate_bb_frequencies): Export.
20783         * predict.h (estimate_bb_frequencies): Declare.
20784         * tree-inline.c (copy_bb): Watch overflows.
20785         (expand_call_inline): Update call of cgraph_create_edge.
20786         (optimize_inline_calls): Use TODO flags to update frequnecies.
20787         * passes.h: Include predict.h
20788         (init_optimization_passes): Move profile ahead.
20789         (execute_function_todo): Handle TODO_rebuild_frequencies.
20790
20791 2007-02-09  Roger Sayle  <roger@eyesopen.com>
20792
20793         * config/alpha/alpha.c (emit_insxl): Force the first operand of
20794         the insbl or inswl pattern into a register.
20795
20796 2007-02-09  Roger Sayle  <roger@eyesopen.com>
20797
20798         * config/ia64/ia64.md (bswapdi2): New define_insn.
20799
20800 2007-02-09  Richard Henderson  <rth@redhat.com>
20801
20802         * config/i386/constraints.md (Ym): New constraint.
20803         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
20804         (movdi_1_rex64): Split sse and xmm general register moves from
20805         memory move alternatives.  Use conditional register constraints.
20806         (movsf_1, movdf_integer): Likewise.
20807         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
20808         (movdf_integer_rex64): New.
20809         (pushsf_rex64): Fix output constraints.
20810         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
20811         (sse2_stored): Likewise.
20812         (sse2_storeq_rex64): New.
20813         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
20814         amd and not generic.
20815         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
20816         for optimize_size.  Remove SF/DFmode hack.
20817
20818 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
20819
20820         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
20821         (bit_SSE4a): New.
20822
20823 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
20824             Richard Sandiford  <richard@codesourcery.com>
20825
20826         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
20827         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
20828         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
20829         m68k/t-mlib to tmake_file.
20830         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
20831         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
20832         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
20833         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
20834         variable is not empty, add t-$m68k_arch_family to tmake_file.
20835         Add t-mlibs to tmake_file.
20836         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
20837         * config/m68k/t-cf: New file.
20838         * config/m68k/t-m68k: Likewise.
20839         * config/m68k/t-mlibs: Likewise.
20840         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
20841         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
20842         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
20843         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
20844         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
20845         Delete.
20846         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
20847         (INSTALL_LIBGCC): Delete.
20848         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
20849         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
20850         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
20851         (M68K_MLIB_CPU): Define.
20852         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
20853         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
20854         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
20855
20856 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
20857             Richard Guenther  <rguenther@suse.de>
20858
20859         PR middle-end/23361
20860         * fold-const.c (fold_comparison): Handle obfuscated comparisons
20861         against INT_MIN/INT_MAX.
20862         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
20863         file if a loop is removed.
20864
20865 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
20866
20867         * calls.c (store_one_arg): Pass correct alignment to
20868         emit_push_insn for non-BLKmode values.
20869         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
20870         unaligned stack slot via a suitably aligned slot.
20871
20872 2007-02-08  DJ Delorie  <dj@redhat.com>
20873
20874         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
20875         warnings.
20876         (legal_subregs): Use unsigned char, make const.
20877         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
20878
20879 2007-02-08  Paul Brook  <paul@codesourcery.com>
20880
20881         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
20882         special interworking needed.
20883
20884 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
20885
20886         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
20887         conditional to __SSE2__.
20888         (Entries below should have been added to first ChangeLog
20889         entry for amdfam10 dated 2007-02-05)
20890         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
20891         defined.
20892         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
20893         defined.
20894         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
20895         defined.
20896
20897 2007-02-08  DJ Delorie  <dj@redhat.com>
20898
20899         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
20900         * config/m32c/m32c.c (legal_subregs): New.
20901         (m32c_illegal_subreg_p): New.
20902         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
20903         unsupported subregs of hard regs.
20904
20905 2007-02-08  Jan Hubicka  <jh@suse.cz>
20906
20907         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
20908         the same one; always update histograms.
20909
20910 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
20911
20912         * passes.c (init_optimization_passes): Tidy comment.
20913
20914 2007-02-08  Roger Sayle  <roger@eyesopen.com>
20915
20916         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
20917         strip zero_extend, bswap and rotates from POCOUNT's argument.
20918         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
20919         zero_extend and rotates from PARITY's argument.
20920         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
20921         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
20922         of an integer constant at compile-time.
20923
20924 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
20925
20926         PR 30562
20927         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
20928         Update all users.
20929         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
20930         users.
20931         (init_alias_info):
20932         * tree-ssa-live.c (remove_unused_locals): Do not remove
20933         TREE_ADDRESSABLE variables.
20934         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
20935         * tree-ssa-operands.c (add_virtual_operand): Remove argument
20936         FOR_CLOBBER.  Update all users.
20937         If VAR has an associated alias set, add a virtual operand for
20938         it if no alias is found to conflict with the memory reference.
20939
20940 2007-02-07  Jan Hubicka  <jh@suse.cz>
20941             Robert Kidd <rkidd@crhc.uiuc.edu>
20942
20943         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
20944
20945 2007-02-07  Ian Lance Taylor  <iant@google.com>
20946
20947         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
20948
20949 2007-02-07  Roger Sayle  <roger@eyesopen.com>
20950
20951         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
20952         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
20953         tablejumpdi, movsi_to_cr_one): Remove constraints from
20954         define_expand's match_operands.
20955
20956 2007-02-07  Roger Sayle  <roger@eyesopen.com>
20957
20958         * global.c (compute_regsets): Move declatation of "i" inside of
20959         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
20960
20961 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
20962
20963         PR c++/30703
20964         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
20965         of INDIRECT_REF <RESULT_DECL>.
20966
20967         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
20968
20969 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
20970             Kaz Kojima  <kkojima@gcc.gnu.org>
20971
20972         PR target/29746
20973         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
20974         properly.
20975         (sh_initialize_trampoline): Add parentheses to avoid a warning.
20976
20977 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
20978
20979         * doc/loop.texi: Document possibility not to perform disambiguation
20980         of loops with multiple latches.
20981         * cfgloopmanip.c (alp_enum_p): Removed.
20982         (add_loop): Handle subloops.  Use get_loop_body_with_size.
20983         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
20984         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
20985         the new forwarder block.
20986         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
20987         Handle the case latch is NULL.
20988         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg
20989         modifications when marking loop exits.
20990         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
20991         be modified.
20992         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
20993         disambiguate_loops_with_multiple_latches.
20994         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
20995         before fix_loop_structure.
20996         * cfgloop.c: Include pointer-set.h and output.h.
20997         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
20998         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
20999         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
21000         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
21001         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
21002         disambiguate_multiple_latches, get_loop_body_with_size,
21003         disambiguate_loops_with_multiple_latches): New functions.
21004         (flow_loop_dump): Dump multiple latch edges.
21005         (flow_loop_nodes_find): Handle loops with multiple latches.
21006         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
21007         (glb_enum_p): Modified.
21008         (get_loop_body): Use get_loop_body_with_size.
21009         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
21010         (AVOID_CFG_MODIFICATIONS): New constant.
21011         (disambiguate_loops_with_multiple_latches, add_loop,
21012         get_loop_body_with_size): Declare.
21013         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
21014
21015 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
21016
21017         PR inline-asm/28686
21018         * global.c (compute_regsets): New function.
21019         (global_alloc): Refactored ELIMINABLE_REGSET
21020         and NO_GLOBAL_ALLOC_REGS computation out.
21021         (rest_of_handle_global_alloc): Call compute_regsets()
21022         for non-optimizing case.
21023
21024 2007-02-06  Richard Henderson  <rth@redhat.com>
21025
21026         * config/i386/constraints.md (Y2): Rename from Y.
21027         (Yi): New constraint.
21028         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
21029         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
21030         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
21031         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
21032         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
21033         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
21034         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
21035         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
21036         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
21037         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
21038         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
21039         vec_extractv2si_1): Change Y constraints to Y2.
21040         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
21041         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
21042         Change Y constraints to Y2.
21043         (sse2_loadld): Change Y constraints to x.
21044
21045 2007-02-06  Roger Sayle  <roger@eyesopen.com>
21046
21047         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
21048         (parity<mode>2): New define_expand using rs6000_emit_parity.
21049         * config/rs6000/rs6000.c (rs6000_emit_popcount,
21050         rs6000_emit_parity): New functions.
21051         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
21052         rs6000_emit_parity): Prototype here.
21053
21054 2007-02-06  Ian Lance Taylor  <iant@google.com>
21055
21056         * lower-subreg.c (simple_move_operand): Reject CONST.
21057         (resolve_clobber): Call validate_change rather than directly
21058         assigning to XEXP (pat, 0).
21059
21060 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
21061
21062         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
21063         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
21064         (tree-cfg.o): Remove hashtab.h dependency.
21065
21066         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
21067         (struct ivopts_data): Change niters to pointer_map_t.
21068         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
21069         (niter_for_exit): Create pointer_map on demand.  Change for
21070         pointer_map API.
21071         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
21072         (free_loop_data): Destroy data->niters if created and reset field.
21073         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
21074         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
21075
21076         * tree-ssa-reassoc.c: Include pointer-set.h.
21077         (bb_rank): Change to long *.
21078         (operand_rank): Change to pointer_map_t.
21079         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
21080         (insert_operand_rank): Accept long.
21081         (operand_entry_hash, operand_entry_eq): Remove.
21082         (get_rank): Return long.  Adjust for changes above.
21083         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
21084         and operand_rank.
21085         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
21086
21087         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
21088         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
21089         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
21090         is not NULL.
21091         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
21092         directly since it cannot be NULL.
21093         (get_vi_for_tree): Rewrite for pointer_map API.
21094         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
21095         (init_alias_vars): Create vi_for_tree as pointer_map.
21096         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
21097
21098         * tree-cfg.c: Don't include hashtab.h.
21099         (edge_to_cases): Declare as pointer_map.
21100         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
21101         Delete.
21102         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
21103         (start_recording_case_labels): Create edge_to_cases as pointer_map.
21104         (end_recoding_case_labels): Cleanup edge_to_cases manually before
21105         destroying it.
21106         (record_switch_edge): Delete.
21107         (get_cases_for_edge): Adjust for pointer_map API, inline
21108         record_switch_edge (rewritten for new API), remove goto.
21109
21110 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
21111
21112         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
21113         * tree-nested.c: Include pointer-set.h.
21114         (var_map_elt, var_map_eq, var_map_hash): Delete.
21115         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
21116         to pointer_map_t's.
21117         (nesting_info_bitmap_obstack): New.
21118         (lookup_field_for_decl): Adjust for pointer_map API.
21119         (lookup_tramp_for_decl): Adjust for pointer_map API.
21120         (get_nonlocal_debug_decl): Adjust for pointer_map API.
21121         (get_local_debug_decl): Adjust for pointer_map API.
21122         (convert_nl_goto_reference): Adjust for pointer_map API.
21123         (convert_nl_goto_receiver): Adjust for pointer_map API.
21124         (create_nesting_tree): Create outside GGC space.  Create bitmap on
21125         the new obstack.  Create field_map and var_map as pointer_maps.
21126         (free_nesting_tree): Adjust for changes to create_nesting_tree.
21127         (root): Delete.
21128         (lower_nested_functions): Move root here, no need to NULL it.
21129         Initialize and release the obstack.
21130
21131 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
21132
21133         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
21134         Remove prototypes and make them non-static.
21135         (struct tree_int_map): Remove.
21136         * tree.h (struct tree_int_map): Move here, turning TO into an
21137         unsigned int.
21138         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
21139
21140         * tree.h (TREE_COMPLEXITY): Remove.
21141         (struct tree_exp): Remove complexity field.
21142         * tree.c (build1_stat): Don't set it.
21143
21144 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
21145             Victor Kaplansky  <victork@il.ibm.com>
21146
21147         * tree-vectorizer.c (vect_is_simple_use): Support induction.
21148         (vect_is_simple_reduction): Support reduction with induction as
21149         one of the operands.
21150         (vect_is_simple_iv_evolution): Fix formatting.
21151         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
21152         formatting.  Don't mark induction phis for vectorization.
21153         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
21154         * tree-vect-transform.c (get_initial_def_for_induction): New function.
21155         (vect_get_vec_def_for_operand): Support induction.
21156         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
21157         induction case.
21158         (vectorizable_reduction): Support reduction with induction as one of
21159         the operands.
21160         (vectorizable_type_demotion): Use def-type of stmt argument rather
21161         than dummy def-type.
21162
21163         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
21164         flag_tree_scev_cprop.
21165         * common.opt (tree-scev-cprop): New flag.
21166
21167         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
21168         call to vect_get_new_vect_var.
21169
21170 2007-02-06  Ira Rosen  <irar@il.ibm.com>
21171
21172         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
21173         vectype is not NULL.
21174         (vect_pattern_recog_1): Likewise.
21175
21176 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21177
21178         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
21179         (fold_negate_expr): Likewise.
21180
21181 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
21182
21183         PR debug/30189
21184         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
21185         even if cv-qualification is the same.
21186
21187 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
21188
21189         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
21190         __enable_execute_stack on completion.
21191
21192 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21193
21194         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
21195         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
21196         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
21197         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
21198         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
21199         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
21200         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
21201         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
21202
21203 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21204
21205         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
21206         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
21207         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
21208         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
21209         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
21210         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
21211         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
21212         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
21213         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
21214         umuldi3_highpart_rex64, umulsi3_highpart_insn,
21215         umulsi3_highpart_zext, smuldi3_highpart_rex64,
21216         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
21217         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
21218         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
21219         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
21220         sqrtextenddfxf2_i387): Added amdfam10_decode.
21221
21222         * config/i386/athlon.md (athlon_idirect_amdfam10,
21223         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
21224         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
21225         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
21226         athlon_ivector_store_amdfam10): New define_insn_reservation.
21227         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
21228         amdfam10.
21229
21230 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21231
21232         * config/i386/athlon.md (athlon_call_amdfam10,
21233         athlon_pop_amdfam10, athlon_lea_amdfam10): New
21234         define_insn_reservation.
21235         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
21236         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
21237         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
21238
21239 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21240
21241         * config/i386/athlon.md (athlon_sseld_amdfam10,
21242         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
21243         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
21244
21245 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21246
21247         * config/i386/athlon.md (athlon_sseins_amdfam10): New
21248         define_insn_reservation.
21249         * config/i386/i386.md (sseins): Added sseins to define_attr type
21250         and define_attr unit.
21251         * config/i386/sse.md: Set type attribute to sseins for insertq
21252         and insertqi.
21253
21254 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21255
21256         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
21257         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
21258         ssecomi_load_amdfam10, ssecomi_amdfam10,
21259         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
21260         define_insn_reservation.
21261         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
21262
21263 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21264
21265         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
21266         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
21267         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
21268         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
21269         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
21270         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
21271         define_insn_reservation.
21272
21273         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
21274         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
21275         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
21276         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
21277         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
21278
21279 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21280
21281         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
21282         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
21283         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
21284         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
21285         athlon_ssemul_load_k8): Added amdfam10.
21286
21287 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21288
21289         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
21290         (x86_sse_unaligned_move_optimal): New variable.
21291
21292         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
21293         m_AMDFAM10.
21294         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
21295         for unaligned vector SSE double/single precision loads for AMDFAM10.
21296
21297 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21298
21299         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
21300         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
21301         Define TARGET_CPU_DEFAULT_amdfam10.
21302         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
21303         (processor_type): Add PROCESSOR_AMDFAM10.
21304
21305         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
21306         processor_type in config/i386/i386.h.
21307         Enable imul peepholes for TARGET_AMDFAM10.
21308
21309         * config.gcc: Add support for --with-cpu option for amdfam10.
21310
21311         * config/i386/i386.c (amdfam10_cost): New variable.
21312         (m_AMDFAM10): New macro.
21313         (m_ATHLON_K8_AMDFAM10): New macro.
21314         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
21315         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
21316         x86_promote_QImode, x86_integer_DFmode_moves,
21317         x86_partial_reg_dependency, x86_memory_mismatch_stall,
21318         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
21319         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
21320         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
21321         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
21322         Enable/disable for amdfam10.
21323         (override_options): Add amdfam10_cost to processor_target_table.
21324         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
21325         processor_alias_table.
21326         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
21327         (ix86_adjust_cost): Add code for amdfam10.
21328
21329 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
21330
21331         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
21332         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
21333         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
21334         * config/i386/i386.h: Add builtin definition for SSE4A.
21335         * config/i386/i386.md: Add support for ABM instructions
21336         (popcnt and lzcnt).
21337         * config/i386/sse.md: Add support for SSE4A instructions
21338         (movntss, movntsd, extrq, insertq).
21339         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
21340         Add -march=amdfam10 flag.
21341         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
21342         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
21343         and amdfam10.
21344         * doc/extend.texi: Add documentation for SSE4A builtins.
21345
21346 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
21347
21348         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
21349
21350 2007-02-05  Richard Guenther  <rguenther@suse.de>
21351
21352         * tree-vectorizer.h (vectorizable_function): Add argument type
21353         argument, change return type.
21354         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
21355         * tree-vect-transform.c (vectorizable_function): Handle extra
21356         argument, return vectorized function decl.
21357         (build_vectorized_function_call): Remove.
21358         (vectorizable_call): Handle calls with result and argument types
21359         differing.  Handle loop vectorization factor correctly.
21360         * targhooks.c (default_builtin_vectorized_function): Adjust for
21361         extra argument.
21362         * targhooks.h (default_builtin_vectorized_function): Likewise.
21363         * target.h (builtin_vectorized_function): Add argument type
21364         argument.
21365         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
21366         extra argument, allow vectorizing of lrintf.
21367         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
21368         documentation of target hook.
21369
21370 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
21371
21372         PR target/30665
21373         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
21374         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
21375         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
21376
21377 2007-02-05  Roger Sayle  <roger@eyesopen.com>
21378
21379         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
21380         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
21381         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
21382         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
21383         before canonicalizing sincos to cexpi.
21384         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
21385
21386 2007-02-05  Roger Sayle  <roger@eyesopen.com>
21387
21388         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
21389         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
21390         (alpha_init_builtins): Use alpha_add_builtins to process tables.
21391
21392 2007-02-05  Roger Sayle  <roger@eyesopen.com>
21393
21394         * mips-tfile.c (initialize_init_file): Correct endianness test.
21395
21396 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
21397
21398         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
21399         the 'y' constraint.
21400
21401 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
21402
21403         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
21404         saves in a PARALLEL before the register assignments.
21405
21406 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
21407
21408         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
21409         DWARF_FRAME_RETURN_COLUMN to be a general register.
21410         * dwarf2out.c (init_return_column_size): New function, split from...
21411         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
21412         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
21413         to be nongeneral registers.
21414         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
21415         integer registers.
21416         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
21417         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
21418
21419 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
21420
21421         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
21422
21423 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
21424
21425         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
21426         (remove_path): Use can_remove_branch_p and remove_branch instead
21427         of loop_delete_branch_edge.
21428         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
21429         (tree_transform_and_unroll_loop): Remove dead branches immediately.
21430         Update profile using scale_dominated_blocks_in_loop.
21431         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
21432         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
21433         (can_remove_branch_p, remove_branch): Declare.
21434         * tree-cfg.c (tree_can_remove_branch_p): New function.
21435         (tree_cfg_hooks): Add tree_can_remove_branch_p.
21436         * cfgrtl.c (rtl_can_remove_branch_p): New function.
21437         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
21438
21439 2007-02-05  Jan Hubicka  <jh@suse.cz>
21440
21441         PR middle-end/30696
21442         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
21443         nodes in cgraph, don't remove offline copy of the function.
21444
21445 2007-02-04  Jan Hubicka  <jh@suse.cz>
21446
21447         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
21448         vectors might cause maybe_lookup_element_for_expr to be called
21449         on non-sra-candidate.
21450
21451 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
21452
21453         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
21454         config/bfin/bfin.md, config/bfin/predicates.md: Follow
21455         spelling conventions.
21456
21457 2007-02-04  Richard Guenther  <rguenther@suse.de>
21458
21459         PR middle-end/30636
21460         * fold-const.c (try_move_mult_to_index): Make sure to not
21461         overflow one dimension of a multi-dimensional array access.
21462
21463 2007-02-04  Jan Hubicka  <jh@suse.cz>
21464
21465         * passes.c (init_optimization_passes): Reindent.
21466
21467 2007-02-04  Jan Hubicka  <jh@suse.cz>
21468             Eric Botcazou  <ebotcazou@adacore.com>
21469
21470         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
21471         (execute_fixup_cfg): Break out the abnormal goto code.
21472         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
21473         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
21474         (optimize_inline_calls): Call make_nonlocal_label_edges.
21475
21476 2007-02-04  Jan Hubicka  <jh@suse.cz>
21477
21478         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
21479         true when something was changed.
21480         (rename_ssa_copies): When something was changed, do
21481         TODO_remove_unused_locals.
21482         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
21483         add TODO_remove_unused_locals when instruction was removed.
21484
21485 2007-02-04  Jan Hubicka  <jh@suse.cz>
21486
21487         * ipa-inline.c (try_inline): Improve debug output; work on already
21488         inline edges too.
21489         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
21490         call try_inline for already inlined edges too when flattening;
21491         inline also functions that make callee growth but overall unit size
21492         reduce.
21493
21494 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
21495
21496         * config/m32c/bitops.md, config/m32c/jump.md,
21497         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
21498         config/m32r/m32r.h, config/m32r/m32r.md,
21499         config/m32r/predicates.md, config/m68hc11/larith.asm,
21500         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
21501         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
21502         config/mips/mips-protos.h, config/mips/mips.c,
21503         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
21504         config/mn10300/mn10300.h, config/mn10300/predicates.md,
21505         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
21506         spelling conventions.
21507
21508         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
21509         Follow spelling conventions.
21510
21511 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
21512
21513         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
21514         warn about C++0x compatibility.
21515
21516 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
21517
21518         * config/h8300/h8300.c, config/h8300/h8300.h,
21519         config/h8300/h8300.md: Follow spelling conventions.
21520
21521 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
21522
21523         PR middle-end/30667
21524         * combine.c (try_combine): Do not substitute source operand
21525         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
21526
21527 2007-02-03  Jan Hubicka  <jh@suse.cz>
21528
21529         PR gcov-profile/30650
21530         * value-prof.c (stringop_block_profile): Fix handling of size counter;
21531         do not divide by zero for never executed counters.
21532         (tree_find_values_to_profile): Fix counters.
21533         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
21534
21535 2007-02-03  Ian Lance Taylor  <iant@google.com>
21536
21537         * lower-subreg.c (simple_move_operand): New static function,
21538         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
21539         operands.
21540         (simple_move): Call simple_move_operand.
21541         (find_decomposable_subregs): Add special handling of MEMs.
21542         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
21543         meaning of return value.  If we see a hard register, test whether
21544         it can store a word_mode value.  Change all callers.
21545
21546 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21547
21548         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
21549         ftrapv insns and expanders.
21550         (subdi3): Change define_expand operand 1 to arith11_operand, and
21551         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
21552         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
21553         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
21554         respectively.
21555
21556         PR middle-end/30174
21557         * varasm.c (notice_global_symbol): Treat global objects as weak when
21558         flag_shlib is true.
21559
21560 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21561
21562         * emit-rtl.c (dconstpi): Delete.
21563         (dconstsqrt2): New.
21564         (init_emit_once): Delete dconstpi and init dconstsqrt2.
21565         * real.h (dconstpi): Delete.
21566         (dconstsqrt2): New.
21567         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
21568         (fold_builtin_hypot): Likewise.
21569
21570 2007-02-03  Tom Tromey  <tromey@redhat.com>
21571
21572         PR driver/30246
21573         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
21574         -gcoff3, -gxcoff3, -gvms3 implies -dD.
21575
21576 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
21577
21578         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
21579         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
21580         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
21581         config/rs6000/cell.md, config/rs6000/darwin.h,
21582         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
21583         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
21584         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
21585         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
21586         typos.  Follow spelling conventions.
21587         * doc/invoke.texi: Follow spelling conventions.
21588
21589 2007-02-03  Roger Sayle  <roger@eyesopen.com>
21590
21591         * simplify-rtx.c (simplify_relational_operation_1): Implement some
21592         canonicalization transformations that attempt to simplify integer
21593         constant comparisons to become comparisons against zero.
21594
21595 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21596
21597         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
21598         fabs(x)*sqrt(2).
21599         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
21600         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
21601
21602 2007-02-02  Mike Stump  <mrs@apple.com>
21603
21604         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
21605         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
21606         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
21607         generate a branch island.
21608
21609 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
21610
21611         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
21612         (xtensa_legitimate_address_p): New.
21613         (xtensa_legitimize_address): New.
21614         (xtensa_output_addr_const_extra): New.
21615         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
21616         (BASE_REG_P): New.
21617         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
21618         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
21619         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
21620         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
21621         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
21622         (xtensa_legitimize_address): New.
21623         (xtensa_output_addr_const_extra): New.
21624
21625 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
21626
21627         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
21628
21629 2007-02-02  Ian Lance Taylor  <iant@google.com>
21630
21631         * expmed.c (expand_divmod): Add comment.
21632
21633 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
21634
21635         * emit-rtl.c (renumber_insns): Remove.
21636         * flags.h: Remove the extern for flag_renumber_insns.
21637         * rtl.h: Remove the prototype for renumber_insns.
21638         * toplev.c (flag_renumber_insns): Remove.
21639
21640 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
21641
21642         Revert for x86 darwin:
21643         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
21644
21645         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
21646         code before the following patch under TARGET_MACHO.
21647         (ix86_function_value_regno_p): Likewise.
21648
21649 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21650
21651         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
21652         COMPLEX_EXPR.
21653
21654 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
21655
21656         PR target/29682
21657         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory
21658         loads to general or fp registers.  Add comments.
21659         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
21660
21661 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
21662
21663         * pointer-set.c (insert_aux): Only return insertion slot.
21664         (pointer_set_insert): Adjust.
21665         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
21666         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
21667         pointer_map_traverse): New.
21668         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
21669         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
21670         pointer_map_contains, pointer_map_traverse): Declare.
21671
21672 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
21673
21674         PR middle-end/30473
21675         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
21676         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
21677
21678 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
21679
21680         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
21681
21682         (struct _dep): New type.
21683         (dep_t): New typedef.
21684         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
21685         (DEP_STATUS): New access macro.  The macro with the same name was
21686         renamed to DEP_LINK_STATUS.
21687         (dep_init): Declare function
21688
21689         (struct _dep_link): New type.
21690         (dep_link_t): New typedef.
21691         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
21692         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
21693         (DEP_LINK_STATUS): New macro.
21694         (debug_dep_links): New debug function.
21695
21696         (struct _deps_list): New type.
21697         (deps_list_t): New typedef.
21698         (DEPS_LIST_FIRST): New access macro.
21699         (FOR_EACH_DEP_LINK): New cycle macro.
21700         (create_deps_list, free_deps_list, delete_deps_list): Declare
21701         functions.
21702         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
21703         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
21704         (copy_deps_list_change_con): Ditto.
21705
21706         (move_dep_link): Declare function.
21707
21708         (struct _dep_node): New type.
21709         (dep_node_t): New typedef.
21710         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
21711
21712         (struct haifa_insn_data.back_deps): New field to hold backward
21713         dependencies of the insn.
21714         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
21715         to deps_list_t.
21716         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
21717         Change its type to deps_list_t.
21718         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
21719         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
21720         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
21721
21722         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
21723
21724         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
21725
21726         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration
21727         and all callers.
21728         (dep_cost): Declare.
21729
21730         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
21731         (ds_to_dk, dk_to_ds): New functions.
21732
21733         (init_dep_1): New static function.
21734         (init_dep): New function.
21735         (copy_dep): New static function.
21736
21737         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
21738         functions.
21739         (detach_dep_link): New static function.
21740         (move_dep_link): New function.
21741
21742         (dep_links_consistent_p, dump_dep_links): New static functions.
21743         (debug_dep_links): New debugging function.
21744
21745         (deps_obstack, dl_obstack, dn_obstack): New static variables.
21746
21747         (alloc_deps_list, init_deps_list): New static functions.
21748         (create_deps_list): New function.
21749         (clear_deps_list): New static function.
21750         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
21751         (deps_list_consistent_p, dump_deps_list): New static functions.
21752         (debug_deps_list): New function.
21753         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
21754         functions.
21755         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
21756
21757         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
21758         use new scheduler dependencies lists.
21759         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
21760         (sched_analyze): Ditto.  Initialize dependencies lists.
21761         (add_forw_dep, compute_forward_dependences): Update to use new
21762         scheduler dependencies lists.
21763
21764         (init_dependency_caches): Init deps_obstack.
21765         (free_dependency_caches): Free deps_obstack.
21766
21767         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
21768         new scheduler dependencies lists.
21769         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
21770         (add_back_forw_dep, delete_back_forw_dep): Ditto.
21771
21772         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
21773         Update to use new scheduler dependencies lists.
21774         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
21775         (debug_dependencies): Ditto.
21776         (schedule_region): Update comments.
21777
21778         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
21779         scheduler dependencies lists.
21780         (schedule_ebb): Update comments.
21781
21782         * rtl.def (DEPS_LIST): Remove.
21783
21784         * lists.c (unused_deps_list): Remove.
21785         (free_list): Update assertions.
21786
21787         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
21788         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
21789
21790         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
21791         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
21792
21793         * haifa-sched.c (comments): Update.
21794         (insn_cost1): Remove.  Inline the code into insn_cost ().
21795         (insn_cost): Update to use new scheduler dependencies lists.  Move
21796         processing of the dependency cost to dep_cost ().
21797         (dep_cost): New function.  Use it instead of insn_cost () when
21798         evaluating cost of the dependency.  Use compatible interface to
21799         interact with the target.
21800         (priority): Update to use new scheduler dependencies lists.
21801         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
21802         with greater number of insns that depend on the insn.
21803         (schedule_insn): Update to use new scheduler dependencies lists.  Add
21804         code to free backward dependencies lists.  Inline and optimize code
21805         from resolve_dep () - see PR28071.
21806         (ok_for_early_queue_removal): Update to use new scheduler dependencies
21807         lists.  Update call to targetm.sched.is_costly_dependence hook.
21808
21809         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
21810         scheduler dependencies lists.
21811
21812         (resolve_dep): Remove.  Move the logic to schedule_insn ().
21813         (init_h_i_d): Initialize dependencies lists.
21814
21815         (process_insn_depend_be_in_spec): Rename to
21816         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
21817         dependencies lists.
21818         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
21819         Update to use new scheduler dependencies lists.
21820         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
21821
21822         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
21823         new scheduler dependencies lists.
21824         (build_intra_loop_deps): Ditto.
21825
21826         * target.h (struct _dep): Declare to use in
21827         gcc_target.sched.is_costly_dependence.
21828         (struct gcc_target.sched.adjust_cost): Fix typo.
21829         (struct gcc_target.sched.is_costly_dependence): Change signature to
21830         use single dep_t parameter instead of an equivalent triad.
21831         (struct gcc_target.sched.adjust_cost_2): Remove.
21832
21833         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
21834
21835         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
21836
21837         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
21838         documentation.
21839         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
21840
21841         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
21842         (REG_DEP_TRUE): Document.
21843
21844         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
21845         Change signature to correspond to the targetm.sched.adjust_cost hook.
21846         Update use in TARGET_SCHED_ADJUST_COST_2.
21847         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
21848         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
21849         new scheduler dependencies lists.
21850         (ia64_gen_check): Ditto.
21851
21852         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new
21853         scheduler dependencies lists.
21854
21855         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
21856         signature to correspond to the targetm.sched.is_costly_dependence hook.
21857         (is_costly_group): Update to use new scheduler dependencies lists.
21858
21859         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
21860         instead of INSN_COST () macro.
21861
21862 2007-02-01  Ian Lance Taylor  <iant@google.com>
21863
21864         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
21865
21866 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
21867
21868         * pa.md (tp_load): Correct mfctl instruction syntax.
21869
21870 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
21871
21872         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
21873         altivec_padding_size calculation on AIX.  Improve comment, add
21874         assert to verify that it's right.
21875
21876         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
21877         64-bit.
21878
21879 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
21880
21881         PR inline-asm/28686
21882         * global.c (global_alloc): Add mising initialization of
21883         ELIMINABLE_REGSET.
21884
21885 2007-02-01  Roger Sayle  <roger@eyesopen.com>
21886
21887         * alias.c (init_alias_analysis): Correct whitespace.
21888         * bb-reorder.c (fix_edges_for_rarely_executed_code,
21889         partition_hot_cold_basic_blocks): Likewise.
21890         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
21891         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
21892         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
21893         fold_builtin_snprintf_chk, fold_builtin_printf,
21894         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
21895         do_mpfr_arg3, do_mpfr_sincos): Likewise.
21896         * cfgcleanup.c (cleanup_cfg): Likewise.
21897         * cfgexpand.c (tree_expand_cfg): Likewise.
21898         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
21899         * function.c (get_next_funcdef_no): Likewise.
21900         * gengtype.c (main): Likewise.
21901         * genmodes.c (main): Likewise.
21902         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
21903         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
21904         * ifcvt.c (noce_emit_move_insn): Likewise.
21905         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
21906         Likewise.
21907         * stor-layout.c (get_best_mode): Likewise.
21908         * tree-ssa-loop-niter.c (get_val_for): Likewise.
21909         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
21910         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
21911         perform_var_substitution, solve_graph): Likewise.
21912         * tree-vrp.c (vrp_finalize): Likewise.
21913
21914 2007-02-01  Ian Lance Taylor  <iant@google.com>
21915
21916         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
21917         high part of a paradoxical subreg, return a constant zero.
21918
21919 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
21920
21921         * toplev.c (lang_dependent_init): Call init_set_costs.
21922         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
21923
21924 2007-02-01  Richard Guenther  <rguenther@suse.de>
21925
21926         PR middle-end/30656
21927         * fold-const.c (fold_negate_expr): Allow negating a
21928         constant if overflow does not change.
21929
21930 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21931
21932         * doc/c-tree.texi (Expression trees): Improve markup.
21933         * doc/tm.texi (Register Classes, Addressing Modes)
21934         (Floating Point): Fix spacing after abbreviations.  Fix some
21935         typos.
21936
21937 2007-02-01  Ben Elliston  <bje@au.ibm.com>
21938
21939         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
21940         * doc/contrib.texi: Likewise.
21941         * doc/install.texi: Likewise.
21942
21943 2007-01-31  Richard Henderson  <rth@redhat.com>
21944             Ian Lance Taylor  <iant@google.com>
21945
21946         * lower-subreg.c: New file.
21947         * rtl.def (CONCATN): Define.
21948         * passes.c (init_optimization_passes): Add pass_lower_subreg and
21949         pass_lower_subreg2.
21950         * emit-rtl.c (update_reg_offset): New static function, broken out
21951         of gen_rtx_REG_offset.
21952         (gen_rtx_REG_offset): Call update_reg_offset.
21953         (gen_reg_rtx_offset): New function.
21954         * regclass.c: Revert patch of 2006-03-05, restoring
21955         reg_scan_update.
21956         (clear_reg_info_regno): New function.
21957         * dwarf2out.c (concatn_loc_descriptor): New static function.
21958         (loc_descriptor): Handle CONCATN.
21959         * common.opt (fsplit_wide_types): New option.
21960         * opts.c (decode_options): Set flag_split_wide_types when
21961         optimizing.
21962         * timevar.def (TV_LOWER_SUBREG): Define.
21963         * rtl.h (gen_reg_rtx_offset): Declare.
21964         (reg_scan_update): Declare.
21965         * regs.h (clear_reg_info_regno): Declare.
21966         * tree-pass.h (pass_lower_subreg): Declare.
21967         (pass_lower_subreg2): Declare.
21968         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
21969         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
21970         -fsplit-wide-types.
21971         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
21972         * Makefile.in (OBJS-common): Add lower-subreg.o.
21973         (lower-subreg.o): New target.
21974
21975 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
21976
21977         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
21978
21979 2007-01-31  Anatoly Sokolov <aesok@post.ru>
21980
21981         PR target/19087
21982         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
21983
21984 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21985
21986         PR middle-end/29335
21987         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
21988
21989 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
21990
21991         * cfgloop.h: Include vec-prim.h.
21992         (enum li_flags): Remove LI_ONLY_OLD.
21993         (loop_iterator): Changed.
21994         (fel_next, fel_init): Iterate over loop tree.
21995         (FOR_EACH_LOOP_BREAK): New macro.
21996         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
21997         FOR_EACH_LOOP.
21998         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
21999         * modulo-sched.c (sms_schedule): Ditto.
22000         * tree-vectorizer.c (vectorize_loops): Ditto.
22001         * doc/loop.texi: Update information on loop numbering and behavior of
22002         FOR_EACH_LOOP wrto new loops.
22003         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
22004         add_to_evolution_1): Test nestedness of loops instead of comparing
22005         their numbers.
22006         * tree-chrec.c (chrec_fold_plus_poly_poly,
22007         chrec_fold_multiply_poly_poly, chrec_evaluate,
22008         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
22009         reset_evolution_in_loop): Ditto.
22010         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
22011
22012 2007-01-31  Dirk Mueller  <dmueller@suse.de>
22013
22014         * c-common.c (warn_about_parentheses): Separate warning about
22015         un-parenthized sequence of comparison operators from the one
22016         which is supposed to warn about x <= y <= z.
22017
22018 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
22019
22020         * optabs.h (enum optab_index): Add new OTI_isinf.
22021         (isinf_optab): Define corresponding macro.
22022         * optabs.c (init_optabs): Initialize isinf_optab.
22023         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
22024         patterns.
22025         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
22026         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
22027         using isinf_optab.
22028         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
22029         expand_builtin_interclass_mathfn.
22030         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
22031         * config/i386/i386.md (UNSPEC_FXAM): New constant.
22032         (fxam<mode>2_i387): New insn pattern.
22033         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
22034         built-in functions as x87 inline asm.
22035
22036 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
22037
22038         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
22039
22040 2007-01-30  Eric Christopher  <echristo@apple.com>
22041
22042         * config.gcc: Add geode.
22043
22044 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
22045
22046         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
22047         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
22048         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
22049         value-prof.c: Fix comment typos.
22050
22051 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22052
22053         PR c++/24745
22054         * doc/invoke.texi (Wpointer-arith): Document warning.
22055
22056 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
22057
22058         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
22059         the list of discrepancies from the draft TR.
22060
22061 2007-01-30  Dirk Mueller  <dmueller@suse.de>
22062
22063         PR c++/30601
22064         * doc/invoke.texi (-Wreturn-type): Update description to
22065         match new behavior.
22066
22067 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
22068
22069         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
22070
22071 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
22072
22073         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
22074         to handle optabs that operate on floating point input argument and
22075         output to integer output.
22076         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
22077         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
22078         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
22079         expand_builtin_interclass_mathfn ().
22080         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
22081         (ilogbsi2): Remove.
22082         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
22083         ilogbl built-in functions as x87 intrinsics.
22084
22085 2007-01-30  Richard Guenther  <rguenther@suse.de>
22086
22087         PR middle-end/27657
22088         * dwarf2out.c (reference_to_unused): Query varpool if the
22089         variable was output.
22090
22091 2007-01-30  Richard Guenther  <rguenther@suse.de>
22092
22093         PR middle-end/30313
22094         * passes.c (execute_one_pass): Reset in_gimple_form to not
22095         confuse non-unit-at-a-time mode.
22096
22097 2007-01-29  Roger Sayle  <roger@eyesopen.com>
22098             Richard Guenther  <rguenther@suse.de>
22099
22100         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
22101         avoid undefined behaviour on overflow.  Use force_fit_type_double
22102         to construct the constant with the specified TREE_OVERFLOW.
22103
22104 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
22105
22106         * config/dfp-bit.c: Add parameterized support for fp exceptions.
22107         * config/dfp-bit.h: Ditto.
22108
22109 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22110
22111         * c-decl.c (pop_scope): Replace warnings with call to
22112         warn_for_unused_label.
22113         * c-common.h (warn_for_unused_label): Declare.
22114         * c-common.c (warn_for_unused_label): Define.
22115
22116 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22117
22118         * tree-optimize.c (update_inlined_to_pointers): Delete unused
22119         function.
22120
22121 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
22122
22123         * Makefile.in (USER_H): Remove decfloat.h.
22124         * ginclude/decfloat.h: Delete, moving contents to ...
22125         * ginclude/float.h: Add support for decimal floating point,
22126         guarded by __STDC_WANT_DEC_FP__.
22127
22128 2007-01-29  Mike Stump  <mrs@apple.com>
22129
22130         * doc/gccint.texi (Top): Rename Loop Representation to Loop
22131         Analysis and Representation to resolve case insensitive conflict.
22132         * doc/loop.texi (Loop Analysis and Representation): Likewise.
22133
22134 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
22135
22136         * tree.h (struct tree_memory_tag): Add aliases member.
22137         (MTAG_ALIASES): New macro.
22138         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
22139         (add_may_alias): Remove pointer-set. Update for may_aliases being
22140         a bitmap.
22141         (mark_aliases_call_clobbered): Update for may_aliases being a
22142         bitmap.
22143         (compute_tag_properties): Ditto.
22144         (create_partition_for): Ditto.
22145         (compute_memory_partitions): Ditto.
22146         (dump_may_aliases_for): Ditto.
22147         (is_aliased_with): Ditto.
22148         (add_may_alias_for_new_tag): Ditto.
22149         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
22150         (compute_is_aliased): New function.
22151         (compute_may_aliases): Call compute_is_aliased).
22152         (init_alias_info): Initialize alias_bitmap_obstack.
22153         (union_alias_set_into): New function.
22154         (compute_flow_sensitive_aliasing): Use union_aliases_into.
22155         (have_common_aliases_p): Rewrite to take two bitmaps and use
22156         intersection.
22157         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
22158         Update for bitmaps.
22159         (finalize_ref_all_pointers): Update for add_may_alias changes.
22160         (new_type_alias): Ditto.
22161         * tree-flow-inline.h (may_aliases): Return a bitmap.
22162         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
22163         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
22164         may_aliases being a bitmap.
22165         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
22166         may_aliases now returns a bitmap.
22167         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
22168         being a bitmap.
22169         * tree-ssa-operands.c (add_virtual_operand): Update for
22170         may_aliases being a bitmap.
22171
22172 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
22173
22174         PR tree-optimization/30630
22175         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
22176         variable as changed.
22177
22178 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
22179
22180         PR c++/28266
22181         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
22182         expanded only once even if an error occurs.
22183
22184 2007-01-29  Ben Elliston  <bje@au.ibm.com>
22185
22186         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
22187         (__gcov_average_profiler): Likewise.
22188         (__gcov_ior_profiler): Likewise.
22189         (__gcov_merge_ior): Likewise.
22190
22191 2007-01-28  Jan Hubicka  <jh@suse.cz>
22192
22193         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
22194         * value-prof.c (stringop_block_profile): Likewise.
22195
22196 2007-01-28  Jan Hubicka  <jh@suse.cz>
22197
22198         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall):
22199         Add variant handling histograms; add wrapper.
22200         (clear_storage_via_libcall): Export.
22201         (emit_block_move_hints): Break out from ...; add histograms.
22202         (emit_block_move): ... this one.
22203         (clear_storage_hints): Break out from ...; add histograms.
22204         (clear_storage): ... this one.
22205         (set_storage_via_memset): Handle histogram.
22206         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
22207         (clear_storage_hints, clear_storage_via_libcall): Declare.
22208         (set_storage_via_setmem): Update prototype.
22209         * doc/md.texi (movmem, setmem): Document new arguments.
22210
22211         * value-prof.c (dump_histogram_value, tree_find_values_to_profile):
22212         Add new histograms.
22213         (stringop_block_profile): New global function.
22214         (tree_stringops_values_to_profile): Profile block size and alignment.
22215         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
22216         HIST_TYPE_IOR.
22217         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
22218         (stringop_block_profile): Declare.
22219         * builtins.c: Include value-prof.h.
22220         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
22221         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
22222         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
22223         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
22224         * profile.c (instrument_values): Add new counters.
22225         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
22226         calls.
22227         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
22228         (tree_init_edge_profiler): Build new profilers.
22229         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
22230         (pass_tree_profile): Add dump.
22231         (tree_profile_hooks): Update.
22232         * Makefile.in (LIBGCOV): Add new constants.
22233         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
22234         __gcov_ior_profiler): New.
22235         * i386.md (movmem/setmem expanders): Add new optional arguments.
22236
22237 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
22238
22239         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
22240
22241 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
22242
22243         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
22244         (tree_unswitch_single_loop): Pass eni_size_weights to
22245         tree_num_loop_insns.
22246         * tree-ssa-loop-manip.c: Include tree-inline.h.
22247         (can_unroll_loop_p): Pass eni_size_weights to
22248         tree_num_loop_insns.
22249         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
22250         Pass eni_size_weights to estimate_num_insns.
22251         * tree.h (init_inline_once): Export.
22252         * toplev.c (backend_init): Call init_inline_once.
22253         * cgraphunit.c (cgraph_process_new_functions,
22254         cgraph_analyze_function): Pass eni_inlining_weights to
22255         estimate_num_insns.
22256         * ipa-inline.c (compute_inline_parameters): Ditto.
22257         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
22258         to estimate_num_insns.
22259         (try_unroll_loop_completely): Pass eni_size_weights to
22260         tree_num_loop_insns.
22261         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
22262         ot estimate_num_insns.
22263         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
22264         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
22265         * tree-inline.c (eni_inlining_weights, eni_size_weights,
22266         eni_time_weights): New variables.
22267         (init_inline_once): Initialize them.
22268         (struct eni_data): Mew.
22269         (estimate_num_insns_1, estimate_num_insns): Use weights.
22270         * tree-inline.h (struct eni_weights_d): New.
22271         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
22272         (estimate_num_insns): Declaration changed.
22273         * cfgloop.h (tree_num_loop_insns): Declaration changed.
22274         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
22275         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
22276
22277 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
22278
22279         * tree-data-ref.c (conflict_fn): Assert that the number of affine
22280         relations in the conflict function is valid.
22281
22282 2007-01-27  Ian Lance Taylor  <iant@google.com>
22283
22284         * common.opt: Add fstrict-overflow.
22285         * opts.c (decode_options): Set flag_strict_overflow if -O2.
22286         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
22287         (TYPE_OVERFLOW_UNDEFINED): Define.
22288         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
22289         Replace all uses.
22290         * tree.h (TYPE_TRAP_SIGNED): Don't define.
22291         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
22292         (fold_negate_expr): Likewise.
22293         (make_range): Likewise.
22294         (extract_muldiv_1): Likewise.
22295         (maybe_canonicalize_comparison): Likewise.
22296         (fold_comparison): Likewise.
22297         (fold_binary): Likewise.
22298         (tree_expr_nonnegative_p): Likewise.
22299         (tree_expr_nonzero_p): Likewise.
22300         * tree-vrp.c (compare_values): Likewise.
22301         (extract_range_from_binary_expr): Likewise.
22302         (extract_range_from_unary_expr): Likewise.
22303         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
22304         Likewise.
22305         (nowrap_type_p): Likewise.
22306         * tree-scalar-evolution.c (simple_iv): Likewise.
22307         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
22308         (build_range_check): Likewise.
22309         (extract_muldiv_1): Likewise.
22310         (fold_comparison): Likewise.
22311         * tree-vrp.c (vrp_int_const_binop): Likewise.
22312         (extract_range_from_unary_expr): Likewise.
22313         * convert.c (convert_to_integer): Likewise.
22314         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
22315         (fold_comparison): Likewise.
22316         (fold_binary): Likewise.
22317         * optabs.c (optab_for_tree_code): Likewise.
22318         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
22319         * simplify-rtx.c (simplify_const_relational_operation): Check
22320         flag_strict_overflow and flag_trapv.
22321         (simplify_const_relational_operation): Likewise.
22322         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
22323         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
22324         -fstrict-overflow.
22325
22326 2007-01-27  Roger Sayle  <roger@eyesopen.com>
22327
22328         * tree.c (tree_fold_gcd): Delete.
22329         * tree.h (tree_fold_gcd): Remove prototype.
22330         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
22331         test whether one constant integer is a multiple of another.  Instead
22332         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
22333         * fold-const.c (multiple_of_p):  We've determined both TOP and
22334         BOTTOM are integer constants so we can call int_const_binop directly
22335         instead of the more generic const_binop.
22336
22337 2007-01-27  Roger Sayle  <roger@eyesopen.com>
22338
22339         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
22340         1*X check that the constant hasn't overflowed, to preserve the
22341         TREE_OVERFLOW bit.
22342         (round_up): Provide an efficient implementation when rouding-up an
22343         INTEGER_CST to a power-of-two.
22344
22345 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22346
22347         * doc/sourcebuild.texi: Add comma for clarity.
22348         * doc/extend.texi: Fix some typos.
22349         * doc/passes.texi: Likewise.
22350         * doc/cppinternals.texi: Likewise.
22351         * doc/c-tree.texi: Likewise.
22352         * doc/tree-ssa.texi: Likewise.
22353         * doc/install.texi: Likewise.
22354
22355 2007-01-27  Jan Hubicka  <jh@suse.cz>
22356
22357         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
22358         (pass_sra): Do not require alias information.
22359         * passes.c (init_optimization_passes): Add SRA
22360
22361 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
22362
22363         * tracer.c (rest_of_handle_tracer): We already cleaned
22364         up the CFG in tracer() so don't do it here again.
22365         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
22366         cleanup_cfg here, either.  And don't call renumber_insns.
22367
22368         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
22369         and BB_HEAD are in the insn stream here.  Instead make sure
22370         that BB_INSN is valid on all insns.  Also, do check here that
22371         there are no pending branch predictions...
22372         (rtl_verify_flow_info): ...instead of doing it here.  Checks
22373         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
22374         here.
22375
22376 2007-01-26  Roger Sayle  <roger@eyesopen.com>
22377
22378         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
22379         function to simplify/factorize operand order canonicalization.
22380         (ix86_fixup_binary_operands): Reorganize using the above function.
22381         (ix86_binary_operator_ok): Likewise.
22382
22383 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
22384
22385         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
22386         file scope from optimize_attrs.
22387         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
22388         up search.
22389         (optimize_attrs): Clear insn_code_values after freeing it.
22390
22391 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
22392
22393         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
22394         a parts.base assignment.
22395
22396 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
22397
22398         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
22399         (compute_subscript_distance, initialize_data_dependence_relation,
22400         finalize_ddr_dependent, analyze_ziv_subscript,
22401         analyze_siv_subscript_cst_affine,
22402         compute_overlap_steps_for_affine_univar,
22403         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
22404         analyze_siv_subscript, analyze_miv_subscript,
22405         analyze_overlapping_iterations, subscript_dependence_tester_1,
22406         compute_self_dependence, free_dependence_relation): Work
22407         with affine_fn instead of chrecs.
22408         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
22409         common_affine_function, affine_function_base,
22410         affine_function_constant_p, affine_fn_op, affine_fn_plus,
22411         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
22412         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
22413         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
22414         (all_chrecs_equal_p): Removed.
22415         * tree-data-ref.h (affine_fn, conflict_function): New types.
22416         (struct subscript): Change type of conflicting_iterations_in_a
22417         and conflicting_iterations_in_b.
22418
22419 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
22420
22421         PR other/30182
22422         * config/pa/pa.h (TARGET_HPUX_11): New.
22423         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
22424         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
22425
22426 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
22427         Richard Guenther  <rguenther@suse.de>
22428
22429         * tree-ssa-structalias.c (solve_graph): Handle case
22430         we merged the variable to another.
22431
22432 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22433
22434         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
22435         functions.
22436
22437         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
22438         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
22439
22440 2007-01-25  DJ Delorie  <dj@redhat.com>
22441
22442         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
22443         allow changes to modes which don't fit in those registers.
22444
22445         * reload1.c (choose_reload_regs): Check for invalid subregs before
22446         computing their locations, not after.
22447
22448 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
22449
22450         PR 25127
22451         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
22452         save Altivec registers in an eh_return function.
22453         (compute_vrsave_mask): Likewise.
22454         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
22455         for saving Altivec registers.
22456         (rs6000_emit_prologue): Don't allocate stack twice in
22457         eh_return function.  Correct expected value of altivec_save_offset
22458         when using save_world.  Describe save of R0 to stack when using
22459         save_world.  Describe stack pointer adjustment when using
22460         save_world.  Remove duplicated eh_return parameter register saving.
22461         Update sp_offset variable after save_world.
22462         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
22463         darwin-world.asm.
22464         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
22465         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
22466         implies Altivec.
22467
22468 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
22469
22470         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
22471
22472 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
22473
22474         PR other/30182
22475         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
22476         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
22477
22478 2007-01-25  Richard Guenther  <rguenther@suse.de>
22479
22480         * doc/invoke.texi (-Wcoverage-mismatch): Document.
22481         * common.opt (-Wcoverage-mismatch): New warning option.
22482         * coverage.c (get_coverage_counts): Ignore coverage mismatch
22483         if -Wcoverage-mismatch is given.
22484
22485 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
22486
22487         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
22488         (ipcp_driver): Change to static definition.
22489         Add dumping of the ifunctions.
22490         (constant_val_insert): Remove unused parameter. Support for SSA.
22491         (ipcp_propagate_const): Support for SSA.
22492         (ipcp_profile_bb_print): Print only analyzed nodes.
22493         (ipcp_replace_map_create): Remove support for Fortran constant
22494         for now.
22495         * ipa-prop.c (ipa_method_modify_stmt,
22496         ipa_callsite_compute_param): Support for SSA.
22497         * ipa-prop.h (ipcp_driver): Remove declaration.
22498         (IS_VALID_TREE_MAP_INDEX): Add define.
22499
22500 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
22501
22502         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
22503
22504 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22505
22506         PR middle-end/30447
22507         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
22508         constant argument to cabs and do it without checking for
22509         -funsafe-math-optimizations.
22510
22511 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
22512
22513         * c-common.h (RID_FIRST_CXX0X): New.
22514         (RID_LAST_CXX0X): New.
22515         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
22516         by -Wall.
22517         * c.opt (Wc++0x-compat): New.
22518         * doc/invoke.texi (-Wc++0x-compat): Document.
22519
22520 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22521
22522         * builtins.c (fold_builtin_carg): New.
22523         (fold_builtin_1): Use it.
22524
22525 2007-01-24  Jan Hubicka  <jh@suse.cz>
22526
22527         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
22528
22529         * ipa-inline.c (initial_insns, max_insns): Delete.
22530         (compute_max_insns): New function.
22531         (cgraph_decide_inlining_of_small_function): Use it; take minimal
22532         amount of insns as base for code growth.
22533         (cgraph_decide_inlining): Make initial_insns local; do not compute
22534         max_insns.
22535         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
22536         * doc/invoke.texi (inline-unit-growth): Update docs.
22537
22538 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
22539
22540         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
22541         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
22542         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
22543         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
22544         for CPUs that have PTA_CX16 set.
22545
22546         PR middle-end/27416
22547         * gimplify.c (omp_check_private): New function.
22548         (gimplify_scan_omp_clauses): Use it for
22549         firstprivate/lastprivate/reduction.
22550
22551         PR middle-end/30494
22552         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
22553         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
22554
22555         PR middle-end/30421
22556         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
22557         If lower_lastprivate_clauses emits some statements, append them
22558         to dlist rather than body_p and to body_p append an initializer.
22559         (lower_omp_for): Adjust caller.
22560
22561 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
22562
22563         * target.h (globalize_decl_name): New.
22564         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
22565         * output.h (default_globalize_decl_name): New.
22566         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
22567         globalize_label.
22568         (globalize_decl): Ditto.
22569         (default_globalize_decl_name): New.
22570         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
22571         (ia64_handle_version_id_attribute): New.
22572         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
22573         (ia64_asm_output_external): Use globalize_decl_name instead
22574         of globalize_label.
22575         * doc/extend.texi (version_id): New pragma.
22576         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
22577
22578 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
22579
22580         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
22581         _uleb128_t and _Unwind_SWord with _sleb128_t.
22582         * unwind-dw2.c (extract_cie_info, execute_stack_op,
22583         execute_cfa_program, uw_frame_state_for, uw_update_context_1):
22584         Likewise.
22585         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
22586         * unwind-pe.h (read_uleb128, read_sleb128,
22587         read_encoded_value_with_base): Likewise.
22588         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
22589
22590 2007-01-24  Richard Guenther  <rguenther@suse.de>
22591
22592         * builtins.c (expand_builtin_cexpi): Get the fndecl
22593         for cexp in the correct way.
22594
22595 2007-01-24  Jan Hubicka  <jh@suse.cz>
22596
22597         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS
22598         of calls.
22599
22600 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
22601
22602         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
22603         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
22604         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
22605         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
22606         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
22607         __SIZEOF_PTRDIFF_T__.
22608         * doc/cpp.texi: Documentation for the new builtin macros added.
22609
22610 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
22611
22612         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
22613         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
22614         instead of operands[2] to avoid access past the end of array.
22615
22616 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
22617
22618         * reload1.c (emit_reload_insns): Pass the reload register
22619         for a non-spill output reload through forget_old_reloads_1.
22620
22621 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
22622
22623         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
22624         _SOFT_DOUBLE if doubles use software floating-point.
22625         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
22626         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
22627         * config/rs6000/darwin-ldouble.c: Also compile functions for
22628         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
22629         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
22630         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
22631         commented-out long double override.
22632         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
22633         * config/rs6000/eabispe.h: Likewise.
22634         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
22635         long double for non-SPE.
22636         (rs6000_handle_option): Likewise.
22637         (invalid_e500_subreg): Disallow more subregs involding DImode,
22638         DFmode, TImode or TFmode.
22639         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
22640         E500 double.
22641         (legitimate_lo_sum_address_p): Also check for TFmode for E500
22642         double.
22643         (rs6000_legitimize_address): Also handle TFmode for E500 double.
22644         (rs6000_legitimize_reload_address): Also handle TFmode for E500
22645         double.
22646         (rs6000_legitimate_address): Also check for TFmode for E500
22647         double.
22648         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
22649         (spe_build_register_parallel): Handle TFmode and TCmode.
22650         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
22651         double.
22652         (function_arg): Handle TFmode and TCmode for E500 double.
22653         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
22654         in general.
22655         (print_operand): Handle TFmode and TImode for %y.
22656         (rs6000_generate_compare): Handle TFmode comparisons for E500
22657         double.
22658         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
22659         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
22660         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
22661         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
22662         TFmode for E500 double.
22663         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
22664         (floatsidf2): Enable for E500 double.
22665         (movtf_softfloat): Use rs6000_nonimmediate_operand.
22666         (extenddftf2): Change to extenddftf2_fprs.
22667         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
22668         depending on TARGET_E500_DOUBLE.
22669         (extendsftf2): Enable for E500 double.
22670         (trunctfdf2): Enable for E500 double.
22671         (trunctfsf2): Change to trunctfsf2_fprs.
22672         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
22673         depending on TARGET_E500_DOUBLE.
22674         (floatsitf2): Enable for E500 double.
22675         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
22676         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
22677         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
22678         (negtf2): Change to negtf2_internal.
22679         (negtf2): New expander.
22680         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
22681         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
22682         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
22683         (movdi_internal32): Use rs6000_nonimmediate_operand.
22684         (unnamed splitter): Likewise.
22685         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
22686         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
22687         (SPE64TF, DITI): New mode macros.
22688         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
22689         modes.
22690         (frob_tf_ti): New.
22691         (frob_<mode>_di_2): New.
22692         (frob_tf_di_8_2): New.
22693         (frob_di_df): Change to frob_di_<mode>; allow more modes.
22694         (frob_ti_tf): New.
22695         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
22696         more modes.
22697         (frob_ti_<mode>_8_2): New.
22698         (frob_ti_tf_2): New.
22699         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
22700         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
22701         TFmode.
22702         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
22703         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
22704         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
22705         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
22706         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
22707         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
22708         tsttflt_gp): New.
22709
22710 2007-01-23  Ian Lance Taylor  <iant@google.com>
22711
22712         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
22713         insn-*.o first.
22714         (OBJS-archive): Reformat, alphabetize.
22715         (OBJS): Change out_object_file to OBJS-md.
22716
22717 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
22718
22719         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
22720         JUMP_P and CALL_P predicates where applicable.
22721         * config/i386/i386.c: Ditto.
22722         * config/i386/i386.md: Ditto.
22723         * config/i386/mmx.md: Ditto.
22724         * config/i386/predicates.md: Ditto.
22725
22726 2007-01-22  Andreas Schwab  <schwab@suse.de>
22727
22728         * config/m68k/m68k.h: Fix comment.
22729
22730 2007-01-22  Jan Hubicka  <jh@suse.cz>
22731
22732         * passes.c (init_optimization_passes): Do not rerun
22733         pass_early_warn_uninitialized.
22734
22735 2007-01-22  Richard Guenther  <rguenther@suse.de>
22736
22737         PR tree-optimization/30038
22738         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
22739         function.
22740         (execute_cse_sincos_1): Likewise.
22741         (execute_cse_sincos): Likewise.
22742         (gate_cse_sincos): Likewise.
22743         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
22744         the cexpi() canonicalization of sincos().
22745         * tree-pass.h (pass_cse_sincos): Declare.
22746         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
22747
22748 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
22749
22750         PR rtl-optimization/29329
22751         * combine.c (replaced_rhs_insn): Rename to i2mod.
22752         (replaced_rhs_value): Rename to i2mod_new_rhs.
22753         (i2mod_old_rhs): New global variable.
22754         (combine_instructions): Adjust for above change.  Save a copy of
22755         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
22756         note are substituted in the second instruction.
22757         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
22758         ditch the note if it pertains to the second eliminated register
22759         and this register is mentioned in i2mod_old_rhs.
22760
22761         Revert:
22762         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
22763
22764         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
22765         the insn to which the note was originally attached.
22766
22767 2007-01-21  Jan Hubicka  <jh@suse.cz>
22768
22769         * ipa-inline.c (inlining_mode): Comment, move up.
22770         (cgraph_decide_inlining_incrementally): Do not perform inlining
22771         itself; fix handling of flattening of self recursive functions.
22772         (cgraph_find_cycles): Remove.
22773         (cgraph_flatten_node): Remove.
22774         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
22775         (try_inline): New function.
22776         (cgraph_early_inlining): Update call of
22777         cgraph_decide_inlining_incrementally.  Apply inlining here.
22778         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
22779
22780 2007-01-21  Dirk Mueller  <dmueller@suse.de>
22781
22782         PR bootstrap/30511
22783         * tree-vrp.c (check_array_bounds): do not warn
22784         about ADDR_EXPR's of ARRAY_REF's which are immediately
22785         used in binary expressions.
22786
22787 2007-01-21  Ira Rosen  <irar@il.ibm.com>
22788
22789         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
22790         read_write_dep and macros for its access.
22791         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
22792         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
22793         argument, call vect_check_interleaving for every independent pair of
22794         data-refs. Mark loads that access the same memory location as a store
22795         in the loop.
22796         (vect_check_dependences): Remove.
22797         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
22798         call, fix the call to vect_analyze_data_ref_dependence.
22799         (vect_analyze_data_ref_access): For statements that access the same
22800         data-ref, check that they are not stores; for loads, check that there
22801         is no store that access the same location.
22802
22803 2007-01-20  Roger Sayle  <roger@eyesopen.com>
22804             Joseph Myers  <joseph@codesourcery.com>
22805
22806         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
22807         (-fdump-rtl-stack): Likewise.
22808         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
22809         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
22810         (-mpt-fixed): Use @minus{} for minus sign.
22811         (Using Precompiled Headers): Fix under/overfull hbox.
22812
22813 2007-01-20  Jan Hubicka  <jh@suse.cz>
22814
22815         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
22816         place within annotation.
22817
22818 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22819
22820         * pa.c (output_move_double): Change array size of xoperands to 4.
22821
22822 2007-01-20  Jan Hubicka  <jh@suse.cz>
22823
22824         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
22825         as temporary.
22826
22827 2007-01-19  Ian Lance Taylor  <iant@google.com>
22828
22829         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
22830         constant to unsigned HOST_WIDE_INT before negating.
22831
22832 2007-01-19  Ian Lance Taylor  <iant@google.com>
22833
22834         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
22835         to unsigned.
22836         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
22837         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
22838         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
22839         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
22840         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
22841         (realloc_vdef, realloc_vuse): Change second parameter to
22842         unsigned.
22843         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
22844         fields to unsigned.
22845         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
22846         unsigned. Change x and lim locals to unsigned.
22847         (realloc_vdef, realloc_vuse): Change num_elem parameter to
22848         unsigned.
22849         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
22850         (copy_virtual_operands): Change i and n locals to unsigned.
22851
22852 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22853
22854         PR middle-end/29335
22855         * builtins.c (fold_builtin_1): Handle builtin fdim.
22856
22857 2007-01-20  Jan Hubicka  <jh@suse.cz>
22858
22859         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
22860         * tree-ssa-structalias.c (compute_points_to_sets): Do call
22861         init_alias_heapvars.
22862         (init_alias_heapvars): Initialize only when not already initialized.
22863         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
22864
22865 2007-01-19  Roger Sayle  <roger@eyesopen.com>
22866
22867         * common.opt (fsigned-zeros): New command line option.
22868         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
22869         of flag_unsafe_math_optimizations.
22870         * opts.c (set_fast_math_flags): The -ffast-math command line option
22871         implies -fno-signed-zeros.
22872         (fast_math_flags_set_p): Likewise.
22873
22874         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
22875         the documentation of -ffast-math appropriately.  Wrap long lines.
22876
22877 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
22878
22879         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
22880         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
22881
22882 2007-01-19  Tomas Bily  <tbily@suse.cz>
22883
22884         * cgraphunit.c (cgraph_finalize_function): Updating of pid
22885         * tree-profile.c:
22886         (tree_init_ic_make_global_vars): New function
22887         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
22888         (tree_gen_ic_profiler): New function
22889         (tree_gen_ic_func_profiler): New function
22890         (tree_profiling): Added calling of tree_gen_ic_func_profiler
22891         (tree_profile_hooks): Added hook for indirec/virtual calls
22892         * value-prof.c (tree_find_values_to_profile): New case for
22893         indirect calls
22894         (tree_values_to_profile): Call for determining indirect/virtual
22895         counters
22896         (tree_indirect_call_to_profile): New function
22897         (tree_ic_transform): New function
22898         (tree_ic): New function
22899         (find_func_by_pid): New function
22900         (init_pid_map): New function
22901         (tree_value_profile_transformations): Added check for
22902         indirect/virtual call transformation
22903         * value-prof.h (enum hist_type): New counter type for
22904         indirect/virtual calls
22905         (profile_hooks): Added new hook for profiling indirect/virtual
22906         calls
22907         * profile.c (instrument_values): New case for indirect/virtual
22908         call added
22909         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
22910         (GCOV_COUNTER_V_INDIR): New counter type
22911         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
22912         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
22913         call added
22914         * cgraph.c: Definition of cgraph_max_pid
22915         (cgraph_create_node): Default init of pid attribute
22916         * cgraph.h: Declaration of cgraph_max_pid
22917         (struct cgraph_node): Added pid attribute
22918         * libgcov.c (__gcov_indirect_call_profiler): New function
22919         (__gcov_one_value_profiler_body): New function
22920         (__gcov_one_value_profiler): Body was moved to
22921         __gcov_one_value_profiler_body and calls it
22922
22923 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
22924
22925         * doc/gty.texi (Options): Document the mark_hook option to GTY.
22926         * gengtype.c (write_types_data, write_func_for_structure,
22927         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
22928         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
22929         (walk_type, write_func_for_structure): Generate the mark_hook if
22930         needed.
22931
22932 2007-01-19  Jan Hubicka  <jh@suse.cz>
22933
22934         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
22935         'early' argument take inlining mode argument specifying whether to
22936         inline for size/speeed or all functions; add support for flattening;
22937         improve dumpting.
22938         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
22939
22940 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22941
22942         PR c++/17947
22943         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
22944         the name of the declared identifier.
22945
22946 2007-01-19  Dirk Mueller  <dmueller@suse.de>
22947
22948         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
22949         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
22950         duplicate evaluation.
22951
22952 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
22953
22954         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
22955         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
22956         to XFMode, use acosxf2 and truncate result to requested mode.
22957         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
22958         (asin<mode>2): Similarly, with asin expanders.
22959         (*fscalexf4_i387): Rename from *fscalexf4.
22960         (expNcorexf3): New expander.
22961         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
22962         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
22963         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
22964         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
22965         patterns for SSE math.
22966         (exp10<mode>2): Similarly, with exp10 expanders.
22967         (exp2<mode>2): Similarly, with exp2 expanders.
22968         (expm1<mode>2): Similarly, with expm1 expanders.
22969         (ldexp<mode>3): Similarly, with ldexp expanders.
22970         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
22971         Use gen_truncxf<mode>2_i387_noop to truncate result.
22972
22973 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
22974
22975         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
22976         for ColdFire targets.
22977
22978 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
22979             Richard Sandiford  <richard@codesourcery.com>
22980
22981         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
22982         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
22983         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
22984         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
22985         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
22986         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
22987
22988 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
22989
22990         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
22991         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
22992         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
22993         (*adddi_dilshr32_cf): New pattern.
22994         (adddi3, subdi3): Remove first alternatives.
22995
22996 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
22997
22998         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
22999         implemented using move.l, do not use its cc result for floating-point
23000         comparisons.
23001
23002 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
23003
23004         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
23005         from accepting 's' constraints if flag_pic.
23006
23007 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
23008
23009         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
23010         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
23011         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
23012         condition from TARGET_68881 to TARGET_HARD_FLOAT.
23013
23014 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
23015
23016         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
23017         ColdFire alternatives.
23018         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
23019         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
23020         architectures that support ff1 instruction.
23021
23022 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
23023             Julian Brown  <julian@codesourcery.com>
23024
23025         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
23026         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
23027         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
23028         Add commentary.
23029
23030 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
23031
23032         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
23033         and return a bool.
23034         (output_move_const_into_data_reg, output_move_simode_const): Delete.
23035         * config/m68k/m68k.c (const_method, const_int_cost): Take a
23036         HOST_WIDE_INT instead of an rtx.
23037         (m68k_rtx_costs): Update call accordingly.
23038         (output_move_const_into_data_reg): Likewise.  Fix formatting.
23039         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
23040         Return a bool.
23041         (output_move_simode_const): Update calls after above changes.
23042         Rework to use automatic variables and predicates like MEM_P.
23043         * config/m68k/m68k.md (pushexthisi_const): Update call to
23044         valid_mov3q_const.
23045
23046 2007-01-19  Dirk Mueller  <dmueller@suse.de>
23047
23048         * tree-ssa-alias.c (perform_var_substitution): Fix typo
23049         in dump_flags test.
23050
23051 2007-01-19  Richard Guenther  <rguenther@suse.de>
23052
23053         * builtins.c (expand_builtin_cexpi): Fall back to expanding
23054         via cexp in case sincos is not available.
23055
23056 2007-01-19  Richard Guenther  <rguenther@suse.de>
23057
23058         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
23059         * defaults.h (TARGET_HAS_SINCOS): Default to off.
23060         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
23061         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
23062         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
23063         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
23064         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
23065         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
23066
23067 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
23068
23069         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
23070         New insn patterns.
23071         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
23072         (atan2xf3): Directly generate RTL pattern.
23073         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
23074         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
23075         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
23076         disable patterns for SSE math.
23077         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
23078         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
23079         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
23080         disable patterns for SSE math.
23081
23082 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
23083
23084         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
23085
23086 2007-01-18  Roger Sayle  <roger@eyesopen.com>
23087
23088         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
23089         VIEW_CONVERT_EXPR to the same type as it's operand.
23090
23091 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
23092
23093         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
23094         configured for long double 128.
23095
23096 2007-01-18  Mike Stump  <mrs@apple.com>
23097
23098         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
23099         error.
23100
23101 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
23102
23103         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
23104         type correct.
23105
23106 2007-01-18  Jan Hubicka  <jh@suse.cz>
23107
23108         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
23109         greater than NUM_VOP_FREE_BUCKETS.
23110
23111 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
23112
23113         * tree-ssa-structalias.c: Update comments.
23114         (ptabitmap_obstack): Removed.
23115         (pta_obstack): New.
23116         (oldpta_obstack): Ditto.
23117         (stats): Add a few members.
23118         (struct variable_info): Remove node, complex, address_taken, and
23119         indirect_target members. Add oldsolution member.
23120         (new_var_info): Do not initialize removed members.
23121         (constraint_expr_type): Remove INCLUDES.
23122         (constraint_graph): Add size, implicit_preds, rep,
23123         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
23124         (FIRST_REF_NODE): New macro.
23125         (LAST_REF_NODE): Ditto.
23126         (FIRST_ADDR_NODE): Ditto.
23127         (find): New function.
23128         (unite): Ditto.
23129         (dump_constraint): Do not handle INCLUDES.
23130         (insert_into_complex): Do not insert duplicate constraints.
23131         (condense_varmap_nodes): Renamed and rewritten into ...
23132         (merge_node_constraints): This. Also fix bug in handling of
23133         offseted copy constraints.
23134         (clear_edges_for_node): No longer need to deal with preds at all,
23135         or removing associated preds/succs.
23136         (merge_graph_nodes): Deal with indirect_cycles.
23137         Don't deal with predecessors.
23138         (add_implicit_graph_edge): New function.
23139         (add_pred_graph_edge): Ditto.
23140         (add_graph_edge): Don't deal with predecessors.
23141         (build_constraint_graph): Removed.
23142         (build_pred_graph): New function.
23143         (build_succ_graph): Ditto.
23144         (struct scc_info): Removed in_component. Added roots, dfs, and
23145         node_mapping. Remove visited_index, unification_queue.
23146         (scc_visit): Deal with union-find we do now.
23147         Deal with cycles with REF nodes.
23148         (collapse_nodes): Renamed and rewritten to ...
23149         (unify_nodes): This.
23150         (process_unification_queue): Removed.
23151         (topo_visit): Cleanup
23152         (do_da_constraint): Use find.
23153         (do_sd_constraint): Ditto.
23154         (do_ds_constraint): Ditto.
23155         (do_complex_constraint): Ditto.
23156         (init_scc_info): Update for removed and added members.
23157         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
23158         (find_indirect_cycles): This.
23159         (equivalence_class): New variable.
23160         (label_visit): New function.
23161         (perform_variable_substitution): Rewritten.
23162         (free_var_substitution_info): New function.
23163         (find_equivalent_node): Ditto.
23164         (move_complex_constraints): Ditto.
23165         (eliminate_indirect_cycles): Ditto.
23166         (solve_graph): Only propagate changed bits.
23167         Use indirect cycle elimination.
23168         Use find.
23169         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
23170         (tree_id_eq): Renamed to ...
23171         (tree_vi_eq): This. Update for member change
23172         (insert_id_for_tree): Renamed and rewritten to ...
23173         (insert_vi_for_tree): This.
23174         (lookup_id_for_tree): Renamed and rewritten to ...
23175         (lookup_vi_for_tree): This.
23176         (get_id_for_tree): Renamed and rewritten to ...
23177         (get_vi_for_tree): Ditto.
23178         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
23179         (process_constraint): Don't handle INCLUDES.
23180         Remove special ADDRESSOF case.
23181         (find_func_aliases): Rewrite to use vi functions instead of id
23182         ones.
23183         (create_function_info_for): Ditto.
23184         (create_variable_info_for): Ditto.
23185         (intra_create_variable_infos): Ditto.
23186         (merge_smts_into): Ditto.
23187         (find_what_p_points_to): Ditto.
23188         (init_base_vars): Ditto.
23189         (init_alias_vars): Ditto.
23190         (remove_preds_and_fake_succs): New function.
23191         (dump_sa_points_to_info): Dump new stats.
23192         (dump_solution_for_var): Use find.
23193         (set_used_smts): Fix formatting.
23194         (compute_points_to_sets): Updated for new functions.
23195         (ipa_pta_execute): Ditto.
23196
23197 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
23198             Richard Sandiford  <richard@codesourcery.com>
23199
23200         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
23201         parallels.
23202         * calls.c (expand_call): If the return value is a PARALLEL,
23203         extract its first member.
23204         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
23205         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
23206         use FUNCTION_EXTRA_EPILOGUE.
23207         (m68k_function_value): Return a PARALLEL if the return value
23208         is of a pointer type.
23209         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
23210         (FUNCTION_EXTRA_EPILOGUE): Remove.
23211         * config/m68k/m68k.md (D0_REG): New constant.
23212
23213 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
23214
23215         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
23216         output a NOP for empty epilogues.
23217
23218 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23219
23220         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
23221         before function.  Extend register save check to include all
23222         registers, not just integer ones.
23223
23224 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
23225
23226         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
23227         (m68k_use_return_insn): ...this.
23228         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
23229         * config/m68k/m68k.c (use_return_insn): Rename to...
23230         (m68k_use_return_insn): ...this.
23231         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
23232         of USE_RETURN_INSN.
23233
23234 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
23235
23236         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
23237         nearest even, fix denormal rounding overflow.
23238
23239 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23240
23241         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
23242         f%$smove and f%$move.
23243         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
23244         (extendsfdf2_cf): Use fdmove instead of f%&move.
23245         (truncdfsf2_cf): Use fsmove instead of f%$smove.
23246         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
23247
23248 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23249
23250         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
23251         GPR<-GPR moves.
23252
23253 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23254
23255         * real.h (real_format): Add a canonical_nan_lsbs_set field.
23256         (coldfire_single_format): Declare.
23257         (coldfire_double_format): Likewise.
23258         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
23259         of qnan_msb_set to determine the lower bits of a canonical
23260         NaN significand.
23261         (encode_ieee_double): Likewise.
23262         (encode_ieee_quad): Likewise.
23263         (ieee_single_format): Initialize canonical_nan_lsbs_set.
23264         (mips_single_format): Likewise.
23265         (ieee_double_format): Likewise.
23266         (mips_double_format): Likewise.
23267         (ieee_extended_motorola_format): Likewise.
23268         (ieee_extended_intel_96_format): Likewise.
23269         (ieee_extended_intel_128_format): Likewise.
23270         (ieee_extended_intel_96_round_53_format): Likewise.
23271         (ibm_extended_format): Likewise.
23272         (mips_extended_format): Likewise.
23273         (ieee_quad_format): Likewise.
23274         (mips_quad_format): Likewise.
23275         (vax_f_format): Likewise.
23276         (vax_d_format): Likewise.
23277         (vax_g_format): Likewise.
23278         (i370_single_format): Likewise.
23279         (i370_double_format): Likewise.
23280         (decimal_single_format): Likewise.
23281         (decimal_double_format): Likewise.
23282         (decimal_quad_format): Likewise.
23283         (c4x_single_format): Likewise.
23284         (c4x_extended_format): Likewise.
23285         (real_internal_format): Likewise.
23286         (coldfire_single_format): New real_format.
23287         (coldfire_double_format): Likewise.
23288         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
23289         canonical_nan_lsbs_set.
23290         (pdp11_d_format): Likewise.
23291         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
23292         if TARGET_COLDFIRE_CPU.
23293
23294 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23295
23296         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
23297         (output_call, m68k_legitimize_call_address): Declare.
23298         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
23299         parenthesees.  Add support for a 'W' constraint.
23300         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
23301         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
23302         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
23303         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
23304         variables.
23305         (override_options): Initialize them.  Do not set flag_no_function_cse
23306         for TARGET_ID_SHARED_LIBRARY.
23307         (m68k_output_pic_call): Delete.
23308         (m68k_legitimize_call_address): New function.
23309         (print_operand): Remove the %o prefix.  Handle the %p prefix.
23310         (output_call): New function.
23311         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
23312         target address from the GOT if symbolic jumps are not allowed.
23313         * config/m68k/m68k.md (call, general_operand): Do not set
23314         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
23315         Merge separate flag_pic and !flag_pic define_insns into...
23316         (*call, *call_value): ...these new patterns.  Match the address
23317         rather than the containing MEM and require it to be a call_operand.
23318         Use output_call to generate the asm template.
23319         * config/m68k/predicates.md (const_call_operand): New predicate.
23320         (call_operand): Likewise.
23321
23322 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
23323
23324         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
23325         (STACK_GROWS_DOWNWARD): Define to 1.
23326         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
23327         comments, emphasizing that these values are only defaults.
23328         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
23329         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
23330
23331 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23332
23333         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
23334
23335 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
23336             Richard Sandiford  <richard@codesourcery.com>
23337
23338         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
23339         (FP_REGNO_P): New macros.
23340         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
23341         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
23342         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
23343         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
23344
23345 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
23346
23347         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
23348         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
23349         to $tmake_file.
23350         * config/m68k/t-floatlib: New file, extracting common code from...
23351         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
23352         * config/m68k/t-uclinux: Here.
23353         * config/m68k/fpgnulib.c: Do not compile extendeed precision
23354         routines on ColdFire targets.
23355
23356 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
23357
23358         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
23359         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
23360         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
23361         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
23362         explicitly set MOTOROLA to 1.
23363         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
23364
23365 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23366             Nathan Sidwell  <nathan@codesourcery.com>
23367
23368         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
23369         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
23370         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
23371         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
23372         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
23373         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
23374         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
23375         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
23376         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
23377         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
23378         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
23379         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
23380         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
23381         (DBX_REGISTER_NUMBER): Delete.
23382         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
23383         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
23384         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
23385
23386 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23387
23388         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
23389         * config/flat.h: New file.
23390         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
23391         OBJECT_FORMAT_FLAT.
23392         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
23393         indirect references for -msep-data or -mid-shared-library.
23394         Do not use PC-relative code addresses either.
23395         * config/m68k/m68k.c (override_options): Restrict -fPIC error
23396         to -mpcrel.
23397         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
23398         for shared libraries and crt1.o for executables.  Use crti.o and
23399         crtbegin.o.
23400         (ENDFILE_SPEC): Use crtend.o and crtn.o.
23401         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
23402         Do not add -elf2flt or -shared-lib-id options here.
23403         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
23404         Pass -shared-lib-id if -mid-shared-library, taking the library
23405         identifier from -mshared-library-id if given, otherwise
23406         defaulting to 0.
23407         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
23408         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
23409         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
23410         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
23411         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
23412         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
23413         and crtend.o.
23414         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
23415         jump sequence for ISA A and ISA A+.
23416         (PICJUMP): Likewise.
23417
23418 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23419
23420         * config.gcc (m68k-*-uclinux*): Base the port on the common
23421         and m68k GNU/Linux files rather than on the generic ELF ones.
23422         * config/m68k/uclinux.h (TARGET_VERSION): Override.
23423         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
23424
23425 2007-01-18  Julian Brown  <julian@codesourcery.com>
23426             Richard Sandiford  <richard@codesourcery.com>
23427
23428         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
23429         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
23430         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
23431         before redefining.
23432         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
23433         80 unconditionally.
23434         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
23435
23436 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
23437
23438         * doc/install.texi: Document m68k-uclinuxoldabi.
23439         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
23440         * config/m68k/uclinux-oldabi.h: New file, copied from
23441         config/m68k/uclinux.h.
23442
23443 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
23444
23445         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
23446         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
23447         (m32r_compute_frame_size): Use unsigned for regno.
23448         (m32r_reload_lr): Use gen_frame_mem.
23449         (pop): New.
23450         (m32r_output_function_epilogue): Don't output the function epilogue
23451         textually here.
23452         (m32r_expand_epilogue): New.
23453         (direct_return): Return false if the function has the interrupt
23454         attribute.
23455         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
23456         * config/m32r/m32r.md (epilogue): New expander.
23457         (return_lr, return_rte): New insns.
23458         (return): Make it expander.
23459         (return_normal): New expander.
23460
23461 2007-01-18  Josh Conner  <jconner@apple.com>
23462
23463         PR target/30485
23464         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
23465         support for UNLE, UNLT, UNGE, and UNGT.
23466
23467 2007-01-18  Jan Hubicka  <jh@suse.cz>
23468
23469         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
23470         * tree-tailcall (add_virtual_phis): Likewise.
23471         (optimize_tail_call): Return TODOs.
23472         (execute_tail_calls): Return TODOs.
23473         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
23474         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
23475         changed.
23476         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
23477         Cleanup cfg using TODO.
23478         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
23479         * passes.c (execute_function_todo): When cleanup did something, remove
23480         unused locals.
23481         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
23482         (make_edges): Don't cleanup_cfg.
23483
23484 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
23485
23486         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
23487         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
23488         operate on the top of stack.
23489         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
23490         register handling of instructions that output to the second
23491         stack slot.
23492         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
23493         (move_for_stack_reg): Special-case check for dead destination
23494         stack slot for constant load of 1.0 inside UNSPEC_TAN.
23495
23496         * config/i386/i386.md (UNSPEC_TAN): New constant.
23497         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
23498         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
23499         to correctly model move of constant 1.0 to top stack slot.
23500         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
23501         (unnamed peephole2 pattern): Remove corresponding peephole2
23502         pattern that optimizes tan insn and loading of constant 1.0.
23503         (tanxf2): Use fptanxf4_i387.
23504         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
23505         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
23506         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
23507         disable patterns for SSE math.
23508         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
23509         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
23510
23511 2007-01-18  Dirk Mueller  <dmueller@suse.de>
23512             Richard Guenther <rguenther@suse.de>
23513
23514         PR diagnostic/8268
23515         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
23516         * common.opt (Warray-bounds): Add new warning option.
23517         * c-opts.c (c_common_handle_option): Define -Warray-bounds
23518         if -Wall is given.
23519         * Makefile.in: make tree-vrp.o depend on toplev.h
23520         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
23521         is enabled.
23522         (check_array_refs, check_array_bounds, check_array_ref): New.
23523
23524 2007-01-18  Jan Hubicka  <jh@suse.cz>
23525
23526         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
23527         (execute_ssa_ccp): Return flags conditionally.
23528         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
23529         changed.
23530         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
23531
23532 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
23533
23534         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
23535         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
23536
23537         * Makefile.c (GTFILES): Add cfglayout.h.
23538         * gengtype.c (open_base_files): Likewise.
23539         * cfglayout.c (cfg_layout_function_footer,
23540         cfg_layout_function_header) Reindent to make gengtype happy.
23541         * cfglayout.h (cfg_layout_function_footer,
23542         cfg_layout_function_header): Add GTY(()) marker.
23543
23544         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
23545
23546 2007-01-18  Ben Elliston  <bje@au.ibm.com>
23547
23548         * genautomata.c (write_automata): Include xstrerror output in the
23549         error message if writing the DFA description file fails.
23550
23551 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
23552
23553         * config/mips/mips-protos.h (mips_output_external): Make it
23554         return void.
23555         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
23556         * config/mips/mips.c (irix_output_external_libcall): Likewise.
23557         (extern_list): Likewise.
23558         (extern_head): Likewise.
23559         (TARGET_ASM_FILE_END): Likewise.
23560         (mips_file_end): Likewise.
23561         (mips_output_external): Rewritten.
23562
23563 2007-01-18  Ben Elliston  <bje@au.ibm.com>
23564
23565         * genpreds.c (write_insn_preds_c): Only write out the function
23566         body for regclass_for_constraint if we have register constraints.
23567
23568 2007-01-17  Tom Tromey  <tromey@redhat.com>
23569
23570         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
23571         * doc/install.texi (Testing): Use sourceware.org.
23572         (Binaries): Likewise.
23573         (Specific): Likewise.
23574         * doc/contrib.texi (Contributors): Use sourceware.org.
23575
23576 2007-01-17  Anatoly Sokolov <aesok@post.ru>
23577
23578         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
23579         (AVR_ENHANCED): Rename to ...
23580         (AVR_HAVE_MUL): ... new.
23581         (avr_enhanced_p): Rename to ...
23582         (avr_have_mul_p): ... new.
23583         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
23584         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
23585         * config/avr/avr.c (avr_enhanced_p): Rename to ...
23586         (avr_have_mul_p): ... new.
23587         (base_arch_s): Rename 'enhanced' to 'have_mul'.
23588         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
23589         'avr_enhanced_p' and 'enhanced'.
23590         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
23591         AVR_HAVE_MUL instead of AVR_ENHANCED.
23592         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
23593         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
23594         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
23595         instead of AVR_ENHANCED.
23596         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
23597         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
23598         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
23599
23600 2007-01-17  Ian Lance Taylor  <iant@google.com>
23601
23602         * vec.h (VEC_reserve_exact): Define.
23603         (vec_gc_p_reserve_exact): Declare.
23604         (vec_gc_o_reserve_exact): Declare.
23605         (vec_heap_p_reserve_exact): Declare.
23606         (vec_heap_o_reserve_exact): Declare.
23607         (VEC_OP (T,A,reserve_exact)): New static inline function, three
23608         versions.
23609         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
23610         negative parameter.
23611         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
23612         (VEC_OP (T,A,copy)) [all versions]: Likewise.
23613         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
23614         * vec.c (calculate_allocation): Add exact parameter.  Change all
23615         callers.
23616         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
23617         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
23618         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
23619         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
23620         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
23621         (vec_heap_p_reserve_exact): New function.
23622         (vec_heap_o_reserve_exact): New function.
23623
23624 2007-01-17  Jan Hubicka  <jh@suse.cz>
23625
23626         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
23627
23628 2007-01-17  Eric Christopher  <echristo@apple.com>
23629
23630         * config.gcc: Support core2 processor.
23631
23632 2007-01-16  Jan Hubicka  <jh@suse.cz>
23633
23634         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
23635         the names, just unlink the chain so we don't crash on dangling
23636         pointers
23637         to dead SSA names.
23638
23639 2007-01-16  Jan Hubicka  <jh@suse.cz>
23640
23641         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
23642         * tree-pass.h: Reorder to make IPA passes appear toegher.
23643         (pass_early_inline, pass_inline_parameters, pass_apply_inline):
23644         Declare.
23645         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
23646         parameters, do not call early inliner.
23647         * ipa-inline.c: Update comments.  Include tree-flow.h
23648         (cgraph_decide_inlining): Do not compute inlining parameters.
23649         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
23650         be called with function context set up.
23651         (pass_ipa_inline): Remove unreachable functions before pass.
23652         (cgraph_early_inlining): Simplify assuming to be called from the
23653         PM as local pass.
23654         (pass_early_inline): New pass.
23655         (cgraph_gate_ipa_early_inlining): New gate.
23656         (pass_ipa_early_inline): Turn into simple wrapper.
23657         (compute_inline_parameters): New function.
23658         (gate_inline_passes): New gate.
23659         (pass_inline_parameters): New pass.
23660         (apply_inline): Move here from tree-optimize.c
23661         (pass_apply_inline): New pass.
23662         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
23663         transforming.
23664         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
23665         doing them by hand.
23666         (tree_function_versioning): Do not allocate dummy struct function.
23667         * tree-inline.h (optimize_inline_calls): Update prototype.
23668         * tree-optimize.c (execute_fixup_cfg): Export.
23669         (pass_fixup_cfg): Remove
23670         (tree_rest_of_compilation): Do not apply inlines.
23671         * tree-flow.h (execute_fixup_cfg): Declare.
23672         * Makefile.in (gt-passes.c): New.
23673         * passes.c: Include gt-passes.h
23674         (init_optimization_passes): New passes.
23675         (nnodes, order): New static vars.
23676         (do_per_function_toporder): New function.
23677         (execute_one_pass): Dump current pass here.
23678         (execute_ipa_pass_list): Don't dump current pass here.
23679
23680 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
23681
23682         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
23683         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
23684
23685 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
23686
23687         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
23688         (strong_alias): Define.
23689         (__gcc_qmul): Provide non-FMA for soft-float.
23690         (__gcc_qdiv): Same.
23691         (__gcc_qneg): New.
23692         (__gcc_qeq): New.
23693         (__gcc_qle): New.
23694         (__gcc_qge): New.
23695         (__gcc_qunord): New.
23696         (__gcc_stoq): New.
23697         (__gcc_dtoq): New.
23698         (__gcc_qtos): New.
23699         (__gcc_qtod): New.
23700         (__gcc_qtoi): New.
23701         (__gcc_qtou): New.
23702         (__gcc_itoq): New.
23703         (__gcc_utoq): New.
23704         (fmsub): New.
23705         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
23706         soft-float functions.
23707         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
23708         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
23709         about long double soft float.
23710
23711 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
23712             Tehila Meyzels  <tehila@il.ibm.com>
23713
23714         * tree-vectorizer.h (is_pattern_stmt_p): New.
23715         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
23716         formatting (tabs instead of spaces). Cleanup and clarify setting
23717         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
23718         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
23719         (vectorizable_type_demotion): Check that types are integral.
23720         (vectorizable_type_promotion): Likewise.
23721         (vectorizable_store): Fix typo.  Eliminate new-line at end of
23722         comments.
23723
23724 2007-01-16  Jan Hubicka  <jh@suse.cz>
23725
23726         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
23727         cgraph edges too.
23728
23729 2007-01-15  Eric Christopher  <echristo@apple.com>
23730
23731         * ifcvt.c: Include vec.h, vecprim.h.
23732         (check_cond_move_block): New argument regs.
23733         Reorganize. Add registers used to regs.
23734         (cond_move_process_if_block): Use regs set above as
23735         loop bounds.
23736
23737 2007-01-15  Eric Christopher  <echristo@apple.com>
23738
23739         * config/darwin.h: Update copyright.
23740         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
23741         (LINK_COMMAND_SPEC): Add -u.
23742         (LINK_SPEC): Fix umbrella for above.
23743
23744 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
23745
23746         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
23747         glibc CVS.
23748
23749 2007-01-15  Tom Tromey  <tromey@redhat.com>
23750
23751         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
23752         * doc/install.texi (Testing): Don't mention jacks.
23753         (Configuration): Document --enable-java-maintainer-mode.  Move
23754         --with-java-home to libgcj-specific section.  Document
23755         --with-ecj-jar.
23756         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
23757
23758 2007-01-15  Jan Hubicka  <jh@suse.cz>
23759
23760         * tree-ssa-dce.c (DCE_TODOs): New.
23761         (propagate_necessity): Return if something changed.
23762         (eliminate_unnecessary_stmts): Likewise.
23763         (perform_tree_ssa_dce): Return TODO flags when needed.
23764         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
23765
23766 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
23767
23768         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
23769         (fyl2x_extend<mode>xf3_i387): New insn pattern.
23770         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
23771         patterns using X87MODEF12 mode macro.  Extend operand 1
23772         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
23773         (log10<mode>2): Ditto.
23774         (log2<mode>2): Ditto.
23775         (log1p<mode>2): Ditto.
23776         (logb<mode>2): Ditto.
23777         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
23778         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
23779         (*fxtractxf3_i387): Rename from *fxtractxf3.
23780         (fxtract_extend<mode>xf3_i387): New insn pattern.
23781         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
23782         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
23783         and gen_fyl2xxf3_i387().
23784
23785 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
23786
23787         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
23788         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
23789         get_loop_exit_edges.  Changed return type to bool.
23790         * cfgloop.h (fix_loop_placement): Declaration removed.
23791
23792 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
23793
23794         * param.h (MIN_VECT_LOOP_BOUND): New.
23795         * params.def (MIN_VECT_LOOP_BOUND): New.
23796         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
23797         argument - minimum threshold for number of iterations.
23798         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
23799         argument to declaration.
23800         * tree-vect-analyze.c (vect_analyze_operations): Check value of
23801         MIN_VECT_LOOP_BOUND.
23802         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
23803         slpeel_tree_peel_loop_to_edge with additional argument.
23804         (vect_do_peeling_for_alignment): Likewise.
23805         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
23806
23807 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
23808
23809         PR target/30413
23810         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
23811         operands of size 1.
23812
23813 2007-01-14  Jan Hubicka  <jh@suse.cz>
23814
23815         * tree-dfa.c (remove_referenced_var): New function.
23816         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
23817         prune referenced vars list too.
23818         * tree-flow.h (remove_referenced_var): Declare.
23819
23820 2007-01-14  Jan Hubicka  <jh@suse.cz>
23821
23822         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
23823         separately.
23824         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
23825         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
23826         * except.h (verify_eh_throw_table_statements): Kill prototype.
23827         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
23828         into call exrepssions.
23829         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
23830         eh trhow verifier.
23831         * tree-cfg.c: Include pointer-set.h.
23832         (verify_node_sharing): Work on pointer set.
23833         (verify_eh_throw_stmt_node): New.
23834         (verify_stmts): Use pointers sets, verify throw_stmt.
23835
23836 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
23837
23838         * ipa-reference.c (analyze_function): Consider also addresses taken
23839         in phi nodes.
23840
23841 2007-01-12  Roger Sayle  <roger@eyesopen.com>
23842
23843         * c-typeck.c (null_pointer_constant_p): Replace use of
23844         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
23845         (build_c_cast): Likewise.
23846
23847 2007-01-12  Roger Sayle  <roger@eyesopen.com>
23848
23849         * tree.h (force_fit_type_double): Remove unused final argument.
23850         * c-common.c (constant_expression_warning): Replace use of
23851         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
23852         (convert_and_check): Likewise.
23853         (shorten_compare): Update call to force_fit_type_double.
23854         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
23855         * convert.c (convert_to_pointer): Update call to
23856         force_fit_type_double.
23857         * fold-const.c (force_fit_type_double): Remove overflowed_const
23858         argument.
23859         (int_const_binop, fold_convert_const_int_from_int,
23860         fold_convert_const_int_from_real, fold_div_compare,
23861         fold_sign_changed_comparison, fold_unary, fold_negate_const,
23862         fold_abs_const, fold_not_const): Remove the final argument from
23863         calls to force_fit_type_double.
23864
23865 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23866
23867         * configure.ac: Set insn to "nop" for spu-*-* also.
23868         * configure: Regenerate.
23869
23870 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
23871
23872         * builtins.def : Add BUILT_IN_FREE.
23873
23874 2007-01-12  Jan Hubicka  <jh@suse.cz>
23875
23876         PR tree-optimization/30443
23877         * tree-inline.c (tree_function_versioning): Do not optimize when
23878         cloning for inlining.
23879
23880 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
23881
23882         * doc/loop.texi: Document recording of loop exits.
23883         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
23884         (update_single_exits_after_duplication,
23885         update_single_exit_for_duplicated_loop,
23886         update_single_exit_for_duplicated_loops): Removed.
23887         (duplicate_loop_to_header_edge): Do not call
23888         update_single_exits_after_duplication and
23889         update_single_exit_for_duplicated_loops.
23890         (loop_version): Do not update single_exit information.
23891         (fix_loop_structure): Use record_loop_exits instead of
23892         mark_single_exit_loops.
23893         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
23894         the lists of loop exits.
23895         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
23896         split_edge, merge_blocks): Update the lists of loop exits.
23897         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
23898         loop_optimizer_init.
23899         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
23900         of mark_single_exit_loops.
23901         (loop_optimizer_finalize): Call release_recorded_exits.
23902         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
23903         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
23904         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
23905         update single exit information.
23906         * lambda-code.c (perfect_nestify): Ditto.
23907         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
23908         (mark_single_exit_loops): Removed.
23909         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
23910         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
23911         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
23912         functions.
23913         (get_loop_exit_edges, single_exit): Use recorded exit lists.
23914         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
23915         (verify_loop_structure): Verify consistency of the exit lists.
23916         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
23917         (set_single_exit): Removed.
23918         * cfgloop.h (struct loop_exit): New function.
23919         (struct loop): single_exit_ field replaced by exits field.
23920         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by
23921         LOOPS_HAVE_RECORDED_EXITS.
23922         (struct loops): Added exits hash.
23923         (mark_single_exit_loops, set_single_exit): Declaration removed.
23924         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
23925
23926 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
23927
23928         * doc/invoke.texi: Avoid use of @headitem.
23929
23930 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
23931
23932         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
23933
23934 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
23935
23936         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
23937         list of targets.
23938
23939 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
23940             Richard Sandiford  <richard@codesourcery.com>
23941
23942         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
23943         * config/m68k/m68k.opt: Resort options.
23944         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
23945
23946 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
23947             Richard Sandiford  <richard@codesourcery.com>
23948
23949         * doc/invoke.texi: Document the macros that are defined by
23950         m68k's -mtune and -mhard-float options.
23951         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
23952         (m68k_cpp_cpu_family): Likewise.
23953         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
23954         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
23955         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
23956         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
23957         (m68k_cpp_cpu_family): Likewise.
23958
23959 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
23960
23961         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
23962         macros besides mc68000 as tuning macros.  Use a switch statement
23963         to set them and mcpu32.
23964
23965 2007-01-12  Julian Brown  <julian@codesourcery.com>
23966
23967         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
23968         (TARGET_68040_ONLY): Rename to...
23969         (TARGET_68040): ...this.
23970         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
23971         * config/m68k/m68k.md: Likewise.
23972
23973 2007-01-12  Julian Brown  <julian@codesourcery.com>
23974             Nathan Sidwell  <nathan@codesourcery.com>
23975             Richard Sandiford  <richard@codesourcery.com>
23976
23977         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
23978         the -mcpu= argument associated with the --with-cpu setting.
23979         Define M68K_DEFAULT_TUNE to the default -mtune= option,
23980         if different from the one implied by the -mcpu setting.
23981         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
23982         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
23983         * doc/invoke.texi: Mention ColdFire in the introduction to the
23984         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
23985         -mno-div and -mhard-float options.  Make -m68881 a synonym for
23986         -mhard-float.  Document the previously-undocumented -m5206e,
23987         -m528x, -m5307 and -m5407 options.  Tweak the existing option
23988         documentation for consistency.
23989         * doc/install.texi: Mention new --with-cpu arguments.
23990         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
23991         default CPU if neither -mcpu nor -march are specified.
23992         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
23993         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
23994         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
23995         using m68k_tune to decide between families that implement the
23996         same ISA.  Use m68k_tune to set __mcfv4e__.
23997         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
23998         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
23999         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
24000         (FL_ISA_C, FL_ISA_MMU): New macros.
24001         (MASK_COLDFIRE): Delete.
24002         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
24003         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
24004         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
24005         (TARGET_HARD_FLOAT): Do not define here.
24006         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
24007         (TUNE_68000): New macro.
24008         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
24009         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
24010         (TUNE_CFV2): Redefine in terms of m68k_tune.
24011         (uarch_type, target_device, fpu_type): New enums.
24012         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
24013         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
24014         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
24015         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
24016         (FL_FOR_isa_c): New macros.
24017         (m68k_isa): New enum.
24018         (m68k_target_selection): New structure.
24019         (all_devices, all_isas, all_microarchs): New tables.
24020         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
24021         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
24022         (MASK_ALL_CPU_BITS): Delete.
24023         (m68k_find_selection): New function.
24024         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
24025         Map the legacy target options to a combination of the new ones.
24026         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
24027         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
24028         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
24029         settings.
24030         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
24031         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
24032         properties.
24033         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
24034         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
24035         * config/m68k/m68k-devices.def: New file.
24036
24037 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
24038             Nathan Sidwell  <nathan@codesourcery.com>
24039
24040         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
24041         (SUBTARGET_EXTRA_SPECS): New macros.
24042         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
24043         use %(asm_cpu_spec) instead.
24044         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
24045         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
24046         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
24047         (EXTRA_SPECS): Rename to...
24048         (SUBTARGET_EXTRA_SPECS): ...this.
24049
24050 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
24051             Richard Sandiford  <richard@codesourcery.com>
24052             Julian Brown  <julian@codesourcery.com>
24053
24054         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
24055         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
24056         to the configuration's default CPU.
24057         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
24058         Remove default masks.
24059         (m680[012]0-*-*): Set the default with_cpu to the first part of
24060         the target name.
24061         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
24062         (m68k*-*-linux): Extend the --with-cpu handling to...
24063         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
24064         and m68010.  Don't set target_cpu_default2.
24065         * doc/install.texi: Document --with-cpu for m68k.
24066         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
24067         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
24068         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
24069         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
24070         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
24071         (ASM_SPEC): Remove use of %(asm_cpu_default).
24072         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
24073         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
24074         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
24075         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
24076         __HAVE_FPU__ if TARGET_HARD_FLOAT.
24077         (TARGET_DEFAULT): Delete.
24078         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
24079         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
24080         (CPP_CPU_SPEC): Delete.
24081         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
24082         the appropriate string.
24083         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
24084         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
24085         (ASM_SPEC): Don't use %(asm_default_spec).
24086         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
24087         TARGET_DEFAULT and add MASK_68881.
24088         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
24089
24090 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
24091
24092         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
24093         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
24094         MASK_68010 alongside MASK_68020.
24095         * doc/invoke.texi: Document -m68010.
24096         * config/m68k/m68k.opt (m68010): New.
24097         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
24098         if TUNE_68010.
24099         (TUNE_68010): New macro.
24100         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
24101         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
24102         (M68K_CPU_m68332): Add MASK_68010.
24103         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
24104         fallback definition.
24105         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
24106         defines.
24107         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
24108         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
24109         to all entries that use MASK_68020.
24110         (output_move_simode_const, output_move_himode, output_move_qimode)
24111         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
24112         instead of TARGET_68020 to select clr behavior.  Remove comment
24113         about there being no TARGET_68010.
24114         * config/m68k/m68k.md: Likewise throughout.
24115
24116 2007-01-12  Julian Brown  <julian@codesourcery.com>
24117
24118         * config/m68k/m68k.h (TARGET_ISAB): New macro.
24119         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
24120         * config/m68k/m68k.md: Likewise.
24121
24122 2007-01-12  Julian Brown  <julian@codesourcery.com>
24123
24124         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
24125         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
24126
24127 2007-01-12  Julian Brown  <julian@codesourcery.com>
24128
24129         * config/m68k/m68k.h (TUNE_68040_60): New macro.
24130         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
24131         * config/m68k/m68k.md: Likewise.
24132
24133 2007-01-12  Julian Brown  <julian@codesourcery.com>
24134             Richard Sandiford  <richard@codesourcery.com>
24135
24136         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
24137         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
24138         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
24139         TARGET_CPU32.
24140         (TARGET_CPU32): Rename to...
24141         (TUNE_CPU32): ...this.
24142         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
24143         (TUNE_CFV2): New macros.
24144         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
24145         remove conditions that are implied by TARGET_68020.
24146         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
24147         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
24148         (m68k_output_function_epilogue): Likewise.
24149         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
24150         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
24151         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
24152         non-68000 timings.  Refactor multiplication and division costs.
24153         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
24154         TUNE_CPU32 instead of TARGET_CPU32.
24155         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
24156         and TUNE_68060 instead of TARGET_68060.
24157         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
24158         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
24159         TARGET_CPU32.
24160         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
24161         && !TARGET_COLDFIRE" to choose between moveq and clr.
24162         Likewise in the unnamed movsf pattern.
24163         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
24164         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
24165         ashiftrt pattern.
24166
24167 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
24168
24169         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
24170         of tabbing before backslashes.
24171
24172 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24173
24174         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
24175         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
24176         (ASM_OUTPUT_INTERNAL_LABEL): Define.
24177
24178 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
24179
24180         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
24181         find_interesting_uses_cond.
24182         (find_interesting_uses_cond): Use extract_cond_operands.
24183         (rewrite_use_compare): Use extract_cond_operands and
24184         force_gimple_operand_bsi.  Do not call update_stmt.
24185         (determine_use_iv_cost_condition): Use extract_cond_operands.
24186         Return cheaper of using original bound and changing the exit bound.
24187
24188 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
24189
24190         PR tree-optimization/29516
24191         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
24192         most_expensive_mult_to_index, addr_to_parts,
24193         create_mem_ref, maybe_fold_tmr): Make the type of
24194         fields of TARGET_MEM_REF sizetype.
24195         (move_fixed_address_to_symbol, move_pointer_to_base):
24196         New functions.
24197         * tree.def (TARGET_MEM_REF): Add comment on types of
24198         the operands.
24199
24200 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
24201
24202         * c-common.c (vector_types_convertible_p): Treat opaque types as
24203         always convertible if they have the same size, but not otherwise.
24204
24205 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
24206
24207         * ifcvt.c (struct noce_if_info): Add comments to the fields.
24208         Remove the b_unconditional field.
24209         (noce_try_sign_mask): Do not look at b_unconditional.
24210         (noce_process_if_block): Do not use merge_if_blocks.  Update
24211         the CFG here.  Do not set b_unconditional.
24212         (cond_move_process_if_block): Likewise.
24213         (find_cond_trap): Likewise.
24214         (check_cond_move_block): Require simple jump insns at the end
24215         of the basic block.
24216
24217 2007-01-11  Jan Hubicka  <jh@suse.cz>
24218
24219         PR tree-optimization/1046
24220         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
24221         when alias info is not ready.
24222         (pass_tail_recursion): Do not require aliasing.
24223         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
24224         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
24225         * tree-ssa-copy.c (pass_copy_prop): Likewise.
24226         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
24227         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
24228         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
24229         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
24230         before inlining.
24231         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
24232         When aliasing is not build, mark statement as volatile.
24233
24234 2007-01-11  Tom Tromey  <tromey@redhat.com>
24235
24236         PR preprocessor/15185, PR preprocessor/20989:
24237         * doc/cppopts.texi <-MT>: Update description of algorithm for
24238         computing default target.
24239         <-M, -MD>: Reword "basename" text.
24240
24241 2007-01-11  Roger Sayle  <roger@eyesopen.com>
24242
24243         * builtins.c (expand_builtin_pow, expand_builtin_powi,
24244         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
24245         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
24246         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
24247         fold_builtin_bswap, real_constp, fold_builtin_pow,
24248         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
24249         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
24250         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
24251         * convert.c (convert_to_pointer): Likewise.
24252         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
24253         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
24254         const_binop, fold_convert_const_int_from_int,
24255         fold_convert_const_int_from_real,
24256         fold_convert_const_real_from_real, sign_bit_p,
24257         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
24258         fold_sign_changed_comparison, fold_unary, fold_comparison,
24259         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
24260         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
24261         * print-tree.c (print_node_brief, print_node): Likewise.
24262         * stor-layout.c (place_field, layout_type): Likewise.
24263         * tree-chrec.c (keep_cast): Likewise.
24264         * tree.c (build_vector, build_real, build_real_from_int_cst,
24265         build_complex): Likewise.
24266
24267 2007-01-11  Roger Sayle  <roger@eyesopen.com>
24268
24269         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
24270         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
24271
24272 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
24273
24274         * configure.ac (strict1_warn): Rename to strict_warn.
24275         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
24276         cc_set_by_configure, quoted_cc_set_by_configure,
24277         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
24278         all_boot_languages, all_stagestuff): Remove.
24279         (target_list): Remove bootstrap targets.
24280         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
24281         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
24282         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
24283         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
24284         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
24285         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
24286         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
24287         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
24288         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
24289         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
24290         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
24291         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
24292         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
24293         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
24294         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
24295         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
24296         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
24297         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
24298         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
24299         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
24300         (mostlyclean): Adjust.
24301         (clean, distclean): Don't mention bootstrap stuff.
24302         * configure: Regenerate.
24303         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
24304         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
24305         treelang/config-lang.in (stagestuff): Remove.
24306         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
24307         stageprofile, stagefeedback, stagestuff): Remove mention.
24308
24309 2007-01-11  Nick Clifton  <nickc@redhat.com>
24310
24311         * config/mcore/predicates.md (mcore_general_movesrc_operand):
24312         Accept CONSTs.
24313         (mcore_general_movdst_operand): Do not accept CONST_INTs.
24314         (mcore_arith_K_S_operand): Run the test for the S constraint not
24315         the test for the M constraint.
24316         (mcore_addsub_operand): Do not accept integer values that are
24317         larger than 32 bits.
24318         * config/mcore/mcore.md: Remove unused constraints from split.
24319         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
24320         (addsi3): Likewise.
24321         (allocate_stack): Likewise.
24322         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
24323         operands to 32 bits.
24324         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
24325         INTVAL.
24326         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
24327         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
24328         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
24329         mcore_output_bclri, mcore_output_andn, output_inline_const,
24330         mcore_output_move, mcore_output_movedouble): Likewise.
24331         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
24332         (output_inline_const): Likewise.
24333         (output_inline_const): Fix format strings used in sprintf
24334         statements.
24335         * config/mcore/mcore-protos.h: Update prototypes for changed
24336         functions in mcore.c.
24337         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
24338         HOST_WIDE_INT and not int.
24339         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
24340         CONST_OK_FOR_N): Likewise.
24341         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
24342         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
24343         an INTVAL.
24344
24345 2007-01-10  Jan Hubicka  <jh@suse.cz>
24346
24347         * tree-vrp.c (remove_range_assertions): Release defs.
24348         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
24349         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
24350
24351 2007-01-10  Paul Brook  <paul@codesourcery.com>
24352
24353         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
24354         * config/arm/arm.md (mulsi3subsi): New insn.
24355
24356 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
24357
24358         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
24359         (tree_transform_and_unroll_loop): New.
24360         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
24361         Declare.
24362
24363 2007-01-10  Robert Kennedy <jimbob@google.com>
24364
24365         * fold-const.c (fold_comparison): Fold comparisons like (x *
24366         1000 < 0) to (x < 0).
24367
24368 2007-01-10  Ian Lance Taylor  <iant@google.com>
24369
24370         * tree-pretty-print.c (dump_generic_node): Print parentheses when
24371         operands have the same priority.
24372
24373 2007-01-10  Tom Tromey  <tromey@redhat.com>
24374
24375         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
24376         (fold_binary): Likewise.
24377         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
24378         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
24379         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
24380         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
24381         * langhooks.h (struct lang_hooks): Removed field
24382         'can_use_bit_fields_p'.
24383
24384 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
24385
24386         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
24387
24388 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
24389
24390         * function.c (get_last_funcdef_no): New function.
24391         * function.h (get_last_funcdef_no): Declare.
24392         * tree-inline.c (initialize_cfun): Add initialization.
24393         (tree_function_versioning): Cleanup.
24394
24395 2007-01-10  Jan Hubicka  <jh@suse.cz>
24396
24397         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
24398         PHIs.
24399
24400 2007-01-10  Sa Liu  <saliu@de.ibm.com>
24401             Ben Elliston  <bje@au.ibm.com>
24402
24403         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
24404         for SAVE_NONLOCAL and Pmode for any other save level.
24405         * spu-protos.h (spu_restore_stack_block): Declare.
24406         * spu.md (save_stack_block): Remove.
24407         (restore_stack_block): Call spu_restore_stack_block.
24408         * spu.c (spu_restore_stack_block): New function.
24409         (spu_expand_epilogue): Remove old comment.
24410
24411 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
24412
24413         PR tree-optimization/30322
24414         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
24415         (cand_value_at): Return the value as aff_tree.
24416         (may_eliminate_iv): Convert the bound from aff_tree to tree.
24417         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
24418         aff_combination_mult): New functions.
24419         (aff_combination_add): Use aff_combination_add_cst.
24420         (aff_combination_convert): Allow conversions to a wider type.
24421         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
24422         * tree-affine.h (aff_combination_mult): Declare.
24423
24424 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
24425
24426         * doc/tm.texi: Update documentation to reflect reality of exec
24427         and start file search behaviours. Update copyright year.
24428         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
24429         header file directories.
24430
24431 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
24432
24433         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
24434         (*cosxf2): Rename to cosxf2_i387.
24435         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
24436         using X87MODEF12 mode macro. Rename patterns to
24437         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
24438         for SSE math.
24439         (*cosdf2, *cossf2): Ditto.
24440         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
24441         to match extended input operands.
24442         (sincos<mode>3): New expander.
24443         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
24444         insn patterns and corresponding splitters.
24445
24446 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
24447
24448         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
24449         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
24450
24451 2007-01-09  Nicolas Pitre  <nico@cam.org>
24452
24453         PR target/30173
24454         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
24455
24456 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
24457
24458         * target.h (struct gcc_target): New field library_rtti_comdat.
24459         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
24460         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
24461         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
24462         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
24463
24464 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
24465
24466         * doc/invoke.texi (Optimize Options): Correct description of -O0.
24467
24468 2007-01-08  Richard Guenther  <rguenther@suse.de>
24469
24470         * tree.h (force_fit_type_double): Export.
24471         (force_fit_type): Remove.
24472         * fold-const.c (force_fit_type_double): New function.
24473         (force_fit_type): Remove.
24474         (int_const_binop): Use it.
24475         (fold_convert_const_int_from_int): Likewise.
24476         (fold_convert_const_int_from_real): Likewise.
24477         (fold_div_compare): Likewise.
24478         (fold_sign_changed_comparison): Likewise.
24479         (fold_unary): Likewise.
24480         (fold_negate_const): Likewise.
24481         (fold_abs_const): Likewise.
24482         (fold_not_const): Likewise.
24483         * c-common.c (shorten_compare): Use force_fit_type_double.
24484         * convert.c (convert_to_pointer): Likewise.
24485
24486 2007-01-08  Richard Guenther  <rguenther@suse.de>
24487
24488         * tree.h (build_int_cst_wide_type): Export.
24489         * tree.c (build_int_cst_wide_type): New function.
24490         (build_int_cst_wide): Fix comment.
24491         * builtins.c (fold_builtin_object_size): Use build_int_cst
24492         to build -1 or 0 of the correct type.  Use fit_double_type
24493         to check for overflow.
24494         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
24495         to build the mask.
24496         (decode_field_reference): Likewise.
24497         (all_ones_mask_p): Likewise.
24498         (native_interpret_int): Use build_int_cst_wide_type.
24499         (fold_binary): Use build_int_cst_type to build an all-ones
24500         value.
24501         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
24502
24503 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
24504
24505         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
24506
24507 2007-01-09  Ben Elliston  <bje@au.ibm.com>
24508
24509         * genautomata.c (STATS_OPTION): New option.
24510         (stats_flag): New flag.
24511         (gen_automata_option): Handle it.
24512         (initiate_automaton_gen): Ditto.
24513         (write_automata): Output statistics only if stats_flag is
24514         set. Likewise, output time statistics only if time_flag is set.
24515         * doc/md.texi (Processor pipeline description): Document new flag.
24516
24517 2007-01-08  Richard Guenther  <rguenther@suse.de>
24518
24519         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
24520         * tree.c (build_int_cst_type): Likewise.
24521         (size_in_bytes): Don't call force_fit_type on the result.
24522         (int_fits_type_p): Use fit_double_type.
24523         * fold-const.c (fit_double_type): New function.
24524         (force_fit_type): Use it.
24525         * tree.h (fit_double_type): Export.
24526
24527 2007-01-08  Jan Hubicka  <jh@suse.cz>
24528
24529         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
24530         * ipa.c (function_and_variable_visibility): Fix return type.
24531
24532 2007-01-08  Richard Guenther  <rguenther@suse.de>
24533
24534         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
24535         of offset to build the index.
24536         * tree-pretty-print.c (dump_generic_node): Don't build negated
24537         const just for printing.
24538         * c-pretty-print.c (pp_c_integer_constant): Likewise.
24539         * builtins.c (fold_builtin_int_roundingfn): Check if result
24540         fits the type by using force_fit_type and comparing the result.
24541         * predict.c (predict_loops): Use compare_tree_int for comparison.
24542         * tree.c (build_int_cst): Fall back to integer_type_node for
24543         NULL_TREE type.
24544         (build_int_cst_wide): Assert type is non-null.
24545
24546 2007-01-08  Roberto Costa  <roberto.costa@st.com>
24547
24548         * tree-vrp.c (extract_range_from_cond_expr): New.
24549         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
24550         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
24551         as expressions.
24552         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
24553         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
24554         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
24555         used as expressions.
24556         * tree-object-size.c (cond_expr_object_size): New.
24557         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
24558
24559 2007-01-08  Jan Hubicka  <jh@suse.cz>
24560
24561         * tree-ssa-forwprop.c (forward_propagate_into_cond,
24562         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
24563         statement.
24564
24565 2007-01-08  Richard Guenther  <rguenther@suse.de>
24566
24567         PR tree-optimization/23603
24568         * tree-vrp.c (set_value_range_to_truthvalue): New function.
24569         (extract_range_from_binary): Fall back to truthvalue instead of
24570         varying for TRUTH_*_EXPR.
24571         (extract_range_from_comparison): Fall back to truthvalue instead of
24572         varying.
24573         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
24574         if all visited PHI values were constant.
24575
24576 2007-01-08  Jan Hubicka  <jh@suse.cz>
24577
24578         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
24579         (cgraph_analyze_function): break out from ...
24580         (cgraph_finalize_compilation_unit): ... here.
24581         (cgraph_expand_function): Remove forgoten commented out line.
24582         (cgraph_optimize): Analyze functions.
24583
24584 2007-01-08  Jan Hubicka  <jh@suse.cz>
24585
24586         * tree-pas.h (TODO_remove_function): New flag.
24587         (TODO_update*): Renumber.
24588         (pass_ipa_increase_alignment,
24589         pass_ipa_function_and_variable_visibility): New passes.
24590         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
24591         (cgraph_function_and_variable_visibility): Move to ipa.c
24592         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
24593         cgraph_increase_alignment.
24594         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
24595         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
24596         calling tree-inline.
24597         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
24598         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
24599         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
24600         (gate_increase_alignment): New function.
24601         (pass_ipa_increase_alignment): New pass.
24602         * ipa.c: Inline tree-pass.h and timevar.h
24603         (function_and_variable_visibility): Move here from cgraphunit.c
24604         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
24605         * passes.c (init_optimization_passes): Add the two new passes.
24606         (execute_todo): Handle cgraph_remove_functions.
24607
24608 2007-01-08  Nick Clifton  <nickc@redhat.com>
24609
24610         * config/frv/predicates.md (reg_or_0_operand): Accept
24611         CONST_DOUBLEs.
24612
24613 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
24614
24615         * config/bfin/rtems.h, config/bfin/t-rtems: New.
24616         * config.gcc: Add bfin*-rtems*.
24617
24618 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
24619
24620         * c.opt: Add -flax-vector-conversions.
24621         * c-typeck.c (convert_for_assignment): Pass flag to
24622         vector_types_convertible_p to allow emission of note.
24623         (digest_init): Likewise.
24624         * c-opts.c: Handle -flax-vector-conversions.
24625         * c-common.c (flag_lax_vector_conversions): New.
24626         (vector_types_convertible_p): Unless -flax-vector conversions
24627         has been passed, disallow conversions between vectors with
24628         differing numbers of subparts and/or element types.  If such
24629         a conversion is disallowed, possibly emit a note on the first
24630         occasion only to inform the user of -flax-vector-conversions.
24631         The new last argument specifies this.
24632         * c-common.h (flag_lax_vector_conversions): New.
24633         (vector_types_convertible_p): Add extra argument.
24634         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
24635         char_type_node for V*QI type vectors.
24636         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
24637         Update to satisfy new typechecking rules.
24638         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
24639         C and C++ variants.
24640         * doc/invoke.texi (C Dialect Options): Document
24641         -flax-vector-conversions.
24642
24643 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
24644
24645         PR tree-optimization/29877
24646         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
24647         a register variable on the RHS to not be replaceable.
24648
24649 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
24650         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
24651         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
24652         const_simm15, const_pow2, const_npow2): Added.
24653         * config/score/misc.md (insv, extv, extzv, movmemsi,
24654         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
24655         * config/score/score.c (score_address_cost, score_select_cc_mode):
24656         Added.
24657         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
24658         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
24659         Update score_print_operand.
24660         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
24661         Adjust register allocate order and update some macro define.
24662         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
24663         mdx_block_move_straight, mdx_block_move_loop_head,
24664         mdx_block_move_loop_body, mdx_block_move_loop_foot,
24665         mdx_block_move_loop, mdx_block_move): Added.
24666         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
24667         mdp_limm): Updated and fix some bug and typo.
24668         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
24669         (movsf, movdf, doloop_end): Added.
24670
24671 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
24672
24673         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
24674         config/arm/thumb2.md: Fix comment typos.
24675         * doc/extend.texi: Fix a typo.
24676
24677 2007-01-07  Eric Christopher  <echristo@apple.com>
24678
24679         * configure.ac: Check for __stack_chk_fail for darwin.
24680         * configure: Regenerate.
24681
24682 2007-01-07  Richard Guenther  <rguenther@suse.de>
24683
24684         * tree-vrp.c (extract_range_from_assert): CSE calls to
24685         compare_values where possible.
24686         (extract_range_from_unary_expr): Likewise.
24687
24688 2007-01-07  Anatoly Sokolov <aesok@post.ru>
24689
24690         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
24691         * config/avr/avr.c (call_insn_operand): Delete function.
24692         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
24693         instead of register number. Use predicates.
24694         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
24695         call_insn_operand): Add.
24696
24697 2007-01-06  Jan Hubicka  <jh@suse.cz>
24698
24699         * tree-pass.h (pass_build_cgraph_edges): Declare.
24700         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
24701         (visited_nodes): Remove.
24702         (cgraph_create_edges): Move to cgraphbuild.c; rename to
24703         build_cgrpah_edges; make visited_nodes local.
24704         (cgraph_process_new_functions): DO not call initialize_inline_failed.
24705         (record_references_in_initializer): Move to cgraphbuild.c
24706         (initialize_inline_failed, rebuild_cgraph_edges,
24707         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
24708         (verify_cgraph_node): Make visited_nodes local.
24709         (cgraph_analyze_function): Do not call cgraph_create_edges and
24710         initialize_inline_failed.
24711         (cgraph_expand_function): Do not call cgraph_lower_function;
24712         assert that function is already lowered.
24713         * Makefile.in (cgraphbuild.o): New.
24714         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
24715         at the end of lowering passes.
24716
24717 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
24718
24719         * ifcvt.c (cond_move_convert_if_block): New function, code
24720         factored out from...
24721         (cond_move_process_if_block): ...here.  Call the new function
24722         on the THEN and ELSE blocks.
24723         (merge_if_block): Do not copy global_live_at_end, merge_blocks
24724         already takes care of this.
24725
24726 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24727
24728         PR c/19978
24729         * tree.h (TREE_OVERFLOW_P): New.
24730         * c-typeck.c (parser_build_unary_op): Warn only if result
24731         overflowed and operands did not.
24732         (parser_build_binary_op): Likewise.
24733         (convert_for_assignment): Remove redundant overflow_warning.
24734         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
24735
24736 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24737
24738         * c-typeck.c (store_init_value): Split over two lines to follow
24739         the GNU coding style.
24740
24741 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
24742
24743         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
24744         __GXX_EXPERIMENTAL_CXX0X__.
24745         * doc/cpp.texi: Same.
24746
24747 2007-01-05  Richard Guenther  <rguenther@suse.de>
24748
24749         PR middle-end/27826
24750         * tree.c (get_narrower): Do not construct COMPONENT_REFs
24751         with mismatched types.  Instead explicitly build a
24752         conversion NOP_EXPR.
24753
24754 2007-01-05  Ian Lance Taylor  <iant@google.com>
24755
24756         * c-common.c (decl_with_nonnull_addr_p): New function.
24757         (c_common_truthvalue_conversion): Call it.
24758         * c-typeck.c (build_binary_op): Likewise.
24759         * c-common.h (decl_with_nonnull_addr_p): Declare.
24760
24761 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
24762
24763         PR c/30360
24764         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
24765         denom against 0.0.
24766
24767 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
24768
24769         * doc/install.texi (Final install): Document the fact that
24770         the GNAT runtime should not be stripped.
24771
24772 2007-01-04  Jan Hubicka  <jh@suse.cz>
24773
24774         * tree-inline.c (fold_marked_statements): Update operand caches
24775         and EH after folding
24776
24777 2007-01-04  Ian Lance Taylor  <iant@google.com>
24778
24779         * c-common.c (check_function_nonnull): Whitespace fix.
24780
24781 2007-01-04  Jan Hubicka  <jh@suse.cz>
24782
24783         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
24784         comitted older version of patch.
24785         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
24786         function, celanup cfg and collect garbage.
24787
24788 2007-01-04  Mike Stump  <mrs@apple.com>
24789
24790         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
24791         (clean): Likewise.
24792
24793 2007-01-04  Eric Christopher  <echristo@apple.com>
24794
24795         * libgcc2.c (__bswapsi2): Use SItype.
24796         (__bswapdi2): Use DItype.
24797         * libgcc2.h: Update for above.
24798
24799 2007-01-04  Paul Brook  <paul@codesourcery.com>
24800
24801         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
24802         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
24803         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
24804         umulsidi3, umulsidi3adddi, smulsi3_highpart,
24805         umulsi3_highpart): Make conditional on !arm_arch6.
24806         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
24807         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
24808         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
24809         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
24810         umulsi3_highpart_v6): New insns.
24811
24812 2007-01-04  Roger Sayle  <roger@eyesopen.com>
24813
24814         * fold-const.c (fold_convert): When casting an expression to void,
24815         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
24816         have a type.  Instead of attempting to build a NOP_EXPR, return
24817         these "special" trees directly.
24818
24819 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
24820
24821         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
24822         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
24823         rs6000_cost->fp not 0 as adjustment for outer NEG.
24824
24825 2007-01-04  Jan Hubicka  <jh@suse.cz>
24826
24827         * cgraph.c (cgraph_release_function_body): New function.
24828         (cgraph_remove_node): Use it.
24829         * cgraph.h (cgraph_release_function_body): Declare.
24830         * cgraphunit.c (cgraph_expand_function): Use it.
24831         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
24832         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
24833         is initialized and while compilation of other function is running.
24834         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
24835         statement CFG annotations from here to ...
24836         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
24837
24838 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
24839
24840         * cfgloop.h (enum li_flags): Make the constants powers of two.
24841
24842 2007-01-04  Jan Hubicka  <jh@suse.cz>
24843
24844         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
24845         set.
24846         (fold_marked_statements): New function.
24847         (optimize_inline_calls, tree_function_versioning): Fold new statements.
24848         * tree-inline.h (copy_body_data): Add statements_to_fold.
24849
24850 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
24851
24852         * config.gcc: Mention libgcc/config.host.
24853         * Makefile.in: Update comments mentioning libgcc.
24854         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
24855         (all.cross, start.encap, rest.encap, rest.cross): Update
24856         dependencies for libgcc move.
24857         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
24858         (clean-target, clean-target-libgcc): Delete.
24859         (srcdirify, GCC_EXTRA_PARTS): New macros.
24860         (libgcc-support, libgcc.mvars): New rules.
24861         (distclean): Remove mention of mklibgcc.
24862         (install): Don't reference INSTALL_LIBGCC.
24863         (install-common): Don't reference EXTRA_PARTS.
24864         (install-libgcc, install-multilib): Delete rules.
24865         * mklibgcc.in: Delete file.
24866         * doc/configfiles.texi: Don't mention mklibgcc.
24867
24868         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
24869         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
24870         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
24871         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
24872         (mklibgcc, ldblspecs): Likewise.
24873
24874         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
24875         (posixpre.def): Use $(T).
24876         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
24877         (SHLIB_SRC, SHLIB_INSTALL): Delete.
24878         (SHLIB_LINK): Make dummy.
24879         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
24880
24881         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
24882
24883         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
24884         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
24885         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
24886         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
24887
24888         * configure.ac (all_outputs): Remove mklibgcc.
24889         * configure: Regenerated.
24890
24891 2007-01-03  Josh Conner  <jconner@apple.com>
24892
24893         PR middle-end/29683
24894         * calls.c (compute_argument_addresses): Set stack and stack_slot
24895         for partial args, too.
24896         (store_one_arg): Use locate.size.constant for the size when
24897         generating a save_area.
24898
24899 2007-01-03  Robert Kennedy <jimbob@google.com>
24900
24901         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
24902         whose definitions are deleted due to basic block merging.
24903
24904 2007-01-03  Paul Brook  <paul@codesourcery.com>
24905
24906         PR target/16634
24907         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
24908         functions.
24909         (use_return_insn): Return 0 for Thumb interrupt functions.
24910         (print_multi_reg): Add rfe argument for IRQ returns.
24911         (arm_output_epilogue): Pop interrupt return address directly into PC.
24912         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
24913
24914 2007-01-03  Paul Brook  <paul@codesourcery.com>
24915
24916         Merge from sourcerygxx-4_1.
24917         * config/arm/thumb2.md: New file.
24918         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
24919         Thumb-2.
24920         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
24921         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
24922         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
24923         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
24924         tables.
24925         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
24926         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
24927         comptibility.
24928         * config/arm/ieee754-sf.S: Ditto.
24929         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
24930         (thumb1_base_register_rtx_p): ... to this.
24931         (thumb_index_register_rtx_p): Rename...
24932         (thumb1_index_register_rtx_p): ... to this.
24933         (thumb_output_function_prologue): Rename...
24934         (thumb1_output_function_prologue): ... to this.
24935         (thumb_legitimate_address_p): Rename...
24936         (thumb1_legitimate_address_p): ... to this.
24937         (thumb_rtx_costs): Rename...
24938         (thumb1_rtx_costs): ... to this.
24939         (thumb_compute_save_reg_mask): Rename...
24940         (thumb1_compute_save_reg_mask): ... to this.
24941         (thumb_final_prescan_insn): Rename...
24942         (thumb1_final_prescan_insn): ... to this.
24943         (thumb_expand_epilogue): Rename...
24944         (thumb1_expand_epilogue): ... to this.
24945         (arm_unwind_emit_stm): Rename...
24946         (arm_unwind_emit_sequence): ... to this.
24947         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
24948         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
24949         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
24950         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
24951         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
24952         thumb2_output_casesi): New functions.
24953         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
24954         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
24955         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
24956         THUMB2_WORK_REGS): Define.
24957         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
24958         arm_condexec_mask, arm_condexec_masklen)): New variables.
24959         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
24960         (arm_override_options): Check new CPU capabilities.
24961         Set new architecture flag variables.
24962         (arm_isr_value): Handle v7m interrupt functions.
24963         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
24964         Thumb-2.
24965         (const_ok_for_arm): Handle Thumb-2 constants.
24966         (arm_gen_constant): Ditto.  Use movw when available.
24967         (arm_function_ok_for_sibcall): Return false for v7m interrupt
24968         functions.
24969         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
24970         (thumb_find_work_register, arm_load_pic_register,
24971         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
24972         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
24973         print_multi_reg, output_mov_long_double_fpa_from_arm,
24974         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
24975         output_mov_double_fpa_from_arm, output_move_double,
24976         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
24977         output_return_instruction, arm_output_function_prologue,
24978         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
24979         arm_output_mi_thunk, thumb_set_return_address): Ditto.
24980         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
24981         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
24982         (arithmetic_instr, shift_op): Use arm_shift_nmem.
24983         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
24984         '!' and 'L'.
24985         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
24986         (thumb_expand_prologue): Use thumb_set_frame_pointer.
24987         (arm_file_start): Output directive for unified syntax.
24988         (arm_unwind_emit_set): Handle stack alignment instruction.
24989         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
24990         Add v6t2, v7, v7a, v7r and v7m.
24991         (RETLDM): Add Thumb-2 code.
24992         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
24993         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
24994         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
24995         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
24996         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
24997         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
24998         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
24999         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
25000         ADJUST_INSN_LENGTH): Define.
25001         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
25002         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
25003         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
25004         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
25005         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
25006         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
25007         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
25008         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
25009         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
25010         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
25011         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
25012         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
25013         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
25014         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
25015         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
25016         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
25017         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
25018         cortex-m3.
25019         * config/arm/arm-tune.md: Regenerate.
25020         * config/arm/arm-protos.h: Update prototypes.
25021         * config/arm/vfp.md: Enable patterns for Thumb-2.
25022         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
25023         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
25024         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
25025         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
25026         * config/arm/libunwind.S: Add Thumb-2 code.
25027         * config/arm/constraints.md: Update include Thumb-2.
25028         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
25029         * config/arm/ieee754-df.S: Ditto.
25030         * config/arm/bpabi.S: Ditto.
25031         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
25032         * config/arm/predicates.md (low_register_operand,
25033         low_reg_or_int_operand, thumb_16bit_operator): New.
25034         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
25035         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
25036         * config/arm/t-arm-elf: Add armv7 multilib.
25037         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
25038         Include thumb2.md.
25039         (UNSPEC_STACK_ALIGN, ce_count): New.
25040         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
25041         arm_zero_extendsidi2, arm_zero_extendqidi2): New
25042         insns/expanders.
25043         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
25044         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
25045         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
25046         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
25047         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
25048         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
25049         insns.
25050         * doc/extend.texi: Document ARMv7-M interrupt functions.
25051         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
25052
25053 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
25054
25055         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
25056         (struct _Unwind_Context): Rename args_size to flags, remove
25057         signal_frame field, add a new args_size field and version field.
25058         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
25059         _Unwind_IsExtendedContext): New inline functions.
25060         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
25061         Assume by_value array is only present if _Unwind_IsExtendedContext.
25062         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
25063         _Unwind_IsSignalFrame.
25064         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
25065         (uw_update_context_1): Use _Unwind_SetSignalFrame.
25066         (uw_init_context_1): Initialize context->flags to
25067         EXTENDED_CONTEXT_BIT.
25068         * config/rs6000/linux-unwind.h (frob_update_context): Use
25069         _Unwind_SetSignalFrame.
25070
25071 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25072
25073         PR middle-end/30353
25074         * gimplify.c (gimplify_modify_expr_complex_part): Move below
25075         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
25076         the value.
25077
25078 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
25079
25080         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
25081         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
25082         RET, AT_SP): Remove.
25083         * config/i386/i386.md (*sse_prologue_save_insn): Use return
25084         instead of RET.
25085
25086         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
25087         * cfgbuild.c (find_basic_blocks): Likewise.
25088         * cfgrtl.c (rtl_create_basic_block): Likewise.
25089         * function.c (temp_slots_at_level): Likewise.
25090         * reg-stack.c (stack_regs_mentioned): Likewise.
25091         * regclass.c (allocate_reg_info): Likewise.
25092         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
25093         set_bb_for_stmt, move_block_to_fn): Likewise.
25094         * tree-complex.c (tree_lower_complex): Likewise.
25095         * vec.h (VEC_safe_grow_cleared): New.
25096
25097         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
25098
25099 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
25100
25101         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
25102         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
25103         to loop_version.
25104         * cfgloopmanip.c (scale_loop_frequencies): Export.
25105         (loopify): Scale the frequencies by prescribed coefficients.
25106         (set_zero_probability): New function.
25107         (duplicate_loop_to_header_edge): Improve updating of frequencies.
25108         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
25109         and frequencies according to arguments.
25110         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
25111         correctly.
25112         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
25113         * modulo-sched.c (sms_schedule): Set probabilities for entering
25114         versioned loop correctly.
25115         * tree-vect-transform.c (vect_transform_loop): Ditto.
25116         * cfgloop.h (loopify, loop_version): Declaration changed.
25117         (scale_loop_frequencies): Declared.
25118
25119 2007-01-02  Jan Hubicka  <jh@suse.cz>
25120
25121         * cgraph.c: Include tree-flow.h
25122         (cgraph_add_new-function): Handle IPA_SSA mode; execute
25123         early_local_passes.
25124         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
25125         * tree-pass.h (pass_all_early_optimizations): Declare.
25126         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
25127         early_local_passes.
25128         (cgraph_analyze_function): Do early_local_passes.
25129         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
25130         Do not add referenced vars.
25131         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
25132         SSA form.
25133         (gate_all_early_local_passes): New gate.
25134         (pass_early_local_passes): Use new gate.
25135         (execute_early_local_optimizations): New functions.
25136         (gate_all_early_optimizations): New gate.
25137         (pass_all_early_optimizations): New pass.
25138         (execute_free_datastructures): Free SSA only when initialized.
25139         (gate_init_datastructures): Init only when optimizing.
25140         (tree_lowering_passes): Do early local passes when called late.
25141         * tree-profile.c (do_tree_profiling): Don't profile functions added
25142         late.
25143         (do_early_tree_profiling, pass_early_tree_profile): Kill.
25144         * tree-cfg.c (update_modified_stmts): Do not update when operands are
25145         not active.
25146         * passes.c (init_optimizations_passes): Reorder so we go into SSA
25147         during early_local_passes.
25148         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
25149
25150
25151 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
25152
25153         * Makefile.in: Update copyright year.
25154
25155 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
25156
25157         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
25158         in $(lang_checks) and check-consistency targets.
25159
25160 2007-01-02  Jan Hubicka  <jh@suse.cz>
25161
25162         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
25163         Do not add referenced vars.
25164         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
25165         are not active.
25166         * passes.c (init_optimization_passes): Put mudflap_2 after
25167         free_datastructures.
25168
25169 2007-01-02  Jan Hubicka  <jh@suse.cz>
25170
25171         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
25172         Set NOTHROW flag on call statements proved to be nothrow.
25173         Update statement of local calls so new pure/const functions are
25174         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
25175         goto receivers.
25176         (tree_rest_of_compilation): Register hooks and initialize bitmap
25177         early. Do not set after_inlining flag.
25178
25179 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
25180
25181         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
25182         HOST_BITS_PER_LONGLONG
25183
25184 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
25185
25186         PR c/19977
25187         * c-typeck.c (store_init_value): Don't emit pedantic overflow
25188         warning for non-static initializers.
25189
25190 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
25191
25192         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
25193         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
25194         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
25195         Always use set_unique_reg_note to add REG_EQUAL notes.
25196
25197 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
25198
25199         Revert:
25200         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
25201
25202         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
25203         * cfgbuild.c (find_basic_blocks): Likewise.
25204         * cfgrtl.c (rtl_create_basic_block): Likewise.
25205         * function.c (temp_slots_at_level): Likewise.
25206         * reg-stack.c (stack_regs_mentioned): Likewise.
25207         * regclass.c (allocate_reg_info): Likewise.
25208         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
25209         set_bb_for_stmt, move_block_to_fn): Likewise.
25210         * tree-complex.c (tree_lower_complex): Likewise.
25211         * vec.h (VEC_safe_grow_cleared): New.
25212
25213 2007-01-02  Ian Lance Taylor  <iant@google.com>
25214
25215         * c-common.c (c_common_truthvalue_conversion): When warning about
25216         using an assignment as a truth value, set TREE_NO_WARNING.
25217
25218 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25219
25220         PR middle-end/7651
25221         * c.opt (Wold-style-declaration): New.
25222         * doc/invoke.texi (C-only Warning Options): New.
25223         (Wold-style-declaration): Document it.
25224         (Wextra): Enabled by -Wextra.
25225         * c-opts.c (c_common_post_options): Enabled by -Wextra.
25226         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
25227         -Wold-style-declaration.
25228
25229 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
25230
25231         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
25232         * cfgbuild.c (find_basic_blocks): Likewise.
25233         * cfgrtl.c (rtl_create_basic_block): Likewise.
25234         * function.c (temp_slots_at_level): Likewise.
25235         * reg-stack.c (stack_regs_mentioned): Likewise.
25236         * regclass.c (allocate_reg_info): Likewise.
25237         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
25238         set_bb_for_stmt, move_block_to_fn): Likewise.
25239         * tree-complex.c (tree_lower_complex): Likewise.
25240         * vec.h (VEC_safe_grow_cleared): New.
25241
25242 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
25243
25244         * c-common.c (c_common_nodes_and_builtins): Since variants of
25245         void_type_node get built before it is given a name, we need to
25246         give those variants the name, too.
25247         (complete_array_type): We need to work with the canonical main
25248         type of the array, from which we will build the qualified version.
25249         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
25250         * print-tree.c (print_node): Display canonical type information
25251         for each type.
25252         * stor-layout.c (layout_type): When we don't know the
25253         alignment of a type for which we're building an array, we end up
25254         guessing wrong, so make the type require structural equality.
25255         * tree.c (make_node_stat): When we build a new type, it is its
25256         own canonical type.
25257         (build_type_attribute_qual_variant): When building an attribute
25258         variant, its canonical type is the non-attribute variant. However,
25259         if the attributes are target-dependent and they differ, we need to
25260         use structural equality checks for this type.
25261         (build_qualified_type): A qualified type is not equivalent to its
25262         unqualified variant; set the canonical type appropriately.
25263         (build_distinct_type_copy): When building a distinct type from
25264         another type, the new type is its own canonical type.
25265         (build_variant_type_copy): When building a new type variant, we
25266         assume that it is equivalent to the original type.
25267         (build_pointer_type_for_mode): When building a pointer type, also
25268         build a canonical type pointer.
25269         (build_reference_type_for_mode): When building a reference type,
25270         also build a canonical type reference.
25271         (build_index_type): When we can't hash an index type (e.g.,
25272         because its maximum value is negative), the index type requires
25273         structural equality tests.
25274         (build_array_type): Build the canonical form of an array type.
25275         (build_function_type): Function types require structural equality,
25276         because they contain default arguments, attributes, etc.
25277         (build_method_type_directly): Ditto for method types.
25278         (build_offset_type): Build the canonical offset type.
25279         (build_complex_type): Build the canonical vector type.
25280         (make_vector_type): Build the canonical vector type.
25281         * tree.h (TYPE_CANONICAL): New.
25282         (TYPE_STRUCTURAL_EQUALITY_P): New.
25283         (SET_TYPE_STRUCTURAL_EQUALITY): New.
25284         (struct tree_type): Added "canonical" field.
25285         * params.h (VERIFY_CANONICAL_TYPES): New.
25286         * doc/c-tree.texi (TYPE_CANONICAL): Document.
25287         (TYPE_STRUCTURAL_EQUALITY_P): Document.
25288         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
25289         * doc/invoke.texi (verify-canonical-types): Document --param
25290         parameter for verifying canonical types.
25291
25292 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
25293
25294         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
25295         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
25296         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
25297         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
25298         tm_file.
25299         * config/rs6000/e500.h: New.
25300         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
25301         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
25302         Remove.
25303         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
25304         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
25305         TARGET_E500_DOUBLE): Remove.
25306         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
25307         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
25308         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
25309         * config/rs6000/rs6000.c (rs6000_override_options): Use
25310         CHECK_E500_OPTIONS.
25311
25312 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
25313
25314         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
25315         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
25316         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
25317         rs6000_emit_cmove): Don't check TARGET_E500.
25318         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
25319         sordered): Don't check TARGET_E500.
25320
25321 2007-01-01  Eric Christopher  <echristo@apple.com>
25322
25323         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
25324         HARD_REGISTER_NUM_P.
25325
25326 2007-01-01  Roger Sayle  <roger@eyesopen.com>
25327
25328         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
25329         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
25330         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
25331         eq/ne Y".
25332
25333 2007-01-01  Mike Stump  <mrs@apple.com>
25334
25335         * configure.ac: Remove support for building with Apple's gcc-3.1.
25336
25337 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
25338
25339         PR middle-end/30311
25340         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
25341         REG is a hard register.  Do not modify REG before calling
25342         subreg_nregs.
25343         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
25344         multiple of the size of YMODE for certain lowpart cases.
25345
25346 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
25347
25348         PR middle-end/30253
25349         * gimplify (voidify_wrapper_expr): Update for
25350         GIMPLE_MODIFY_STMT.
25351
25352 2007-01-01  Andreas Schwab  <schwab@suse.de>
25353
25354         PR target/29166
25355         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
25356         save of BR0 in extra_spill_size instead of spill_size.
25357         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
25358         area.
25359         (ia64_expand_epilogue): Restore BR0 from its new location.
25360
25361 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
25362
25363         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
25364         Use a temporary variable if the left hand side is not a gimple
25365         register.
25366
25367 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
25368
25369         * gimplify.c (gimplify_return_expr): Make the temporary variable
25370         for the return expression, a gimple register variable.
25371
25372 2007-01-01  Jan Hubicka  <jh@suse.cz>
25373
25374         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
25375         INSN_LIST.
25376
25377 2007-01-01  Mike Stump  <mrs@apple.com>
25378
25379         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
25380         .literal16.
25381         * config/darwin.c (machopic_select_rtx_section): Use
25382         HAVE_GAS_LITERAL16.
25383         (darwin_mergeable_constant_section): Likewise.
25384         * configure: Regenerate.
25385         * config.in: Regenerate.
25386
25387 2007-01-01  Jan Hubicka  <jh@suse.cz>
25388             Andrew Pinski  <pinskia@gmail.com>
25389
25390         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
25391         before starting IPA passes.