OSDN Git Service

385c5eee96ebb3be4be340277ab4f48a60e59535
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
2
3         * doc/passes.texi: Document predictive commoning.
4         * doc/invoke.texi (-fpredictive-commoning): Document.
5         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
6         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
7         adding indices to the generated name.
8         (schedule_sm): Pass 0 to get_lsm_tmp_name.
9         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
10         * tree-pretty-print.c (op_symbol_1): Renamed to ...
11         (op_symbol_code): ... and exported.
12         (dump_omp_clause, op_symbol): Use op_symbol_code
13         instead of op_symbol_1.
14         * tree-pass.h (pass_predcom): Declare.
15         * timevar.def (TV_PREDCOM): New timevar.
16         * tree-ssa-loop.c (run_tree_predictive_commoning,
17         gate_tree_predictive_commoning, pass_predcom): New.
18         * tree-data-ref.c (find_data_references_in_loop): Find the
19         references in dominance order.
20         (canonicalize_base_object_address): Ensure that the result has
21         pointer type.
22         (dr_analyze_innermost): Export.
23         (create_data_ref): Code to fail for references with invariant
24         address moved ...
25         (find_data_references_in_stmt): ... here.
26         * tree-data-ref.h (dr_analyze_innermost): Declare.
27         * tree-affine.c: Include tree-gimple.h and hashtab.h.
28         (aff_combination_find_elt, name_expansion_hash,
29         name_expansion_eq, tree_to_aff_combination_expand,
30         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
31         New functions.
32         * tree-affine.h (aff_combination_constant_multiple_p,
33         tree_to_aff_combination_expand): Declare.
34         * tree-predcom.c: New file.
35         * common.opt (fpredictive-commoning): New option.
36         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
37         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
38         * Makefile.in (tree-predcom.o): Add.
39         (tree-affine.o): Add TREE_GIMPLE_H dependency.
40         * passes.c (init_optimization_passes):  Add dceloop after
41         copy propagation in loop optimizer.  Add predictive commoning
42         to loop optimizer passes.
43
44 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
45
46         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
47         default hook.
48
49 2007-05-24  Jan Hubicka  <jh@suse.cz>
50
51         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
52         statistics.
53         (genheader): Include statistics.h.
54
55         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
56         notes are gone.
57         * print-rtl.c (flag_dump_unnumbered): Update comments.
58         (print_rtl): Fix my previous change.
59         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
60         specific data.
61
62 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
63
64         PR middle-end/32018
65         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
66         set_loop_copy.
67         (thread_through_all_blocks): Call initialize_original_copy_tables
68         and free_original_copy_tables.
69         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
70         Use set_loop_copy.
71         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
72         * cfghooks.c (duplicate_block): Use get_loop_copy.
73         * cfg.c: Include cfgloop.h.
74         (loop_copy): New hash table.
75         (initialize_original_copy_tables): Initialize loop_copy table.
76         (free_original_copy_tables): Free loop_copy table.
77         (copy_original_table_clear, copy_original_table_set,
78         set_loop_copy, get_loop_copy): New functions.
79         (set_bb_original, set_bb_copy): Use copy_original_table_set.
80         * cfgloop.h (struct loop): Remove copy field.
81         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
82         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
83
84 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
85
86         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
87         -msse/-msse2/-msse3.
88
89 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
90
91         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
92         __builtin_ia32_vec_set_v2di with MASK_64BIT.
93
94 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
95
96         PR target/27067
97         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
98         * targhooks.h (default_mangle_decl_assembler_name): Declare
99         default hook.
100         * targhooks.c (default_mangle_decl_assembler_name): Define
101         default hook.
102         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
103         default hook.
104         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
105         * langhooks.c (lhd_set_decl_assembler_name): Call
106         targetm.mangle_decl_assembler_name for names with global scope.
107
108         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
109         default.
110         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
111         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
112         Declare.
113         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
114         New. Factored out of i386_pe_encode_section_info.
115         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
116         Move check for prior decoration of stdcall
117         symbols to i386_pe_encode_section_info.
118         (i386_pe_encode_section_info): Adjust call to
119         gen_stdcall_or_fastcall_suffix.  Use
120         i386_pe_maybe_mangle_decl_assembler_name, if needed.
121         (i386_pe_mangle_decl_assembler_name): New. Wrap
122         i386_pe_maybe_mangle_decl_assembler_name.
123
124 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
125
126         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
127         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
128         * langhooks.c (get_signed_or_unsigned_type): Don't check for
129         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
130         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
131         TYPE_UNSIGNED.
132
133 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
134             Nigel Stephens  <nigel@mips.com>
135             Richard Sandiford  <richard@codesourcery.com>
136
137         Fix up MIPS16 hard float and add support for complex.
138
139         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
140         (TARGET_SOFT_FLOAT_ABI): New.
141         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
142         __mips_soft_float to reflect the ABI in use, not whether the
143         FPU is directly accessible (e.g., in MIPS16 mode).
144         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
145         (UNITS_PER_FPVALUE): Likewise.
146
147         * config/mips/mips.c (mips_expand_call): Remove redundant
148         TARGET_MIPS16 check.
149         (mips_arg_regno): New.
150         (function_arg_advance): When setting bits in cum->fp_code for
151         MIPS16, don't subtract 1 from cum->arg_number, since it is now
152         zero-based.
153         (function_arg): Use mips_arg_regno.
154         (mips_return_mode_in_fpr_p): New.
155         (mips16_call_stub_mode_suffix): New.
156         (mips16_cfun_returns_in_fpr_p): New.
157         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
158         (mips_output_function_prologue): Test mips16_hard_float, not
159         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
160         (mips_expand_epilogue): Call MIPS16 helper routines to copy
161         return value into a floating-point register.
162         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
163         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
164         (mips16_fp_args): Handle MIPS32r2 ISA which supports
165         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
166         word of double arguments from or to the high bits of 64-bit
167         floating point registers.
168         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
169         (mips16_fpret_double): New helper function.
170         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
171         support for complex modes.  Fill in DECL_RESULT for stubdecl.
172         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
173
174         * config/mips/mips16.S 
175         (RET, ARG1, ARG2): New.
176         (MERGE_GPRf, MERGE_GPRt): New.
177         (DELAYt, DELAYf): New.
178         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
179         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
180         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
181         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
182         (SFOP): Renamed to...
183         (OPSF3): This, and macro-ified.  Updated all uses.
184         (SFOP2): Renamed to...
185         (OPSF2): This, and macro-ified.  Updated all uses.
186         (SFCMP): Renamed to...
187         (CMPSF): This, and macro-ified.  Updated all uses.
188         (SFREVCMP): Renamed to...
189         (REVCMPSF): This, and macro-ified.  Updated all uses.
190         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
191         (LDDBL1, LDDBL2, RETDBL): Deleted.
192         (DFOP): Renamed to...
193         (OPDF3): This, and macro-ified.  Updated all uses.
194         (DFOP2): Renamed to...
195         (OPDF2): This, and macro-ified.  Updated all uses.
196         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
197         (DFCMP): Renamed to...
198         (CMPDF): This, and macro-ified.  Updated all uses.
199         (DFREVCMP): Renamed to...
200         (REVCMPDF): This, and macro-ified.  Updated all uses.
201         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
202         (RET_FUNCTION): New.
203         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
204         (__mips16_ret_sc, __mips16_ret_dc): New.
205         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
206         STUB_ARGS_6, STUB_ARGS_10): New.
207         (CALL_STUB_NO_RET): New.
208         (__mips16_call_stub_1): Macro-ified.
209         (__mips16_call_stub_5): Macro-ified.
210         (__mips16_call_stub_2): Macro-ified.
211         (__mips16_call_stub_6): Macro-ified.
212         (__mips16_call_stub_9): Macro-ified.
213         (__mips16_call_stub_10): Macro-ified.
214         (CALL_STUB_RET): New.
215         (__mips16_call_stub_sf_0): Macro-ified.
216         (__mips16_call_stub_sf_1): Macro-ified.
217         (__mips16_call_stub_sf_5): Macro-ified.
218         (__mips16_call_stub_sf_2): Macro-ified.
219         (__mips16_call_stub_sf_6): Macro-ified.
220         (__mips16_call_stub_sf_9): Macro-ified.
221         (__mips16_call_stub_sf_10): Macro-ified.
222         (__mips16_call_stub_df_0): Macro-ified.
223         (__mips16_call_stub_df_1): Macro-ified.
224         (__mips16_call_stub_df_5): Macro-ified.
225         (__mips16_call_stub_df_2): Macro-ified.
226         (__mips16_call_stub_df_6): Macro-ified.
227         (__mips16_call_stub_df_9): Macro-ified.
228         (__mips16_call_stub_df_10): Macro-ified.
229         (__mips16_call_stub_sc_0): New.
230         (__mips16_call_stub_sc_1): New.
231         (__mips16_call_stub_sc_5): New.
232         (__mips16_call_stub_sc_2): New.
233         (__mips16_call_stub_sc_6): New.
234         (__mips16_call_stub_sc_9): New.
235         (__mips16_call_stub_sc_10): New.
236         (__mips16_call_stub_dc_0): New.
237         (__mips16_call_stub_dc_1): New.
238         (__mips16_call_stub_dc_5): New.
239         (__mips16_call_stub_dc_2): New.
240         (__mips16_call_stub_dc_6): New.
241         (__mips16_call_stub_dc_9): New.
242         (__mips16_call_stub_dc_10): New.
243         
244         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
245         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
246         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
247
248 2007-05-23  Ian Lance Taylor  <iant@google.com>
249
250         * doc/invoke.texi (Invoking GCC): Document that the order of the
251         -l option matters.
252
253 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
254
255         PR target/30987
256         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): remove.
257         * config/score/predicate.md (const_pow2, const_npow2): remove.
258         * config/score/score.h (ASM_OUTPUT_EXTERNAL): add ASM_OUTPUT_EXTERNAL undef.
259         PR target/30474
260         * config/score/score.c (score_print_operand): makes sure that only lower 
261         bits are used.
262         
263 2007-05-22  Ian Lance Taylor  <iant@google.com>
264
265         * tree-vrp.c (avoid_overflow_infinity): New static function,
266         broken out of set_value_range_to_value.
267         (set_value_range_to_value): Call avoid_overflow_infinity.
268         (extract_range_from_assert): Likewise.
269
270 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
271
272         PR middle-end/31095
273          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
274         change the type before looking for a COMPOUND_EXPR.
275
276 2007-05-22  Ian Lance Taylor  <iant@google.com>
277
278         * lower-subreg.c (decompose_multiword_subregs): If we change an
279         insn, call remove_retval_note on it.
280
281 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
282
283         * regs.h (end_hard_regno): New function.
284         (END_HARD_REGNO, END_REGNO): New macros.
285         (add_to_hard_reg_set): New function.
286         (remove_from_hard_reg_set): Likewise.
287         (in_hard_reg_set_p): Likewise.
288         (overlaps_hard_reg_set_p): Likewise.
289         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
290         (note_btr_set): Use END_HARD_REGNO.
291         * caller-save.c (setup_save_areas): Use end_hard_regno.
292         (mark_set_regs): Use END_HARD_REGNO.
293         (add_stored_regs): Use end_hard_regno.
294         (mark_referenced_regs): Use add_to_hard_reg_set.
295         * combine.c (update_table_tick): Use END_REGNO.
296         (record_value_for_reg): Likewise.
297         (record_dead_and_set_regs): Likewise.
298         (get_last_value_validate): Likewise.
299         (use_crosses_set_p): Likewise.
300         (reg_dead_at_p_1): Likewise.
301         (reg_dead_at_p): Likewise.
302         (mark_used_regs_combine): Use add_to_hard_reg_set.
303         (move_deaths): Use END_HARD_REGNO.
304         (reg_bitfield_target_p): Use end_hard_regno.
305         (distribute_notes): Use END_HARD_REGNO.
306         * cse.c (mention_regs): Use END_REGNO.
307         (insert): Use add_to_hard_reg_set.
308         (invalidate): Use END_HARD_REGNO.
309         (invalidate_for_call): Likewise.
310         (exp_equiv_p): Use END_REGNO.
311         (cse_insn): Likewise.
312         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
313         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
314         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
315         * function.c (keep_stack_depressed): Use end_hard_regno.
316         * global.c (global_alloc): Use end_hard_regno.
317         (global_conflicts): Use add_to_hard_reg_set instead of
318         mark_reg_live_nc.
319         (find_reg): Likewise.
320         (mark_reg_store): Likewise.
321         (mark_reg_conflicts): Likewise.
322         (mark_reg_death): Use remove_from_hard_reg_set.
323         (mark_reg_live_nc): Delete.
324         (set_preference): Use end_hard_regno.
325         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
326         remove_from_hard_reg_set.
327         (post_mark_life): Use add_to_hard_reg_set.
328         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
329         (reg_becomes_live): Use add_to_hard_reg_set.
330         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
331         (peep2_find_free_register): Use add_to_hard_reg_set.
332         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
333         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
334         * regrename.c (note_sets): Use add_to_hard_reg_set.
335         (clear_dead_regs): Use remove_from_hard_reg_set.
336         (regrename_optimize): Use add_to_hard_reg_set.
337         (find_oldest_value_reg): Use in_hard_reg_set_p.
338         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
339         (hard_reg_set_here_p): Use end_hard_regno.
340         (decompose): Likewise.
341         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
342         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
343         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
344         (mark_home_live): Use end_hard_regno.
345         (spill_hard_reg): Likewise.
346         (clear_reload_reg_in_use): Likewise.
347         * reorg.c (delete_prior_computation): Use END_REGNO.
348         * resource.c (update_live_status): Use END_HARD_REGNO.
349         (mark_referenced_resources): Use add_to_hard_reg_set.
350         (mark_set_resources): Likewise.
351         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
352         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
353         (reg_overlap_mentioned_p): Likewise.
354         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
355         (covers_regno_no_parallel_p): Use END_REGNO.
356         (find_regno_note): Likewise.
357         (find_reg_fusage): Use END_HARD_REGNO.
358         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
359         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
360
361 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
362
363         * mode-switching.c (reg_dies): Change type of second argument to
364         "HARD_REG_SET *".
365         (optimize_mode_switching): Update accordingly.
366
367 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
368
369         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
370         in favor of...
371         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
372         (hard_reg_set_empty_p): ...these new functions.
373         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
374         GO_IF_HARD_REG_SUBSET.
375         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
376         instead of GO_IF_HARD_REG_EQUAL.
377         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
378         instead of GO_IF_HARD_REG_EQUAL.
379         * global.c (find_reg): Use hard_reg_set_empty_p instead of
380         GO_IF_HARD_REG_SUBSET.
381         (modify_reg_pav): Use hard_reg_set_empty_p instead of
382         GO_IF_HARD_REG_EQUAL.
383         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
384         of GO_IF_HARD_REG_SUBSET.
385         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
386         instead of GO_IF_HARD_REG_EQUAL.
387         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
388         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
389         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
390         of GO_IF_HARD_REG_SUBSET,
391         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
392         GO_IF_HARD_REG_SUBSET.
393         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
394         instead of GO_IF_HARD_REG_EQUAL.
395         * config/sh/sh.c (push_regs, calc_live_regs): Use
396         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
397         (hard_regs_intersect_p): Delete.
398
399 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
400
401         * doc/sourcebuild.texi (Test Directives) Add dg-message.
402
403 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
404             Richard Henderson  <rth@redhat.com>
405
406         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
407         extra_headers.
408         (x86_64-*-*): Likewise.
409
410         * i386/i386-modes.def (V2QI): New.
411
412         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
413         SSE4A.
414         (override_options): Support SSE4.1.
415         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
416         (IX86_BUILTIN_BLENDPS): Likewise.
417         (IX86_BUILTIN_BLENDVPD): Likewise.
418         (IX86_BUILTIN_BLENDVPS): Likewise.
419         (IX86_BUILTIN_PBLENDVB128): Likewise.
420         (IX86_BUILTIN_PBLENDW128): Likewise.
421         (IX86_BUILTIN_DPPD): Likewise.
422         (IX86_BUILTIN_DPPS): Likewise.
423         (IX86_BUILTIN_INSERTPS128): Likewise.
424         (IX86_BUILTIN_MOVNTDQA): Likewise.
425         (IX86_BUILTIN_MPSADBW128): Likewise.
426         (IX86_BUILTIN_PACKUSDW128): Likewise.
427         (IX86_BUILTIN_PCMPEQQ): Likewise.
428         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
429         (IX86_BUILTIN_PMAXSB128): Likewise.
430         (IX86_BUILTIN_PMAXSD128): Likewise.
431         (IX86_BUILTIN_PMAXUD128): Likewise.
432         (IX86_BUILTIN_PMAXUW128): Likewise.
433         (IX86_BUILTIN_PMINSB128): Likewise.
434         (IX86_BUILTIN_PMINSD128): Likewise.
435         (IX86_BUILTIN_PMINUD128): Likewise.
436         (IX86_BUILTIN_PMINUW128): Likewise.
437         (IX86_BUILTIN_PMOVSXBW128): Likewise.
438         (IX86_BUILTIN_PMOVSXBD128): Likewise.
439         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
440         (IX86_BUILTIN_PMOVSXWD128): Likewise.
441         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
442         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
443         (IX86_BUILTIN_PMOVZXBW128): Likewise.
444         (IX86_BUILTIN_PMOVZXBD128): Likewise.
445         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
446         (IX86_BUILTIN_PMOVZXWD128): Likewise.
447         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
448         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
449         (IX86_BUILTIN_PMULDQ128): Likewise.
450         (IX86_BUILTIN_PMULLD128): Likewise.
451         (IX86_BUILTIN_ROUNDPD): Likewise.
452         (IX86_BUILTIN_ROUNDPS): Likewise.
453         (IX86_BUILTIN_ROUNDSD): Likewise.
454         (IX86_BUILTIN_ROUNDSS): Likewise.
455         (IX86_BUILTIN_PTESTZ): Likewise.
456         (IX86_BUILTIN_PTESTC): Likewise.
457         (IX86_BUILTIN_PTESTNZC): Likewise.
458         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
459         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
460         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
461         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
462         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
463         (bdesc_ptest): New.
464         (bdesc_sse_3arg): Likewise.
465         (bdesc_2arg): Likewise.
466         (bdesc_1arg): Likewise.
467         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
468         with 3 args.
469         (ix86_expand_sse_4_operands_builtin): New.
470         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
471         smaller than 8 bits as the 2nd arg.
472         (ix86_expand_sse_ptest): New.
473         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
474         (ix86_expand_vector_set): Support SSE4.1.
475         (ix86_expand_vector_extract): Likewise.
476
477         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
478         __SSE4_1__ for -msse4.1.
479
480         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
481         (UNSPEC_INSERTPS): Likewise.
482         (UNSPEC_DP): Likewise.
483         (UNSPEC_MOVNTDQA): Likewise.
484         (UNSPEC_MPSADBW): Likewise.
485         (UNSPEC_PHMINPOSUW): Likewise.
486         (UNSPEC_PTEST): Likewise.
487         (UNSPEC_ROUNDP): Likewise.
488         (UNSPEC_ROUNDS): Likewise.
489
490         * config/i386/i386.opt (msse4.1): New for SSE4.1.
491
492         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
493         (const_pow2_1_to_32768_operand): Likewise.
494
495         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
496         file.
497
498         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
499         SSE4.1.
500         (sse4_1_insertps): Likewise.
501         (*sse4_1_extractps): Likewise.
502         (sse4_1_ptest): Likewise.
503         (sse4_1_mulv2siv2di3): Likewise.
504         (*sse4_1_mulv4si3): Likewise.
505         (*sse4_1_smax<mode>3): Likewise.
506         (*sse4_1_umax<mode>3): Likewise.
507         (*sse4_1_smin<mode>3): Likewise.
508         (*sse4_1_umin<mode>3): Likewise.
509         (sse4_1_eqv2di3): Likewise.
510         (*sse4_1_pinsrb): Likewise.
511         (*sse4_1_pinsrd): Likewise.
512         (*sse4_1_pinsrq): Likewise.
513         (*sse4_1_pextrb): Likewise.
514         (*sse4_1_pextrb_memory): Likewise.
515         (*sse4_1_pextrw_memory): Likewise.
516         (*sse4_1_pextrq): Likewise.
517         (sse4_1_blendpd): Likewise.
518         (sse4_1_blendps): Likewise.
519         (sse4_1_blendvpd): Likewise.
520         (sse4_1_blendvps): Likewise.
521         (sse4_1_dppd): Likewise.
522         (sse4_1_dpps): Likewise.
523         (sse4_1_movntdqa): Likewise.
524         (sse4_1_mpsadbw): Likewise.
525         (sse4_1_packusdw): Likewise.
526         (sse4_1_pblendvb): Likewise.
527         (sse4_1_pblendw): Likewise.
528         (sse4_1_phminposuw): Likewise.
529         (sse4_1_extendv8qiv8hi2): Likewise.
530         (*sse4_1_extendv8qiv8hi2): Likewise.
531         (sse4_1_extendv4qiv4si2): Likewise.
532         (*sse4_1_extendv4qiv4si2): Likewise.
533         (sse4_1_extendv2qiv2di2): Likewise.
534         (*sse4_1_extendv2qiv2di2): Likewise.
535         (sse4_1_extendv4hiv4si2): Likewise.
536         (*sse4_1_extendv4hiv4si2): Likewise.
537         (sse4_1_extendv2hiv2di2): Likewise.
538         (*sse4_1_extendv2hiv2di2): Likewise.
539         (sse4_1_extendv2siv2di2): Likewise.
540         (*sse4_1_extendv2siv2di2): Likewise.
541         (sse4_1_zero_extendv8qiv8hi2): Likewise.
542         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
543         (sse4_1_zero_extendv4qiv4si2): Likewise.
544         (*sse4_1_zero_extendv4qiv4si2): Likewise.
545         (sse4_1_zero_extendv2qiv2di2): Likewise.
546         (*sse4_1_zero_extendv2qiv2di2): Likewise.
547         (sse4_1_zero_extendv4hiv4si2): Likewise.
548         (*sse4_1_zero_extendv4hiv4si2): Likewise.
549         (sse4_1_zero_extendv2hiv2di2): Likewise.
550         (*sse4_1_zero_extendv2hiv2di2): Likewise.
551         (sse4_1_zero_extendv2siv2di2): Likewise.
552         (*sse4_1_zero_extendv2siv2di2): Likewise.
553         (sse4_1_roundpd): Likewise.
554         (sse4_1_roundps): Likewise.
555         (sse4_1_roundsd): Likewise.
556         (sse4_1_roundss): Likewise.
557         (mulv4si3): Don't expand for SSE4.1.
558         (smax<mode>3): Likewise.
559         (umaxv4si3): Likewise.
560         (uminv16qi3): Likewise.
561         (umin<mode>3): Likewise.
562         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
563
564         * doc/extend.texi: Document SSE4.1 built-in functions.
565
566         * doc/invoke.texi: Document -msse4.1.
567
568 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
569
570         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
571         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
572         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
573         (ASM_SPEC): Add asm_pcrel_spec.
574         (EXTRA_SPECS): Add asm_pcrel_spec.
575
576 2007-05-21  David Daney  <ddaney@avtrex.com>
577
578         * doc/install.texi (Building a cross compiler): Add requirements
579         for Java cross compiler.
580
581 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
582
583         PR middle-end/31995
584         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
585         Add loopno argument.  Use evolution_function_is_invariant_rec_p
586         instead of evolution_function_is_constant_p.
587         Update calls to evolution_function_is_affine_multivariate_p.
588         * tree-chrec.h  (evolution_function_is_affine_multivariate_p):
589         Add loopno argument.
590         * tree-scalar-evolution.c (gather_chrec_stats): Call
591         evolution_function_is_affine_multivariate_p with a  loop
592         number of 0.
593         * tree-data-ref.c (analyze_miv_subscript): Likewise.
594         (analyze_overlapping_iterations): Likewise.
595         (access_functions_are_affine_or_constant_p):
596         Likewise.
597         (build_classic_dist_vector_1): If the access functions
598         are equal, don't do anything.
599
600 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
601             Paolo Carlini  <pcarlini@suse.de>
602             Uros Bizjak  <ubizjak@gmail.com>
603
604         * c-cppbuiltin.c (c_cpp_builtins): Define
605         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
606         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
607         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
608         * doc/cpp.texi ([Standard Predefined Macros]): Document.
609
610 2007-05-21  Mike Stump  <mrs@apple.com>
611
612         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx for dsymutil
613         handling as well.
614         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
615
616 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
617
618         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
619         implementation if __OPTIMIZE__ is not defined.
620         (_mm_alignr_pi8): Ditto.
621         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
622         (_mm_inserti_si64): Ditto.
623         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
624         (_mm_slli_epi16): Ditto.
625         (_mm_slli_epi32): Ditto.
626         (_mm_slli_epi64): Ditto.
627         (_mm_srai_epi16): Ditto.
628         (_mm_srai_epi32): Ditto.
629         (_mm_srli_si128): Ditto.
630         (_mm_slli_si128): Ditto.
631         (_mm_srli_epi16): Ditto.
632         (_mm_srli_epi32): Ditto.
633         (_mm_srli_epi64): Ditto.
634         (_mm_extract_epi16): Ditto.
635         (_mm_insert_epi16): Ditto.
636         (_mm_shufflehi_epi16): Ditto.
637         (_mm_shufflelo_epi16): Ditto.
638         (_mm_shuffle_epi32): Ditto.
639         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
640         (_m_pextrw): Ditto.
641         (_mm_insert_pi16): Ditto.
642         (_m_pinsrw): Ditto.
643         (_mm_shuffle_pi16): Ditto.
644         (_m_pshufw): Ditto.
645         (_mm_shufle_ps): Ditto.
646         (_mm_prefetch): Ditto.
647
648 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
649
650         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
651         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
652         * real.c (encode_i370_single, decode_i370_single,
653         encode_i370_double, decode_i370_double): Functions removed.
654         (i370_single_format, i370_double_format): Initializations removed.
655         (real_maxval, round_for_format, exact_real_truncate, significand_size):
656         Consider the log2_b field to always be one.
657         (ieee_single_format, mips_single_format, coldfire_single_format,
658         ieee_double_format, mips_double_format, coldfire_double_format,
659         ieee_extended_motorola_format, ieee_extended_intel_96_format,
660         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
661         ibm_extended_format, mips_extended_format, ieee_quad_format,
662         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
663         decimal_single_format, decimal_double_format, decimal_quad_format,
664         c4x_single_format, c4x_extended_format, real_internal_format): Remove
665         initialization of log2_b.
666         * real.h (i370_single_format, i370_double_format): Declarations removed.
667         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
668         field to always be one.
669
670 2007-05-21  Andreas Schwab  <schwab@suse.de>
671
672         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
673         NOTE_INSN_BASIC_BLOCK_P.
674         (process_for_unwind_directive): Likewise.
675
676 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
677
678         * builtins.c (expand_builtin_setjmp_setup): Update comment.
679         * function.h (struct function): Move va_list_gpr_size,
680         va_list_fpr_size, function_frequency to front of bitfields.  Add
681         calls_unwind_init.
682         (current_function_calls_unwind_init): New.
683         * except.c (expand_builtin_unwind_init): Set
684         current_function_calls_unwind_init not
685         current_function_has_nonlocal_label.
686         * reload1.c (has_nonexceptional_receiver): New.
687         (reload): Use it and current_function_calls_unwind_init to
688         determine whether call-saved regs must be saved.
689
690 2007-05-20  Jan Hubicka  <jh@suse.cz>
691
692         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
693         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
694         * ddg.c (create_ddg): LIkewise.
695         * final.c (final): Remove hunk moving line numbernotes around since
696         they are no longer present at this stage.
697         (final_scan_insn): Use NOTE_KIND instead of
698         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
699         (output_asm_label): Likewise.
700         * reorg.c (dbr_schedule): Likewise.
701         * haifa-sched.c (unlink_other_notes): Likewise.
702         * mode-switching.c (optimize_mode_switching): Likewise.
703         * graph.c (start_bb): Likewise.
704         * rtl.def (NOTE): Update description.
705         * jump.c (squeeze_notes): Delete.
706         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
707         NOTE_INSN_BASIC_BLOCK_P when possible.
708         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
709         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
710         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
711         (dwarf2out_var_location): Likewise.
712         * cfgbuild.c (make_edges): Likewise.
713         (find_basic_blocks_1): Likewise.
714         * function.c (reorder_blocks_1): Likewise.
715         (epilogue_done): Likewise.
716         (reposition_prologue_and_epilogue_notes): Likewise.
717         * print-rtl.c (print_rtx): Likewise; drop code for printing line number
718         notes.
719         (print_rtl): Likewise.
720         (print_rtl_single): Likewise.
721         * gcse.c (insert_insn_start_bb): Likewise.
722         * alias.c (init_alias_analysis): Likewise.
723         * calls.c (fixup_tail_calls): Likewise.
724         * except.c (sjlj_emit_function_enter): Likewise.
725         * emit-rtl.c (add_insn_after): Likeiwse.
726         (emit_label_before): Likewise.
727         (emit_label_after): Likewise.
728         (emit_note_before, emit_note_after, emit_note): Update
729         parameter to be enum insn_note; do not deal with source
730         files.
731         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
732         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
733         when possible.
734         (merge_blocks_move_successor_nojumps): Simplify now when
735         we don't have BLOCK notes.
736         (try_optimize_cfg): Likewise.
737         * cfglayout.c (skip_insns_after_block): Likewise.
738         (record_effective_endpoints): Likewise.
739         (duplicate_insn_chain): Likewise.
740         * varasm.c (output_constant_pool_1): Likewise.
741         * sched-deps.c (sched_analyze): Likewise.
742         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
743         Exterminate.
744         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
745         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
746         (SET_INSN_DELETED): Simplify.
747         (NOTE_LINE_NUMBER): Exterminate.
748         (NOTE_LINE_KIND): New.
749         (NOTE_INSN_BASIC_BLOCK_P): Update.
750         (enum insn_note): Simplify.
751         (GET_NOTE_INSN_NAME) Simplify.
752         (emit_note_before, emit_note_after, emit_note): Update prototype.
753         (squeeze_notes): Remove.
754         * sched-int.h (NOTE_NOT_BB_P): Update.
755         * resource.c (mark_target_live_regs): Update.
756         * sched-rgn.c (debug_dependencies): Update.
757         * sched-vis.c (print_insn): Update.
758         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
759         * config/i386/i386.c (ix86_output_function_epilogue): Update.
760         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
761         (TARGET_ADJUST_UNROLL_MAX): Likewise.
762         (split_branches): Update.
763         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
764         4.0.0.
765         (sh_adjust_unroll_max): Exterminate.
766         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
767         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
768         (m68hc11_reorg): Likewise.
769         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
770         (emit_predicate_relation_info): Update.
771         (process_for_unwind_directive): Update.
772         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
773         (output_call): Update.
774         * config/pa/pa.c (output_lbranch): Update.
775         (output_millicode_call): Update.
776         (output_call): Update.
777         (pa_combine_instructions): Update.
778         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
779         * config/bfin/bfin.c (gen_one_bundle): Update.
780         * cfgrtl.c (can_delete_note_p): Update.
781         (delete_insn): Update.
782         (rtl_merge_blocks): Update.
783         (commit_one_edge_insertion): Update.
784         (rtl_verify_flow_info): Update.
785         * stmt.c (expand_case): Do not call squeeze_notes.
786
787 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
788         
789         PR middle-end/7651
790         PR c++/11856
791         PR c/12963
792         PR c/23587
793         PR other/29694
794         * c.opt (Wtype-limits): New.
795         * doc/invoke.texi (Wtype-limits): Document it.
796         (Wextra): Enabled by -Wextra.
797         * c-opts.c (c_common_post_options): Enabled by -Wextra.
798         * c-common.c (shorten_compare): Warn with Wtype-limits.
799
800 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
801
802         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
803         inlined function, not as a macro.
804         (_mm_alignr_pi8): Ditto.
805         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
806         (_mm_inserti_si64): Ditto.
807         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
808         (_mm_extract_epi16): Ditto.
809         (_mm_insert_epi16): Ditto.
810         (_mm_shufflehi_epi16): Ditto.
811         (_mm_shufflelo_epi16): Ditto.
812         (_mm_shuffle_epi32): Ditto.
813         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
814         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
815         all functions.
816         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
817         float constant.
818         (_m_to_float): Use C89 compatible assignment.
819
820 2007-04-20  Martin Michlmayr  <tbm@cyrius.com>
821
822         PR target/32007
823         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
824
825 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
826
827         PR middle-end/7651
828         * doc/invoke.texi (Wreturn-type): Complete description.
829         (Wextra): Delete item about return-type warning.
830         * c-decl.c: Delete redundant Wextra warning.
831         
832 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
833
834         PR target/31585
835         * config/i386/pmmintrin.h: Do not include xmmintrin.h
836         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
837         inlined function, not as a macro.
838         (_mm_prefetch): Ditto.
839         (_m_pextrw): Ditto.
840         (_mm_insert_pi16): Ditto.
841         (_m_pinsrw): Ditto.
842         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
843         (_m_pshufw): Ditto. Add const to __N argument.
844         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
845         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
846         (_mm_slli_epi32): Ditto.
847         (_mm_srli_si128): Implement as always inlined function, not as a macro.
848         Add __inline to function declaration.
849         (_mm_slli_si128): Ditto.
850
851 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
852
853         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
854         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
855         New constants.
856         (struct fenv): New structure.
857         (FP_HANDLE_EXCEPTIONS): New define.
858         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
859         (_FP_DECL_EXP): New define.
860         (FP_INIT_ROUNDMODE): New define.
861         (FP_ROUNDMODE): New define.
862
863 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
864
865         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
866         (Wconversion): Update description.
867         (Wconversion-sign): New.
868         * c.opt (Wconversion-sign): New.
869         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
870         means disabled for C++. Otherwise, take the status of Wconversion.
871         * c-common.c (conversion_warning): Warn with either Wconversion or
872         Wconversion-sign.
873         (warnings_for_convert_and_check): Conditions are already checked by
874         conversion_warning.
875         (convert_and_check): Don't check warnings if the conversion failed.
876
877 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
878            Anatoly Sokolov <aesok@dol.ru>
879
880         * config/avr/avr-protos.h (expand_prologue, expand_epilogue, 
881         avr_epilogue_uses) : Add declaration.
882         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
883         * config/avr/constraints.md (R): New constraint.
884         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI, 
885         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
886         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
887         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
888         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt, 
889         call_prologue_saves, epilogue_restores, return_from_epilogue,
890         return_from_main_epilogue, return_from_interrupt_epilogue, 
891         return_from_naked_epilogue, prologue, epilogue): New patterns.
892         (jump): Handle symbol reference.
893         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr, 
894         avr_output_function_prologue, avr_output_function_epilogue): Remove 
895         functions.
896         (avr_init_machine_status, expand_prologue, expand_epilogue, 
897         avr_asm_function_end_prologue, avr_epilogue_uses, 
898         avr_asm_function_begin_epilogue): New functions.
899         (prologue_size, epilogue_size, jump_tables_size): Remove global 
900         variables.
901         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
902         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
903         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
904         (avr_override_options): Initialise init_machine_status.
905         (output_movhi): Handle all stack pointer loads.
906         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
907         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
908         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
909         (EPILOGUE_USES) Redefine.
910         (machine_function) Declare.
911
912 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
913
914         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
915         Use a single return statement.
916
917 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
918
919         PR middle-end/30250
920         * builtins.c (do_mpfr_lgamma_r): New.
921         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
922         * tree.h (CASE_FLT_FN_REENT): New.
923
924 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
925
926         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
927         (output_die): Use 'unsigned long' with %x.
928         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
929         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
930         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
931
932         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
933
934 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
935
936         PR target/31989
937         PR target/31681
938         PR target/31666
939         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
940         true if function has no argument.
941
942 2007-05-18  DJ Delorie  <dj@redhat.com>
943
944         * config/mips/mips.c (mips_offset_within_alignment_p): New.
945         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
946
947 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
948
949         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
950         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
951         count_trailing_zeros.
952         (__i386__): Implement count_leading_zeros using __builtin_clz().
953         Implement count_trailing_zeros usign __builtin_ctz().
954
955 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
956
957         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
958
959 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
960
961         PR middle-end/31344
962         * expr.c (emit_move_change_mode): Change mode of push operands here.
963
964 2007-05-17  Ian Lance Taylor  <iant@google.com>
965
966         PR tree-optimization/31953
967         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
968         Change all callers.
969         (set_value_range_to_null): Call set_value_range_to_value.
970         (extract_range_from_comparison): Likewise.
971
972 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
973
974         * toplev.c (print_version): Output GMP/MPFR version info.
975
976         * builtins.c (CASE_MATHFN_REENT): New macro.
977         (mathfn_built_in): Use it.
978         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
979         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
980         BUILT_IN_LGAMMAL_R): New.
981         * doc/extend.texi: Document new builtins.
982
983         PR middle-end/31796
984         * builtins.c (do_mpfr_remquo): New.
985         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
986         (fold_builtin_3): Handle BUILT_IN_REMQUO.
987
988         PR middle-end/30251
989         * builtins.c (fold_builtin_1): Handle y0, y1.
990         (fold_builtin_2): Handle yn.
991
992         PR middle-end/30251
993         * builtins.c (do_mpfr_bessel_n): New.
994         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
995         (fold_builtin_2): Handle BUILT_IN_JN.
996
997 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
998
999         PR target/31965
1000         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
1001         TYPE_PRECISION (intmax_type_node).
1002
1003 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
1004
1005         PR target/31850
1006         * reload.c (subst_reloads): Remove checking.
1007
1008 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
1009
1010         PR rtl-optimization/31691
1011         * combine.c (simplify_set): Build a new src pattern instead of
1012         substituting its operands in the COMPARE case.
1013
1014 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
1015
1016         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
1017         (execute_vrp): Preserve loops through jump threading.
1018         * tree-ssa-threadupdate.c (thread_single_edge,
1019         dbds_continue_enumeration_p, determine_bb_domination_status,
1020         thread_through_loop_header): New functions.
1021         (create_edge_and_update_destination_phis,
1022         create_edge_and_update_destination_phis): Set loops for the new blocks.
1023         (prune_undesirable_thread_requests): Removed.
1024         (redirect_edges): Do not pretend that redirect_edge_and_branch can
1025         create new blocks.
1026         (thread_block): Do not call prune_undesirable_thread_requests.
1027         Update loops.
1028         (mark_threaded_blocks): Select edges to thread here.
1029         (thread_through_all_blocks): Take may_peel_loop_headers argument.
1030         Thread edges through loop headers independently.
1031         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
1032         * tree-pass.h (TODO_mark_first_instance): New.
1033         (first_pass_instance): Declare.
1034         * cfghooks.c (duplicate_block): Put the block to the original loop
1035         if copy is not specified.
1036         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
1037         jump threading.  Pass may_peel_loop_headers to
1038         thread_through_all_blocks according to first_pass_instance.
1039         * cfgloop.h (create_preheader): Declare.
1040         * tree-flow.h (thread_through_all_blocks): Declaration changed.
1041         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
1042         * passes.c (first_pass_instance): New variable.
1043         (next_pass_1): Set TODO_mark_first_instance.
1044         (execute_todo): Set first_pass_instance.
1045
1046 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
1047
1048         PR tree-optimization/24659
1049         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
1050         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
1051         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
1052         OTI_vec_pack_ufix_trunc.
1053         (vec_unpacks_float_hi_optab): Define new macro.
1054         (vec_unpacks_float_lo_optab): Ditto.
1055         (vec_unpacku_float_hi_optab): Ditto.
1056         (vec_unpacku_float_lo_optab): Ditto.
1057         (vec_pack_sfix_trunc_optab): Ditto.
1058         (vec_pack_ufix_trunc_optab): Ditto.
1059         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
1060         and vec_pack_[s|u]fix_trunc_optab using
1061         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
1062         * tree-vectorizer.c (supportable_widening_operation): Handle
1063         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
1064         (supportable_narrowing_operation): New function.
1065         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
1066         * tree-vect-transform.c (vectorizable_conversion): Handle
1067         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
1068         (vect_gen_widened_results_half): Move before vectorizable_conversion.
1069         (vectorizable_type_demotion): Call supportable_narrowing_operation()
1070         to check for target support.
1071         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
1072         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
1073         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
1074         for VEC_PACK_FIX_TRUNC_EXPR.
1075         (expand_binop): Special case mode of the result for
1076         vec_pack_[u|s]fix_trunc_optab.
1077         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
1078         vec_pack_[u|s]fix_trunc_optab.
1079
1080         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
1081         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
1082         * tree-pretty-print.c (dump_generic_node): Handle
1083         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
1084         VEC_PACK_FIX_TRUNC_EXPR.
1085         (op_prio): Ditto.
1086         * expr.c (expand_expr_real_1): Ditto.
1087         * tree-inline.c (estimate_num_insns_1): Ditto.
1088         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
1089
1090         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
1091         (vec_unpacks_float_lo_v8hi): Ditto.
1092         (vec_unpacku_float_hi_v8hi): Ditto.
1093         (vec_unpacku_float_lo_v8hi): Ditto.
1094         (vec_unpacks_float_hi_v4si): Ditto.
1095         (vec_unpacks_float_lo_v4si): Ditto.
1096         (vec_pack_sfix_trunc_v2df): Ditto.
1097
1098         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
1099         Document.
1100         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
1101         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
1102         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
1103         [vec_pack_ufix_trunc]: Ditto.
1104         [vec_unpacks_float_hi]: Ditto.
1105         [vec_unpacks_float_lo]: Ditto.
1106         [vec_unpacku_float_hi]: Ditto.
1107         [vec_unpacku_float_lo]: Ditto.
1108
1109 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
1110
1111         * soft-fp/README: Update for new files.
1112         * soft-fp/floattisf.c: New file.
1113         * soft-fp/floattidf.c: New file.
1114         * soft-fp/floattitf.c: New file.
1115         * soft-fp/floatuntisf.c: New file.
1116         * soft-fp/floatuntidf.c: New file.
1117         * soft-fp/floatuntitf.c: New file.
1118         * soft-fp/fixsfti.c: New file.
1119         * soft-fp/fixdfti.c: New file.
1120         * soft-fp/fixtfti.c: New file.
1121         * soft-fp/fixunssfti.c: New file.
1122         * soft-fp/fixunsdfti.c: New file.
1123         * soft-fp/fixunstfti.c: New file.
1124         * soft-fp/extendxftf.c: New file.
1125         * soft-fp/trunctfxf.c: New file.
1126
1127         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
1128         (__trunctfxf2): Ditto.
1129
1130         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
1131         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
1132         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
1133         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
1134         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
1135         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
1136
1137         * config/i386/t-fprules-softfp64: New file.
1138         * config/i386/sfp-machine.h: New file.
1139         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
1140         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
1141         and soft-fp/t-softfp to tmake_file.
1142         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
1143         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
1144         
1145         * config/i386/t-linux64 (softfp_wrap_start): New.
1146         (softfp_wrap_end): New.
1147         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
1148         supported for TARGET_64BIT.
1149
1150 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
1151
1152         * c-common.c (c_common_signed_or_unsigned_type): Emulate 
1153         c_common_unsigned_type behavior.
1154
1155 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
1156
1157         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
1158         calls as pure.
1159
1160 2007-05-16  Eric Christopher  <echristo@apple.com>
1161
1162         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
1163         saving after stack push. Set sp_offset whenever we push.
1164         (rs6000_emit_epilogue): Move altivec register restore before
1165         stack push.
1166
1167 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
1168
1169         * configure.ac: Allow sysroots to be relocated under $prefix as
1170         well as $exec_prefix.
1171         * configure: Regenerate.
1172
1173 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
1174
1175         Revert:
1176
1177         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
1178
1179         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
1180         (gcc_tooldir): Likewise.
1181         * configure: Regenerate.
1182         * Makefile.in (libsubdir_to_prefix): New variable, based on the
1183         old configure.ac gcc_tooldir setting.
1184         (prefix_to_exec_prefix): New variable.
1185         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
1186         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
1187
1188 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
1189
1190         * c-typeck.c (build_binary_op): Return early for error.
1191
1192 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
1193
1194         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
1195         struct nb_iter_bound.
1196         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
1197         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
1198         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
1199         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
1200         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
1201         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
1202         (del_scev_info): Use ggc_free.
1203         (scev_initialize): Allocate scalar_evolution_info in gc memory.
1204         * loop-init.c: Include ggc.h.
1205         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
1206         (loop_optimizer_finalize): Use ggc_free.
1207         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
1208         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
1209         pass_iv_optimize): Add TODO_ggc_collect.
1210         * function.h (struct function): Remove skip marker from x_current_loops.
1211         * cfgloop.c: Include ggc.h.
1212         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
1213         memory.
1214         (establish_preds): Vector superloops is gc allocated.
1215         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
1216         loop->exits list.
1217         (flow_loops_find): Vector larray is gc allocated.
1218         (loop_exit_free): Use ggc_free.
1219         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
1220         that head of exits list is now not a part of struct loop.
1221         (record_loop_exits): Allocate exits table in gc memory.
1222         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect that
1223         head of exits list is now not a part of struct loop.
1224         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
1225         struct loop_exit): Add GTY marker.
1226         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
1227         Add skip marker to aux field.  Make head of exits list a separate
1228         object.
1229         (struct loops): Add GTY marker.  Make larray vector gc allocated.
1230         Add param marker to exits table.
1231         (get_loops): Type changed.
1232         * Makefile.in (tree-scalar-evolution.o): Add gt-tree-scalar-evolution.h
1233         dependency.
1234         (cfgloop.o, loop-init.o): Add ggc.h dependency.
1235         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
1236         * basic-block.h (struct basic_block_def): Remove skip marker from
1237         loop_father field.
1238
1239 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
1240
1241         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
1242         of 0 in the call to expand_expr().
1243         (expand_builtin_mathfn_3): Ditto.
1244         (expand_builtin_interclass_mathfn): Ditto.
1245         (expand_builtin_cexpi): Ditto.
1246         (expand_builtin_int_roundingfn): Ditto.
1247         (expand_builtin_int_roundingfn_2): Ditto.
1248         (expand_builtin_pow): Ditto.
1249         (expand_builtin_powi): Ditto.
1250         (expand_builtin_bswap): Ditto.
1251         (expand_builtin_unop): Ditto.
1252         (expand_builtin_fabs): Ditto.
1253         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
1254         the call to expand_expr().
1255         (expand_builtin_sync_operation): Ditto.
1256         (expand_builtin_compare_and_swap): Ditto.
1257         (expand_builtin_lock_test_and_set): Ditto.
1258         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
1259         instead of 0 in the call to expand_expr().
1260         (expand_builtin_extract_return_addr): Ditto.
1261         (expand_builtin_eh_return): Ditto.
1262         (expand_eh_return): Ditto.
1263         * explow.c (expr_size): Ditto.
1264         * expr.c (optimize_bitfield_assignment_op): Ditto.
1265         (expand_assignement): Ditto.
1266         (store_expr): Ditto.
1267         (store_field): Ditto.
1268         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
1269         the call to expand_expr().
1270         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
1271         in the call to expand_expr().
1272         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
1273         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
1274         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
1275         of expand_expr().
1276         * optabs.c (expand_vec_shift_expr): Ditto.
1277         (expand_vec_cond_expr): Ditto.
1278         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
1279         call to expand_expr().
1280         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
1281         in the call to expand_expr().
1282
1283 2007-05-14  Dave Korn  <dave.korn@artimi.com>
1284
1285         * genautomata.c (gen_regexp_el):  Allocate correct size for regexp.
1286
1287 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
1288
1289         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
1290         instead of c_common_unsigned_type.
1291         (c_common_unsigned_type): Remove.
1292         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
1293         c_common_unsigned_type.
1294         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
1295         c_common_unsigned_type.
1296         * c-common.h (c_common_unsigned_type): Remove.
1297         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
1298         c_common_unsigned_type.
1299         * c-format.c (check_format_types): Use unsigned_type_for instead of
1300         c_common_unsigned_type.
1301         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
1302         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead of
1303         c_common_unsigned_type.
1304         * convert.c (convert_to_integer): Use unsigned_type_for instead of
1305         lang_hooks.types.unsigned_type.
1306         * expmed.c (make_tree): Use unsigned_type_for instead of
1307         lang_hooks.types.unsigned_type.
1308         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
1309         lang_hooks.types.unsigned_type.
1310         (build_range_check): Likewise.
1311         (fold_unary): Likewise.
1312         (fold_binary): Likewise.
1313         (fold_ternary): Likewise.
1314         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
1315         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
1316         * tree.c (get_unsigned_type): New.
1317         (unsigned_type_for): Use get_unsigned_type instead of
1318         lang_hooks.types.unsigned_type.
1319
1320 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
1321
1322         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
1323         to m68k_get_function_kind.  Update its prototype.
1324         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
1325         interrupt_thread.
1326         (m68k_interrupt_function_p): Return enum m68k_function_type
1327         instead of bool.  Rename to m68k_get_function_kind.
1328         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
1329         target is not fido.
1330         (m68k_compute_frame_layout): Don't mark any register for save
1331         if an interrupt_thread attribute is specified.
1332         (m68k_hard_regno_rename_ok): Update a use of
1333         m68k_interrupt_function_p.
1334         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
1335         m68k_interrupt_function_p.
1336         (m68k_function_type): New.
1337         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
1338         for a function with an interrupt_thread attribute.
1339         * doc/extend.texi: Document the interrupt_thread attribute.
1340
1341 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
1342
1343         Fix PR tree-optimization/31911
1344         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
1345         if they didn't change the expression.
1346
1347 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
1348
1349         * tree-scalar-evolution.c (resolve_mixers): Exported.
1350         * tree-scalar-evolution.h (resolve_mixers): Declare.
1351         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
1352         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
1353         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
1354         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
1355         init_array_ref, init_pointer_ref, analyze_indirect_ref,
1356         strip_conversion, analyze_offset_expr, address_analysis,
1357         object_analysis, analyze_offset): Removed.
1358         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
1359         split_constant_offset, canonicalize_base_object_address,
1360         object_address_invariant_in_loop_p, disjoint_objects_p,
1361         dr_may_alias_p, dr_address_invariant_p): New functions.
1362         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
1363         and dr_analyze_alias.
1364         (initialize_data_dependence_relation): Use dr_may_alias_p
1365         and object_address_invariant_in_loop_p.
1366         (compute_self_dependence): Handle the case when DDR_ARE_DEPENDENT (ddr)
1367         is chrec_dont_know.
1368         (find_data_references_in_stmt): Restrict the analysis of data references
1369         to the given loop nest.
1370         (find_data_references_in_loop): Made static.  Pass loop nest to
1371         find_data_references_in_stmt.
1372         (compute_data_dependences_for_loop): Use DR_VOPS.
1373         (free_data_ref): Free DR_VOPS.
1374         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
1375         (struct innermost_loop_behavior): ... new.
1376         (struct base_object_info): Replaced by ...
1377         (struct indices): ... new.
1378         (struct dr_alias): New.
1379         (enum data_ref_type): Removed.
1380         (struct data_reference): Consist of struct innermost_loop_behavior,
1381         struct indices and struct dr_alias.
1382         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
1383         (DR_MEMTAG): Renamed to ...
1384         (DR_SYMBOL_TAG): ... this.
1385         (find_data_references_in_loop): Declaration removed.
1386         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
1387         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
1388         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
1389         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
1390
1391 2007-05-13  Revital Eres  <eres@il.ibm.com>
1392
1393         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
1394         which walks virtual def-use chains to find redundant stores.
1395         (dse_optimize_stmt): Call it.
1396
1397 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
1398
1399         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
1400         * passes.c (init_optimization_passes): Move pass_jump_bypass
1401         after loop2.
1402
1403         * basic-block.h (bb_has_eh_pred): Fix style issue.
1404
1405 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
1406
1407         PR rtl-optimization/31848
1408         * loop-invariant.c (move_invariant_reg): If we move an insn
1409         with a REG_EQUAL note, and that insn is not always executed,
1410         remove the REG_EQUAL note.
1411
1412 2007-05-12  Richard Guenther  <rguenther@suse.de>
1413
1414         PR tree-optimization/31797
1415         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
1416         propagate into a stmt that has volatile ops.
1417
1418 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
1419
1420         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
1421         (gcc_tooldir): Likewise.
1422         * configure: Regenerate.
1423         * Makefile.in (libsubdir_to_prefix): New variable, based on the
1424         old configure.ac gcc_tooldir setting.
1425         (prefix_to_exec_prefix): New variable.
1426         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
1427         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
1428
1429 2007-05-11  Silvius Rus  <rus@google.com>
1430
1431         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
1432         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
1433         * c-common.h (strict_aliasing_warning): Change return type.
1434         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
1435         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
1436         (build_c_cast): Condition call to strict_aliasing_warning.
1437         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
1438         * flags.h (set_Wstrict_aliasing): Declare.
1439         * opts.c (set_Wstrict_alising): Define, add call to.
1440         * tree-flow.h (strict_aliasing_warning_backend): Declare.
1441         * tree-ssa-alias-warnings.c: New file.
1442         * tree-ssa-alias.c (compute_may_aliases): Add call to
1443         strict_aliasing_warning_backend.
1444
1445 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
1446
1447         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
1448         Use loop_depth and loop_outer accessor functions.
1449         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
1450         determine_invariantness_stmt, move_computations_stmt): Ditto.
1451         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
1452         add_loop, loopify, unloop, fix_loop_structure): Ditto.
1453         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
1454         * tree-scalar-evolution.c (interpret_loop_phi,
1455         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
1456         instantiate_parameters_1, scev_const_prop): Ditto.
1457         * cfghooks.c (make_forwarder_block): Ditto.
1458         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
1459         * modulo-sched.c (loop_canon_p): Ditto.
1460         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
1461         slpeel_can_duplicate_loop_p): Ditto.
1462         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
1463         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
1464         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
1465         cancel_loop, verify_loop_structure): Ditto.
1466         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
1467         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
1468         superloops vector instead of "pred" array.
1469         (establish_preds): Take father loop as an argument.  Initialize the
1470         superloops vector.
1471         (flow_loop_tree_node_add): Pass father loop to establish_preds.  Do not
1472         initialize loop->outer.
1473         (flow_loop_tree_node_remove): Truncate the superloops vector.
1474         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
1475         "pred" merged to "superloops" vector.
1476         (loop_depth, loop_outer): New.
1477         (fel_init): Use loop_outer.
1478
1479 2007-05-11  Jan Hubicka  <jh@suse.cz>
1480
1481         * cgraphunit.c: Include gt-cgraphunit.h
1482         (static_ctors, static_dtors): New static vars.
1483         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
1484         based on implementation in c-common.c
1485         (cgraph_finalize_function): Call record_cdtor_fn.
1486         (cgraph_optimize): Call cgraph_build_cdtor_fns.
1487         * decl.c (finish_function): Do not call c_record_cdtor_fn.
1488         (c_write_global_declarations): Do not call c_build_cdtor_fns.
1489         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
1490         build_cdtor, c_build_cdtor_fns): Remove.
1491         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
1492         c_build_cdtor_fns): Remove prototype.
1493
1494 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
1495
1496         PR other/31852
1497         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
1498         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
1499         * builtins.c (fold_builtin_memchr): New.
1500         (expand_builtin_memchr): Call the latter.
1501         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
1502         * doc/extend.texi ([Other built-in functions provided by GCC]):
1503         Document memchr.
1504
1505 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
1506
1507         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
1508         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
1509         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
1510         PFPO_OP1_TYPE_SHIFT): Constants added.
1511         (DFP_ALL): Mode macro defined.
1512         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
1513         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
1514         Insn definitions added.
1515         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
1516         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
1517         Expanders added.
1518
1519 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
1520
1521         PR tree-optimization/31885
1522         * tree-chrec.c (chrec_contains_undetermined): Do not consider NULL_TREE
1523         to be undetermined.
1524         (automatically_generated_chrec_p): Return false for NULL.
1525
1526 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
1527
1528         * config/bfin/bfin.h (MOVE_RATIO): Define.
1529
1530 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
1531
1532         * config.gcc (sparc-wrs-vxworks): New target.
1533         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
1534         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
1535         * config/sparc/sparc.h: Include vxworks-dummy.h.
1536         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
1537         include LABEL_REFs too.
1538         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
1539         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
1540         VxWorks.
1541         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
1542         on VxWorks.
1543         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
1544         (sparc_emit_call_insn): New function.
1545         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
1546         functions when generating VxWorks PIC.
1547         * config/sparc/sparc.md (vxworks_load_got): New pattern.
1548         (call, call_value): Use sparc_emit_call_insn instead of
1549         emit_call_insn.
1550
1551 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
1552
1553         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
1554
1555 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
1556
1557         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
1558         for floating-point values if HOST_BITS_PER_LONG > 32.  Use split_double
1559         instead of operand_subword.
1560
1561 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
1562
1563         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
1564         * config/bfin/bfin.c (bfin_local_alignment): New function.
1565         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
1566
1567 2007-05-08  Chao-ying Fu  <fu@mips.com>
1568
1569         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
1570         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
1571         (smsub_widen_optab, umsub_widen_optab): Define.
1572         * optabs.c (init_optabs): Initialize smsub_widen_optab and
1573         umsub_widen_optab.
1574         * genopinit.c (optabs): Fill in smsub_widen_optab and
1575         umsub_widen_optab.
1576         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
1577         and umsub_widen_optab to implement multiply-subtract sequences.
1578         * config/mips/mips.md (*msac<u>_di): Rename to...
1579         (<u>msubsidi4): ...this.  Extend condition to include
1580         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
1581         of operand 0 to "ka" and use the three-operand form of msub<u>
1582         for TARGET_DSPR2.
1583         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
1584         to define_expands.
1585
1586 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
1587
1588         PR rtl-optimization/28011
1589         * reload.c (push_reload): Set dont_share if IN appears in OUT
1590         also when IN is a PLUS rtx.
1591         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
1592         are same PLUS rtx.
1593
1594 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
1595
1596         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
1597         call unshare_all_decls.
1598         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
1599         (unshare_all_decls): Remove.
1600
1601 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
1602
1603         PR 31847
1604         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
1605         dumps.
1606
1607 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
1608             Nigel Stephens  <nigel@mips.com>
1609
1610         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
1611         Update comments and all uses.
1612         (MIN_FPRS_PER_FMT): Define.
1613         * config/mips/mips.c (function_arg): Fix to correctly handle
1614         the -mips32r2 -mfp64 -mabi=32 case.
1615         (override_options): Enable use of odd-numbered registers for
1616         SFmode values on MIPS32.
1617         (mips_save_reg_p): Save whole floating-point register pair if
1618         either half is used.
1619         (compute_frame_size): Fix comment.
1620
1621 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
1622
1623         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
1624         argument of type bool.
1625         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
1626         argument. Safely select temporary P register according to it.
1627         (do_link): Change call site of add_to_reg accordingly.
1628         (do_unlink): Add epilogue_p as a fourth argument and pass it
1629         to add_to_reg.
1630         (expand_interrupt_handler_epilogue): Change call of do_unlink
1631         accordingly.
1632         (bfin_expand_prologue): Add a third argument sibcall_p.
1633         * config/bfin/bfin.md (epilogue): Change call of
1634         bfin_expand_epilogue accordingly.
1635         (sibcall_epilogue): Likewise.
1636         (eh_return_internal): Likewise.
1637
1638         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
1639         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
1640         * config/bfin/bfin.c (bfin_handle_option): Handle
1641         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
1642         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
1643         Support bf534, bf536 and bf561.
1644         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
1645
1646 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
1647
1648         PR target/31854
1649         * config/i386/i386.c (ix86_function_regparm): Process local
1650         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
1651
1652 2007-05-07  Mike Stump  <mrs@apple.com>
1653
1654         * doc/invoke.texi (Warning Options): Document that -Wempty-body
1655         also checks for and while statements in C++.
1656
1657 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
1658
1659         * gcc.c (at_file_supplied): New variable.
1660         (main): Set it if we expanded argv.
1661         (do_spec_1): Pass an @-file to the linker if we were called with
1662         an @-file argument and HAVE_GNU_LD.
1663         * collect2.c (at_file_supplied): New variable.
1664         (response_file): New variable.
1665         (collect_exit): Unlink response_file if necessary.
1666         (handler): Likewise.
1667         (do_wait): Likewise.
1668         (main): Set at_file_supplied if we expanded argv.
1669         (collect_execute): Pass an @-file to subprocesses if we were called
1670         with an @-file argument.
1671         * configure.ac: Add define for HAVE_GNU_LD.
1672         * configure: Regenerate.
1673         * config.in: Regenerate.
1674
1675 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
1676
1677         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
1678         operand to HI mode.
1679         (mulsi3): New.
1680         (divsi3): New.
1681         (udivsi3): New.
1682
1683 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
1684
1685         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
1686         (TARGET_ENCODE_SECTION_INFO): Re-define.
1687         (m32c_encode_section_info): New
1688         (function_vector_handler): New
1689         (current_function_special_page_vector): New
1690         (m32c_special_page_vector_p): New.
1691         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
1692         Prototype.
1693         * config/m32c/jump.md: Added instruction JSRS for functions
1694         with attribute "function_vector".
1695         * doc/extend.texi (function_vector): Added description
1696         for M16C, M32C targets.
1697
1698 2007-05-07  DJ Delorie  <dj@redhat.com>
1699
1700         PR 31794
1701         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
1702         ashrpsi3, lshrpsi3): Update shift count constraint.
1703
1704 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
1705             Nathan Froyd  <froydnj@codesourcery.com>
1706
1707         PR 22133
1708         * c-incpath.c (add_path): Strip trailing path separators.
1709
1710 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
1711
1712         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
1713         Free dominance info before purging EH edges.
1714         (eliminate_degenerate_phis): Likewise.
1715         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
1716
1717 2007-05-07  Jan Hubicka  <jh@suse.cz>
1718
1719         * gimplify.c (gimplify_expr): Do not crash when folding
1720         (void *)(int)&a + 4.
1721
1722 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1723
1724         PR driver/31694
1725         * c-opts.c (lang_fortran): Make it non static.
1726         * c-common.h (lang_fortran): New prototype.
1727         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
1728         -lang-fortran option was passed by the driver.
1729
1730 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
1731
1732         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
1733         of ASSERT_CHECKING.  Tweak message.
1734
1735 2007-05-06  Revital Eres  <eres@il.ibm.com>
1736
1737         PR 30957
1738         * loop-unroll.c (insert_var_expansion_initialization):
1739         Initialize the expansions with -zero instead of +zero.
1740
1741 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
1742
1743         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
1744         into pic and non-pic versions. Mark r19 as used for
1745         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
1746         for tgd_load, tld_load and tie_load .
1747         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
1748         version of tgd_load, tld_load and tie_load depending on the
1749         value of flag_pic.
1750
1751 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
1752             Jakub Jelinek  <jakub@redhat.com>
1753
1754         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
1755         (__do_global_dtors_aux): Use more paranoid loop to run
1756         destructors if HIDDEN_DTOR_LIST_END.
1757         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
1758
1759 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
1760
1761         * varasm.c (align_variable): Don't increase alignment for
1762         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
1763         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
1764
1765 2007-05-04  Josh Conner  <jconner@apple.com>
1766
1767         * basic-block.h (cdi_direction): Assign values to all enumeration
1768         constants.
1769         (dom_computed): Remove.
1770         (dom_info_state): New.
1771         (set_dom_info_availability): New.
1772         * tree-ssa-loop-im.c (determine_invariantness): Initialize
1773         walk_data.dom_direction.
1774         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
1775         instead of dom_computed[].
1776         (split_edge): Likewise.
1777         (create_basic_block): Likewise.
1778         (merge_blocks): Likewise.
1779         * ifcvt.c (find_if_header): Likewise.
1780         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
1781         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
1782         * tree-ssa.c (verify_ssa): Likewise.
1783         * tree-cfg.c (tree_verify_flow_info): Likewise.
1784         (remove_edge_and_dominated_blocks): Likewise.
1785         * dominance.c (dom_computed): Make static.
1786         (calc_dfs_tree_nonrec): Change third param to a bool.
1787         (calc_dfs_tree): Change second param to a bool.
1788         (calc_idioms): Change second param to a bool.  Use
1789         dom_convert_dir_to_idx.
1790         (init_dom_info): Validate dir before using.
1791         (dom_convert_dir_to_idx): New.
1792         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
1793         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
1794         (free_dominance_info): Use dom_convert_dir_to_idx.
1795         (get_immediate_dominator): Likewise.
1796         (set_immediate_dominator): Likewise.
1797         (get_dominated_by): Likewise.
1798         (redirect_immediate_dominators): Likewise.
1799         (nearest_common_denominator): Likewise.
1800         (dominated_by_p): Likewise.
1801         (bb_dom_dfs_in): Likewise.
1802         (bb_dom_dfs_out): Likewise.
1803         (recount_dominator): Likewise.
1804         (iterate_fix_dominators): Likewise.
1805         (add_to_dominance_info): Likewise.
1806         (delete_from_dominance_info): Likewise.
1807         (first_dom_son): Likewise.
1808         (next_dom_son): Likewise.
1809         (dom_info_available_p): Likewise.
1810         (dom_info_state): New.
1811         (set_dom_info_availability): New.
1812
1813 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
1814
1815         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
1816         Expander removed.
1817         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
1818
1819 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
1820
1821         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
1822         (subdi3, subdi_carry): Delete.
1823
1824 2007-05-04  Jan Hubicka  <jh@suse.cz>
1825             Richard Guenther  <rguenther@suse.de>
1826
1827         * opts.c (decode_options): Do not fiddle with inlining
1828         parameters in case of optimizing for size.
1829         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
1830         for size do nothing.
1831         (cgraph_decide_inlining_of_small_function): When optimizing for
1832         size never inline functions increasing caller size.
1833         (cgraph_early_inlining): Inline for size when optimizing for size.
1834
1835 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
1836
1837         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
1838         logical operations piecewise.
1839         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
1840         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
1841         subdi_sesidi_di): Delete.
1842         (add_with_carry): Produce carry in CC instead of a DREG to shorten
1843         the generated sequence.  Allow three-reg add in constraints.  Rewrite
1844         the rtl expression for carry to avoid zero_extend of a constant.
1845         (sub_with_carry): New pattern.
1846         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
1847         different sequence not involving jumps.
1848         (notbi): Now a named pattern.
1849
1850 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
1851
1852         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
1853         Add the note about a significant loss of accuracy of some
1854         mathematical routines when these options are used.
1855
1856 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
1857
1858         * haifa-sched.c (rtx_vec_t): New typedef.
1859         (contributes_to_priority_p): Extract piece of priority () into new
1860         static function.
1861         (priority): Use the function.  Add assertion.
1862         (rank_for_schedule, set_priorities): Add assertion to check that
1863         insn's priority is initialized.
1864         (clear_priorities, calc_priorities): Change signature.  Make it update
1865         all relevant insns.  Update all callers ('add_to_speculative_block ()'
1866         and 'create_block_check_twin ()').
1867         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
1868         Add new field 'priority_status'.
1869         (INSN_PRIORITY_STATUS): New macro.
1870         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
1871
1872 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
1873
1874         * sched-ebb.c (debug_ebb_dependencies): New static function.
1875         (init_ready_list): Use it.
1876
1877         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
1878         with changed signature and 'debug_rgn_dependencies ()'.
1879         (debug_rgn_dependencies): New static function.
1880         (init_ready_list): Use it.
1881
1882         * sched-int.h (debug_dependencies): Declare.
1883
1884 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
1885
1886         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
1887
1888 2007-05-04  Dirk Mueller  <dmueller@suse.de>
1889
1890         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
1891
1892 2007-05-03  Jan Hubicka  <jh@suse.cz>
1893
1894         * fold-const.c (fold_unary): Convert (T1)(X op Y) into ((T1)X op (T1)Y),
1895         for pointer type in more cases than before.
1896
1897         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
1898
1899         * tree-object-size.c (plus_expr_object_size): When operand size is
1900         unknown, return unknown.
1901
1902 2007-05-03  Dirk Mueller  <dmueller@suse.de>
1903
1904         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
1905
1906         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
1907         options.
1908
1909         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
1910
1911 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
1912
1913         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
1914
1915 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
1916
1917         * config/soft-fp/double.h, config/soft-fp/extended.h,
1918         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
1919         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
1920         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
1921         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
1922         glibc CVS.
1923
1924 2007-05-03  Ian Lance Taylor  <iant@google.com>
1925
1926         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
1927         MASK_PPC_GFXOPT for 8540 or 8548.
1928
1929 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
1930
1931         * tree-vect-transform.c (vect_update_inits_of_drs): Use
1932         vect_print_dump_info() to output debug information.
1933
1934 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
1935
1936         PR target/31768
1937         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
1938         operands of size 2 when operand is not MEM_P.
1939
1940 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
1941
1942         PR tree-optimization/30565
1943         * lambda-code.c (perfect_nestify): Fix updating of dominators.
1944
1945 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
1946
1947         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
1948         (umulsi3_highpart): Use them.
1949         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
1950         for final accumulator to D regisster tranfser.
1951
1952 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
1953
1954         PR tree-optimization/31699
1955         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove wrong
1956         code.
1957         (vect_enhance_data_refs_alignment): Compute peel amount using
1958         TYPE_VECTOR_SUBPARTS instead of vf.
1959         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
1960
1961 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
1962
1963         PR bootstrap/31776
1964         * system.h: Remove inclusion of double-int.h
1965         * tree.h: Include double-int.h
1966         * gengtype.c: Likewise
1967         * cfgloop.h: Likewise
1968         * Makefile.in: Adjust dependencies on double-int.h
1969
1970 2007-05-02  Eric Christopher  <echristo@apple.com>
1971
1972         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
1973         -shared to -Zdynamiclib.
1974
1975 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
1976
1977         PR c++/31663
1978         * c-common.c (strip_pointer_or_array_types): New function.
1979         * c-common.h (strip_pointer_or_array_types): New function declaration.
1980
1981 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
1982
1983         PR tree-optimization/31771
1984         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
1985
1986 2007-05-02  Paul Brook  <paul@codesourcery.com>
1987
1988         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
1989
1990 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1991
1992         PR middle-end/29715
1993         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
1994         transformation.
1995
1996 2007-05-02  Nick Clifton  <nickc@redhat.com>
1997
1998         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
1999
2000 2007-05-02  Richard Guenther  <rguenther@suse.de>
2001
2002         PR tree-optimization/31146
2003         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
2004         argument, single_use_p.  If we have a single use that is
2005         a conversion to the definition rhs type, propagate that rhs.
2006         (forward_propagate_addr_expr): Pass single_use_p argument
2007         to forward_propagate_addr_expr_1.
2008
2009 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
2010
2011         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
2012         variable.
2013
2014 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
2015
2016         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
2017         'AMD Family 10 core'.
2018
2019 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
2020
2021         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
2022         and athlon64-sse3 as improved versions of k8, opteron and athlon64
2023         with SSE3 instruction set support.
2024         * doc/invoke.texi: Likewise.
2025
2026 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
2027
2028         * config/i386/i386.c (override_options): Tuning 32-byte loop
2029         alignment for amdfam10 architecture. Increasing the max loop
2030         alignment to 24 bytes.
2031
2032 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
2033
2034         * config/m68k/constraints.md: New.
2035         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
2036         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
2037         EXTRA_CONSTRAINT): Remove.
2038         * config/m68k/m68k.md: Include constraints.md.
2039         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
2040
2041 2007-05-01  Ian Lance Taylor  <iant@google.com>
2042
2043         PR tree-optimization/31739
2044         * tree-vrp.c (vrp_val_is_max): New static function.
2045         (vrp_val_is_min): New static function.
2046         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
2047         copying the node.
2048         (set_value_range): Use vrp_val_is_{max,min}.
2049         (extract_range_from_assert): Likewise.
2050         (extract_range_from_binary_expr): Likewise.
2051         (extract_range_from_unary_expr): Likewise.
2052         (dump_value_range, vrp_meet): Likewise.
2053         (vrp_visit_phi_node): Likewise.
2054         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
2055
2056 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
2057
2058         * config/i386/gmon-sol2.c (size_t): New type.
2059         (intptr_t): Likewise.
2060         (s_textsize): Declare as size_t.
2061         (sbrk): Declare.
2062         (monstartup): Use size_t for sizes.
2063         (_mcount): Save and restore registers.
2064         (internal_mcount): Pass 0 as the first argument to monstartup
2065         in 64-bit mode.
2066         (moncontrol): Convert pointer to appropriately sized integer
2067         before passing to profil.
2068
2069 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
2070
2071         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
2072         __NO_FPRS__, not just if _SOFT_DOUBLE.
2073         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
2074         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
2075         also for E500 double.
2076         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
2077         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
2078         && !TARGET_FPRS).
2079
2080 2007-05-01  Richard Guenther  <rguenther@suse.de>
2081
2082         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
2083         is NULL.
2084
2085 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
2086
2087         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
2088
2089 2007-05-01  Jan Hubicka  <jh@suse.cz>
2090
2091         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
2092         invariant.
2093
2094 2007-05-01  Jan Hubicka  <jh@suse.cz>
2095
2096         * tree.h (maybe_fold_offset_to_component_ref): Remove.
2097         (maybe_fold_offset_to_reference): Declare.
2098         * fold-const.c (fold_unary): Do not fold
2099         (type *)&A into &A->field_of_type_and_offset_0
2100         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
2101         size is unknown, give up.
2102         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
2103         offsets.
2104         (maybe_fold_offset_to_reference): New.
2105         (maybe_fold_stmt_indirect): Use it.
2106         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
2107         * gimplify.c (gimplify_conversion): Canonicalize conversions to
2108         field references.
2109         (gimplify_expr): Likewise for plus_expr.
2110
2111 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
2112
2113         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
2114         bsi_after_labels.  Always insert statements before bsi.
2115         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
2116         * predict.c (apply_return_prediction): Check for empty blocks.
2117         * cfgexpand.c (lab_rtx_for_bb): New variable.
2118         (label_rtx_for_bb): Do not create new tree labels.
2119         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
2120         (tree_expand_cfg): Initialize lab_rtx_for_bb.
2121         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
2122         creating edges.
2123         (label_for_bb): Add field used.
2124         (update_eh_label, main_block_label): Mark the label used.
2125         (cleanup_dead_labels): Remove unused labels.
2126
2127 2007-05-01  Richard Guenther  <rguenther@suse.de>
2128
2129         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
2130         if it is not about to be set.
2131         (get_value_range): Do not pre-allocate equiv bitmap.
2132         (update_value_range): No need to clear equiv field.
2133         (add_equivalence): Change prototype to get bitmap pointer.
2134         Allocate bitmap here if it is not already.
2135         (extract_range_from_assert): Do not allocate bitmap here.
2136         Update callers to add_equivalence.
2137         (extract_range_from_ssa_name): Likewise.
2138         (get_vr_for_comparison): New static helper.
2139         (compare_name_with_value): Handle NULL equiv bitmap by
2140         peeling the first iteration of the comparison loop.
2141         Use get_vr_for_comparison.
2142         (compare_names): Handle NULL equiv bitmaps by using fake
2143         ones.  Use get_vr_for_comparison.
2144
2145 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
2146
2147         * double-int.c (mpz_set_double_int): Moved from
2148         tree-ssa-loop-niter.c.
2149         (mpz_get_double_int): Likewise; also, add option to wrap
2150         out-of-range integers.
2151         * double-int.h: New prototypes for above.
2152         * tree.c (get_static_type_bounds): Moved from
2153         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
2154         TYPE_MAX_VALUE if they exist..
2155         * tree.h: New prototype for above.
2156         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
2157         get_type_bounds calls.
2158         (mpz_set_double_int): Move to double-int.c.
2159         (get_type_bounds): Move to tree.c, rename to
2160         get_static_type_bounds.
2161         (mpz_to_double_int): Move to double-int.c, rename to
2162         mpz_get_double_int.
2163
2164 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
2165
2166         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
2167         DIV0 exception can fall through to a normal return.
2168
2169 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
2170
2171         PR middle-end/22156
2172         Temporarily revert:
2173         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
2174         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
2175         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
2176         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
2177         initialize align to silence bogus warning.
2178         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
2179         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
2180         all_no_warning.
2181         (struct sra_walk_fns): Remove use_all parameter from use.
2182         (sra_hash_tree): Handle BIT_FIELD_REFs.
2183         (sra_elt_hash): Don't hash bitfld blocks.
2184         (sra_elt_eq): Skip them in parent compares as well.  Handle
2185         BIT_FIELD_REFs.
2186         (sra_walk_expr): Don't maintain or pass down use_all_p.
2187         (scan_use): Remove use_all parameter.
2188         (scalarize_use): Likewise.  Re-expand assignment to
2189         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
2190         output, and re-scalarize after output.  Don't mark anything
2191         for no warning.
2192         (scalarize_ldst): Adjust.
2193         (scalarize_walk_gimple_modify_statement): Likewise.
2194         (build_element_name_1): Handle BIT_FIELD_REFs.
2195         (instantiate_element): Don't warn for any element whose parent
2196         is used as a whole.
2197         (instantiate_missing_elements_1): Return the sra_elt.
2198         (canon_type_for_field): New.
2199         (try_instantiate_multiple_fields): New.
2200         (instantiate_missing_elemnts): Use them.
2201         (mark_no_warning): Removed.
2202         (generate_one_element_ref): Handle BIT_FIELD_REFs.
2203         (REPLDUP, sra_build_elt_assignment): New.
2204         (generate_copy_inout): Use them.
2205         (generate_element_copy): Likewise.  Handle bitfld differences.
2206         (generate_element_zero): Don't recurse for blocks.  Use
2207         sra_build_elt_assignment.
2208         (generate_one_element_int): Take elt instead of var.  Use
2209         sra_build_elt_assignment.
2210         (generate_element_init_1): Adjust.
2211         (scalarize_use, scalarize_copy): Use REPLDUP.
2212         (scalarize_ldst): Move assert before dereference.
2213         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
2214
2215 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2216
2217         PR C++/31721
2218         * tree.c (reconstruct_complex_type): Reconstruct a reference
2219         correctly.
2220         Also use the same mode for the pointer as the old pointer type.
2221
2222 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
2223
2224         * doc/trouble.texi (Interoperation): Remove note about Ultrix
2225         Fortran compiler.
2226
2227 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
2228
2229         PR rtl-optimization/31676
2230         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
2231         (df_refs_record): Call it.
2232
2233 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
2234
2235         * rtl.def (SS_ABS): New code.
2236         * config/bfin/bfin.c (print_operand): New modifier 'v'.
2237         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
2238         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
2239         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
2240         (bfin_init_builtins): Define them.
2241         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
2242         (bfin_expand_builtin): ... and handle the others here.
2243         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
2244         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
2245         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
2246         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
2247         operand is only HImode.
2248
2249 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
2250
2251         * regclass.c (scan_one_insn): Remove splitting of
2252         two address insns.
2253
2254 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
2255             Nigel Stephens  <nigel@mips.com>
2256
2257         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
2258
2259 2007-04-28  Jan Hubicka  <jh@suse.cz>
2260
2261         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
2262         insn_locators_alloc instead of insn_locators_initialize;
2263         call reset_block_changes.
2264         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
2265         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
2266         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
2267         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
2268         * config/score/score.c (th_output_mi_thunk): Likewise.
2269         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
2270         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
2271         tolerate uninitialized locator info.
2272
2273         Re-apply:
2274         * function.c (init_function_start): Don't init line number info.
2275         (expand_function_end): Update.
2276         (reset_block_changes, record_block_change, finalize_block_changes,
2277         check_block_change, free_block_changes): Kill.
2278         * function.h (reset_block_changes, record_block_change,
2279         finalize_block_changes, check_block_change, free_block_changes): Remove
2280         prototypes.
2281         (struct function): Remove ib_boundaries_block.
2282         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
2283         Use curr_insn_locator to initialize locator.
2284         (emit_line_note): Remove.
2285         * cfgexpand.c (expand_gimple_cond_expr): Update.
2286         (construct_exit_block): Likewise.
2287         (tree_expand_cfg): Initialize/finalize locators.
2288         * expr.c (expand_expr_real): Update.
2289         * cfglayout.c (line_locators_locs, line_locators_lines,
2290         file_locators_locs, file_locators_files): Remove.
2291         (set_block_levels): Move to cfgexpand.c.
2292         (insn_locators_initialize): Remove.
2293         (pass_insn_locators_initialize): Remove.
2294         (locations_locators_locs, locations_locators_vals): New static vars.
2295         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
2296         Likewise.
2297         (insn_locators_alloc, insn_locators_finalize,
2298         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
2299         New functions.
2300         (locator_location): New.
2301         (locator_line, locator_file): Rewrite.
2302         * rtl.h (emit_line_note): Kill.
2303         (insn_locators_alloc, insn_locators_finalize,
2304         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
2305         Declare.
2306         * tree-inline.c (initialize_cfun): Do not initialize
2307         ib_boundaries_block.
2308         * passes.c (pass_insn_locators_initialize): Remove.
2309
2310 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
2311
2312         * tree-cfg.c (move_block_to_fn): Release bb from dominance
2313         info.  Update last_basic_block correctly.
2314
2315 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
2316
2317         PR target/31701
2318         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
2319         register itself to hold the offset constant.  Tell flow the use
2320         of r4 and r5 when they are used.
2321
2322 2007-04-27  Richard Guenther  <rguenther@suse.de>
2323
2324         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
2325         if we simplified anything.
2326         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
2327         warnings until we did a simplification and the stmt was not
2328         marked as TREE_NO_WARNING.
2329
2330 2007-04-27  Mike Stump  <mrs@apple.com>
2331
2332         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
2333
2334 2007-04-27  Ian Lance Taylor  <iant@google.com>
2335
2336         PR middle-end/31710
2337         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
2338         TYPE_MAX_VALUE exist, convert them to the new type.
2339
2340 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
2341
2342         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
2343         if it claims to be available.
2344         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
2345         edge is redirected.
2346         (perform_tree_ssa_dce): Always free postdominators.
2347
2348 2007-04-27  Richard Henderson  <rth@redhat.com>
2349
2350         * config/alpha/predicates.md (aligned_memory_operand): Mark
2351         as define_special_predicate.
2352         (unaligned_memory_operand, normal_memory_operand): Likewise.
2353         (reg_or_unaligned_mem_operand): Remove.
2354         (any_memory_operand): Match the documentation and check for
2355         non-renumbered pseudos during reload.
2356         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
2357         alpha_secondary_reload_class, update to new interface, make static.
2358         Handle CQImode like HImode.  Remove FP subreg check.
2359         (alpha_expand_mov): Use replace_equiv_address.
2360         (alpha_expand_mov_nobwx): Use any_memory_operand.
2361         (TARGET_SECONDARY_RELOAD): New.
2362         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
2363         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
2364         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
2365         * config/alpha/alpha.md: ... here.
2366         (RELOAD12, reloadmode): New.
2367         (movcqi): New.
2368         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
2369         Don't handle the aligned case here.
2370         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
2371         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
2372         reload_inhi_help.  Don't expect a scratch register.
2373         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
2374         reload_outhi_help.
2375         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
2376
2377 2007-04-27  Richard Guenther  <rguenther@suse.de>
2378
2379         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
2380
2381 2007-04-27  Richard Guenther  <rguenther@suse.de>
2382
2383         PR tree-optimization/30965
2384         PR tree-optimization/30978
2385         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
2386         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
2387         (find_equivalent_equality_comparison): Likewise.
2388         (simplify_cond): Likewise.
2389         (get_prop_source_stmt): New helper.
2390         (get_prop_dest_stmt): Likewise.
2391         (can_propagate_from): Likewise.
2392         (remove_prop_source_from_use): Likewise.
2393         (combine_cond_expr_cond): Likewise.
2394         (forward_propagate_comparison): New function.
2395         (forward_propagate_into_cond): Rewrite to use fold for
2396         tree combining.
2397         (tree_ssa_forward_propagate_single_use_vars): Call
2398         forward_propagate_comparison to propagate comparisons.
2399
2400 2007-04-27  Richard Guenther  <rguenther@suse.de>
2401
2402         PR tree-optimization/31715
2403         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
2404         sure to do computation on the offset in an appropriate
2405         signed type.
2406
2407 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
2408
2409         * reload.h (elimination_target_reg_p): Declare.
2410         * reload.c (find_reloads): Don't apply the reg_rtx move
2411         optimization if the SET_DEST satisfies elimination_target_reg_p.
2412         * reload1.c (elimination_target_reg_p): New function.
2413         (gen_reload): In the move/add2 fallback, make sure that op0
2414         does not overlap the destination register.
2415
2416 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
2417
2418         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
2419         transform only GIMPLE_MODIFY_STMTs.
2420         * tree-complex.c (expand_complex_operations_1): Ditto.
2421         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
2422         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
2423         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
2424         branches.
2425         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
2426         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
2427         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
2428         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
2429         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
2430         slpeel_add_loop_guard): Ditto.
2431         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
2432         * lambda-code.c (perfect_nestify): Ditto.
2433         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
2434         before the first statement.
2435         * tree-optimize.c (execute_free_datastructures): Fix comments.
2436         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
2437         * tree-flow.h (disband_implicit_edges): Declaration removed.
2438         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
2439         branches.
2440         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle COND_EXPRs
2441         without gotos.
2442         (disband_implicit_edges, has_label_p): Removed.
2443         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
2444         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
2445         branches.
2446         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
2447         side effects.
2448         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
2449         also for COND_EXPRs.
2450         * cfgexpand.c (label_rtx_for_bb): New function.
2451         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
2452         Use label_rtx_for_bb to find the labels.
2453         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
2454         last block.  Detect fallthru edges.
2455
2456 2007-04-26  Ian Lance Taylor  <iant@google.com>
2457
2458         PR target/28675
2459         * reload.c (find_reloads_subreg_address): If the address was valid
2460         in the original mode but not in the new mode, reload the whole
2461         address.
2462
2463 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
2464
2465         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
2466         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
2467         (cleanup_control_expr_graph): Do not invalidate dominance info.
2468         Record altered blocks.
2469         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
2470         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
2471         cleanup_tree_cfg_bb): New functions.
2472         (remove_forwarder_block): Do not maintain the worklist of blocks.
2473         Record altered blocks.
2474         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
2475         not over whole cfg.
2476         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
2477         delete_unreachable_blocks if dominators are not available.
2478         * tree-inline.c (optimize_inline_calls): Free dominance information
2479         earlier.
2480         * tree-flow.h (remove_edge_and_dominated_blocks,
2481         cfgcleanup_altered_bbs): Altered.
2482         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
2483         blocks.
2484         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
2485         functions.
2486         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
2487         do not invalidate dominators.
2488
2489 2007-04-26  Anatoly Sokolov <aesok@post.ru>
2490
2491         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
2492         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
2493         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
2494         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
2495
2496 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
2497
2498         * config/ia64/ia64.md (ip_value):  Fix itanium_class attribute.
2499
2500 2007-04-26  Richard Guenther  <rguenther@suse.de>
2501
2502         PR tree-optimization/31703
2503         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
2504         the right type for the target of the bittest.
2505
2506 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
2507
2508         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
2509         ix86_sol10_return_in_memory.
2510
2511 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
2512
2513         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
2514         variables.
2515
2516 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
2517
2518         PR c++/31598
2519         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
2520
2521         PR tree-optimization/30558
2522         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
2523         clear this_state.prev_try.
2524
2525 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
2526             Mark Mitchell  <mark@codesourcery.com>
2527
2528         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
2529         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
2530         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
2531
2532 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
2533
2534         PR driver/31107
2535         * doc/invoke.texi (%:print-asm-header): Document.
2536         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
2537         and -ftarget-help.
2538         (static_spec_functions): Add print-asm-header.
2539         (main): Print a banner before the --target-help linker options.
2540         (print_asm_header_spec_function): New function.
2541
2542 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
2543
2544         PR target/31403
2545         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
2546         (movsf_ie): Likewise.
2547
2548 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
2549
2550         * doc/extend.texi ([Type Traits]): Adjust per N2255.
2551
2552 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
2553
2554         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an exception
2555         for divide-by-zero.
2556         (__umodsi3, __modsi3): Likewise.
2557
2558 2007-04-25  Dirk Mueller  <dmueller@suse.de>
2559
2560         * c-typeck.c (build_compound_expr): Annotate warning()
2561         call with OPT_Wunused_value.
2562         * tree-ssa.c (warn_uninit): Annotate warning with
2563         OPT_Wunintialized.
2564         * c-common.c (handle_sentinel_attribute): Annotate warning
2565         call with OPT_Wattributes.
2566
2567 2007-04-25  Thiemo Seufer  <ths@mips.com>
2568
2569         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
2570         (mips16): Fix typo.
2571         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
2572         on to the assembler.  Improve handling of -mno-mips16.  Add handling
2573         of -mno-mips3d, -mno-dsp, -mno-dspr2.
2574         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
2575         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
2576         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
2577
2578 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
2579
2580         PR target/31680
2581         * config/i386/winnt.c (i386_pe_file_end): Strip only
2582         USER_LABEL_PREFIX when writing export name.
2583
2584 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
2585
2586         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
2587         sh/elf.h, vx-common.h and vxworks.h.
2588         * config/sh/sh.h: Include config/vxworks-dummy.h.
2589         (SUBTARGET_OVERRIDE_OPTIONS): Define.
2590         (OVERRIDE_OPTIONS): Use it.
2591         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
2592         (vxworks_picreg): New pattern.
2593         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
2594         VXWORKS_OS_CPP_BUILTINS.
2595         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
2596         to their VXWORKS_* equivalents.
2597         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
2598         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
2599         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
2600         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
2601         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
2602         -mrtp/-fPIC multilibs.
2603         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
2604         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
2605         (MULTILIB_OSDIRNAMES): Delete.
2606
2607 2007-04-25  Anatoly Sokolov <aesok@post.ru>
2608
2609         PR target/18989
2610         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
2611
2612 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
2613
2614         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
2615         rounding mode to be specified by the caller.
2616         (real_to_mpfr) Likewise.
2617         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
2618         include new arguments.
2619         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
2620
2621 2007-04-24  Ian Lance Taylor  <iant@google.com>
2622
2623         PR tree-optimization/31605
2624         * tree-vrp.c (set_value_range): Check that min and max are not
2625         both overflow infinities.
2626         (set_value_range_to_value): New static function.
2627         (extract_range_from_binary_expr): Call set_value_range_to_value.
2628         (extract_range_from_cond_expr): Likewise.
2629         (extract_range_from_expr): Likewise.
2630         (extract_range_from_unary_expr): Likewise.  Don't create a range
2631         which overflows on both sides.
2632         (vrp_meet): Check for a useless range.
2633         (vrp_visit_phi_node): If we see a constant which looks like an
2634         overflow infinity, turn off the TREE_OVERFLOW flag.
2635
2636 2007-04-24  Ian Lance Taylor  <iant@google.com>
2637
2638         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
2639
2640 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
2641
2642         PR diagnostic/25923
2643         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
2644         diagnostic message is being built.
2645         * tree-pretty-print.c (dump_generic_node): Only write the
2646         formatted text into BUFFER's stream if we are not building a
2647         diagnostic message.
2648         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
2649         dump_generic_node.
2650         * Makefile.in (toplev.o): Depend on tree-pass.h.
2651
2652 2007-04-24  Ian Lance Taylor  <iant@google.com>
2653
2654         PR tree-optimization/31602
2655         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
2656         conditionals in the copied loop header.
2657         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
2658         warnings if TREE_NO_WARNING is set.
2659         * doc/invoke.texi (Warning Options): Clarify that
2660         -Wstrict-overflow does not warn about loops.
2661
2662 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
2663
2664         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
2665         expand on the comment about _Decimal128 arguments and check the
2666         integer result of the modulus operation; for 64-bit ELF ABI, ensure
2667         that _Decimal128 argument uses even/odd register pair.
2668         (function_arg): Ditto.
2669
2670 2007-04-24  Hui-May Chang <hm.chang@apple.com>
2671
2672         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
2673         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
2674
2675 2007-04-24  Richard Guenther  <rguenther@suse.de>
2676             Olga Golovanevsky  <olga@il.ibm.com>
2677
2678         * fold-const.c (multiple_of_p): Check for bottom
2679         to be zero.
2680
2681 2007-04-24  Richard Henderson  <rth@redhat.com>
2682
2683         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
2684         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
2685         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
2686         looking for non-zero bits shifted out.  Avoid a recursive call
2687         when constructing the scalar.
2688         (__floatundisf): Likewise.
2689
2690 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
2691
2692         * dwarf2out.c (field_byte_offset): Move the existing logic
2693         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
2694         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
2695
2696 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
2697
2698         PR target/31641
2699         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant length
2700         argument of 0 for memset.
2701         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
2702         unsigned shift instead of the signed variant.
2703
2704 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
2705
2706         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
2707         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
2708         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
2709         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
2710         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
2711         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
2712         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
2713         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
2714         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
2715         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
2716         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
2717         "mul<mode>3", "div<mode>3"): Insn definitions added.
2718         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
2719         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
2720         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
2721         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
2722         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
2723         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
2724         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
2725         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
2726         TARGET_FLOAT_FORMAT): Macro definitions removed.
2727         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
2728         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
2729         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
2730         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
2731         (s390_gen_rtx_const_DI): Function removed.
2732         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
2733
2734 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
2735
2736         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
2737         over an external ffs function.
2738
2739 2007-04-24  Chao-ying Fu  <fu@mips.com>
2740             Richard Sandiford  <richard@nildram.co.uk>
2741
2742         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
2743         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
2744         (smadd_widen_optab, umadd_widen_optab): Define.
2745         * optabs.c (init_optabs): Initialize smadd_widen_optab and
2746         umadd_widen_optab.
2747         * genopinit.c (optabs): Fill in smadd_widen_optab and
2748         umadd_widen_optab.
2749         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
2750         and umadd_widen_optab to implement multiply-add sequences.
2751         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
2752         (<u>maddsidi4): ...this.  Extend condition to include
2753         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
2754         of operand 0 to "ka" and use the three-operand form of madd<u>
2755         for TARGET_DSPR2.
2756         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
2757         to define_expands.
2758         * config/mips/constraints.md (ka): New register constraint.
2759
2760 2007-04-24  Jan Hubicka  <j@suse.cz>
2761
2762         Revert:
2763
2764         2007-04-23  Jan Hubicka  <jh@suse.cz>
2765         * function.c (init_function_start): Don't init line number info.
2766         (expand_function_end): Update.
2767         (reset_block_changes, record_block_change, finalize_block_changes,
2768         check_block_change, free_block_changes): Kill.
2769         * function.h (reset_block_changes, record_block_change,
2770         finalize_block_changes, check_block_change, free_block_changes): Remove
2771         prototypes.
2772         (struct function): Remove ib_boundaries_block.
2773         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
2774         Use curr_insn_locator to initialize locator.
2775         (emit_line_note): Remove.
2776         * cfgexpand.c (expand_gimple_cond_expr): Update.
2777         (construct_exit_block): Likewise.
2778         (tree_expand_cfg): Initialize/finalize locators.
2779         * expr.c (expand_expr_real): Update.
2780         * cfglayout.c (line_locators_locs, line_locators_lines,
2781         file_locators_locs, file_locators_files): Remove.
2782         (set_block_levels): Move to cfgexpand.c.
2783         (insn_locators_initialize): Remove.
2784         (pass_insn_locators_initialize): Remove.
2785         (locations_locators_locs, locations_locators_vals): New static vars.
2786         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
2787         Likewise.
2788         (insn_locators_alloc, insn_locators_finalize,
2789         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
2790         New functions.
2791         (locator_location): New.
2792         (locator_line, locator_file): Rewrite.
2793         * rtl.h (emit_line_note): Kill.
2794         (insn_locators_alloc, insn_locators_finalize,
2795         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
2796         Declare.
2797         * tree-inline.c (initialize_cfun): Do not initialize
2798         ib_boundaries_block.
2799         * passes.c (pass_insn_locators_initialize): Remove.
2800
2801 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
2802
2803         * doc/invoke.texi: Removed leading '-' from option index entries.
2804
2805 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
2806
2807         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
2808         Use phi_nodes_ptr.
2809         (create_phi_node): Use set_phi_nodes.
2810         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
2811         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
2812         (combine_blocks):  Use bb_stmt_list and set_bb_stmt_list.
2813         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
2814         (bsi_start, bsi_last): Use bb_stmt_list.
2815         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
2816         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
2817         Traverse the statements using tsi iterator.
2818         * basic-block.h (struct basic_block_def): Fields stmt_list
2819         and phi_nodes moved to ...
2820         (struct tree_bb_info): ... new structure.
2821         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
2822         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
2823         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
2824         (tree_verify_flow_info): Verify that il.tree is not set for
2825         entry and exit block.
2826         (tree_split_block): Use set_bb_stmt_list.
2827
2828 2007-04-23  Mike Stump  <mrs@apple.com>
2829
2830         * config/i386/i386.c (ix86_tune_features
2831         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
2832         nocona and core2.
2833
2834 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
2835
2836         * config/i386/i386.md (prefix_extra): New attribute.
2837         (length): Add prefix_extra.
2838
2839         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
2840         (sse2_movntv2di): Likewise.
2841         (sse2_cvtps2dq): Likewise.
2842         (sse2_cvtpd2pi): Likewise.
2843         (sse2_cvttpd2pi): Likewise.
2844         (*sse2_cvtpd2ps): Likewise.
2845         (*add<mode>3): Likewise.
2846         (sse2_ssadd<mode>3): Likewise.
2847         (sse2_usadd<mode>3): Likewise.
2848         (*sub<mode>3): Likewise.
2849         (sse2_sssub<mode>3): Likewise.
2850         (sse2_ussub<mode>3): Likewise.
2851         (*mulv8hi3): Likewise.
2852         (*smulv8hi3_highpart): Likewise.
2853         (*umulv8hi3_highpart): Likewise.
2854         (sse2_umulv2siv2di3): Likewise.
2855         (sse2_pmaddwd): Likewise.
2856         (ashr<mode>3): Likewise.
2857         (lshr<mode>3): Likewise.
2858         (ashl<mode>3): Likewise.
2859         (sse2_ashlti3): Likewise.
2860         (sse2_lshrti3): Likewise.
2861         (*umaxv16qi3): Likewise.
2862         (*smaxv8hi3): Likewise.
2863         (*uminv16qi3): Likewise.
2864         (*sminv8hi3): Likewise.
2865         (sse2_eq<mode>3): Likewise.
2866         (sse2_gt<mode>3): Likewise.
2867         (*and<mode>3): Likewise.
2868         (sse2_nand<mode>3): Likewise.
2869         (*ior<mode>3): Likewise.
2870         (*xor<mode>3): Likewise.
2871         (sse2_packsswb): Likewise.
2872         (sse2_packssdw): Likewise.
2873         (sse2_packuswb): Likewise.
2874         (sse2_punpckhbw): Likewise.
2875         (sse2_punpcklbw): Likewise.
2876         (sse2_punpckhwd): Likewise.
2877         (sse2_punpcklwd): Likewise.
2878         (sse2_punpckhdq): Likewise.
2879         (sse2_punpckldq): Likewise.
2880         (sse2_punpckhqdq): Likewise.
2881         (sse2_punpcklqdq): Likewise.
2882         (*sse2_pinsrw): Likewise.
2883         (*sse2_pextrw): Likewise.
2884         (sse2_pshufd_1): Likewise.
2885         (sse2_uavgv16qi3): Likewise.
2886         (sse2_uavgv8hi3): Likewise.
2887         (sse2_psadbw): Likewise.
2888         (sse2_pmovmskb): Likewise.
2889         (*sse2_maskmovdqu): Likewise.
2890         (*sse2_maskmovdqu_rex64): Likewise.
2891         (sse4a_extrqi): Likewise.
2892         (sse4a_extrq): Likewise.
2893         (sse3_lddqu): Set prefix_rep.
2894         (sse3_addsubv4sf3): Likewise.
2895         (sse3_haddv4sf3): Likewise.
2896         (sse3_hsubv4sf3): Likewise.
2897         (sse_cvtss2si): Likewise.
2898         (sse_cvtss2si_2): Likewise.
2899         (sse_cvtss2siq): Likewise.
2900         (sse_cvtss2siq_2): Likewise.
2901         (sse_cvttss2si): Likewise.
2902         (sse_cvttss2siq): Likewise.
2903         (sse2_cvttps2dq): Likewise.
2904         (sse3_movshdup): Likewise.
2905         (sse3_movsldup): Likewise.
2906         (sse2_cvtsd2si): Likewise.
2907         (sse2_cvtsd2si_2): Likewise.
2908         (sse2_cvtsd2siq): Likewise.
2909         (sse2_cvtsd2siq_2): Likewise.
2910         (sse2_cvttsd2si): Likewise.
2911         (sse2_cvttsd2siq): Likewise.
2912         (*sse2_cvtpd2dq): Likewise.
2913         (*sse2_cvttpd2dq): Likewise.
2914         (sse2_pshuflw_1): Likewise.
2915         (sse2_pshufhw_1): Likewise.
2916         (sse4a_insertqi): Likewise.
2917         (sse4a_insertq): Likewise.
2918         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
2919         (ssse3_phadddv4si3): Likewise.
2920         (ssse3_phaddswv8hi3): Likewise.
2921         (ssse3_phsubwv8hi3): Likewise.
2922         (ssse3_phsubdv4si3): Likewise.
2923         (ssse3_phsubswv8hi3): Likewise.
2924         (ssse3_pmaddubswv8hi3): Likewise.
2925         (ssse3_pmulhrswv8hi3): Likewise.
2926         (ssse3_pshufbv16qi3): Likewise.
2927         (ssse3_psign<mode>3): Likewise.
2928         (ssse3_palignrti): Likewise.
2929         (abs<mode>2): Likewise.
2930         (ssse3_phaddwv4hi3): Set prefix_extra.
2931         (ssse3_phadddv2si3): Likewise.
2932         (ssse3_phaddswv4hi3): Likewise.
2933         (ssse3_phsubwv4hi3): Likewise.
2934         (ssse3_phsubdv2si3): Likewise.
2935         (ssse3_phsubswv4hi3): Likewise.
2936         (ssse3_pmaddubswv4hi3): Likewise.
2937         (ssse3_pmulhrswv4hi3): Likewise.
2938         (ssse3_pshufbv8qi3): Likewise.
2939         (ssse3_psign<mode>3): Likewise.
2940         (ssse3_palignrdi): Likewise.
2941         (abs<mode>2): Likewise.
2942         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
2943         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
2944         (sse2_pmovmskb): Set mode to SI instead of V2DF.
2945
2946 2007-04-23  Nick Clifton  <nickc@redhat.com>
2947
2948         * params.def: Fix formatting of emacs local variables.
2949
2950 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
2951
2952         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
2953         move if inter-unit move isn't allowed.
2954         Don't split moving the first element of V2DI to DI to inter-unit
2955         move if inter-unit move isn't allowed.
2956
2957 2007-04-23  Richard Guenther  <rguenther@suse.de>
2958
2959         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
2960         and CDI_POST_DOMINATORS separately.
2961
2962 2007-04-23  Nick Clifton  <nickc@redhat.com>
2963
2964         * c.opt (Wformat-contains-nul): Add warning attribute.
2965
2966 2007-04-23  Jan Hubicka  <jh@suse.cz>
2967
2968         * function.c (init_function_start): Don't init line number info.
2969         (expand_function_end): Update.
2970         (reset_block_changes, record_block_change, finalize_block_changes,
2971         check_block_change, free_block_changes): Kill.
2972         * function.h (reset_block_changes, record_block_change,
2973         finalize_block_changes, check_block_change, free_block_changes): Remove
2974         prototypes.
2975         (struct function): Remove ib_boundaries_block.
2976         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
2977         Use curr_insn_locator to initialize locator.
2978         (emit_line_note): Remove.
2979         * cfgexpand.c (expand_gimple_cond_expr): Update.
2980         (construct_exit_block): Likewise.
2981         (tree_expand_cfg): Initialize/finalize locators.
2982         * expr.c (expand_expr_real): Update.
2983         * cfglayout.c (line_locators_locs, line_locators_lines,
2984         file_locators_locs, file_locators_files): Remove.
2985         (set_block_levels): Move to cfgexpand.c.
2986         (insn_locators_initialize): Remove.
2987         (pass_insn_locators_initialize): Remove.
2988         (locations_locators_locs, locations_locators_vals): New static vars.
2989         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
2990         Likewise.
2991         (insn_locators_alloc, insn_locators_finalize,
2992         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
2993         New functions.
2994         (locator_location): New.
2995         (locator_line, locator_file): Rewrite.
2996         * rtl.h (emit_line_note): Kill.
2997         (insn_locators_alloc, insn_locators_finalize,
2998         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
2999         Declare.
3000         * tree-inline.c (initialize_cfun): Do not initialize
3001         ib_boundaries_block.
3002         * passes.c (pass_insn_locators_initialize): Remove.
3003
3004 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3005
3006         PR middle-end/31448
3007         * expr.c (reduce_to_bit_field_precision): Handle
3008         CONST_INT rtx's.
3009
3010 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
3011
3012         PR tree-optimization/24659
3013         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
3014         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
3015         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
3016         * genopinit.c (optabs): Rename vec_pack_mod_optab
3017         to vec_pack_trunc_optab.
3018         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
3019         early for scalar floating point operands for NOP_EXPR.
3020         (vectorizable_type_promotion): Ditto.
3021         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
3022         vec_pack_trunc_optab.
3023         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
3024
3025         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
3026         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
3027         Rename from VEC_PACK_MOD_EXPR.
3028         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
3029         * expr.c (expand_expr_real_1): Ditto.
3030         * tree-inline.c (estimate_num_insns_1): Ditto.
3031         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
3032
3033         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
3034         (vec_unpacks_lo_v4sf): Ditto.
3035         (vec_pack_trunc_v2df): Ditto.
3036         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
3037         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
3038         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
3039
3040         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
3041         vec_pack_mod_v8hi.
3042         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
3043
3044         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
3045         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
3046         packing of floating point operands.
3047         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
3048         represent unpacking of floating point operands.
3049         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
3050         [vec_unpacks_hi]: Ditto.
3051         [vec_unpacks_lo]: Ditto.
3052
3053 2007-04-22  Jan Hubicka  <jh@suse.cz>
3054
3055         * final.c (rest_of_handle_final): Call
3056         targetm.asm_out.constructor/targetm.asm_out.destructor
3057         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
3058         proper priority via decl_*_priority_insert.
3059         * c-common.c (c_expand_body): Likewise.
3060
3061 2007-04-22  Richard Guenther  <rguenther@suse.de>
3062
3063         PR tree-optimization/29789
3064         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
3065         (rewrite_reciprocal): New helper split out from
3066         determine_invariantness_stmt.
3067         (rewrite_bittest): Likewise.
3068         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
3069         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
3070         is not.
3071
3072 2007-04-22  Revital Eres  <eres@il.ibm.com>
3073
3074         * loop-unroll.c (var_to_expand): New field to support also
3075         insns of the form x = something + x.
3076         (analyze_insn_to_expand_var): Use it.
3077         (expand_var_during_unrolling): Likewise.
3078
3079 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
3080
3081         * predict.c: Include pointer-set.h.
3082         (bb_predictions): New variable.
3083         (tree_predicted_by_p, tree_predict_edge,
3084         remove_predictions_associated_with_edge): Use bb_predictions map
3085         instead of bb->predictions.
3086         (clear_bb_predictions, assert_is_empty): New functions.
3087         (combine_predictions_for_bb): Use bb_predictions map.  Call
3088         clear_bb_predictions.
3089         (tree_estimate_probability): Create and free bb_predictions map.
3090         * Makefile.in (predict.o): Add pointer-set.h dependency.
3091         * basic-block.h (struct basic_block_def): Remove predictions
3092         field.
3093         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
3094
3095 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
3096
3097         PR target/31480
3098         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
3099         is null.
3100
3101 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3102
3103         * timevar.c (timevar_print): Change reference of --disable-checking to
3104         --enable-checking=release.  Also warn if assert checking is disabled.
3105
3106 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3107
3108         PR C/30265
3109         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
3110         decl as addressable if the compound literal was marked as
3111         addressable.
3112         Mark the decl as a gimple register if it is a complex or
3113         vector decl and does not live in memory.
3114
3115 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3116
3117         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
3118         (GENERIC_NEXT): New function macro.
3119         (PHI_CHAIN): Use phi_node's new chain variable.
3120         (tree_phi_node): Change tree_common to tree_base
3121         and add the chain field.
3122         * tree-phinodes.c (make_phi_node): Don't set
3123         TREE_TYPE on the new node.
3124         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
3125         instead of checking GIMPLE_TUPLE_P in chain_next.
3126         * tree-vect-transform.c
3127         (get_initial_def_for_induction): Look at
3128         PHI_RESULT_TREE for the type of the phi node.
3129         (update_vuses_to_preheader): Use PHI_CHAIN
3130         instead of TREE_CHAIN on the phi node.
3131         * tree-ssa-structalias.c (compute_points_to_sets):
3132         Likewise.
3133         (ipa_pta_execute): Likewise.
3134
3135 2007-04-21  Richard Guenther  <rguenther@suse.de>
3136
3137         PR middle-end/31136
3138         * fold-const.c (fold_unary): Call fold_convert_const on the
3139         original tree.
3140
3141 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
3142
3143         * gcse.c (store_killed_in_insn): Handle PARALLELs.
3144         (store_killed_in_pat): New.
3145
3146 2007-04-20  Richard Henderson  <rth@redhat.com>
3147
3148         PR target/31628
3149         * config/i386/i386.c (type_has_variadic_args_p): Look for any
3150         TREE_LIST with a void_type_node value, not void_list_node exactly.
3151
3152 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
3153
3154         * doc/standards.texi: Re-arrange into language-specific
3155         subsections. Add a C++ section, documenting which standards we
3156         support.
3157
3158 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
3159
3160         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
3161         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
3162
3163 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
3164
3165         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
3166         ecrti.o and crtbegin.o.
3167         (LIB_DEFAULT_SPEC): Include -lc.
3168         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
3169
3170 2007-04-20  Richard Henderson  <rth@redhat.com>
3171
3172         PR target/28623
3173         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
3174         argument; update all callers.
3175         (get_unaligned_offset): New.
3176         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
3177         get_unaligned_address, just pass on the address directly.
3178         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
3179         the subreg in the helper patterns.
3180         (unaligned_extendqidi_le): Use get_unaligned_offset.
3181         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
3182         (unaligned_extendhidi_be): Likewise.
3183         (unaligned_extendhidi): Tidy.
3184         * config/alpha/alpha-protos.h: Update.
3185
3186 2007-04-20  Richard Henderson  <rth@redhat.com>
3187
3188         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
3189         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
3190         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
3191         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
3192         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
3193         (CPP_SPEC): Don't include %(cpp_subtarget).
3194         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
3195         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
3196         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
3197
3198 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
3199
3200         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
3201         for __builtin_ia32_cmpordss.
3202
3203         PR tree-optimization/31632
3204         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
3205         and arg1 for optimizations of comparison against min/max values.
3206         Fold arg0 to arg1's type for optimizations of comparison against
3207         min+1 and max-1 values.
3208
3209 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
3210
3211         * reload.c (combine_reloads): When trying to use a dying register,
3212         check whether it's uninitialized and don't use if so.
3213
3214 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
3215
3216         * fold-const.c: Remove prototypes for native_encode_expr and
3217         native_interpret_expr.
3218         (native_encode_expr): Make non-static.
3219         (native_interpret_expr): Likewise.
3220         * tree.h: Add prototypes for the above.
3221
3222 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
3223
3224         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
3225         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
3226         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
3227         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
3228         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
3229         Add length attributes.
3230
3231 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
3232
3233         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
3234         not that it is 1.
3235
3236         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
3237         __STDC_WANT_DEC_FP__.
3238
3239 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
3240
3241         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
3242         for long double compatibility.
3243         * configure: Regenerate.
3244
3245 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
3246
3247         PR rtl-optimization/29841
3248         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
3249         trap instructions.
3250         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
3251         that may cause control flow transfer from being moved.
3252
3253 2007-04-18  Jan Hubicka  <jh@suse.cz>
3254
3255         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
3256         types.
3257
3258 2007-04-18  Eric Christopher  <echristo@apple.com>
3259
3260         * config/rs6000/darwin.md (load_macho_picbase): Use link register
3261         only. Update operands.
3262         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
3263         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
3264         link register to pic register.
3265
3266 2007-04-18  Dirk Mueller  <dmueller@suse.de>
3267
3268         PR diagnostic/31227
3269         * tree-vrp.c (search_for_addr_array): New.
3270         (check_array_bounds): Suppress warning about
3271         address taken of array refs if its not de-referenced.
3272
3273 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
3274
3275         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
3276         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
3277
3278         * tree-vectorizer.h (NITERS_KNOWN_P): New.
3279         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
3280         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
3281
3282         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
3283         dump print.
3284         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
3285         print message.
3286         (vect_analyze_scalar_cycles): Fix indentation.
3287         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
3288         (vect_mark_relevant): Include phis in relevance analysis.
3289
3290         * tree-vect-transform.c (vect_transform_loop): Add an assert.
3291
3292 2007-04-18  Anatoly Sokolov <aesok@post.ru>
3293
3294         * config/avr/avr.c (ptrreg_to_str): Replace error() with
3295         output_operand_lossage().
3296
3297 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
3298
3299         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
3300         the unused code for reduction without adjust-in-epilog to simplify the
3301         function.
3302
3303 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
3304
3305         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
3306         (S390_TDC_NEGATIVE_ZERO): New constant.
3307         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
3308         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
3309         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
3310         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
3311         (S390_TDC_POSITIVE_INFINITY): New constant.
3312         (S390_TDC_NEGATIVE_INFINITY): New constant.
3313         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
3314         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
3315         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
3316         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
3317         (S390_TDC_INFINITY): New constant.
3318         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
3319         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
3320         optimization for UNSPEC_CCZ_TO_INT.
3321         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
3322         ("*ccz_to_int"): New insn.
3323         ("isinf<mode>2"): New insn.
3324         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
3325         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
3326         (UNSPEC_CCZ_TO_INT): New constant.
3327
3328 2007-04-18  Richard Guenther  <rguenther@suse.de>
3329
3330         PR tree-optimization/19431
3331         PR tree-optimization/21463
3332         * tree-pass.h (pass_phiprop): Declare.
3333         * passes.c (init_optimization_passes): New phiprop pass.
3334         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
3335         (phivn_valid_p): New helper function.
3336         (phiprop_insert_phi): Likewise.
3337         (propagate_with_phi): Likewise.
3338         (tree_ssa_phiprop): New propagator propagating loads
3339         through phi nodes if profitable.
3340
3341 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
3342
3343         * tree-vect-analyze.c (process_use): New function.
3344         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
3345         Check phis in all bbs.
3346         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
3347         assert.
3348
3349 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
3350
3351         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
3352         we use REG_EQUAL.
3353
3354 2007-04-17  Anatoly Sokolov <aesok@post.ru>
3355
3356         PR target/30483
3357         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
3358         error().
3359
3360 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
3361
3362         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
3363         on "0".
3364         (sse_vmmulv4sf3): Likewise.
3365         (sse2_vmaddv2df3): Likewise.
3366         (sse2_vmmulv2df3): Likewise.
3367
3368 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
3369
3370         PR rtl-optimization/31360
3371         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
3372         (target_reg_cost): New.
3373         (init_set_costs): Initialize target_reg_cost.  Add comments
3374         regarding the rationale of the costs.
3375         (global_cost_for_size): Renamed to...
3376         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
3377         of register pressure.
3378         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
3379         estimate_reg_pressure_cost.  Add number of ivs.
3380         (determine_set_costs): Dump target_reg_cost.
3381         * loop-invariant.c (gain_for_invariant):  Use
3382         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
3383         (best_gain_for_invariant, find_invariants_to_move): Remove
3384         n_inv_uses.
3385         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
3386         (target_reg_cost): Declare.
3387         (global_cost_for_size): Declaration removed.
3388         (estimate_reg_pressure_cost): Declare.
3389
3390 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
3391
3392         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
3393         regnos into even/odd register pairs.
3394         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
3395         TDmode similar to the other floating point modes.
3396         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
3397         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
3398         define_expand's.
3399         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
3400         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
3401         (movdd_hardfloat64): Use TARGET_MFPGPR.
3402
3403 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
3404
3405         * reload1.c (delete_output_reload): Don't count output in n_inherited.
3406
3407         Revert
3408         2005-01-05  Richard Henderson  <rth@redhat.com>
3409         PR rtl-opt/10692
3410         * reload1.c (do_input_reload): Restrict the optimization deleteing
3411         a previous output reload to RELOAD_FOR_INPUT.
3412
3413 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
3414
3415         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
3416         induc_vec_info_type.
3417         (vectorizable_induction): New function declaration.
3418         * tree-vect-transform.c (get_initial_def_for_induction): No need to
3419         check if already vectorized.  Find first place in BB where new stmts
3420         can be inserted.  Takes only one argument.
3421         (vectorizable_induction): New function.
3422         (vect_transform_stmt): Add case for induc_vec_info_type to call
3423         vectorizable_induction.
3424         (vect_transform_loop): Consider phis for vectorization.
3425         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
3426         condition.
3427         (analyze_operations): Call vectorizable_induction when analyzing phis.
3428         Fix comment.
3429         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
3430         (vect_mark_relevant): Include phis in relevance analysis.
3431         (vect_mark_stmts_to_be_vectorize): Likewise.
3432         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
3433
3434 2007-04-16  Lawrence Crowl  <crowl@google.com>
3435
3436         * doc/invoke.texi (Debugging Options): Add documentation for the
3437         -femit-struct-debug options -femit-struct-debug-baseonly,
3438         -femit-struct-debug-reduced, and
3439         -femit-struct-debug-detailed[=...].
3440
3441         * c-opts.c (c_common_handle_option): Add
3442         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
3443         and OPT_femit_struct_debug_detailed_.
3444         * c.opt: Add specifications for
3445         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
3446         and -femit-struct-debug-detailed[=...].
3447         * opts.c (set_struct_debug_option): Parse the
3448         -femit-struct-debug-... options.
3449         * opts.c (matches_main_base, main_input_basename,
3450         main_input_baselength, base_of_path, matches_main_base): Add
3451         variables and functions to compare header base name to compilation
3452         unit base name.
3453         * opts.c (should_emit_struct_debug): Add to determine to emit a
3454         structure based on the option.
3455         (dump_struct_debug) Also disabled function to debug this
3456         function.
3457         * opts.c (handle_options): Save the base name of the
3458         compilation unit.
3459
3460         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
3461         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
3462         This hook indicates if a type is generic.  Set it by default
3463         to "never generic".
3464         * langhooks.h (struct lang_hooks_for_types): Add a new hook
3465         to determine if a struct type is generic or not.
3466         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
3467         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
3468         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
3469         with live C++ hook.
3470
3471         * flags.h (enum debug_info_usage): Add an enumeration to describe
3472         a program's use of a structure type.
3473         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
3474         to indicate the program's usage of the type.  Filter structs based
3475         on the -femit-struct-debug-... specification.
3476         (gen_type_die): Split into two routines, gen_type_die and
3477         gen_type_die_with_usage.  gen_type_die is now a wrapper
3478         that assumes direct usage.
3479         (gen_type_die_with_usage): Replace calls to gen_type_die
3480         with gen_type_die_with_usage adding the program usage of
3481         the referenced type.
3482         (dwarf2out_imported_module_or_decl): Suppress struct debug
3483         information using should_emit_struct_debug when appropriate.
3484
3485 2007-04-16  Ian Lance Taylor  <iant@google.com>
3486
3487         PR tree-optimization/31522
3488         * tree-vrp.c (vr_phi_edge_counts): New static variable.
3489         (vrp_initialize): Allocate vr_phi_edge_counts.
3490         (vrp_visit_phi_node): Don't push to infinity if we saw a new
3491         executable edge.  Drop test for all constants.
3492         (vrp_finalize): Free vrp_phi_edge_counts.
3493
3494         * doc/cpp.texi (Common Predefined Macros): Clarify description of
3495         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
3496
3497         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
3498         predecessors at head rather than tail.
3499
3500 2007-04-16  Matthias Klose  <doko@debian.org>
3501
3502         * config/alpha/linux.h (CPP_SPEC): Define.
3503         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
3504
3505 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
3506
3507         * function.h: Remove sequence_stack extern declaration.
3508
3509 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
3510
3511         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
3512         TARGET_FIDOA.
3513         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
3514         defined.
3515
3516 2007-04-16  Anatoly Sokolov <aesok@post.ru>
3517
3518         * config/avr/avr.c (avr_arch_types): Rearranging  array.
3519         (enum avr_arch): Add.
3520         (avr_mcu_types): Use avr_arch enumeration constants instead of
3521         numbers.
3522         * config/avr/avr.h (LINK_SPEC): Simplify.
3523
3524 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
3525
3526         * config/m68k/m68k.c (m68k_libcall_value,
3527         m68k_function_value): Use macros for register names more.
3528
3529         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
3530         instead.
3531         (M68K_REGNAME): Use A6_REG.
3532         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
3533
3534 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
3535
3536         PR middle-end/28071
3537         * sched-int.h (struct deps): Split field 'pending_lists_length' into
3538         'pending_read_list_length' and 'pending_write_list_length'.  Update
3539         comment.
3540         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
3541         to handle two length counters instead of one.  Update all uses.
3542         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
3543         two length counters instead of one.
3544         * sched-rgn.c (propagate_deps): Update to handle two length counters
3545         instead of one.
3546
3547 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
3548
3549         PR target/31582
3550         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
3551         copy of source, pass it to ix86_expand_vector_set and return
3552         it as target.
3553
3554 2007-04-16  David Ung  <davidu@mips.com>
3555             Joseph Myers  <joseph@codesourcery.com>
3556
3557         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
3558         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
3559         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
3560         Add 74K processor information.
3561         * config/mips/mips.md: Include 74k.md.
3562         (cpu): Add 74kc,74kf,74kx.
3563         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
3564         * config/mips/74k.md: New.
3565         * doc/invoke.texi (MIPS Options): Document 74K support.
3566
3567 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
3568
3569         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
3570         vectorizable_* functions.
3571         * tree-vect-transform.c (vectorizable_call): Add check for
3572         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
3573         (vectorizable_store): likewise.
3574         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
3575         Add comments.
3576         (vectorizable_operation, vectorizable_type_demotion): Likewise.
3577         (vectorizable_type_promotion, vectorizable_load): Likewise.
3578         (vectorizable_live_operation, vectorizable_condition): Likewise.
3579         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
3580         STMT_VINFO_LIVE_P.
3581         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
3582
3583 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
3584
3585         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
3586         register numbers more.
3587         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
3588         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
3589         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
3590         FUNCTION_VALUE_REGNO_P): Likewise.
3591         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
3592         STATIC_CHAIN_REGNUM): Likewise.
3593         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
3594         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
3595         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
3596         * config/m68k/m68k.md (FP_REG): New.
3597
3598 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
3599
3600         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
3601         alignment on fido.
3602
3603 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
3604
3605         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
3606         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
3607         comment typos.
3608
3609 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
3610
3611         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
3612         cold loops.
3613
3614 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3615
3616         PR c/31520
3617         * c-decl.c (finish_decl): Grab the type of the decl after the call
3618         to store_init_value.
3619
3620 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
3621
3622         * common.opt (fforward-propagate): Fix "Optimization" annotation.
3623
3624 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
3625
3626         PR c++/25874
3627         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free dominators,
3628         post dominators and cleanup cfg before returning.
3629
3630 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
3631
3632         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
3633         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
3634
3635 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
3636
3637         * config.gcc: Recognize fido.
3638         * config/m68k/m68k-devices.def (fidoa): New.
3639         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
3640         __mfido__.
3641         (FL_FIDOA, TARGET_FIDOA): New.
3642         * config/m68k/m68k.opt (mfidoa): New.
3643
3644 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3645
3646         PR middle-end/31322
3647         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
3648         when a personality function is used.
3649
3650 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
3651
3652         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
3653
3654 2007-04-13  Mike Stump  <mrs@apple.com>
3655
3656         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
3657         we can...
3658         * config/darwin.opt (fapple-kext): Make C++ only.
3659         * config/darwin.c (darwin_override_options): Remove code to ensure
3660         -fapple-kext is given for C++ only.
3661
3662 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
3663
3664         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
3665         * config/mips/mips.c (override_options): Call
3666         SUBTARGET_OVERRIDE_OPTIONS, if defined.
3667
3668 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
3669
3670         * config/i386/i386.opt (msvr3-shlib): Removed.
3671
3672         * doc/invoke.texi: Remove -msvr3-shlib.
3673
3674 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
3675
3676         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
3677         with "popcnt" instruction.
3678
3679 2007-04-13  Richard Guenther  <rguenther@suse.de>
3680
3681         PR tree-optimization/21258
3682         * tree-vrp.c (compare_case_labels): New helper.
3683         (find_switch_asserts): New function.
3684         (find_assert_locations): Call it for SWITCH_EXPRs.
3685
3686 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
3687
3688         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
3689         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
3690         check is now implied in X87_FLOAT_MODE_P.
3691         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
3692         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
3693         (fix_trunc<mode>_i386_fisttp): Ditto.
3694         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
3695         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
3696         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
3697         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
3698         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
3699         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
3700         (unnamed_splitters): Ditto.
3701         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
3702         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
3703         FIRST_SSE_REG for local functions when SSE math is enabled or
3704         for functions with sseregparm attribute.
3705         (standard_80387_constant_p): Return -1 if mode is not
3706         X87_FLOAT_MODE_P.
3707         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
3708         (ix86_expand_compare): Ditto.
3709         (ix86_expand_carry_flag_compare): Ditto.
3710         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
3711         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
3712         DECIMAL_FLOAT_MODE_P.
3713         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
3714         of SCALAR_FLOAT_MODE_P.
3715         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
3716         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
3717         checks before FLOAT_MODE_P.
3718         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
3719         before FLOAT_MODE_P.
3720         [DIV]: Ditto.
3721         [NEG]: Ditto.
3722         [ABS]: Ditto.
3723         [SQRT]: Ditto.
3724         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
3725
3726 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
3727             Charles Wilson  <libtool@cwilson.fastmail.fm>
3728
3729         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
3730         (libgcc.mvars): Don't depend on them.
3731         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
3732         * exec-tool.in: New.
3733
3734 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
3735
3736         * doc/invoke.text (--help): Document --help=common.
3737
3738 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
3739
3740         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
3741
3742 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
3743
3744         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
3745         * genemit.c (main): Emit #include "integrate.h".
3746         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
3747         (LOADGP_RTP): New mips_loadgp_style.
3748         * config/mips/mips.h: Include config/vxworks-dummy.h.
3749         (TARGET_RTP_PIC): New macro.
3750         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
3751         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
3752         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
3753         for TARGET_RTP_PIC.
3754         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
3755         -mvxworks-pic when using -mrtp and a PIC option.
3756         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
3757         for RTP PIC.
3758         (mips_symbolic_constant_p, mips_symbolic_address_p)
3759         (mips_symbol_insns): Handle SYMBOL_HALF.
3760         (override_options): Warn about -G and -mrtp being used together.
3761         Initialize mips_lo_relocs[SYMBOL_HALF].
3762         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
3763         (mips_emit_loadgp): Handle LOADGP_RTP.
3764         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
3765         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
3766         (tablejump): Handle function-relative case table entries if
3767         TARGET_RTP_PIC.
3768         * config/mips/predicates.md (symbol_ref_operand): New predicate.
3769
3770 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
3771
3772         * config/mips/mips.md (load_call<mode>): Allow any general register.
3773         destination.
3774         (sibcall_value_internal, sibcall_value_multiple_internal)
3775         (call_value_internal, call_value_split, call_value_multiple_internal)
3776         (call_value_multiple_split): Remove constraints from operand 0.
3777
3778 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
3779
3780         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
3781         rather than loadgp_noshared.
3782         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
3783         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
3784         gen_loadgp.
3785         * config/mips/mips.md (loadgp): Rename to...
3786         (loadgp_newabi): ...this.
3787         (loadgp_noshared): Rename to...
3788         (loadgp_absolute): ...this.
3789
3790 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
3791
3792         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
3793         false for locally-binding symbols.
3794         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
3795
3796 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
3797
3798         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
3799         (SYMBOL_GOT_PAGE_OFST): ...this.
3800         (SYMBOL_GOT_GLOBAL): Rename to...
3801         (SYMBOL_GOT_DISP): ...this.
3802         (SYMBOL_GOTOFF_GLOBAL): Rename to...
3803         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
3804         * config/mips/mips.c (mips_global_symbol_p): New function.
3805         (mips_symbol_binds_local_p): Likewise.
3806         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
3807         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use mips_global_symbol_p
3808         and mips_symbol_binds_local_p.
3809         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
3810         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
3811         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
3812         SYMBOL_GOTOFF_DISP.
3813         (mips_ok_for_lazy_binding_p): New function.
3814         (mips_load_call_address, mips_expand_call): Use it.
3815         (mips_dangerous_for_la25_p): Likewise.
3816         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
3817         (*got_disp<mode>): Use got_disp_operand instead of
3818         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
3819         SYMBOL_GOTOFF_GLOBAL.
3820         (*got_page<mode>): Use got_page_ofst_operand instead of
3821         local_got_operand.
3822         * config/mips/predicates.md (const_call_insn_operand): Use
3823         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
3824         (global_got_operand): Rename to...
3825         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
3826         SYMBOL_GOT_GLOBAL.
3827         (local_got_operand): Rename to...
3828         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
3829         of SYMBOL_GOT_LOCAL.
3830
3831 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
3832
3833         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
3834         TARGET_CALL_CLOBBERED_GP.
3835         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
3836         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
3837         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
3838         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
3839         of TARGET_ABICALLS && !TARGET_NEWABI.
3840         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
3841         * config/mips/mips.c (mips_load_call_address): Check
3842         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
3843         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
3844         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
3845         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
3846         TARGET_ABICALLS && TARGET_NEWABI.
3847         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
3848         TARGET_ABICALLS.
3849         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
3850         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
3851         TARGET_ABICALLS && TARGET_NEWABI.
3852         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
3853         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
3854         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
3855         whether indirect calls must use $25.
3856         (mips_extra_live_on_entry): Check TARGET_GOT instead of
3857         TARGET_ABICALLS.
3858         * config/mips/mips.md (jal_macro): Check flag_pic and
3859         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
3860         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
3861         instead of TARGET_ABICALLS.
3862         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
3863         TARGET_ABICALLS && TARGET_OLDABI.
3864         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
3865         (sibcall): In the comment above the define_insn, mention
3866         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
3867         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
3868         instead of TARGET_ABICALLS.
3869
3870 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
3871
3872         * doc/md.texi (Blackfin family constraints): Document PA and PB.
3873         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
3874         (MACFLAGS_MATCH_P): New macro.
3875         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
3876         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
3877         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
3878         the other MACFLAG constants.
3879         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
3880         (flag_machi): Tighten constraints.  Renumber some of the operands.
3881         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
3882         output template.
3883         (flag_machi_parts_acconly): New pattern.
3884         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
3885         used.
3886         (flag_macinit1hi): Tighten constraints.
3887         (flag_mul_macv2hi_parts_acconly): New pattern.
3888
3889         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
3890         Use a more efficient implementation.
3891         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
3892         inline sequences when not optimizing for size.
3893
3894         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
3895         movhi_high2low): Delete, merge functionality into...
3896         (packv2hi): ... this pattern.
3897
3898         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
3899         * config/bfin/bfin.opt (msim): New option.
3900         (mcpu=): New option.
3901         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
3902         (bfin_cpu_t): Typedef of enum bfin_cpu.
3903         (bfin_cpu_type): New declaration.
3904         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
3905         -msim and -mcpu= options.
3906         (LIB_SPEC): Likewise.
3907         * config/bfin/bfin.c (bfin_cpu_type): Define.
3908         (bfin_handle_option): Handle -mcpu= option.
3909         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
3910         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
3911         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
3912
3913 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
3914
3915         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
3916         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
3917         (powerpc-wrs-vxworksae): Use ${tm_file}.
3918         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
3919         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
3920         * config/i386/vx-common.h: New file.
3921
3922 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
3923
3924         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
3925         of crt0.o%s.
3926
3927 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
3928
3929         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
3930         ldxtr.
3931
3932 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
3933
3934         PR c++/31078
3935         PR c++/31103
3936         * c-common.c (c_build_qualified_type): Set canonical type
3937         appropriately.
3938
3939 2007-04-12  Richard Guenther  <rguenther@suse.de>
3940
3941         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
3942         lower bound and element size if lower bound is not zero
3943         or either of the ARRAY_REF operands is set.
3944
3945 2007-04-12  Richard Guenther  <rguenther@suse.de>
3946
3947         PR tree-optimization/24689
3948         PR tree-optimization/31307
3949         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
3950         indices by value.
3951         * gimplify.c (canonicalize_addr_expr): To be consistent with
3952         gimplify_compound_lval only set operands two and three of
3953         ARRAY_REFs if they are not gimple_min_invariant.  This makes
3954         it never at this place.
3955         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
3956
3957 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3958
3959         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
3960         null before emitting a .nsubspa directive.
3961
3962 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
3963
3964         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
3965         need_to_partition_p if there are no memory statements in the
3966         function.
3967
3968 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
3969
3970         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
3971         (gcd_of_steps_may_divide_p): New function.
3972         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
3973
3974 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
3975
3976         * reload.c (find_reloads_toplev, find_reloads_address,
3977         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
3978         not a pointer equality test, to decide if we need to call
3979         push_reg_equiv_alt_mem.
3980
3981 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
3982
3983         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
3984         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps): New.
3985         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
3986
3987 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
3988
3989         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
3990         vector to be positive.
3991
3992 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
3993
3994         PR 30735
3995         PR 31090
3996         * doc/invoke.texi: Document --params max-aliased-vops and
3997         avg-aliased-vops.
3998         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
3999         debug_memory_partitions): Move to tree-flow.h
4000         * params.h (AVG_ALIASED_VOPS): Define.
4001         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
4002         users.
4003         (mp_info_t): Likewise.
4004         (get_mem_sym_stats_for): New.
4005         (set_memory_partition): Move from tree-flow-inline.h.
4006         (mark_non_addressable): Only clear the set of symbols for the
4007         partition if it exists.
4008         (dump_memory_partitions): Move from tree-ssa-operands.c
4009         (debug_memory_partitions): Likewise.
4010         (need_to_partition_p): New.
4011         (dump_mem_ref_stats): New.
4012         (debug_mem_ref_stats): New.
4013         (dump_mem_sym_stats): New.
4014         (debug_mem_sym_stats): New.
4015         (update_mem_sym_stats_from_stmt): New.
4016         (compare_mp_info_entries): New.
4017         (mp_info_cmp): Call it.
4018         (sort_mp_info): Change argument to a list of mem_sym_stats_t
4019         objects.
4020         (get_mpt_for): Move from tree-ssa-operands.c.
4021         (find_partition_for): New.
4022         (create_partition_for): Remove.
4023         (estimate_vop_reduction): New.
4024         (update_reference_counts): New.
4025         (build_mp_info): New.
4026         (compute_memory_partitions): Refactor.
4027         Document new heuristic.
4028         Call build_mp_info, update_reference_counts,
4029         find_partition_for and estimate_vop_reduction.
4030         (compute_may_aliases): Populate virtual operands before
4031         calling debugging dumps.
4032         (delete_mem_sym_stats): New.
4033         (delete_mem_ref_stats): New.
4034         (init_mem_ref_stats): New.
4035         (init_alias_info): Call it.
4036         (maybe_create_global_var): Remove alias_info argument.
4037         Get number of call sites and number of pure/const call sites
4038         from gimple_mem_ref_stats().
4039         (dump_alias_info): Call dump_memory_partitions first.
4040         (dump_points_to_info_for): Show how many times a pointer has
4041         been dereferenced.
4042         * opts.c (decode_options): For -O2 set --param
4043         max-aliased-vops to 500.
4044         For -O3 set --param max-aliased-vops to 1000 and --param
4045         avg-aliased-vops to 3.
4046         * fortran/options.c (gfc_init_options): Remove assignment to
4047         MAX_ALIASED_VOPS.
4048         * tree-flow-inline.h (gimple_mem_ref_stats): New.
4049         * tree-dfa.c (dump_variable): Dump memory reference
4050         statistics.
4051         Dump NO_ALIAS* settings.
4052         (referenced_var_lookup): Tidy.
4053         (mem_sym_stats): New.
4054         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
4055         and ORIG are different SSA names for a memory partition.
4056         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
4057         * tree-flow.h (struct mem_sym_stats_d): Define.
4058         (mem_sym_stats_t): Define.
4059         (struct mem_ref_stats_d): Define.
4060         (struct gimple_df): Add field mem_ref_stats.
4061         (enum noalias_state): Define.
4062         (struct var_ann_d): Add bitfield noalias_state.
4063         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
4064         debug_mem_ref_stats, debug_memory_partitions,
4065         debug_mem_sym_stats): Declare.
4066         * tree-ssa-structalias.c (update_alias_info): Update call
4067         sites, pure/const call sites and asm sites in structure
4068         returned by gimple_mem_ref_stats.
4069         Remove local variable IS_POTENTIAL_DEREF.
4070         Increase NUM_DEREFS if the memory expression is a potential
4071         dereference.
4072         Call update_mem_sym_stats_from_stmt.
4073         If the memory references memory, call
4074         update_mem_sym_stats_from_stmt for all the direct memory
4075         symbol references found.
4076         (intra_create_variable_infos): Set noalias_state field for
4077         pointer arguments according to the value of
4078         flag_argument_noalias.
4079         * tree-ssa-structalias.h (struct alias_info): Remove fields
4080         num_calls_found and num_pure_const_calls_found.
4081         (update_mem_sym_stats_from_stmt): Declare.
4082         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
4083         Set default value to 100.
4084         (PARAM_AVG_ALIASED_VOPS): Define.
4085
4086 2007-04-11  Richard Guenther  <rguenther@suse.de>
4087
4088         PR middle-end/31530
4089         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
4090         a * -b + c as c - a * b if we honor sign dependent rounding.
4091
4092 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
4093
4094         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
4095         bfin_expand_strmov.
4096         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
4097         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
4098         variables.
4099         (initialize_trampoline): Don't use old-style function definition.
4100         (bfin_secondary_reload): Mark IN_P argument as unused.
4101
4102 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
4103
4104         PR tree-optimization/31343
4105         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
4106         (build_polynomial_chrec): Return a scalar when the evolution is zero.
4107         * testsuite/gcc.dg/vect/pr31343.c: New.
4108
4109 2007-04-10  Eric Christopher  <echristo@apple.com>
4110
4111         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
4112         * config/i386/i386.md (*cmpfp0): Use.
4113         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
4114         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
4115         (fix_trunc<mode>_i386_fisttp): Ditto.
4116         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
4117         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
4118         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
4119         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
4120         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
4121         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
4122         (unnamed_splitters): Ditto.
4123         * config/i386/i386.c (output_fix_trunc): Assert that
4124         we're not being passed a TFmode operand.
4125
4126 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
4127
4128         PR tree-optimization/31526
4129         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
4130         n_basic_blocks to find newly added blocks.
4131
4132 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
4133
4134         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
4135         alternative.
4136         (fix_trunc<mode>si_sse): Ditto.
4137         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
4138         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
4139         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
4140         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
4141         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
4142         expander using SSEMODEF mode macro.
4143         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
4144         expander using SSEMODEF mode macro.
4145         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
4146         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
4147         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
4148         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
4149         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
4150         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
4151         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
4152         Macroize insn using X87MODEF mode macro.
4153
4154 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
4155
4156         * config/i386/sse.md (sse2_pinsrw): Removed.
4157         (sse2_pextrw): Renamed to ...
4158         (*sse2_pextrw): This.
4159
4160 2007-04-09  Jan Hubicka  <jh@suse.cz>
4161
4162         PR target/27869
4163         * config/i386/sse.md
4164         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
4165         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
4166         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
4167         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
4168
4169 2007-04-09  Jan Hubicka  <jh@suse.cz>
4170
4171         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
4172         multiple fields of union.
4173
4174 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
4175
4176         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
4177         (create_preheaders): Check that loops are available.
4178         (fix_loop_structure): Clean up, improve comments.
4179         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
4180         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
4181         state flags.
4182         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
4183         * predict.c (tree_estimate_probability): Do not call
4184         calculate_dominance_info.  Call create_preheaders.
4185         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
4186         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
4187         flags.
4188         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
4189         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
4190         * tree-cfg.c (tree_split_edge): Make an assert more precise.
4191         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
4192         arguments.
4193
4194 2007-04-08  Jan Hubicka  <jh@suse.cz>
4195
4196         * tree.h (maybe_fold_offset_to_component_ref): Declare.
4197         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
4198         * fold-const.c (fold_unary): Use it.
4199
4200 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4201
4202         * varasm.c (assemble_variable): Remove call to
4203         lang_hooks.decls.prepare_assemble_variable.
4204         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
4205         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
4206         * langhooks.h (lang_hooks_for_decls): Remove
4207         prepare_assemble_variable.
4208
4209 2007-04-08  Mike Stump  <mrs@apple.com>
4210
4211         * config/i386/i386.c: Use inc/dec on Core2.
4212
4213 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
4214
4215         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
4216         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
4217         lhd_tree_inlining_end_inlining): Remove.
4218         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
4219         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
4220         end_inlining hooks.
4221         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
4222         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
4223         lhd_tree_inlining_end_inlining): Remove prototypes.
4224         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
4225         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
4226         LANG_HOOKS_TREE_INLINING_START_INLINING,
4227         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
4228
4229         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
4230         not set it.
4231
4232 2007-04-08  Anatoly Sokolov <aesok@post.ru>
4233
4234         PR target/29932
4235         * config/avr/predicates.md (io_address_operand): Delete predicate.
4236         (low_io_address_operand): Don't use 'mode' argument.
4237         (higth_io_address_operand): Rename ...
4238         (high_io_address_operand): ... to this. Don't use 'mode' argument.
4239         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
4240         for above change.
4241
4242 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
4243
4244         Revert change removing staticp.
4245
4246 2007-04-07  Anatoly Sokolov <aesok@post.ru>
4247
4248         PR target/30289
4249         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
4250         earlyclobber.
4251
4252 2007-04-07  Bruce Korb  <bkorb@gnu.org>
4253
4254         * c.opt: Add -Wformat-contains-nul.
4255         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
4256           -Wformat setting.
4257         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
4258         the NUL byte warning.
4259
4260 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
4261
4262         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
4263
4264 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
4265
4266         * tree.c (staticp): No longer use staticp langhook.
4267         * langhooks.c (lhd_staticp): Removed.
4268         * langhooks.h (struct lang_hooks): Remove staticp.
4269         * c-common.c (c_staticp): Remove.
4270         * c-common.h (c_staticp): Ditto.
4271         * langhooks-defs.h (lhd_staticp): Ditto.
4272         (LHD_HOOKS_STATICP): Ditto
4273         * tree.h (gcc_assert_lowered): New macro.
4274
4275 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
4276
4277         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
4278         argument "reliable".
4279         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
4280         Add argument "reliable".  Propagate it through calls.
4281         (infer_loop_bounds_from_undefined):  Derive number of iterations
4282         estimates from references in blocks that do not dominate loop latch.
4283         (gcov_type_to_double_int): New function.
4284         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
4285         and expected_loop_iterations_unbounded.
4286         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
4287         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
4288         * tree-data-ref.c (estimated_loop_iterations): Export.
4289         (get_references_in_stmt): Fix -- do not return addresses of local
4290         objects.
4291         * cfgloop.h (expected_loop_iterations_unbounded,
4292         estimated_loop_iterations): Declare.
4293
4294 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
4295
4296         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
4297
4298 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
4299
4300         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
4301         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
4302         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
4303         Use output_387_reg_move().
4304         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
4305         expander using X87MODEF12 mode macro.
4306         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
4307         choosing register preferences.  Use output_387_reg_move().
4308         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
4309         instead of "x".  Use output_387_reg_move().
4310         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
4311         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
4312         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
4313         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
4314         Use output_387_reg_move().
4315         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
4316         mode macro.
4317         (*truncxf?f_i387 splitter): Ditto.
4318
4319 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
4320
4321         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
4322         LANG_HOOKS_SAFE_FROM_P.
4323         * expr.c (safe_from_p): Remove langhook call.
4324         * langhooks.h (lang_hooks): Remove safe_from_p.
4325         (lhd_safe_from_p): Remove prototype.
4326         * langhooks.c (lhd_safe_from_p): Remove.
4327
4328 2007-04-06  Jan Hubicka  <jh@suse.cz>
4329
4330         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
4331         functions.
4332
4333 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
4334
4335         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
4336         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
4337         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
4338         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
4339         alternative.
4340         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
4341         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
4342
4343 2007-04-05  Richard Henderson  <rth@redhat.com>
4344
4345         * config/alpha/alpha.c (print_operand) [+]: Remove.
4346         (alpha_end_function): Print nop if call at end of function.
4347         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
4348         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
4349         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
4350         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
4351         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
4352         the call pattern. Update peepholes to match.
4353
4354 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
4355
4356         * doc/extend.texi (Other Builtins): Add decimal float variants
4357         of signbit.
4358         * builtins.def: Ditto.
4359         * builtins.c (expand_builtin): Ditto.
4360
4361 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
4362             H.J. Lu  <hongjiu.lu@intel.com>
4363
4364         PR target/31478
4365         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
4366         of V8HImode when calling ix86_binary_operator_ok.
4367         (sse2_pmaddwd): Call ix86_binary_operator_ok.
4368         (sdot_prodv8hi): Operands 1 and 2 must be register.
4369
4370 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
4371
4372         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
4373         initialize align to silence bogus warning.
4374
4375 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
4376
4377         PR middle-end/22156
4378         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
4379         all_no_warning.
4380         (struct sra_walk_fns): Remove use_all parameter from use.
4381         (sra_hash_tree): Handle BIT_FIELD_REFs.
4382         (sra_elt_hash): Don't hash bitfld blocks.
4383         (sra_elt_eq): Skip them in parent compares as well.  Handle
4384         BIT_FIELD_REFs.
4385         (sra_walk_expr): Don't maintain or pass down use_all_p.
4386         (scan_use): Remove use_all parameter.
4387         (scalarize_use): Likewise.  Re-expand assignment to
4388         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
4389         output, and re-scalarize after output.  Don't mark anything
4390         for no warning.
4391         (scalarize_ldst): Adjust.
4392         (scalarize_walk_gimple_modify_statement): Likewise.
4393         (build_element_name_1): Handle BIT_FIELD_REFs.
4394         (instantiate_element): Don't warn for any element whose parent
4395         is used as a whole.
4396         (instantiate_missing_elements_1): Return the sra_elt.
4397         (canon_type_for_field): New.
4398         (try_instantiate_multiple_fields): New.
4399         (instantiate_missing_elemnts): Use them.
4400         (mark_no_warning): Removed.
4401         (generate_one_element_ref): Handle BIT_FIELD_REFs.
4402         (REPLDUP, sra_build_elt_assignment): New.
4403         (generate_copy_inout): Use them.
4404         (generate_element_copy): Likewise.  Handle bitfld differences.
4405         (generate_element_zero): Don't recurse for blocks.  Use
4406         sra_build_elt_assignment.
4407         (generate_one_element_int): Take elt instead of var.  Use
4408         sra_build_elt_assignment.
4409         (generate_element_init_1): Adjust.
4410         (scalarize_use, scalarize_copy): Use REPLDUP.
4411         (scalarize_ldst): Move assert before dereference.
4412         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
4413
4414 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
4415
4416         * regmove.c: Fix unused variable warnings due to previous commit.
4417
4418 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
4419
4420         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
4421         (regmove_bb_head): Remove.
4422         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
4423         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
4424         problems with fixup_match_1.
4425         Don't initialize/free regmove_bb_head.
4426
4427         (reg_is_remote_constant_p): If an insn is in the same basic block
4428         but not before INSN, consider it remote, too.
4429
4430 2007-04-05  Anatoly Sokolov <aesok@post.ru>
4431
4432         PR target/25448
4433         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
4434         DECL_ASSEMBLER_NAME, not the DECL_NAME.
4435
4436 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
4437
4438         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
4439         (CONDITIONAL_REGISTER_USAGE): Likewise.
4440
4441 2007-04-04  Richard Henderson  <rth@redhat.com>
4442
4443         * config/alpha/lib1funcs.asm: Remove unused file.
4444
4445 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
4446
4447         PR other/31356
4448         * opts.c (print_specific_help): Fix --help=<language>
4449         header line.
4450         (common_handle_option): Support --help=common.
4451
4452 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
4453
4454         PR other/31353
4455         * gcc.c (main): Do not run the linker if
4456         print_subprocess_help indicates that it shouldn't be
4457         run.
4458
4459 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
4460
4461         PR doc/31355
4462         * doc/invoke.texi (--help=): Document <languages> value, fix
4463         formatting in tables of values.
4464
4465 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
4466
4467         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
4468         dllimport attribute of virtual methods.
4469
4470 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
4471
4472         * config/score/crti.asm: Change _bss_start to __bss_start.
4473         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
4474         (OUTGOING_REG_PARM_STACK_SPACE) update.
4475         * config/score/score.opt: add options to make backend support
4476         score5, score5u, score7 and score7d.
4477         * config/score/score.md: Likewise.
4478         * config/score/misc.md: Likewise.
4479         * config/score/mac.md: Likewise.
4480         * doc/invoke.texi: Likewise.
4481         * doc/md.texi: update constraints define.
4482
4483 2007-04-03  Richard Henderson  <rth@redhat.com>
4484
4485         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
4486         an appropriate type, use the mode instead.
4487
4488 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
4489
4490         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
4491         Set the default --with-arch setting to mips2.
4492         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
4493         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
4494         (MULTILIB_OSDIRNAMES): Delete.
4495         (MULTILIB_DIRNAMES): Define.
4496         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
4497         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
4498         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
4499         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
4500         VXWORKS_OS_CPP_BUILTINS.
4501         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
4502         (MIPS_DEBUGGING_INFO): Undefine.
4503         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
4504
4505 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
4506
4507         PR middle-end/30704
4508         * fold-const.c (native_encode_real): Encode real.c provided longs
4509         as a series of 32-bit native integers.
4510         (native_interpret_real): Interpret buffer as a series of 32-bit
4511         native integers.
4512
4513 2007-04-03  Richard Guenther  <rguenther@suse.de>
4514
4515         * genpreds.c (write_insn_constraint_len): Write function
4516         optimized for CONSTRAINT_LEN implementation.
4517         (write_tm_preds_h): Output insn_constraint_len inline and
4518         use it for CONSTRAINT_LEN.
4519         (write_insn_preds_c): Don't output insn_constraint_len.
4520         * doc/md.texi (define_register_constraint): Document multi-letter
4521         constraints shall have the same length if they start with the same
4522         letter.
4523
4524 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
4525
4526         PR target/31175
4527         * config/i386/i386.md (isinf<mode>2): Expand only when
4528         TARGET_C99_FUNCTIONS is set.
4529
4530 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
4531
4532         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
4533         (x86_64-*-linux*): Ditto.
4534         * config/i386/i386.opt (mpc): New option.
4535         * config/i386/i386.c (overrride_options): Handle
4536         ix87_precision_string.
4537         * config/i386/crtprec.c: New file.
4538         * config/i386/t-crtpc: Ditto.
4539         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
4540         and -mpc80 options.
4541         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
4542         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
4543         crtprec32.o, crtprec64.o and crtprec80.o.
4544
4545         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
4546         and -mpc80 options.
4547         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
4548
4549 2007-04-02  Eric Christopher  <echristo@apple.com>
4550
4551         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
4552         limitations on darwin.
4553
4554 2007-04-02  Anatoly Sokolov <aesok@post.ru>
4555
4556         PR target/31137
4557         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
4558
4559 2007-04-02  Dave Korn  <dave.korn@artimi.com>
4560
4561         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
4562
4563 2007-04-02  Dave Korn  <dave.korn@artimi.com>
4564
4565         * libgcc2.h (exception_descriptor): Don't forward-declare.
4566         (__get_eh_table_language, __get_eh_table_version): Delete
4567         prototypes of long-dead functions.
4568
4569 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
4570
4571         * ebitmap.h: New file
4572         * ebitmap.c: New file
4573         * Makefile.in (ebitmap.o): New target.
4574
4575 2007-04-01  Jan Hubicka  <jh@suse.cz>
4576
4577         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
4578         before very first instruction.
4579
4580 2007-04-01  Jan Hubicka  <jh@suse.cz>
4581
4582         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
4583         waring on 64bit hosts.
4584         * bitmap.h: Fix typo in bitmap_head_def.
4585
4586 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
4587
4588         PR rtl-optimization/31391
4589         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
4590         into a DELETED_LABEL note, and the label is in an empty basic
4591         block, update BB_END as well as BB_HEAD.
4592
4593 2007-04-01  Richard Henderson  <rth@redhat.com>
4594
4595         PR tree-optimization/31169
4596         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
4597         to varying if the range is outside [0,  prec-1].
4598
4599 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
4600
4601         PR target/31388
4602         * config/mips/mips.md (load_const_gp): New insn.
4603         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
4604         the MIPS16 GP pseudo register if no_new_pseudos.
4605         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
4606
4607 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4608
4609         PR target/31364
4610         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
4611         secureplt.
4612         (call_value): Likewise.
4613
4614 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
4615             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4616
4617         PR 14737
4618         * doc/invoke.texi: (optimization options): Reword description
4619         of -ffast-math. Document its primary purpose.
4620
4621 2007-03-31  Richard Guenther  <rguenther@suse.de>
4622
4623         * omp-low.c (splay-tree.h): Include.
4624         (lookup_decl): Replace splay-tree usage by pointer-map.
4625         (maybe_lookup_decl): Likewise.
4626         (new_omp_context): Likewise.
4627         (delete_omp_context): Likewise.
4628         * gimplify.c (splay-tree.h): Include.
4629         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
4630         pointer-map.
4631         (remap_ssa_name): Likewise.
4632         (remap_decl): Likewise.
4633         (remap_type_1): Likewise.
4634         (remap_type): Likewise.
4635         (copy_body_r): Likewise.
4636         (expand_call_inline): Likewise.
4637         (clone_body): Likewise.
4638         (copy_tree_r): Likewise.
4639         (remap_save_expr): Likewise.
4640         (unsave_r): Likewise.
4641         (unsave_expr_now): Likewise.
4642         (tree_function_versioning): Likewise.
4643         (build_duplicate_type): Likewise.
4644         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
4645         (struct copy_body_data): Replace splay-tree by pointer-map.
4646         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
4647         not $(SPLAY_TREE_H).
4648         (gimplify.o): Depend on $(SPLAY_TREE_H).
4649         (omp-low.p): Likewise.
4650
4651 2007-03-31  Anatoly Sokolov <aesok@post.ru>
4652
4653         * config/avr/predicates.md (even_register_operand,
4654         odd_register_operand): New predicates.
4655         * config/avr/avr.md (movw peephole2): New.
4656         (movw_r peephole2): New.
4657
4658 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
4659
4660         * tree.h (get_signed_or_unsigned_type): New.
4661         * fold-const.c (operand_equal_for_comparison_p): Use
4662         get_signed_or_unsigned_type instead of
4663         lang_hooks.types.signed_or_unsigned_type.
4664         * expr.c (store_expr): Ditto.
4665         * langhooks.c (get_signed_or_unsigned_type): New.
4666         (lhd_signed_or_unsigned_type): New.
4667         * langhooks.h (lhd_signed_or_unsigned_type): New.
4668         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
4669
4670 2007-03-30  Richard Henderson  <rth@redhat.com>
4671
4672         * tree-ssa-loop-ivopts.c: Include target.h.
4673         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
4674         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
4675         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
4676         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
4677
4678 2007-03-30  Richard Henderson  <rth@redhat.com>
4679             Kai Tietz  <kai.tietz@onevision.com>
4680
4681         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
4682         default for 64-bit.
4683         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
4684         (TARGET_64BIT_MS_ABI): New.
4685         (DBX_REGISTER_NUMBER): Handle 64-bit.
4686         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
4687         (LONG_TYPE_SIZE): Force to 32.
4688         (REG_PARM_STACK_SPACE): New.
4689         (OUTGOING_REG_PARM_STACK_SPACE): New.
4690         (REGPARM_MAX, SSE_REGPARM_MAX): New.
4691         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
4692         (STACK_BOUNDARY): Use 128 for 64-bit.
4693         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
4694         Add 64-bit implementation.
4695         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
4696         argument unused.
4697         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
4698         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
4699         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
4700         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
4701         (ix86_handle_cconv_attribute): Don't warn when ignoring if
4702         TARGET_64BIT_MS_ABI.
4703         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
4704         (ix86_pass_by_reference): Likewise.
4705         (ix86_function_value_regno_p): Likewise.
4706         (ix86_build_builtin_va_list): Likewise.
4707         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
4708         (function_arg_advance_ms_64): New.
4709         (function_arg_advance): Call it.
4710         (function_arg_ms_64): New.
4711         (function_arg): Call it.
4712         (function_value_ms_64): New.
4713         (ix86_function_value_1): Call it.
4714         (return_in_memory_ms_64): New.
4715         (ix86_return_in_memory): Call it.
4716         (setup_incoming_varargs_ms_64): New.
4717         (ix86_setup_incoming_varargs): Call it.
4718         (ix86_expand_prologue): Handle 64-bit stack probing.
4719         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
4720         (output_pic_addr_const): Likewise.
4721         (x86_this_parameter): Likewise.
4722         (x86_output_mi_thunk): Likewise.
4723         (x86_function_profiler): Likewise.
4724         (TARGET_STRICT_ARGUMENT_NAMING): New.
4725         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
4726         (TARGET_64BIT_MS_ABI): New.
4727         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
4728         * config/i386/i386.md (allocate_stack_worker): Remove.
4729         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
4730         describe the clobber of eax without a match_scratch.
4731         (allocate_stack_worker_postreload): Remove.
4732         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
4733         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
4734         (allocate_stack_worker_rex64_postreload): Remove.
4735         (allocate_stack): Handle 64-bit.
4736         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
4737         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
4738         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
4739         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
4740         (STANDARD_STARTFILE_PREFIX_1): Likewise.
4741         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
4742         * config.build (x86_64-*-mingw*): New host.
4743         * config.host (x86_64-*-mingw*): New host.
4744         * config.gcc (x86_64-*-mingw*): New target.
4745         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
4746
4747 2007-03-30  Richard Henderson  <rth@redhat.com>
4748             Kai Tietz  <kai.tietz@onevision.com>
4749
4750         * c-pragma.c (struct def_pragma_macro_value): New.
4751         (struct def_pragma_macro): New.
4752         (pushed_macro_table): New.
4753         (dpm_hash, dpm_eq): New.
4754         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
4755         (init_pragma): Install them.
4756         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
4757
4758 2007-03-30  Anatoly Sokolov <aesok@post.ru>
4759
4760         * config/avr/avr.c (avr_override_options): Clear
4761         'flag_delete_null_pointer_checks'.
4762
4763 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
4764
4765         PR c++/26099
4766         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
4767         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
4768         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
4769         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
4770         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
4771         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
4772         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
4773         C++ extensions.
4774         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
4775
4776 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
4777
4778         * regmove.c: Move all of pass_stack_adjustments from here...
4779         * combine-stack-adj.c: ...to this new file.
4780         * Makefile.in: Add rules for combine-stack-adj.o.
4781
4782 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
4783
4784         PR tree-optimization/31383
4785         * tree-data-ref.c (affine_function_equal_p): Do not require the vectors
4786         to have the same length.
4787
4788 2007-03-30  Jan Hubicka  <jh@suse.cz>
4789
4790         PR middle-end/30700
4791         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
4792         availablility; add more sanity checking; ask varpool only about
4793         VAR_DECL.
4794
4795 2007-03-29  Richard Henderson  <rth@redhat.com>
4796
4797         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
4798         to decide, but __SIZEOF_LONG_LONG__.
4799
4800 2007-03-29  Richard Henderson  <rth@redhat.com>
4801
4802         * emutls.c (struct __emutls_array): New.
4803         (emutls_destroy): Use it instead of casting element 0 from void*.
4804         (__emutls_get_address): Likewise.
4805
4806 2007-03-29  Richard Henderson  <rth@redhat.com>
4807
4808         * varasm.c (initializer_constant_valid_p): Don't deny
4809         DECL_DLLIMPORT_P on functions.
4810
4811         * config/i386/cygming.h: Remove function declarations.
4812         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
4813         (ASM_OUTPUT_LABELREF): Remove.
4814         (COMMON_ASM_OP): Remove.
4815         (ASM_OUTPUT_COMMON): Remove.
4816         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
4817         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
4818         (ASM_DECLARE_FUNCTION_NAME): Likewise.
4819         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
4820         Rename from TARGET_ENCODE_SECTION_INFO.
4821         * config/i386/netware.h: Likewise.
4822         * config/i386/i386-protos.h: Update.
4823         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
4824         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
4825         (legitimate_constant_p): Reject dllimports.
4826         (dllimport_map, get_dllimport_decl): New.
4827         (legitimize_dllimport_symbol): New.
4828         (legitimize_address, ix86_expand_move): Use it.
4829         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
4830         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
4831         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
4832         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
4833         * config/i386/predicates.md (constant_call_address_operand): Only
4834         accept symbols; reject dllimport_p symbols.
4835         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
4836         i386_pe_maybe_record_exported_symbol.
4837         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
4838         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
4839         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
4840         trust the setting of DECL_DLLIMPORT_P.
4841         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
4842         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
4843         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
4844         tidy the argument scanning loop.
4845         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
4846         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
4847         (i386_pe_strip_name_encoding): Remove.
4848         (i386_pe_binds_local_p): New.
4849         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
4850         (i386_pe_output_labelref): Remove.
4851         (i386_pe_asm_output_aligned_decl_common): New.
4852         (i386_pe_maybe_record_exported_symbol): Rename from
4853         i386_pe_record_exported_symbol; check for dllexported symbols.
4854
4855 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
4856
4857         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
4858         add comment explaining why vsnprintf cannot be used.
4859
4860 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
4861
4862         PR tree-optimization/30666
4863         * tree.c (build_complex_type): When creating type names for DWARF2
4864         debug info, create TYPE_DECLs for TYPE_NAME instead of
4865         IDENTIFIER_NODEs.
4866         (build_common_tree_nodes_2): Use build_complex_type when building
4867         predefined complex types, to preserve canonical types.
4868
4869 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
4870
4871         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
4872         (noce_get_alt_condition): Look at it to determine whether to
4873         reverse the condition or not.
4874         (noce_get_condition): Substitute the truth for lies.
4875         (noce_find_if_block): Set the then_else_reversed field.
4876
4877 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
4878
4879         * config/fr30/fr30.md (movdi): Do not accept immediates as the
4880         destination of this insn.
4881         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
4882         than calling gen_rtx_SET directly.  Use r0 to hold the value of
4883         'address + 4' rather than a stack based temporary which can be
4884         mis-optimized away.
4885
4886 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
4887
4888         * config/s390/s390.c (s390_secondary_input_reload_class,
4889         s390_secondary_output_reload_class): Functions removed.
4890         (s390_secondary_reload): New function.
4891         (TARGET_SECONDARY_RELOAD): Target macro defined.
4892         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
4893         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
4894         * config/s390/s390.md ("reload_outti", "reload_outdi",
4895         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
4896         "reload_out<mode>"): Expanders removed.
4897         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
4898         "reload<mode>_nonoffmem_out"): Expanders added.
4899
4900 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
4901
4902         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
4903         SRC->DEST replacement failed anyway.
4904
4905 2007-03-28  Mike Stump  <mrs@apple.com>
4906
4907         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
4908         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
4909         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
4910
4911 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
4912
4913         * config.gcc: Accept barcelona as a variant of amdfam10.
4914         * config/i386/i386.c (override_options): Likewise.
4915         * doc/invoke.texi: Likewise.
4916
4917 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
4918
4919         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
4920         offsets for BIT_FIELD_REF and COMPONENT_REF.
4921
4922 2007-03-28  Richard Guenther  <rguenther@suse.de>
4923
4924         * tree.c (is_global_var): Move ...
4925         * tree-flow-inline.h (is_global_var): ... here.
4926         * tree.h (is_global_var): Remove declaration.
4927
4928 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
4929
4930         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
4931         option.
4932         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
4933         * config/i386/i386.c (ix86_tune_features): Initialize new
4934         tuning option.
4935         * config/i386/predicates.md (promotable_binary_operator): Use
4936         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
4937
4938 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
4939
4940         PR target/31380
4941         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
4942
4943 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
4944
4945         * config/fr30/fr30.md (movsi_internal): Change destination
4946         constraint from m to V and add m to the end.
4947
4948 2007-03-28  Christian Bruel  <christian.bruel@st.com>
4949
4950         * config/sh/sh.md (movsi_i): Fix type attribute.
4951
4952 2007-03-28  Christian Bruel  <christian.bruel@st.com>
4953
4954         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
4955         (movsf_ie): Likewise.
4956
4957 2007-03-28  Christian Bruel  <christian.bruel@st.com>
4958
4959         * config.gcc: Add sh4-300 to multilib.
4960         * config/sh/t-mlib-sh4-300: New file.
4961
4962 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
4963
4964         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
4965         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
4966         fix_trunc<mode>di2.
4967         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
4968         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
4969         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
4970         "fixuns_trunctddi2"): Whitespace fix.
4971
4972 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
4973
4974         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
4975         the definition of struct sh_args.
4976         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
4977         CALL_COOKIE_INT_REG_GET): Likewise.
4978
4979 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
4980
4981         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
4982         transformations are applied successfully.
4983
4984 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
4985
4986         * tree.c (tree_contains_struct): Permit 512 tree codes.
4987         * tree.h (tree_contains_struct): Ditto.
4988         (MAX_TREE_CODES): Ditto.
4989         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
4990         SPARE member to store remaining padding bits.
4991
4992 2007-03-27  Anatoly Sokolov <aesok@post.ru>
4993
4994         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
4995         architecture.
4996
4997 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
4998
4999         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
5000         * configure: Regenerate.
5001
5002         * configure: Regenerate using the correct version of autoconf.
5003
5004 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
5005
5006         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
5007         pointer regs.
5008         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
5009         regs to "__SP_L__" and "__SP_H__".
5010
5011 2007-03-27  Richard Guenther  <rguenther@suse.de>
5012
5013         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
5014         computations with it with a HOST_WIDE_INT variable.
5015
5016 2007-03-26  Mike Stump  <mrs@apple.com>
5017
5018         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
5019         objective-c-header, objective-c++-header and objc++-cpp-output
5020         support.
5021         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
5022
5023 2007-03-26  Richard Henderson  <rth@redhat.com>
5024
5025         PR target/31361
5026         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
5027         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
5028         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
5029         IX86_BUILTIN_PSRLQ128): New.
5030         (ix86_init_mmx_sse_builtins): Add them.
5031         (ix86_expand_builtin): Expand them.
5032         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
5033         operand 2 be TImode.
5034         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
5035         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
5036         _mm_srli_epi64): Mark __B const.
5037         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
5038         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
5039         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
5040         new two-vector shift builtins.
5041
5042 2007-03-26  Ian Lance Taylor  <iant@google.com>
5043
5044         PR tree-optimization/31345
5045         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
5046         [+INF, +INF(OVF)] into VARYING.
5047
5048 2007-03-26  Zack Weinberg  <zackw@panix.com>
5049
5050         * gengtype-parse.c: New file.
5051         * gengtype-yacc.y: Delete.
5052         * gengtype-lex.l: Don't include gengtype-yacc.h.
5053         Define YY_DECL and yyterminate appropriately for recursive
5054         descent parser.  yylval is now a string out-parameter to yylex.
5055         (HWS, EOID): New shorthand.
5056         (IWORD): Add a couple more types.
5057         (yylex): Add a setup stanza.  Remove the complex rules for
5058         detecting GTY'ed types and typedefs; replace with simple
5059         keyword detectors.  Adjust everything for the changed
5060         definition of yylval.  Ignore all pp-directives, not just #define.
5061         (yyerror): Delete.
5062         (parse_file): Rename yybegin; do not call yyparse.
5063         (yyend): New.
5064         * gengtype.c (xasprintf): Export again.
5065         (this_file): New.  Use everywhere __FILE__ was being used.
5066         (get_lang_bitmap): Special case types defined in gengtype.c.
5067         (do_typedef, new_structure): Suppress definition of certain types.
5068         (new_structure): Improve diagnostics of duplicate definitions.
5069         Make sure location_s is associated with input.h.
5070         (nreverse_pairs, define_location_structures): New functions.
5071         (main): Improve tagging of kludge types.  Remove old kludges
5072         for input.h types; use define_location_structures.
5073         * gengtype.h: Update prototypes.  Define token codes here.
5074         * Makefile.in: Remove all references to gengtype-yacc.
5075         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
5076         and gengtype.
5077         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
5078         add GTY((skip)) to the field that's only conditionally there.
5079         * doc/install.texi: Document that Bison is no longer required
5080         unless building treelang.
5081
5082         * gengtype.c: Don't include gtyp-gen.h.
5083         (srcdir): Declare here.
5084         (base_files, lang_dir_names): Allocate dynamically.
5085         (gt_files, num_gt_files, num_lang_dirs): New globals.
5086         (measure_input_list, read_input_line, read_input_list)
5087         (set_lang_bitmap): New functions.
5088         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
5089         simplify, relying on read_input_list to set up the bitmaps.
5090         (main): Arguments are no longer unused.  Check for correct number
5091         of command line arguments, set srcdir and srcdir_len, then call
5092         read_input_list, before doing anything else.  No need to worry
5093         about duplicates in main loop.
5094         * configure.ac: Simplify the calculation of all_gtfiles.
5095         Put language tags in there.  Don't set or substitute
5096         all_gtfiles_files_langs or all_gtfiles_files_frags.
5097         * Makefile.in: Revamp the way gengtype is invoked, now that it
5098         takes a file on its command line with a much simpler format.
5099         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
5100         (GTFILES): Remove duplicates and C source files.
5101         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
5102         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
5103         * configure: Regenerate.
5104
5105         * gengtype.h: Remove all type definitions to gengtype.c; leave
5106         only definitions of options_p, type_p, and pair_p as opaque
5107         pointers.  Update prototypes.
5108         * gengtype.c: Many type definitions moved here from gengtype.h.
5109         Consolidate type definitions at the top of the file.
5110         (xvasprintf): Delete.
5111         (xasprintf): Make static.
5112         (create_nested_pointer_option): Add 'next' parameter.
5113         (create_field_all, create_field_at): New functions.
5114         (create_field): Now a thin wrapper around create_field_all.
5115         (create_optional_field): Rename create_optional_field_ and add
5116         line argument.  Original name is now a macro which supplies
5117         __LINE__.
5118         (oprintf): Use vsnprintf directly.
5119         (close_output_files): Use fatal rather than perror/exit.
5120         (note_def_vec, note_def_vec_alloc): Use create_field_at.
5121         (main): Set progname.  Don't use exit.
5122         * gengtype-yacc.y (struct_fields): Use create_field_at.
5123         (option, optionseqopt): Delete.
5124         (optionseq): Consolidate productions from option here so we
5125         can use the first argument to create_option.
5126
5127         * gengtype-lex.l: Distinguish unions from structures in the
5128         token type.  Don't call find_structure; return the tag as a string.
5129         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and ENT_UNION.
5130         Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is string.
5131         Reorganize typedef_struct production accordingly.
5132         Use create_nested_ptr_option.
5133         * gengtype.c (create_nested_ptr_option): New function.
5134         * gengtype.h: Declare it.
5135
5136         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
5137         (string_type): Don't declare.
5138         (do_scalar_typedef): Declare.
5139         (create_scalar_type): Update prototype.
5140         * gengtype.c (string_type): Make static.
5141         (scalar_nonchar, scalar_char): New.
5142         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
5143         (resolve_typedef): Use scalar_nonchar for error recovery.
5144         (create_scalar_type): Remove name_len field.  Return scalar_char
5145         or scalar_nonchar as appropriate.
5146         (adjust_field_type): Look at scalar_is_char boolean to decide whether
5147         to use string_type.
5148         (throughout): Use scalar_nonchar instead of calling create_scalar_type,
5149         whenever possible.
5150         (main): Initialize scalar_char and scalar_nonchar before calling
5151         gen_rtx_next.
5152         * gengtype-lex.l: Adjust for removal of second argument to
5153         create_scalar_type.  Use yylval.s instead of yylval.t when
5154         returning SCALAR.
5155         * gengtype-yacc.y: Type of SCALAR is string.  Call
5156         create_scalar_type from type:SCALAR rule.  Adjust for removal of
5157         second argument to create_scalar_type.
5158
5159         * vec.h: Remove all #if IN_GENGTYPE blocks.
5160         Add comment saying that changes may require adjustments to gengtype.
5161         * gengtype.c: Don't include coretypes.h or tm.h.
5162         Add comment to inclusion of errors.h.
5163         (note_def_vec, note_def_vec_alloc): New functions.
5164         * gengtype.h: Declare new functions.
5165         * gengtype-lex.l: Don't include coretypes.h.
5166         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
5167         Delete.
5168         (update_lineno): Remove unnecessary prototype.
5169         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
5170         (VEC rule): Just return VEC_TOKEN.
5171         * gengtype-yacc.y (VEC_TOKEN): New token type.
5172         (type): Add a production for VEC(a,b).
5173         * Makefile.in: Update dependencies.
5174
5175         * gengtype-lex.l: Remove rules for parsing pointer-to-function
5176         typedefs that use the old PARAMS macro.
5177
5178         * gengtype-lex.l: Remove all rules and states relating to yacc
5179         input files.
5180         * gengtype-yacc.y: Similarly.
5181         * gengtype.c (note_yacc_type): Delete function.
5182         * gengtype.h: Update prototypes.
5183
5184 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
5185
5186         * tree-pretty-print.c (dump_generic_node): Report precision of
5187         unnamed integer types.
5188
5189 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
5190
5191         * ifcvt.c (noce_try_store_flag_constants): Don't check
5192         no_new_pseudos here.
5193         (noce_try_store_flag_constants): Don't check no_new_pseudos.
5194         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
5195         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
5196         noce_try_sign_mask): Likewise.
5197         (if_convert): Check no_new_pseudos here.
5198
5199         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
5200         Remove prototypes.
5201         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
5202         (noce_get_condition): Handle new then_else_reversed argument.
5203         (noce_init_if_info): Remove, fold into noce_find_if_block.
5204         (noce_process_if_block): Take a struct noce_if_info as the
5205         argument.  Don't set up one based on ce_if_info.  Update pointer
5206         references accordingly.
5207         (cond_move_process_if_block): Likewise.
5208         (process_if_block): Removed.
5209         (find_if_block): Removed.  Move functionality two new functions,
5210         noce_find_if_block and cond_exec_find_if_block.
5211         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
5212         blocks and the symmetric IF-ELSE-JOIN case.
5213         (cond_exec_find_if_block): Also new function mostly based on old
5214         find_if_block and process_if_block.
5215         (find_if_header): Replace find_if_block call with separately
5216         guarded calls to noce_find_if_block and cond_exec_find_if_block.
5217         (find_cond_trap): Update noce_get_condition call.
5218         (dead_or_predicable): Likewise.
5219
5220 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
5221
5222         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
5223         Remove.
5224         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
5225         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
5226         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
5227         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
5228         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
5229         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
5230         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
5231         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
5232         __builtin_ia32_psrad128 builtins.
5233
5234 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
5235
5236         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
5237         * config/i386/constraints.md
5238         (define_constraint "I"): Use IN_RANGE macro.
5239         (define_constraint "J"): Ditto.
5240         (define_constraint "K"): Ditto.
5241         (define_constraint "M"): Ditto.
5242         (define_constraint "N"): Ditto.
5243         (define_constraint "O"): Ditto.
5244         * config/i386/predicates.md
5245         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
5246         (define_predicate "const_0_to_3_operand"): Ditto.
5247         (define_predicate "const_0_to_7_operand"): Ditto.
5248         (define_predicate "const_0_to_15_operand"): Ditto.
5249         (define_predicate "const_0_to_63_operand"): Ditto.
5250         (define_predicate "const_0_to_255_operand"): Ditto.
5251         (define_predicate "const_1_to_31_operand"): Ditto.
5252         (define_predicate "const_2_to_3_operand"): Ditto.
5253         (define_predicate "const_4_to_7_operand"): Ditto.
5254
5255 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
5256
5257         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
5258         in SImode for save_world.
5259         * config/rs6000/altivec.md (save_world, restore_world): Convert to
5260         LR hard reg.
5261
5262 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
5263
5264         PR tree-optimization/30784
5265         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
5266         BIT_FIELD_REF.
5267
5268 2007-03-25  Revital Eres  <eres@il.ibm.com>
5269
5270         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
5271           Fold movement_possibility function into it.
5272
5273 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
5274
5275         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
5276         (load_macho_picbase_{si,di}): Convert to LR hard reg.
5277         (call_indirect_nonlocal_darwin64): Same.
5278         (call_nonlocal_darwin64): Same.
5279         (call_value_indirect_nonlocal_darwin64): Same.
5280         (call_value_nonlocal_darwin64): Same.
5281         (sibcall_nonlocal_darwin64): Same.
5282         (sibcall_value_nonlocal_darwin64): Same.
5283         (sibcall_symbolic_64): Same.
5284         (sibcall_value_symbolic_64): Same.
5285         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
5286         LR pseudo.
5287         (rs6000_emit_load_toc_table): Same.
5288         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
5289         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
5290         (mull_call): Same.
5291         (divss_call): Same.
5292         (divus_call): Same.
5293         (quoss_call): Same.
5294         (quous_call): Same.
5295         (load_toc_v4_pic_si): Same
5296         (load_toc_v4_PIC_1): Same.
5297         (load_toc_v4_PIC_1b): Same.
5298         (call_indirect_aix{32,64}): Same.
5299         (call_value_indirect_aix{32,64}): Same.
5300         (call): Same.
5301         (call_value): Same.
5302         (call_local{32,64}): Same.
5303         (call_value_local{32,64}): Same.
5304         (call_indirect_nonlocal_aix{32,64}): Same.
5305         (call_nonlocal_aix{32,64}): Same.
5306         (call_value_indirect_nonlocal_aix{32,64}): Same.
5307         (call_value_nonlocal_aix{32,64}): Same.
5308         (call_indirect_nonlocal_sysv<mode>): Same.
5309         (call_nonlocal_sysv<mode>): Same.
5310         (call_value_indirect_nonlocal_sysv<mode>): Same.
5311         (call_value_nonlocal_sysv<mode>): Same.
5312         (sibcall): Same.
5313         (sibcall_local{32,64}): Same.
5314         (sibcall_value_local{32,64}): Same.
5315         (sibcall_nonlocal_aix{32,64}): Same.
5316         (sibcall_value_nonlocal_aix{32,64}): Same.
5317         (sibcall_nonlocal_sysv<mode>): Same.
5318         (sibcall_value): Same.
5319         (sibcall_value_nonlocal_sysv<mode>): Same.
5320
5321 2007-03-24  Paul Brook  <paul@codesourcery.com>
5322
5323         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
5324         * config/arm/linux-eabi.h: Remove legacy syscall hack.
5325
5326 2007-03-24  Richard Henderson  <rth@redhat.com>
5327
5328         * config/ia64/constraints.md: New file.
5329         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
5330         satisfies_constraint_?.
5331         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
5332         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
5333         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
5334         ia64_output_mi_thunk): Likewise.
5335         (ia64_const_ok_for_letter_p): Remove.
5336         (ia64_const_double_ok_for_letter_p): Remove.
5337         (ia64_extra_constraint): Remove.
5338         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
5339         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
5340         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
5341         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
5342         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
5343         EXTRA_MEMORY_CONSTRAINT): Remove.
5344         * config/ia64/ia64.md: Include constriants.md.  Replace
5345         CONST_OK_FOR_? with satisfies_constraint_?.
5346
5347 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
5348             H.J. Lu  <hongjiu.lu@intel.com>
5349
5350         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
5351         DPD or BID name.
5352         (name macros): Use DPD_BID_NAME to convert names properly.
5353
5354         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
5355         decimal floating point format.
5356         (init_floating_libfuncs): Change decimal functions so that they
5357         have a "bid_" prefix if the decimal system uses the BID format,
5358         and "dpd_" prefix if the decimal system uses the DPD format.
5359         (init_interclass_conv_libfuncs): Ditto.
5360         (init_intraclass_conv_libfuncs): Ditto.
5361
5362         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
5363         using the BID format.
5364
5365         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
5366         whether we are using the BID decimal format.
5367         * configure: Regenerate.
5368
5369         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
5370         the compiler has decimal floating point enabled.  Define
5371         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
5372         instead of DPD.
5373
5374         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
5375         using the BID format.
5376
5377         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
5378         whether we are using the BID decimal format.
5379         * configure: Regenerate.
5380
5381         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
5382         the compiler has decimal floating point enabled.  Define
5383         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
5384         instead of DPD.
5385
5386         * doc/install.texi (--enable-decimal-float): Document BID and DPD
5387         options, and that it is enabled for i386/x86_64 systems.
5388
5389         * Makefile.in (enable_decimal_float): New.
5390         (DECNUMFMT): New.
5391         (DECNUMINC): Add  -I$(DECNUMFMT).
5392         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
5393         to $(DECNUMFMT) from $(DECNUM).
5394
5395         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
5396         Substitute enable_decimal_float.
5397         * configure: Regenerated.
5398
5399         PR other/30529
5400         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
5401         unsigned long.
5402
5403         * configure.ac: Enable decimal float for x86_64-*-linux*.
5404         * configure: Regenerated.
5405
5406         PR other/30530
5407         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
5408         decimal128ClearSign to flip and clear the sign bit in decimal128.
5409         (decimal_real_maxval): Set decimal128SetSign to set the sign
5410         bit in decimal128.
5411
5412 2007-03-23  Ian Lance Taylor  <iant@google.com>
5413
5414         * fold-const.c (fold_binary): Correct warning for X - c >= X.
5415
5416 2007-03-23  Ian Lance Taylor  <iant@google.com>
5417
5418         * tree-dump.c (dump_files): Correct comment.
5419
5420 2007-03-23  Ian Lance Taylor  <iant@google.com>
5421
5422         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
5423
5424 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
5425
5426         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
5427         in cfglayout mode.  Don't go into and out of cfglayout mode.
5428         Link the blocks in the order of the constructed traces.
5429         (rest_of_handle_tracer): Adjust call to tracer.
5430         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
5431         Don't go into cfglayout mode.
5432         (rtl_loop_done): Don't go out of cfglayout mode.
5433         * cfglayout.c (relink_block_chain): New function, split out from...
5434         (fixup_reorder_chain): ...here.  Remove redundant checking.
5435         (cfg_layout_finalize): Don't clear the header, footer, and aux
5436         fields here, move the code to do so to relink_block_chain.  Likewise
5437         for free_original_copy_tables.
5438         * rtl.h (tracer): Update prototype.
5439         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
5440         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
5441         mode.  Use relink_block_chain to serialize the CFG according to the
5442         new basic block order.  Move targetm.cannot_modify_jumps_p check from
5443         here...
5444         (gate_handle_reorder_blocks): ...to here.
5445         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
5446         from here...
5447         (gate_duplicate_computed_gotos): ...to here.
5448         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
5449         something always changes when going into and out of cfglayout mode.
5450         Perform an expensive cfg cleanup while going into cfglayout mode.
5451         Always update liveness information on HAVE_conditional_execution
5452         targets.  Reserialize the basic blocks and go out of cfglayout mode.
5453         * reg-stack.c: Include cfglayout.h.
5454         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
5455         the call to reorder_basic_blocks.
5456         * basic-block.h (reorder_basic_blocks): Update prototype.
5457         (relink_block_chain): New prototype.
5458         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
5459
5460 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
5461
5462         * config/mips/mips.md (type, hazard, *movdi_32bit,
5463         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
5464         *movhi_internal, *movqi_internal, *movsf_hardfloat,
5465         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
5466         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
5467         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
5468         applicable.
5469         (movcc): Change first xfer to multi.
5470         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
5471         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
5472         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
5473         config/mips/generic.md: Change reservations using "xfer" to use
5474         "mfc,mtc".
5475         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
5476         using match_operand.
5477         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
5478         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
5479         examining mode.
5480         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
5481
5482 2007-03-22  Richard Henderson  <rth@redhat.com>
5483
5484         * config/i386/i386.c: Remove unnecessary function declarations.
5485         Move targetm definition, and all related macros, to the end of
5486         the file.  Resort some functions to put definitions before uses.
5487         (ix86_attribute_table): Make static.  Move to end of file.
5488         (ix86_gimplify_va_arg): Make static.
5489
5490 2007-03-22  Richard Henderson  <rth@redhat.com>
5491
5492         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
5493         don't increase local_regparm with force_align_arg_pointer check.
5494         (ix86_function_sseregparm): Assert 32-bit.
5495         (type_has_variadic_args_p): New.
5496         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
5497         type_has_variadic_args_p.
5498         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
5499         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
5500         use memset instead.  Do maybe_vaarg check first; skip attribute
5501         tests if true; skip attribute tests for 64-bit.
5502         (construct_container): Remove TARGET_DEBUG_ARG.
5503         (function_arg_advance_32, function_arg_advance_64): Split out ...
5504         (function_arg_advance): ... from here.
5505         (function_arg_32, function_arg_64): Split out ...
5506         (function_arg): ... from here.
5507         (ix86_pass_by_reference): Tidy.
5508         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
5509         (function_value_32): New, from parts of ix86_function_value
5510         and ix86_value_regno.
5511         (function_value_64): New, from parts of ix86_function_value
5512         and ix86_libcall_value.
5513         (ix86_function_value_1): New.
5514         (ix86_function_value, ix86_libcall_value): Use it.
5515         (return_in_memory_32, return_in_memory_64): Split out ...
5516         (ix86_return_in_memory): ... from here.
5517         (ix86_struct_value_rtx): Skip for 64-bit.
5518         (ix86_libcall_value, ix86_value_regno): Remove.
5519         (setup_incoming_varargs_64): Split out ...
5520         (ix86_setup_incoming_varargs): ... from here.
5521         (ix86_va_start): Remove TARGET_DEBUG_ARG.
5522         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
5523         * config/i386/i386-protos.h (ix86_function_value): Remove.
5524         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
5525
5526 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5527
5528         PR other/23572
5529         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
5530         infinities not supported, otherwise emit warning if -Woverflow. On
5531         underflow, emit warning if -Woverflow.
5532         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
5533         and 0 otherwise.
5534         * real.h (real_from_string): Update declaration
5535
5536 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
5537             Richard Henderson  <rth@redhat.com>
5538
5539         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
5540         * calls.c (compute_argument_block_size, expand_call,
5541         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
5542         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
5543         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
5544         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
5545         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
5546         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
5547         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
5548         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
5549         Set to 1.
5550
5551 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
5552
5553         * c-incpath.c (add_sysroot_to_chain): New.
5554         (merge_include_chains): Add sysroot argument.  Call
5555         add_sysroot_to_chain if sysrooted.
5556         (register_include_chains): Update call to merge_include_chains.
5557         * doc/cppopts.texi: Document use of '=' in include directory
5558         arguments.
5559
5560 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
5561
5562         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
5563         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
5564         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
5565         insn pattern using X87MODEF12 mode macro.
5566
5567 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
5568
5569         * regmove.c (regmove_optimize): Use reg_mentioned_p
5570         instead of reg_overlap_mentioned_p for DST.
5571
5572 2007-03-21  Mike Stump  <mrs@apple.com>
5573
5574         * c.opt: Fixup for Objective-C/C++.
5575
5576 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
5577
5578         * explow.c (convert_memory_address): Fold memory reference when
5579         POINTERS_EXTEND_UNSIGNED < 0
5580
5581 2007-03-21  Richard Henderson  <rth@redhat.com>
5582
5583         PR target/31245
5584         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
5585         * config/i386/mmintrin.h (__m64): Likewise.
5586         * config/i386/xmmintrin.h (__m128): Likewise.
5587
5588 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
5589
5590         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
5591         (VXWORKS_OS_CPP_BUILTINS): Define.
5592         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
5593         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
5594
5595 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
5596
5597         * rtl.h (constant_pool_reference_p): Delete.
5598         (find_constant_src): Declare.
5599         * rtlanal.c (find_constant_src): New function.
5600         * simplify-rtx.c (constant_pool_reference_p): Delete.
5601         * config/i386/i386.md: Use find_constant_src instead of
5602         constant_pool_reference_p/avoid_constant_pool_reference pairs.
5603
5604 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
5605
5606         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
5607         * c-cppbuiltin.c (c_cpp_builtins): Define them.
5608
5609 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
5610
5611         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
5612         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
5613         (arm_elf_asm_constructor): Use it.
5614         (arm_elf_asm_destructor): New function.
5615
5616 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
5617
5618         * jump.c (mark_jump_label): Treat SEQUENCE specially.
5619
5620 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
5621
5622         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
5623
5624 2007-03-19  Andrew Haley  <aph@redhat.com>
5625
5626         PR tree-optimization/31264
5627         * tree-vrp.c (register_edge_assert_for_1): Don't look though
5628         VIEW_CONVERT_EXPRs.
5629
5630 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
5631
5632         PR rtl-optimization/30907
5633         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
5634         (fwprop_init): Always call loop_optimizer_initialize.
5635         (fwprop_done): Always call loop_optimizer_finalize.
5636         (fwprop): We always have loop info now.
5637         (gate_fwprop_addr): Remove.
5638         (pass_fwprop_addr): Use gate_fwprop as gate.
5639
5640         PR rtl-optimization/30841
5641         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
5642         df_chain_alloc): Call df_reorganize_refs unconditionally.
5643         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
5644         refs_organized to refs_organized_size.
5645         (df_ref_create_structure): Use refs_organized_size instead of
5646         bitmap_size if refs had been organized, and keep refs_organized_size
5647         up-to-date.
5648         * df.h (struct df_ref_info): Change refs_organized to
5649         refs_organized_size.
5650         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
5651         bitmap_size.
5652
5653 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
5654
5655         * except.c (output_function_exception_table): Do not reference the
5656         EH personality routine for functions that do not require an
5657         exception table.
5658
5659 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
5660
5661         PR c/30762
5662         * c-typeck.c (convert_for_assignment): Call comptypes for
5663         RECORD_TYPE or UNION_TYPE.
5664
5665         PR inline-asm/30505
5666         * reload1.c (reload): Do invalid ASM checking after
5667         cleanup_subreg_operands.
5668
5669 2007-03-19  Jeff Law  <law@redhat.com>
5670
5671         * tree-cfg.c (find_taken_edge): Tighten conditions for
5672         optimizing computed gotos.
5673
5674 2007-03-19  Michael Matz  <matz@suse.de>
5675
5676         * builtins.c (expand_builtin_sync_operation,
5677         expand_builtin_compare_and_swap,
5678         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
5679         correctly.
5680
5681         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
5682         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
5683         for operand 3.
5684
5685 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
5686
5687         * doc/tm.texi: Add brackets around the return type of
5688         TARGET_SECONDARY_RELOAD.
5689
5690 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5691         Richard Guenther  <rguenther@suse.de>
5692
5693         PR tree-optimization/31254
5694         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
5695         Use handled_component_p () where appropriate.  Continue
5696         propagating into the rhs if we propagated into an INDIRECT_REF
5697         on the lhs.
5698
5699 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
5700
5701         * config/s390/s390.md (op_type attribute): RRR instruction type added.
5702         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
5703         (xde, xdee): Mode attributes adjusted to support DFP modes.
5704         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
5705         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
5706         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
5707         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
5708         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
5709         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
5710         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
5711         numbers.
5712         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
5713         "movsf"): Insn definitions removed.
5714         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
5715         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
5716         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
5717         definitions added.
5718         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
5719         "reload_in<mode>", "reload_out<mode>"): Expander added.
5720         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
5721         Expander removed.
5722
5723 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
5724
5725         * config/s390/s390.md: Only non-functional changes.  Renamed
5726         FPR mode macro to BFP all over the file.
5727
5728 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
5729
5730         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
5731         (op_type attribute): RRF instruction type added.
5732         (fT0): New mode attribute.
5733         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
5734         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
5735         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new instruction
5736         no secondary memory is needed when moving DFmode values between GPRs
5737         and FPRs.
5738
5739 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
5740
5741         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
5742         inverted and documentation adjusted.
5743         ("mhard-dfp", "msoft-dfp"): New options.
5744         * config/s390/s390.c (s390_handle_arch_option): New architecture
5745         switch: z9-ec.
5746         (override_options): Sanity checks for the new options added.
5747         * config.gcc: New architecture switch: z9-ec.
5748         * config/s390/s390.h (processor_flags): PF_DFP added.
5749         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
5750         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
5751         when the bit is NOT set so remove it from the defaults.
5752
5753 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
5754
5755         * genemit.c (main): Print include statement for dfp.h.
5756         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
5757         is not available.
5758
5759 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
5760
5761         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
5762
5763 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
5764
5765         PR target/31022
5766         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
5767         instead of PATTERN.
5768
5769 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5770
5771         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
5772         attr_length_call, output_call, output_indirect_call): Cleanup
5773         formatting of targetm calls.
5774
5775 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
5776
5777         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
5778
5779 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5780
5781         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
5782         reservation, bypass and anti-bypass descriptions for these instructions.
5783         Update move patterns.
5784         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
5785         TYPE_FPSTORE.
5786
5787 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
5788
5789         * tree-vect-transform.c (get_initial_def_for_induction): Replace
5790         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
5791         (get_initial_def_for_reduction): Likewise.
5792
5793 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
5794
5795         Fix PR tree-optimization/29922
5796         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
5797         (get_representative): Removed.
5798         (value_dies_in_block_x): Update for rvuse removal.
5799         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
5800         (compute_antic_aux): Handle when PHI nodes appear in
5801         non-single-successors.
5802         (dump_bitmap_of_names): Removed.
5803         (compute_antic_safe): Renamed and removed rvuse calculation.
5804         Calculate only antic safe.
5805         (insert_into_preds_of_block): Remove assert.
5806         (execute_pre): Update for renamed functions.
5807         (defer_or_phi_translate_block): New function.
5808
5809 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
5810
5811         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
5812         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
5813         typos.
5814         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
5815         Follow spelling conventions.
5816
5817         * tree-data-ref.h: Remove the prototype for analyze_array.
5818
5819 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
5820
5821         PR tree-optimization/31041
5822         * tree-vect-transform.c (get_initial_def_for_induction): Call
5823         force_gimple_operand.
5824
5825 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
5826
5827         * ipa-type-escape.c (look_for_casts) : Revert code to use
5828         handled_component_p due to ada test a-numaux.adb.
5829
5830 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
5831
5832         * final.c (final_scan_insn): Alter the condition of a
5833         conditional trap if we have nonstandard CC.
5834
5835 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
5836
5837         * configure.ac: Remove excess quoting from asm line 0 test.
5838         * configure: Rebuilt.
5839
5840 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5841
5842         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
5843         * c-common.c (convert_and_check): Move warning logic to...
5844         (warnings_for_convert_and_check): ...here. Define.
5845         * c-common.h (warnings_for_convert_and_check): Declare.
5846
5847 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5848
5849         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
5850         (output_call): Likewise.
5851
5852 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
5853
5854         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
5855
5856 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
5857
5858         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
5859
5860 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
5861
5862         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
5863         opteron, athlon-64 and athlon-fx processor_alias_table entries.
5864
5865 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
5866
5867         PR tree-optimization/31183
5868         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
5869         Use double_int instead of unsigned int for representing access_strides.
5870         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
5871
5872 2007-03-16  Richard Guenther  <rguenther@suse.de>
5873
5874         PR tree-optimization/31146
5875         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
5876         to allow recursion of forward_propagate_addr_expr.
5877         (forward_propagate_addr_into_variable_array_index): Likewise.
5878         (forward_propagate_addr_expr): Likewise.
5879         (tree_ssa_forward_propagate_single_use_vars): Likewise.
5880         (forward_propagate_addr_expr_1): Recurse on simple copies
5881         instead of propagating into them.  Do so for useless conversions
5882         as well.
5883         (forward_propagate_addr_expr): Clean up unused statements after
5884         recursion.
5885
5886 2007-03-16  Richard Guenther  <rguenther@suse.de>
5887
5888         * builtins.c (expand_builtin_cexpi): Use the right argument
5889         for the expansion via cexp.
5890
5891 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
5892
5893         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
5894         * configure: Rebuilt.
5895
5896 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
5897
5898         PR debug/29906
5899         * dwarf2out.c (force_type_die): Adjust comment.
5900         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
5901
5902 2007-03-15  DJ Delorie  <dj@redhat.com>
5903
5904         * config/frv/predicates.md (minmax_operator): Don't check operands
5905         here.
5906
5907 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
5908
5909         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
5910         Update constant estimates of number of iterations.
5911         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
5912         argument renamed to "realistic".
5913         (compute_estimated_nb_iterations): Removed.
5914         (record_niter_bound): New function.
5915         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
5916         call record_nonwrapping_iv with upper = false.
5917         (infer_loop_bounds_from_signedness): Pass upper argument to
5918         record_nonwrapping_iv.
5919         (estimate_numbers_of_iterations_loop): Do not call
5920         compute_estimated_nb_iterations.  Record estimate based on profile
5921         information.  Initialize the constant estimates of number of
5922         iterations.
5923         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
5924         estimates.
5925         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
5926         number of iterations is too small.
5927         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
5928         (EST_NOT_AVAILABLE): Removed.
5929         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
5930         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
5931         fields.
5932
5933 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
5934
5935         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
5936         Handle NE_EXPR guards.
5937
5938 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5939
5940         PR c++/24924
5941         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
5942         Set also -pedantic-errors by default for the  preprocessor unless
5943         -fpermissive is given.
5944
5945 2007-03-15  Richard Guenther  <rguenther@suse.de>
5946
5947         PR middle-end/29719
5948         PR middle-end/31161
5949         * builtins.c (expand_builtin_cexpi): As a fallback if we
5950         don't have builtins for sincos or cexp create a function
5951         declaration for cexp and expand to a call to that.
5952         (expand_builtin_int_roundingfn): Always fall
5953         back to floor/ceil and its variants even if they may be
5954         not available.
5955
5956 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
5957
5958         PR middle-end/31159
5959         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
5960         jump tables, move the call to delete_dead_jumptables from here...
5961         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
5962         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
5963         don't allow merging of blocks that try_redirect_by_replacing_jump
5964         also does not handle when not optimizing.
5965
5966 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
5967             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
5968
5969         * config/i386/i386.md (x86_sahf_1): Correctly handle
5970         HAVE_AS_IX86_SAHF.
5971
5972 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
5973
5974         PR target/31167
5975         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
5976         x86_64_general_operand as operand[2] predicate.  Remove "iF"
5977         from operand constraints and use "e" constraint instead.
5978         (*subti3_1, *subti3_1 splitter): Ditto.
5979         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
5980         operand[1] predicate.
5981
5982 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
5983
5984         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
5985         arrays, multiply the access strides by the size of the sub-array.
5986         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
5987
5988 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
5989
5990         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
5991         the configured assembler supports the sahf mnemonic.
5992         * configure: Regenerate.
5993         * config.in: Regenerate.
5994
5995         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
5996         emit "sahf" or ".byte\t0x9e" as asm template.
5997
5998 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
5999
6000         PR 31018
6001         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
6002         option to replace hard coded TARGET_xxx in md file.
6003         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
6004         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
6005         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
6006         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
6007         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
6008         (X86_TUNE_NOT_VECTORMODE): Ditto.
6009         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
6010         (TUNE_AVOID_VECTOR_DECODE): Ditto.
6011         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
6012         (TUNE_SLOW_IMUL_IMM8): Ditto.
6013         (TUNE_MOVE_M1_VIA_OR): Ditto.
6014         (TUNE_NOT_UNPAIRABLE): Ditto.
6015         (TUNE_NOT_VECTORMODE): Ditto.
6016
6017         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
6018         options.
6019
6020         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
6021         tuning options instead of hard coded TARGET_xxx.
6022         (fix ssemode peephole2's): Ditto.
6023         (imul peephole2's): Ditto.
6024         (movsi_or): Ditto.
6025         (movdi_or_rex64): Ditto.
6026         (move peephole2): Ditto.
6027         (not peephole2's): Ditto.
6028
6029 2007-03-14  Dirk Mueller  <dmueller@suse.de>
6030
6031         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
6032         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
6033         * c-parser.c (c_parser_if_body): Always add an empty statement in case
6034         of empty body.
6035         * c-parser.c (c_parser_do_statement): Warn about empty body in
6036         do/while statement.
6037         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
6038         * doc/invoke.texi (-Wempty-body): Update documentation.
6039
6040 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6041
6042         PR c/21438
6043         * c-common.h (warn_for_div_by_zero): Declare.
6044         * c-common.c (warn_for_div_by_zero): Define.
6045         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
6046         warning.
6047
6048 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
6049
6050         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
6051         to PREFIX and STANDARD_PREFIX.
6052
6053 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
6054             Phil Edwards  <phil@codesourcery.com>
6055
6056         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
6057         (__gthread_once_t): Remove busy field for RTPs.
6058         (__GTHREAD_ONCE_INIT): Update accordingly.
6059
6060 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
6061
6062         * doc/invoke.texi: Document VxWorks options.
6063
6064 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
6065
6066         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
6067
6068 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
6069
6070         PR tree-optimization/30590
6071         * tree-nrv.c (tree_nrv): Check for the partial update of the
6072         return value.
6073
6074 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
6075
6076         * flags.h (flag_random_seed): Remove declaration, in favor of...
6077         * toplev.h (get_random_seed, set_random_seed): ... these.
6078         * tree.c (get_file_function_name): Use the former.
6079         * opts.c (common_handle_option): Use the latter.
6080         * toplev.c
6081
6082 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
6083
6084         PR middle-end/31127
6085         * cse.c (cse_find_path): Do not bail out if a basic block that
6086         we already visited now becomes part of a path that starts at a
6087         different basic block.  Just disallow this, to make sure we
6088         visit each basic block at most once.
6089
6090 2007-03-13  Jan Hubicka  <jh@suse.cz>
6091
6092         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold attributes,
6093         when profile esitmate is present, calls with very low frequency are
6094         cold.
6095
6096 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
6097
6098         PR tree-optimization/30730
6099         PR tree-optimization/26900
6100         * tree-ssa-loop-niter.c: Include gmp.h.
6101         (bounds): New type.
6102         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
6103         split_to_var_and_offset, determine_value_range,
6104         bound_difference_of_offsetted_base, refine_bounds_using_guard,
6105         bound_difference, bounds_add, bounds_negate,
6106         number_of_iterations_ne_max, dump_affine_iv): New functions.
6107         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
6108         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
6109         difference of initial and final value of control iv to validate
6110         results.
6111         (number_of_iterations_cond): Add loop parameter.  Determine bounds
6112         on the difference of the extremes of the control iv.  Add dumps.
6113         (expand_simple_operations): Handle phi nodes.
6114         (simplify_using_initial_conditions): Do not record used conditions.
6115         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
6116         Do not set additional_info.
6117         (implies_nonnegative_p, implies_ge_p): Removed.
6118         (derive_constant_upper_bound): Do not use parameter `additional'.
6119         (record_estimate): Parameter `additional' removed.  Parameter
6120         `i_bound' added.  Do not call derive_constant_upper_bound.
6121         (record_nonwrapping_iv): Use derive_constant_upper_bound to
6122         bound the number of iterations estimate.
6123         (estimate_numbers_of_iterations_loop): Pass the estimate from
6124         the number of iterations analysis to record_estimate.
6125         * tree.h (multiple_of_p): Declare.
6126         * tree-scalar-evolution.c (expression_expensive_p): Removed.
6127         (scev_const_prop): Do not check expression_expensive_p.
6128         * fold-const.c (multiple_of_p): Exported.
6129         * double-int.c (double_int_mask): Exported.
6130         * double-int.h (double_int_mask): Declare.
6131         * tree-flow.h (struct tree_niter_desc): Removed additional_info
6132         field.  Added max field.
6133
6134 2007-03-13  David Taylor  <taylor@candd.org>
6135
6136         PR driver/12448:
6137         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
6138         default -MQ.
6139
6140 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6141
6142         PR target/31123
6143         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
6144         two unamed patterns.
6145
6146 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
6147
6148         * config/i386/i386.opt (mcx16, msahf): New options.
6149         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
6150         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
6151
6152         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
6153         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
6154         Output -mcx16 and -msahf options when corresponding bit is set.
6155
6156         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
6157         and -msahf options.
6158
6159 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
6160
6161         * configure.ac: Test for assembler tolerance to # 0 "".
6162         * configure, config.in: Rebuilt.
6163         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
6164
6165 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
6166
6167         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
6168
6169         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
6170         (handle_syscall): Handle direct system calls.
6171         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
6172
6173 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
6174
6175         * doc/invoke.texi: Fix cpp.info cross-reference.
6176         * doc/passes.texi: Fix gcc.info cross-reference.
6177
6178 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
6179
6180         PR tree-optimization/30835
6181         * lambda-code.c (can_convert_to_perfect_nest): Check whether
6182         bb_for_stmt is not NULL before accessing it.
6183
6184 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
6185
6186         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
6187         some multilibs.
6188
6189 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
6190
6191         PR 30635
6192         * doc/install.texi: Document --enable-stage1-languages
6193
6194 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
6195
6196         * tree-pass.h (pass_into_cfg_layout_mode,
6197         pass_outof_cfg_layout_mode): Declare.
6198         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
6199         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
6200         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
6201         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
6202
6203 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
6204
6205         * c-decl.c (warn_variable_length_array): New function.
6206         Refactored from grokdeclarator to handle warn_vla
6207         and handle unnamed array case.
6208         (grokdeclarator): Refactored VLA warning case.
6209         * c.opt (Wvla): New flag.
6210         * doc/invoke.texi (Wvla): New warning.
6211
6212 2007-03-12  Richard Henderson  <rth@redhat.com>
6213
6214         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
6215         (TARGET_SECTION_TYPE_FLAGS): New.
6216
6217 2007-03-12  Richard Henderson  <rth@redhat.com>
6218
6219         * config/darwin.c (machopic_reloc_rw_mask): New.
6220         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
6221         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
6222
6223 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
6224
6225         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
6226         * cppdefault.h (cpp_PREFIX): Document.
6227         (cpp_PREFIX_len): Likewise.
6228         (cpp_EXEC_PREFIX): New variable.
6229         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
6230         * c-incpath.c (add_standard_paths): Correct logic for relocating
6231         paths within prefix.
6232
6233 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
6234
6235         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
6236         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
6237         mode macro.
6238         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
6239         fix_truncdfdi_sse using SSEMODEF mode macro.
6240         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
6241         fix_truncdfsi_sse using SSEMODEF mode macro.
6242         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
6243         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
6244
6245 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
6246
6247         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
6248         elfos.h to tm_file.
6249
6250 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
6251
6252         * tree.h : Add multiple_of_p declaration.
6253         * fold-const.c (multiple_of_p): Make multiple_of_p public.
6254         * ipa-type-escape.c (results_of_malloc): Redundant.
6255         (visited_stmts): New. Visited stmt for walk_use_def_chains.
6256         (cast_type): Extended with new members.
6257         (check_cast): Returns cast_type.
6258         (cast): New structure for data of walk_use_def_chains.
6259         (is_malloc_result, is_cast_from_non_pointer_1,
6260         is_cast_from_non_pointer,
6261         is_array_access_through_pointer_and_index): New functions.
6262         (look_for_casts): Returns cast types.
6263         (check_call): Returns void.
6264         (okay_pointer_operation): Use support of pointer plus index,
6265         pointer plus constant and allow all multiplications.
6266
6267 2007-03-11  Richard Guenther  <rguenther@suse.de>
6268
6269         PR tree-optimization/31115
6270         * tree-vrp.c (extract_range_from_binary_expr): Make sure
6271         the shift count is positive and non-anti-range for RSHIFT_EXPR.
6272         A shift count of zero is not special as with *_DIV_EXPR.
6273         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
6274         direction.
6275
6276 2007-03-11  Ian Lance Taylor  <iant@google.com>
6277
6278         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
6279         the *_DIV_EXPR codes correctly with overflow infinities.
6280
6281 2007-03-11  Ira Rosen  <irar@il.ibm.com>
6282
6283         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
6284         indicate success/failure of the analysis. Add negation to subtrahend
6285         in case of subtraction. Fail if both operands contain constants.
6286         (create_data_ref): Fail if analyze_offset fails.
6287
6288 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
6289
6290         * config/i386/i386.md (frndintxf2): Rename to ...
6291         (rintxf2): ... this. Remove expander having same name.
6292         (rintsf2, rintdf2): Implement using SSEMODEF macro.
6293         (roundsf2, rounddf2): Ditto.
6294         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
6295         (lround<mode>di2, lround<mode>si2): Ditto.
6296
6297 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
6298
6299         * lower-subreg.c: Include except.h.
6300         (decompose_multiword_subregs): Verify that the only control flow
6301         insns we can split are loads to multi-words pseudos.
6302         Handle breaking such blocks after splitting, instead of calling
6303         find_many_sub_basic_blocks.
6304
6305         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
6306         on the new basic block.  Add a lengthy comment explaining why we
6307         thought this was necessary.
6308         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
6309
6310 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
6311
6312         PR c++/30924
6313         * tree.c (walk_type_fields): Recurse into the element type of
6314         ARRAY_TYPEs if there is a pointer set.
6315
6316 2007-03-10  Dirk Mueller  <dmueller@suse.de>
6317
6318         * c-common.c (warn_logical_operator): Fix condition.
6319
6320 2007-03-10  Tobias Schlüter  <tobi@gcc.gnu.org>
6321
6322         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
6323         quotation mark.
6324         * config/darwin.c (machopic_select_section): Remove superfluous
6325         argument in call to categorize_decl_for_section.  Remove unused
6326         variable shlib.
6327
6328 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
6329
6330         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
6331         defined.
6332         * configure: Regenerate.
6333
6334 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
6335
6336         PR target/31101
6337         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
6338         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
6339         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
6340         Add LABEL_NUSES to emitted label.
6341         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
6342         branch probability value to emitted jump insn.
6343         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
6344         Do not check life information and do not re-arrange input operands
6345         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
6346
6347 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
6348
6349         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
6350         the change of decode_asm_operands.
6351
6352 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
6353
6354         * mode-switching.c (create_pre_exit): Skip blockage insn.
6355
6356 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
6357
6358         * tree-pass.h (TODO_update_smt_usage): Remove.
6359         Update all users.
6360         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
6361         argument SOME.
6362         Update all users.
6363
6364 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6365
6366         * pa.c (attr_length_call): Revise condition for long pc-relative branch.
6367         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
6368         calls on the SOM target.  Don't use "LONG_PIC_PCREL" call sequence on
6369         SOM target.
6370
6371 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
6372
6373         * gcc.c: Document %{, in big comment at top.
6374         (input_suffix_matches): Remove special handling for .s and
6375         .S.
6376         (input_spec_matches): New.
6377         (handle_braces): Handle %{,.
6378         (validate_switches): ',' indicates a value which is not a switch.
6379         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
6380         to detect assembler input.
6381         * config/i386/sol2.h (CPP_SPEC): Likewise.
6382         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
6383         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
6384         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
6385         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
6386         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
6387         -m64 causes deployment target to default to 10.5.
6388         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
6389
6390 2007-03-09  Richard Henderson  <rth@redhat.com>
6391
6392         PR target/26090
6393         * target.h (targetm.asm.out.reloc_rw_mask): New.
6394         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
6395         (TARGET_ASM_OUT): Use it.
6396         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
6397         * varasm.c (categorize_decl_for_section): Remove shlib argument;
6398         use the new reloc_rw_mask target hook instead.
6399         (default_section_type_flags_1): Merge into...
6400         (default_section_type_flags): ... here.
6401         (decl_readonly_section_1): Merge into...
6402         (decl_readonly_section): ... here.
6403         (default_elf_select_section_1): Merge into...
6404         (default_elf_select_section): ... here.
6405         (default_unique_section_1): Merge into...
6406         (default_unique_section): ... here.
6407         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
6408         (default_select_rtx_section): Use it.
6409         (default_elf_select_rtx_section): Likewise.
6410         * output.h: Update to match.
6411         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
6412         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
6413         (TARGET_ASM_RELOC_RW_MASK): New.
6414         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
6415         to categorize_decl_for_section.
6416         (x86_64_elf_unique_section): Likewise.
6417         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
6418         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
6419         (TARGET_ASM_RELOC_RW_MASK): New.
6420         * config/ia64/ia64.c (ia64_rwreloc_select_section,
6421         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
6422         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
6423         (TARGET_RWRELOC): Remove.
6424         (ia64_section_type_flags): Adjust call to default_section_type_flags.
6425         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
6426         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
6427         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
6428         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
6429         (rs6000_xcoff_select_section): Use decl_readonly_section.
6430         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
6431         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
6432         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
6433         (TARGET_SECTION_TYPE_FLAGS): Remove.
6434         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
6435
6436 2007-03-09  Roger Sayle  <roger@eyesopen.com>
6437
6438         * fold-const.c (fold_comparison): Remove compile-time evaluation of
6439         complex constant equality/inequality comparisons for here.
6440         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
6441         known at compile-time or can be simplified to a scalar comparison.
6442         (fold_relational_const): Move compile-time evaluation of complex
6443         constant equality/inequality comparisons to here.
6444
6445 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
6446
6447         PR rtl-optimization/30643
6448         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
6449         dest_addr_elt.
6450         (fold_rtx): Recurse, like before 2006-11-03.
6451
6452 2007-03-09  DJ Delorie  <dj@redhat.com>
6453
6454         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
6455         m32c-pragma.o.
6456
6457 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
6458
6459         PR tree-optimization/30375
6460         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
6461         LHS of statements is not the same.
6462         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
6463
6464 2007-03-09  Chao-ying Fu  <fu@mips.com>
6465
6466         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
6467         REV 2.
6468         * doc/invoke.texi (-mdspr2): Document new option.
6469         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
6470         New unspec for DSP REV 2.
6471         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
6472         these instructions are extended in DSP REV 2.
6473         (mips-dspr2.md): Include.
6474         * config/mips/mips.opt (mdspr2): New option.
6475         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
6476         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
6477         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
6478         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
6479         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
6480         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
6481         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
6482         and 2 builtins.
6483         (bdesc_map): Add one field of unsupported_target_flags.
6484         (bdesc_arrays):  Update entries to have extra fields.  Add
6485         dsp_32only_bdesc.
6486         (mips_init_builtins): Initialize new function types.
6487         Check unsupported_target_fileds to filter out builtins.
6488         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
6489         TARGET_DSPR2.
6490         (ASM_SPEC): Pass mdspr2 to the assembler.
6491         * config/mips/mips-dspr2.md: New file.
6492
6493 2007-03-09  Sa Liu  <saliu@de.ibm.com>
6494
6495         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
6496
6497 2007-03-09  Ian Lance Taylor  <iant@google.com>
6498
6499         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
6500         argument) like -Wstrict-overflow=2.
6501         * doc/invoke.texi (Warning Options): Update documentation.
6502
6503 2007-03-09  Dirk Mueller  <dmueller@suse.de>
6504
6505         PR c++/17946
6506         * doc/invoke.texi (-Wlogical-op): Document.
6507         * common.opt (-Wlogical-op): New.
6508         * c-common.h (warn_logical_operator): Declare.
6509         * c-common.c (warn_logical_operator): Define.
6510         * c-typeck.c (parser_build_binary_op): Call
6511         warn_logical_operator.
6512
6513 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
6514
6515         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
6516         * final.c (final_scan_insn): Test for non-"" file name.
6517
6518 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
6519
6520         * doc/loop.texi: Document the Omega linear constraints solver.
6521         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
6522         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
6523         omega-hash-table-size, omega-max-keys, and
6524         omega-eliminate-redundant-constraints.
6525         * tree-pass.h (pass_check_data_deps): Declared.
6526         * omega.c: New.
6527         * omega.h: New.
6528         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
6529         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
6530         pass_check_data_deps): New.
6531         * tree-data-ref.c (init_data_ref): Remove declaration.
6532         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
6533         (analyze_array): Renamed init_array_ref, move up initializations.
6534         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
6535         Removed arguments that are set to NULL.
6536         (analyze_indirect_ref): Correct indentation, correct call to
6537         init_pointer_ref.
6538         (object_analysis): Call init_array_ref instead of analyze_array.
6539         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
6540         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
6541         of DR_ACCESS_FNS_ADDR.
6542         (init_omega_eq_with_af, omega_extract_distance_vectors,
6543         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
6544         ddr_consistent_p): New.
6545         (compute_affine_dependence): Check consistency of ddrs when
6546         flag_check_data_deps is passed.
6547         (analyze_all_data_dependences): Uncomment.
6548         (tree_check_data_deps): New.
6549         * tree-data-ref.h: Include omega.h.
6550         (DR_ACCESS_FNS_ADDR): Removed.
6551         (data_dependence_relation): Add inner_loop.
6552         (DDR_INNER_LOOP): New.
6553         * common.opt (fcheck-data-deps): New.
6554         * tree-flow.h (tree_check_data_deps): Declare.
6555         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
6556         (OBJS-common): Depend on omega.o.
6557         (omega.o): Define.
6558         * passes.c (pass_check_data_deps): Scheduled.
6559         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
6560         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
6561         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
6562         PARAM_VECT_MAX_VERSION_CHECKS,
6563         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
6564
6565 2007-03-09  Richard Guenther  <rguenther@suse.de>
6566
6567         PR tree-optimization/30904
6568         PR middle-end/31058
6569         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
6570         the same way as *_DIV_EXPR.
6571
6572 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
6573
6574         * recog.c (decode_asm_operands): No mixed declarations and code.
6575
6576 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
6577
6578         * rtl.def (ASM_INPUT): Add location.
6579         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
6580         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
6581         (decode_asm_operands): Add loc operand.
6582         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
6583         * stmt.c (expand_asm): Rename to...
6584         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
6585         gen_rtx_ASM_INPUT_loc.
6586         (expand_asm_expr): Adjust.
6587         * recog.c (decode_asm_operands): Add loc operand.
6588         (check_asm_operands, extract_insn): Adjust.
6589         * reload1.c (maybe_fix_stack_asms): Likewise.
6590         * final.c (asm_insn_count): Likewise.
6591         (final_scan_insn): Output # line before and after asm.
6592
6593 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
6594
6595         * tree-ssa-structalias.c (variable_info): Remove
6596         finished_solution.
6597         (new_var_info): Ditto.
6598         (shared_bitmap_info_t): New structure.
6599         (shared_bitmap_table): New variable.
6600         (shared_bitmap_hash): New function.
6601         (shared_bitmap_eq): Ditto
6602         (shared_bitmap_lookup): Ditto.
6603         (shared_bitmap_add): Ditto.
6604         (merge_smts_into): Change to take bitmap directly.
6605         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
6606         (init_alias_vars): Init shared bitmap hashtable.
6607         (delete_points_to_sets): Delete shared bitmap hashtable.
6608         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
6609         is_aliased removal as a change that was still necessary was
6610         deleted.
6611
6612 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
6613
6614         * config/i386/i386.h (override_options): Conditionally disable
6615         x86_sahf for 64bit targets only.
6616
6617 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6618
6619         PR C/31072
6620         * c-decl.c (merge_decls): Don't call make_var_volatile.
6621         * varasm.c (make_var_volatile): Remove.
6622         * output.h (make_var_volatile): Remove.
6623
6624 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
6625
6626         PR tree-optimization/31085
6627         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
6628
6629 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6630
6631         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
6632         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
6633         ATTR_CONST_NOTHROW_LIST.
6634
6635         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
6636         FIX_TRUNC_EXPR.
6637
6638 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
6639
6640         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
6641
6642 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
6643
6644         PR 31013
6645         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
6646         is declared.
6647         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
6648         passed, use shared libgcc.
6649
6650 2007-03-08  Roger Sayle  <roger@eyesopen.com>
6651
6652         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
6653         instead of calling build2 with a GIMPLE_MODIFY_STMT.
6654         (honor_protect_cleanup_actions, lower_try_finally_switch):
6655         Likewise.
6656         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
6657         ifc_temp_var): Likewise.
6658         * tree-inline.c (setup_one_parameter): Likewise.
6659         * tree-mudflap.c (mf_decl_cache_locals,
6660         mf_build_check_statement_for): Likewise.
6661         * tree-nested.c (init_tmp_var, save_tmp_var,
6662         finalize_nesting_tree_1): Likewise.
6663         * tree-outof-ssa.c (insert_copy_on_edge,
6664         insert_backedge_copies): Likewise.
6665         * tree-profile.c (tree_gen_edge_profiler,
6666         tree_gen_ic_profiler): Likewise.
6667         * tree-scalar-evolution.c (scev_const_prop): Likewise.
6668         * tree-sra.c (sra_build_assignment): Likewise.
6669         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
6670         * tree-ssa-math-opts.c (insert_reciprocals,
6671         execute_cse_sincos_1): Likewise.
6672         * tree-tailcall.c (adjust_accumulator_values,
6673         adjust_return_value): Likewise.
6674         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
6675         * tree-vect-transform.c (vect_create_data_ref_ptr,
6676         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
6677         vect_create_epilog_for_reduction, vectorizable_reduction,
6678         vectorizable_call, vectorizable_conversion,
6679         vectorizable_assignment, vectorizable_operation,
6680         vectorizable_type_demotion, vect_gen_widened_results_half,
6681         vect_permute_store_chain, vectorizable_store,
6682         vect_setup_realignment, vect_permute_load_chain,
6683         vectorizable_load, vectorizable_condition,
6684         vect_create_cond_for_align_checks): Likewise.
6685         * tree-vrp.c (build_assert_expr_for): Likewise.
6686
6687 2007-03-08  Ian Lance Taylor  <iant@google.com>
6688
6689         * tree-vrp.c: Include "intl.h".
6690         (usable_range_p): New static function.
6691         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
6692         overflowed values, juts set *strict_overflow_p.
6693         (compare_values): Only return -2 if one of the operands is not a
6694         constant.
6695         (compare_ranges): Call usable_range_p.
6696         (compare_range_with_value): Likewise.
6697         (vrp_evaluate_conditional_warnv): Rename from
6698         vrp_evaluate_conditional.  Make static.  Change all callers.
6699         (vrp_evaluate_conditional): New function.
6700         (simplify_div_or_mod_using_ranges): Issue warning about reliance
6701         on signed overflow.
6702         (simplify_abs_using_ranges): Likewise.
6703         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
6704         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
6705         within_stmt parameter.
6706         * tree-ssa-propagate.c (fold_predicate_in): Update call to
6707         vrp_evaluate_conditional.
6708         * tree-ssa-threadedge.c
6709         (record_temporary_equivalences_from_stmts_at_dest): Change
6710         simplify parameter to take a second tree parameter.
6711         (simplify_control_stmt_condition): Likewise.
6712         (thread_across_edge): Likewise.
6713         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
6714         (thread_across_edge): Likewise.
6715         * Makefile.in (tree-vrp.o): Depend upon intl.h.
6716
6717 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
6718
6719         * config/i386/i386.h (TARGET_SAHF): New define.
6720         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
6721         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
6722         (x86_sahf): New global variable.
6723         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
6724         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
6725         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
6726         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
6727         for 64-bit.
6728         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
6729         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
6730         when expanding fcomi/sahf based tests.
6731         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
6732         expanding sahf based alternative. Emit sahf based sequence when
6733         optimizing for code size.
6734         * config/i386/i386.md (x86_sahf_1): Do not disable for
6735         TARGET_64BIT, enable for TARGET_SAHF.
6736
6737 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
6738
6739         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
6740         spurious whitespace from error message.
6741
6742 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
6743
6744         PR c++/30852
6745         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
6746
6747 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
6748
6749         * c-decl.c (grokdeclarator): Disable warnings for anonymous
6750         bitfields.
6751         * tree-sra.c (instantiate_element): Propagate disabled warnings
6752         from the element itself to the created variable.
6753
6754 2007-03-07  Richard Henderson  <rth@redhat.com>
6755
6756         PR target/30848
6757         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
6758         silently fix up the stack in the case of a missing register.
6759
6760 2007-03-07  Paul Brook  <paul@codesourcery.com>
6761
6762         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
6763
6764 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
6765
6766         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
6767         New.
6768         (phase1_vrs): Use them.
6769         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
6770         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
6771         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
6772         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
6773         __gnu_Unwind_Restore_WMMXC if required.
6774         (_Unwind_VRS_Pop): Implement iWMMXt support.
6775         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
6776         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
6777         gnu_Unwind_Save_WMMXC): Define.
6778
6779 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
6780
6781         * config/vxworks.h (vxworks_override_options): Declare.
6782         (VXWORKS_OVERRIDE_OPTIONS): Use it.
6783         * config/vxworks.c: Include target.h and toplev.h.
6784         (vxworks_override_options): New function.
6785         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
6786
6787 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
6788
6789         * config/s390/s390.c (override_options): Don't emit an error when
6790         -mstack-size is used without providing -mstack-guard.
6791         (s390_emit_prologue): Choose stack_guard value automatically if not
6792         provided via command line.
6793         * doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.
6794
6795 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
6796
6797         * config/i386/i386.c (output_set_got): Add a GOT initialization
6798         sequence for VxWorks PIC.
6799         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
6800         around labels as well as symbols.  Use gotoff_operand instead
6801         of local_symbolic_operand.
6802         (legitimize_pic_address): Use gotoff_operand instead of
6803         local_symbolic_operand.  Use @GOT accesses for labels as
6804         well as symbols.
6805         (ix86_output_addr_diff_elt): Use PC-relative rather than
6806         GP-relative offsets for VxWorks PIC.
6807         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
6808         no_new_pseudos.  Check whether the returned register is op0.
6809         * config/i386/i386.md (tablejump): Use PC-relative rather than
6810         GP-relative offsets for VxWorks PIC.
6811         * config/i386/predicates.md (gotoff_operand): New predicate.
6812
6813 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
6814
6815         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
6816         before defining.
6817         * config/vxworks-dummy.h: New file.
6818         * config/i386/i386.h: Include it.
6819
6820 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
6821
6822         * dwarf2out.c (is_inlined_entry_point): New
6823         (add_high_low_attributes): Emit DW_AT_entry_pc along with
6824         DW_AT_ranges if the first subblock is the entry point.
6825
6826 2007-03-06  David Daney  <ddaney@avtrex.com>
6827
6828         * doc/install.texi (mips-*-*): Change recommended binutils
6829         version.
6830
6831 2007-03-06  Anatoly Sokolov <aesok@post.ru>
6832
6833         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
6834         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
6835         devices.
6836         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
6837         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
6838
6839 2007-03-06  Jan Hubicka  <jh@suse.cz>
6840
6841         * errors.h (warning, error, fatal, internal_error): Mark as cold.
6842         * predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
6843         are hot.
6844         (probably_cold_bb_p): Cold functions are cold.
6845         (probably_never_executed_bb_p): Cold functions are cold.
6846         (tree_bb_level_predictions): Predict calls to cold functions as not
6847         taken.
6848         (compute_function_frequency): Check hot/cold attributes.
6849         * function.h (function_frequency): Update comments.
6850         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
6851         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
6852         (c_common_att): Add cold and hot.
6853
6854         * doc/extend.texi (hot,cold attributes): Document.
6855
6856 2007-03-06  Andrew Haley  <aph@redhat.com>
6857
6858         * function.c (expand_function_end): Move blockage to just after we
6859         emit the label for the naked return from the function.
6860
6861 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
6862
6863         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
6864         before redefining.
6865
6866 2007-03-06  Jan Hubicka  <jh@suse.cz>
6867
6868         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
6869         loaded for constant large models.  Non-large 64bit PIC can do.
6870         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
6871         * cmodel.h: Add LARGE PIC.
6872         * i386.md (UNSPEC_PLTOFF): New.
6873         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
6874         needed.
6875         (*call_1_rex64): Disable for large models.
6876         (*call_1_rex64_large): New.
6877         (*call_value_1_rex64): Disable for large models.
6878         (*call_value_1_rex64_large): New.
6879         (set_rip_rex4): New.
6880         (set_got_offset_rex64): New.
6881         * predicates.md (constant_call_address_operand): For large model
6882         constant calls are not possible.
6883         * i386-protos.h (construct_plt_address): Declare.
6884         * i386.c (override_options): Accept large models.
6885         (ix86_expand_prologue): Expand large PIC GOT pointer load.
6886         (legitimate_constant_p): Add new UNSPECs.
6887         (legitimate_pic_operand_p): Likewise.
6888         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
6889         (legitimize_pic_address): Do easy RIP relative way for TLS only for
6890         non-large model.
6891         (output_pic_addr_const): Add PLTOFF.
6892         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
6893         (ix86_expand_move): Legitimize pic address when in PIC mode.
6894         (construct_plt_address): New function.
6895         (ix86_expand_call): Offload the address to register and use GOT pointer
6896         for large model.
6897         * invoke.texi (mcmodel=large): Update documentation.
6898
6899 2007-03-06  Richard Henderson  <rth@redhat.com>
6900
6901         * config/i386/i386.c (x86_use_leave, x86_push_memory,
6902         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
6903         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
6904         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
6905         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
6906         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
6907         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
6908         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
6909         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
6910         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
6911         x86_partial_reg_dependency, x86_memory_mismatch_stall,
6912         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
6913         x86_sse_partial_reg_dependency, x86_sse_split_regs,
6914         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
6915         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
6916         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
6917         x86_schedule, x86_use_bt, x86_pad_returns,
6918         x86_use_xchgb): Merge into ...
6919         (ix86_tune_features): ... here.  New array.
6920         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
6921         x86_bswap): Merge into ...
6922         (ix86_arch_features): ... here.  New array.
6923         (x86_3dnow_a): Remove.
6924         (x86_accumulate_outgoing_args): Make static.
6925         (x86_arch_always_fancy_math_387): Make static.
6926         (ix86_tune_mask, ix86_arch_mask): Move ...
6927         (override_options): ... to local variables here.  Apply the
6928         appropriate mask to each element of ix86_arch_features and
6929         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
6930         as were done in the old macros.
6931         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
6932         * config/i386/i386.h (x86_use_leave, x86_push_memory,
6933         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
6934         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
6935         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
6936         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
6937         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
6938         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
6939         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
6940         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
6941         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
6942         x86_partial_reg_dependency, x86_memory_mismatch_stall,
6943         x86_accumulate_outgoing_args, x86_prologue_using_move,
6944         x86_epilogue_using_move, x86_decompose_lea,
6945         x86_arch_always_fancy_math_387, x86_shift1,
6946         x86_sse_partial_reg_dependency, x86_sse_split_regs,
6947         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
6948         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
6949         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
6950         x86_use_incdec, x86_pad_returns, x86_bswap,
6951         x86_partial_flag_reg_stall): Remove.
6952         (enum ix86_tune_indices): New.
6953         (ix86_tune_features): New.
6954         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
6955         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
6956         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
6957         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
6958         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
6959         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
6960         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
6961         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
6962         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
6963         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
6964         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
6965         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
6966         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
6967         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
6968         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
6969         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
6970         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
6971         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
6972         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
6973         TARGET_EXT_80387_CONSTANTS): Use it.
6974         (enum ix86_arch_indices): New.
6975         (ix86_arch_features): New.
6976         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
6977         TARGET_BSWAP): Use it.
6978         (ix86_tune_mask, ix86_arch_mask): Remove.
6979
6980 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
6981
6982         PR bootstrap/31020
6983         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
6984         Define using $${sysroot_headers_suffix}.
6985         * configure: Regenerate.
6986         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
6987         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
6988         defined.
6989         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
6990         * gcc.c (print_sysroot_headers_suffix): New.
6991         (option_map): Include --print-sysroot-headers-suffix.
6992         (display_help): Mention -print-sysroot-headers-suffix.
6993         (process_command): Handle -print-sysroot-headers-suffix.
6994         (do_spec_1): Append multilib directory to include-fixed path if
6995         sysroot suffixes in use.
6996         (main): Handle -print-sysroot-headers-suffix.
6997         * Makefile.in (start.encap): Don't depend on xlimits.h
6998         (xlimits.h): Remove.
6999         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
7000         limits.h for each multilib in fixinc_list.
7001         (fixinc_list, s-fixinc_list): New.
7002         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
7003         generate them for each multilib in fixinc_list.
7004         (stmp-fixproto): Use include-fixed.  Run fixproto for each
7005         multilib in fixinc_list.
7006         (mostlyclean): Don't remove xlimits.h.
7007         (clean): Remove include-fixed.
7008         (real-install-headers-tar, real-install-headers-cpio,
7009         real-install-headers-cp): Don't copy include, only include-fixed.
7010         (install-mkheaders): Depend on fixinc_list.  Don't depend on
7011         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
7012         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
7013         SYSTEM_HEADER_DIR setting in mkheaders.conf.
7014
7015 2007-03-06  Jan Hubicka  <jh@suse.cz>
7016
7017         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
7018         NANs easilly.
7019
7020 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
7021
7022         * configure.ac: Allow tm_file to contain build-directory files.
7023         * configure: Regenerate.
7024         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
7025         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
7026         * config/m68k/print-sysroot-suffix.sh: New file.
7027
7028 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
7029
7030         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
7031         of pic_offset_table_rtx if reload_completed.
7032         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
7033         PIC_OFFSET_TABLE_REGNUM.
7034         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
7035         return true.
7036         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
7037         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
7038
7039 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
7040
7041         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
7042         functions that call eh_return.
7043
7044 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
7045
7046         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
7047         functions that need a constant pool.
7048
7049 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
7050
7051         PR target/28181
7052         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
7053         (m68k_preferred_reload_class): Likewise.
7054         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
7055         (SECONDARY_RELOAD_CLASS): Define.
7056         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
7057         (LIMIT_RELOAD_CLASS): Delete.
7058         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
7059         registers from storing bytes.
7060         (m68k_secondary_reload_class): New function.
7061         (m68k_preferred_reload_class): Likewise.
7062
7063 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
7064
7065         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
7066         leaf functions.
7067         (m68k_expand_prologue): Likewise.
7068
7069 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
7070
7071         * config/m68k/m68k-protos.h (output_sibcall): Declare.
7072         (mips_expand_epilogue): Add a bool parameter.
7073         (m68k_legitimize_sibcall_address): Declare.
7074         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
7075         (m68k_expand_epilogue): Add a parameter to select between sibling
7076         and normal epilogues.  Only generate a return for the latter.
7077         (m68k_ok_for_sibcall_p): New function.
7078         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
7079         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
7080         (sibcall_value, *sibcall_value): Likewise.
7081         (*call, *call_value): Require !SIBLING_CALL_P.
7082         (epilogue): Update call to m68k_expand_epilogue.
7083         (sibcall_epilogue): New pattern.
7084         * config/m68k/predicates.md (const_call_operand): Say that this
7085         predicate applies to sibling calls too.
7086         (sibcall_operand): New predicate.
7087
7088 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
7089
7090         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
7091         alternatives as movsi_cf.
7092         (movsf_cf_hard): Add commentary.
7093
7094 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
7095             Richard Sandiford  <richard@codesourcery.com>
7096
7097         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
7098         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
7099         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
7100         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
7101         as being live on exit from an interrupt function.
7102         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
7103         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
7104         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
7105         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
7106         (m68k_interrupt_function_p): Globalize.
7107         (m68k_compute_frame_layout): Remove reverse mask code.
7108         (m68k_emit_movem, m68k_set_frame_related): New functions.
7109         (m68k_output_function_prologue): Delete in favor of...
7110         (m68k_expand_prologue): ...this new function.
7111         (m68k_output_function_epilogue): Delete in favor of...
7112         (m68k_expand_epilogue): ...this new function.
7113         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
7114         functions.
7115         (print_operand): Handle %?.
7116         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
7117         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
7118         (prologue, epilogue): New patterns.
7119         (return): Turn into a define_expand.
7120         (*return): New pattern, derived from old "return" pattern.  Use rte
7121         rather than rts for interrupt functions.  Only use rtd if the pop
7122         count is nonzero.
7123         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
7124         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
7125         (link, *link, unlink, *unlink, load_got): Likewise.
7126
7127 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
7128
7129         PR target/23482
7130         PR target/17114
7131         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
7132         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
7133         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
7134         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
7135         and m68k_matches_u_p.
7136         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
7137         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
7138         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
7139         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
7140         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
7141         (REG_STRICT_P): New macro.
7142         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
7143         PCREL_GENERAL_OPERAND_OK.
7144         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
7145         m68k_legitimate_base_reg_p.
7146         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
7147         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
7148         (PIC_CASE_VECTOR_ADDRESS): Update comment.
7149         * config/m68k/m68k.c (m68k_address): New structure.
7150         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
7151         (m68k_decompose_index, m68k_legitimate_constant_address_p)
7152         (m68k_jump_table_ref_p, m68k_decompose_address)
7153         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
7154         (m68k_matches_u_p): New functions.
7155         (print_operand_address): Rewrite to use m68k_decompose_index.
7156
7157 2007-03-05  David Taylor  <dtaylor@emc.com>
7158
7159         * gcc.c: Correct copyright date in --version output.
7160
7161 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7162
7163         * pa.md: In unamed move patterns, disparge copies between general
7164         and floating point registers using '?' modifier.  Don't include 'f'
7165         constraint for register preferences in DImode, SImode, HImode and
7166         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
7167         Remove constraints for copies between general and floating registers
7168         in soft-float DFmode pattern.
7169         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
7170         floating register.
7171         (movsf): Likewise.
7172
7173 2007-03-05  Mike Stump  <mrs@apple.com>
7174
7175         * c-common.c (targetcm): Add.
7176         * c-opts.c (c_common_handle_option): Handle language specific
7177         target options.
7178         * opts.c (handle_option): Verify language for target options, if
7179         any are given.
7180         * opth-gen.awk: Add CL_LANG_ALL.
7181         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
7182         (TARGETCM_INITIALIZER): Add.
7183         * target.h (struct gcc_targetcm): Add.
7184         (targetcm): Add.
7185         * targhooks.c (default_handle_c_option): Add.
7186         * targhooks.h (default_handle_c_option): Add.
7187         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
7188
7189         * config/darwin.opt (iframework): Add.
7190         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
7191         * config/darwin-c.c (handle_c_option): Add.
7192         (TARGET_HANDLE_C_OPTION): Add.
7193         (targetcm): Add.
7194         * doc/invoke.texi (Darwin Options): Add -iframework.
7195
7196 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7197
7198         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
7199         conversion.
7200
7201 2007-03-05  Ian Lance Taylor  <iant@google.com>
7202
7203         * c.opt (fgnu89-inline): New option.
7204         * c-opts.c (c_common_post_options): Set default value for
7205         flag_gnu89_inline.
7206         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
7207         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
7208         inline functions.
7209         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
7210         (grokdeclarator, start_function): Likewise.
7211         * c-cppbuiltin.c (c_cpp_builtins): Define either
7212         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
7213         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
7214         (C Dialect Options): Document -fgnu89-inline.
7215         * doc/extend.texi (Function Attributes): Explain what the
7216         gnu_inline attribute does.
7217         * doc/cpp.texi (Common Predefined Macros): Document
7218         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
7219
7220 2007-03-05  Ian Lance Taylor  <iant@google.com>
7221
7222         PR tree-optimization/31034
7223         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
7224         half-range if the other side is an overflow infinity.
7225
7226 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
7227
7228         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
7229         (bfin*-linux-uclibc*): New configuration.
7230         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
7231         defining.
7232         * config/bfin/linux.h: New file.
7233         * config/bfin/libgcc-bfin.ver: New file.
7234         * config/bfin/t-bfin-uclinux: New file.
7235         * config/bfin/t-bfin-linux: New file.
7236         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
7237         (TARGET_OS_CPP_BUILTINS): New macro.
7238
7239 2007-03-05  Richard Guenther  <rguenther@suse.de>
7240
7241         * fold-const.c (fold_binary): Remove duplicate folding
7242         of comparison of non-null ADDR_EXPR against null.
7243
7244 2007-03-05  Richard Guenther  <rguenther@suse.de>
7245             Dorit Nuzman  <dorit@il.ibm.com>
7246
7247         PR tree-optimization/26420
7248         * tree-vectorizer.c (vectorize_loops): Bail out early if there
7249         are no loops in the function.  Only print the number of
7250         vectorized loops if it is greater than zero or we are supposed
7251         to print information about unvectorized loops.
7252
7253 2007-03-05  Revital Eres  <eres@il.ibm.com>
7254
7255         * gcc.dg/var-expand1.c: New test.
7256         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
7257         when an accumulator is expanded.
7258
7259 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7260
7261         PR other/30465
7262         * c-common.c (convert_and_check): Don't give warnings for
7263         conversion if 'expr' already overflowed.
7264
7265 2007-03-04  Roger Sayle  <roger@eyesopen.com>
7266
7267         PR middle-end/30744
7268         * fold-const.c (fold_comparison): Enforce type consistency when
7269         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
7270
7271 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
7272
7273         * tree-ssa-address.c (create_mem_ref): Do not put an expression
7274         containing a cast to the base of TARGET_MEM_REF.
7275
7276 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
7277
7278         * tree.c (tree_contains_struct_check_failed): Remove spurious
7279         whitespace from error message.
7280
7281 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
7282
7283         PR target/30406
7284         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
7285         instead of precision.
7286
7287 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
7288             Nathan Sidwell  <nathan@codesourcery.com>
7289
7290         * emit-rtl.c (find_auto_inc): New.
7291         (try_split): recreate REG_INC notes,
7292         Use regular for loops rather than whiles.
7293
7294 2007-03-03  Andreas Schwab  <schwab@suse.de>
7295
7296         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
7297         * configure: Regenerate.
7298
7299 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7300
7301         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
7302         flag_rounding_math, not flag_unsafe_math_optimizations.
7303
7304         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
7305         fold_build2.
7306         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
7307         alpha_fold_vector_minmax): Likewise.
7308         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
7309         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
7310
7311 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
7312
7313         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
7314         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
7315         if the lhs has side-effects.
7316         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
7317
7318 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
7319
7320         * config/i386/i386.h (TUNEMASK): Remove define.
7321         (ARCHMASK): Remove define.
7322         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
7323          Use ix86_arch_mask variable instead of ARCHMASK.
7324         * config/i386/i386.c (override_options): Ditto.
7325         (standard_80387_constant_p): Ditto.
7326
7327 2007-03-02  Ian Lance Taylor  <iant@google.com>
7328
7329         Used signed infinities in VRP.
7330         * tree-vrp.c (uses_overflow_infinity): New static function.
7331         (supports_overflow_infinity): New static function.
7332         (make_overflow_infinity): New static function.
7333         (negative_overflow_infinity): New static function.
7334         (positive_overflow_infinity): New static function.
7335         (is_negative_overflow_infinity): New static function.
7336         (is_positive_overflow_infinity): New static function.
7337         (is_overflow_infinity): New static function.
7338         (overflow_infinity_range_p): New static function.
7339         (compare_values_warnv): New function split out of compare_values.
7340         (compare_value): Call it.
7341         (set_value_range_to_nonnegative): Add overflow_infinity
7342         parameter.  Change caller.
7343         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
7344         Change callers.
7345         (vrp_expr_computes_nonzero): Likewise.
7346         (compare_ranges, compare_range_with_value): Likewise.
7347         (compare_name_with_value, compare_names): Likewise.
7348         (vrp_evaluate_conditional): Likewise.
7349         (set_value_range): Handle infinity
7350         (vrp_operand_equal_p, operand_less_p): Likewise.
7351         (extract_range_from_assert): Likewise.
7352         (vrp_int_const_binop): Likewise.
7353         (extract_range_from_binary_expr): Likewise.
7354         (extract_range_from_unary_expr): Likewise.
7355         (extract_range_from_comparison): Likewise.
7356         (extract_range_from_expr): Likewise.
7357         (dump_value_range): Likewise.
7358         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
7359         (test_for_singularity): Likewise.
7360         (vrp_int_const_binop): Remove inline qualifier.
7361         (adjust_range_with_scev): Add comment.
7362         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
7363
7364 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
7365
7366         * tree-ssa-structalias.c (could_have_pointers): Tidy.
7367         (get_constraint_for): Likewise.
7368         (do_structure_copy): Likewise.
7369         (find_func_aliases): Fix references to MODIFY_EXPR.
7370         (intra_create_variable_infos): Tidy.
7371         * tree-ssa-operands.c (add_virtual_operand): Add argument
7372         IS_CALL_SITE.
7373         When adding members of alias sets, if IS_CALL_SITE is true and
7374         the symbol is not call-clobbered, skip it.
7375         Adjust all callers.
7376
7377 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
7378
7379         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
7380         entry by means of emit_insn_at_entry.
7381
7382 2007-03-02  Richard Henderson  <rth@redhat.com>
7383
7384         * expr.h (promoted_input_arg): Remove decl.
7385         * function.c (promoted_input_arg): Merge into ...
7386         * combine.c (setup_incoming_promotions): ... only caller.
7387         Rearrange to avoid double loop.
7388
7389 2007-03-02  Ben Elliston  <bje@au.ibm.com>
7390             Peter Bergner  <bergner@vnet.ibm.com>
7391             Janis Johnson  <janis187@us.ibm.com>
7392
7393         * config/rs6000/dfp.md: New file.
7394         * config/rs6000/rs6000.md: Include dfp.md.
7395         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
7396         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
7397         and TDmode decimal float modes in FP registers.
7398         (num_insns_constant): Likewise.
7399         (rs6000_legitimate_offset_address_p): Likewise.
7400         (rs6000_legitimize_address): Likewise.
7401         (rs6000_legitimize_reload_address): Likewise.
7402         (rs6000_legitimate_address): Likewise.
7403         (rs6000_emit_move): Likewise.
7404         (function_arg_boundary): Likewise.
7405         (function_arg_advance): Likewise.
7406         (rs6000_darwin64_record_arg_recurse): Likewise.
7407         (function_arg): Likewise.
7408         (rs6000_gimplify_va_arg): Likewise.
7409         (rs6000_split_multireg_move): Likewise.
7410         (rs6000_output_function_epilogue): Likewise.
7411         (rs6000_output_function_epilogue): Likewise.
7412         (rs6000_register_move_cost): Likewise.
7413         (rs6000_function_value): Likewise.
7414         (rs6000_libcall_value): Likewise.
7415
7416 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
7417
7418         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
7419
7420 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
7421
7422         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
7423         Use $MULTIDIR to choose between the kernel and RTP headers,
7424         and use $WIND_BASE and $WIND_USR to locate them.
7425
7426 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
7427
7428         * config/i386/i386.c (override_options): Put initialization of
7429         ix86_tune_mask and ix86_arch_mask to the correct place.
7430
7431 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
7432             Michael Meissner  <michael.meissner@amd.com>
7433
7434         PR target/31019
7435         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
7436         (ARCHMASK): Define.
7437         (TARGET_CMOVE): Use ARCHMASK.
7438         (TARGET_CMPXCHG): Ditto.
7439         (TARGET_CMPXCHG8B): Ditto.
7440         (TARGET_XADD): Ditto.
7441         (TARGET_BSWAP): Ditto.
7442         * config/i386/i386.c (ix86_tune_mask): New global variable.
7443         (ix86_arch_mask): Ditto.
7444         (override_options): Initialize ix86_tune_mask and
7445         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
7446         target_flags.
7447
7448 2007-03-02  Ben Elliston  <bje@au.ibm.com>
7449
7450         PR 30992
7451         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
7452
7453 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
7454
7455         * target.h (init_dwarf_reg_sizes_extra): New target hook.
7456         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
7457         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
7458         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
7459         hook.
7460         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
7461         rs6000_init_dwarf_reg_sizes_extra): New.
7462         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
7463         SPE register high parts.
7464
7465 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
7466
7467         * Makefile.in: Add install-pdf target as
7468         copied from automake v1.10 rules.
7469         * configure.ac: Add install-pdf to target list.
7470         * configure: Regenerate.
7471
7472 2007-03-01  Paul Brook  <paul@codesourcery.com>
7473
7474         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
7475         modes to LDRD for DImode.
7476         (output_move_double): Fixup out of range ldrd/strd.
7477         (vfp_secondary_reload_class): Rename...
7478         (coproc_secondary_reload_class): ... to this.  Add wb argument.
7479         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
7480         coproc_secondary_reload_class for CLASS_IWMMXT.
7481         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
7482         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
7483
7484 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
7485
7486         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the unroll
7487         factor by the estimated number of iterations.
7488         (loop_prefetch_arrays): Do not prefetch in loops that iterate less than
7489         prefetch latency.
7490
7491         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
7492         decode_caches_intel, detect_caches_intel): New functions.
7493         (host_detect_local_cpu): Use detect_caches_amd and
7494         detect_caches_intel.
7495
7496 2007-03-01  Richard Henderson  <rth@redhat.com>
7497
7498         * expr.c (emit_move_complex_push): Export.
7499         (emit_move_complex_parts): Split out from ...
7500         (emit_move_complex): ... here.
7501         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
7502         * config/i386/i386.md (movcdi): New.
7503
7504 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
7505
7506         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
7507         size of mode1 to check for tieable modes in MMX case.
7508
7509 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
7510
7511         * Makefile.in (rtlanal.o): Depend on tree.h.
7512         * rtl.h (offset_within_section_p, split_const): Declare.
7513         * rtlanal.c: Include tree.h.
7514         (offset_within_block_p): New function, taken from
7515         mips_offset_within_object_p.
7516         (split_const): New function, taken from mips_split_const.
7517         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
7518         Declare.
7519         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
7520         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
7521         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
7522         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
7523         (m68k_illegitimate_symbolic_constant_p): New function.
7524         * config/m68k/m68k.md (movsi): Remove misleading predicates.
7525         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
7526         symbolic constant that might be outside the symbol's section,
7527         move the symbol first and then add the offset.
7528         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
7529         Override.
7530         * config/mips/mips.c (mips_split_const): Delete.
7531         (mips_offset_within_object_p): Delete.
7532         (mips_symbolic_constant_p): Use offset_within_section_p and
7533         split_const instead of mips_offset_within_object_p and
7534         mips_split_const.
7535         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
7536         (mips_legitimize_const_move, print_operand_reloc)
7537         (mips_dangerous_for_la25_p): Use split_const instead of
7538         mips_split_const.
7539
7540 2007-02-28  Eric Christopher  <echristo@apple.com>
7541
7542         * Makefile.in (install-include-dir): Don't rm -rf include.
7543
7544 2007-02-28  Richard Guenther  <rguenther@suse.de>
7545
7546         PR middle-end/30364
7547         * fold-const.c (fold_binary): Do not associate expressions
7548         with more than one variable for integer types that do not wrap.
7549
7550 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
7551
7552         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
7553         Delete, and replace with...
7554         (fold_builtin_call_array): This.  Update callers to use it.
7555         * fold-const.c (fold_build_call_list): Delete, and replace with...
7556         (fold_build_call_array): This.
7557         (fold_build_call_list_initializer): Delete, and replace with...
7558         (fold_build_call_array_initializer): This.
7559         * tree.h: Update declarations to reflect above changes.
7560
7561         * c-typeck.c (build_function_call): Store converted arguments
7562         in a stack-allocated array instead of building a list.
7563         (convert_arguments): Store arguments in the array passed in as an
7564         argument, and return the actual number of arguments.
7565         * c-format.c: (check_function_format): Pass arguments in an
7566         array instead of a list.
7567         * c-common.c (check_function_nonnull): Likewise.
7568         (check_function_sentinel): Likewise.
7569         (check_function_arguments): Likewise.
7570         * c-common.h: Update declarations to reflect above changes.
7571
7572 2007-02-28  Jan Hubicka  <jh@suse.cz>
7573
7574         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
7575         PRED_NEGATIVE_RETURN): Update outcomes.
7576
7577 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
7578
7579         * calls.c (emit_library_call_value_1): Handle partial registers
7580         correctly when building up CALL_INSN_FUNCTION_USAGE.
7581
7582 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7583
7584         * pa/predicates.md (move_src_operand): Allow zero for mode.
7585         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
7586         move pattern.
7587
7588 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
7589
7590         PR target/30970
7591         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
7592         *movv2df_internal): Enable pattern only for valid operand
7593         combinations.
7594         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
7595         tie only 128bit modes. For MMX registers, tie only 64bit modes.
7596
7597 2007-02-27  Mike Stump  <mrs@apple.com>
7598
7599         * config/darwin-crt3.c: Avoid compilation when compiling for a
7600         kext multilib.
7601
7602 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
7603
7604         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
7605         FIXED_INCLUDE_DIR.
7606         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
7607         for fixed headers and limits.h.
7608         (install-include-dir, install-headers-tar, install-headers-cpio,
7609         install-headers-cp, real-install-headers-tar,
7610         real-install-headers-cpio, real-install-headers-cp): Handle
7611         include-fixed as well as include.
7612         (install-mkheaders): Don't install files that go only in include
7613         not include-fixed.
7614         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
7615         from GCC_INCLUDE_DIR.
7616         * gcc.c (process_command): Remove special -BstageN/ handling.
7617         (do_spec_1): Add include-fixed directories.
7618
7619 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
7620
7621         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
7622         _smulsi3_highpart.
7623         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
7624         New functions.
7625         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
7626         patterns.
7627
7628 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
7629
7630         * c-common.c (get_priority): Add check for
7631         SUPPORTS_INIT_PRIORITY.
7632
7633 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
7634
7635         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
7636
7637         * config/bfin/bfin.c: Include "cfglayout.h".
7638         (MAX_LSETUP_DISTANCE): New macro.
7639         (struct loop_info): New members incoming, incoming_src and
7640         incoming_dest.  Delete member predecessor.
7641         (length_for_loop): New function.
7642         (bfin_optimize_loop): Handle more different loop structures.
7643         (bfin_discover_loop): Rework detection of predecessor blocks by
7644         examining incoming edges.
7645         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
7646         bfin_reorg_loops.
7647         (bfin_reorder_loops): New function.
7648         (bfin_reorg_loops): Use these three new functions.
7649
7650         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
7651         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
7652         (CONSTRAINT_LEN): Add entry for 'q'.
7653         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
7654         Add 'q' constraints.
7655         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
7656         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
7657
7658         * config/bfin/bfin.md (add_with_carry): New pattern.
7659         (s_or_u, su_optab, su_modifier): New code macros/attrs.
7660         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
7661         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
7662         support unsigned multiplies too.  Removed incorrect commutativity from
7663         operand 1 constraint where appropriate.
7664         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
7665         patterns.
7666         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
7667         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
7668         New patterns.
7669         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
7670         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
7671         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
7672         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
7673         usmulhisi_hh_huh): New patterns.
7674
7675         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
7676         lshifthi3): Fix output template to use half reg for operand 2.
7677
7678         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
7679         instead of R2.
7680
7681         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
7682
7683 2007-02-27  Andreas Schwab  <schwab@suse.de>
7684
7685         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
7686
7687 2007-02-27  Jan Hubicka  <jh@suse.cz>
7688
7689         * predict.c (last_basic_block_p): Remove.
7690         (tree_estimate_probability): Update return heuristic for commonized
7691         return blocks.
7692
7693 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
7694
7695         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
7696
7697 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
7698
7699         * doc/include/gcc-common.texi (versionsubtitle): New macro.
7700         * doc/cpp.texi: Standardize title page.
7701         * doc/cppinternals.texi: Likewise.
7702         * doc/gcc.texi: Standardize title page, remove version number
7703         from copyright page.
7704         * doc/gccint.texi: Likewise.
7705         * doc/install.texi: Standardize title page, add table of
7706         contents.
7707
7708 2007-02-26  Jan Hubicka  <jh@suse.cz>
7709
7710         * predict.def: Set outcomes according to more recent results.
7711         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
7712         Remove dead predictors.
7713         * predict.c (return_prediction): Fix pasto.
7714
7715 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
7716
7717         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
7718         change; avoid a memory leak when returning early.
7719
7720 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
7721
7722         * c-decl.c (static_ctors): Move to c-common.c.
7723         (static_dtors): Likewise.
7724         (finish_function): Use c_record_cdtor_fn.
7725         (build_cdtor): Move to c-common.c.
7726         (c_write_global_declarations): Use c_build_cdtor_fns.
7727         * c-common.h (static_ctors): Declare.
7728         (static_dtors): Likewise.
7729         (c_record_cdtor_fn): Likewise.
7730         (c_build_cdtor_fns): Likewise.
7731         * c-common.c (static_ctors): New variable.
7732         (static_dtors): Likewise.
7733         (c_record_cdtor_fn): New function.
7734         (build_cdtor): Move from c-decl.c
7735         (c_build_cdtor_fns): New function.
7736
7737         * output.h (assemble_addr_to_section): Declare.
7738         (get_cdtor_priority_section): Likewise.
7739         * varasm.c (assemble_addr_to_section): New function.
7740         (get_cdtor_priority_section): Likewise.
7741         (default_named_section_asm_out_destructor): Use them.
7742         (destor_dtor_section_asm_out_destructor): Likewise.
7743         (default_named_section_asm_out_constructor): Likewise.
7744         (default_ctor_section_asm_out_constructor): Likewise.
7745         * config.gcc (*-*-vxworks*): Include vxworks.o.
7746         * config/t-vxworks (vxworks.o): New target.
7747         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
7748         (TARGET_ASM_CONSTRUCTOR): Define.
7749         (TARGET_ASM_DESTRUCTOR): Likewise.
7750         (vxworks_asm_out_constructor): Declare.
7751         (vxworks_asm_out_destructor): Likewise.
7752
7753         * c-common.c (get_priority): Check that we have not just an
7754         INTEGER_CST, but an integer constant with integeral type.
7755
7756 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
7757
7758         PR tree-optimization/30938
7759         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
7760         use &dt[nargs-1] instead of &dt[nargs] in the call to
7761         vect_is_simple_use().
7762
7763 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
7764
7765         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
7766         from register elimination as PRE_MODIFY / POST_MODIFY increments.
7767         Do not attempt to handle MEM inside auto-inc expressions.
7768         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
7769         of a register modified by an auto-inc expression.  However, do handle
7770         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
7771         (elimination_effects): Prohibit elimination of a register modified
7772         by an auto-inc expression.  Disable register elimination rules whose
7773         target register is modified by an auto-inc expression with variable
7774         increment.
7775
7776 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
7777
7778         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
7779         off-by-one error.
7780         (array_at_struct_end_p): New function.
7781         (idx_infer_loop_bounds): Use it.
7782         (estimate_numbers_of_iterations_loop): Export.
7783         * predict.c (predict_loops): Use estimated_loop_iterations_int.
7784         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
7785         (tree_estimate_probability): Call record_loop_exits.
7786         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
7787         (estimated_loop_iterations, estimated_loop_iterations_int,
7788         estimated_loop_iterations_tree): New functions.
7789         (analyze_siv_subscript_cst_affine,
7790         compute_overlap_steps_for_affine_1_2,
7791         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
7792         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
7793         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
7794         (PRED_LOOP_ITERATIONS_GUESSED): New.
7795         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
7796         * cfgloop.h (estimate_numbers_of_iterations_loop,
7797         estimated_loop_iterations_int): Declare.
7798
7799 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
7800
7801         * doc/extend.texi: Document optional priority argument to
7802         constructors and destructors.
7803         * tree.c (init_priority_for_decl): Adjust GTY markers.
7804         (init_ttree): Use priority-info hash functions for
7805         init_priority_for_decl.
7806         (tree_map_eq): Rename to ...
7807         (tree_map_base_eq): ... this.
7808         (tree_map_marked_p): Rename to ...
7809         (tree_map_base_marked_p): ... this.
7810         (tree_map_base_hash): New function.
7811         (decl_init_priority_lookup): Rework.
7812         (decl_fini_priority_lookup): New function.
7813         (decl_priority_info): New function.
7814         (decl_init_priority_insert): Use it.
7815         (decl_fini_priority_insert): Likewise.
7816         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
7817         hierarchy.
7818         (decl_restrict_base_insert): Likewise.
7819         (decl_debug_expr_insert): Likewise.
7820         (decl_value_expr_lookup): Likewise.
7821         (decl_value_expr_insert): Likewise.
7822         * tree.h (priority_type): New type.
7823         (decl_init_priority_lookup): Use priority_type.
7824         (decl_fini_priority_lookup): New function.
7825         (decl_init_priority_insert): Use priority_type.
7826         (decl_fini_priority_insert): New function.
7827         (DECL_HAS_INIT_PRIORITY): Tweak comments.
7828         (DECL_INIT_PRIORITY): Likewise.
7829         (SET_DECL_INIT_PRIORITY): Add comment.
7830         (DECL_FINI_PRIORITY): New macro.
7831         (SET_DECL_FINI_PRIORITY): Likewise.
7832         (DEFAULT_INIT_PRIORITY): Document.
7833         (MAX_INIT_PRIORITY): Likewise.
7834         (MAX_RESERVED_INIT_PRIORITY): Likewise.
7835         (tree_map_base): New type.
7836         (tree_map_base_eq): New function.
7837         (tree_map_base_hash): Likewise.
7838         (tree_map_base_marked_p): Likewise.
7839         (tree_map): Inherit from tree_map_base.
7840         (tree_map_eq): Make it a macro.
7841         (tree_map_marked_p): Likewise.
7842         (tree_int_map): Inherit from tree_map_base.
7843         (tree_int_map_eq): Make it a macro.
7844         (tree_int_map_hash): Likewise.
7845         (tree_int_map_marked_p): Likewise.
7846         (tree_priority_map): New type.
7847         (tree_priority_map_eq): New macro.
7848         (tree_priority_map_hash): Likewise.
7849         (tree_priority_map_marked_p): Likewise.
7850         * varasm.c (emults_decl): Adjust for refactoring of tree_map
7851         hierarchy.
7852         (emutls_common_1): Likewise.
7853         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
7854         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
7855         of tree_map hierarchy.
7856         * tree-cfg.c (move_stmt_r): Likewise.
7857         (new_label_mapper): Likewise.
7858         * c-tree.h (c_expand_body): Move to ...
7859         * c-common.h (c_expand_body): ... here.
7860         * c-decl.c (c_expand_body): Move to ...
7861         * c-common.c (c_expand_body): ... here.
7862         (c_common_attribute_table): Allow 1 argument for the constructor
7863         and destructor attributes.
7864         (get_priority): New function.
7865         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
7866         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
7867
7868 2007-02-24  Jan Hubicka  <jh@suse.cz>
7869
7870         PR middle-end/30509
7871         * tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
7872
7873 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
7874             Jan Hubicka  <jh@suse.cz>
7875
7876         PR target/30778
7877         * i386.c (counter_mode): New function.
7878         (expand_set_or_movmem_via_loop): Use it.
7879         (expand_movmem_epilogue): Likewise; fix pasto.
7880         (ix86_expand_movmem): Do emit guard even for constant counts.
7881         (ix86_expand_setmem): Likewise.
7882
7883 2007-02-25  Nick Clifton  <nickc@redhat.com>
7884
7885         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
7886         (JUMP_TABLES_IN_TEXT_SECTION): Define.
7887
7888 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
7889
7890         PR target/30770
7891         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
7892         count argument with 0x10, not with 0x16.
7893         (expand_setmem_epilogue): Ditto.
7894
7895 2007-02-24  Mike Stump  <mrs@apple.com>
7896
7897         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
7898         symbols.
7899
7900 2007-02-24  Richard Guenther  <rguenther@suse.de>
7901
7902         PR middle-end/30951
7903         * fold-const.c (fold_binary): Fold x +- CST op x for
7904         EQ_EXPR and NE_EXPR.
7905
7906 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7907
7908         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
7909
7910 2007-02-24  Jan Hubicka  <jh@suse.cz>
7911
7912         * cgraphunit.c (decide_is_function_needed): Honor
7913         -fkeep-inline-functions.
7914
7915 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7916
7917         * builtins.c (fold_builtin_modf): New.
7918         (fold_builtin_2): Use it.
7919
7920 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
7921
7922         * loop-iv.c (implies_p): Detect additional cases where A implies B.
7923         (determine_max_iter): Take additional LOOP arg; all callers changed.
7924         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
7925         one using simplifications.
7926         (simplify_using_initial_values): Return if the expression becomes
7927         invalid due to altered regs.
7928
7929 2007-02-23  DJ Delorie  <dj@redhat.com>
7930
7931         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
7932
7933 2007-02-23  Mike Stump  <mrs@apple.com>
7934
7935         * tlink.c (scan_linker_output): Parse linker messages from
7936         darwin9's linker better.
7937
7938 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
7939
7940         PR debug/29614
7941         * varpool.c (varpool_assemble_pending_decls):  Set
7942         varpool_last_needed_node to null.
7943
7944 2007-02-23  DJ Delorie  <dj@redhat.com>
7945
7946         * config/i386/i386.c (ix86_data_alignment): Don't specify an
7947         alignment bigger than the object file can handle.
7948
7949 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
7950
7951         PR target/30825
7952         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
7953         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
7954         (*movsf_1): Penalize MMX moves.
7955
7956 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
7957
7958         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
7959         2^32-1 or more times unless flag_unsafe_loop_optimizations.
7960
7961         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
7962
7963 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7964
7965         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
7966         (fold_builtin_1): Use them.
7967         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
7968         BUILT_IN_SIGNIFICAND.
7969
7970 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
7971
7972         * config/i386/i386.c (bdesc_1arg): Initialize
7973         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
7974         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
7975         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
7976         and IX86_BUILTIN_MOVSLDUP.
7977
7978 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
7979
7980         PR rtl-optimization/30841
7981         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
7982
7983 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7984
7985         * builtins.c (fold_builtin_frexp): New.
7986         (fold_builtin_2): Use it.
7987
7988 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
7989
7990         * doc/invoke.texi (Spec Files): Document getenv spec function.
7991
7992         * gcc.c (getenv_spec_function): New function.
7993         (static_spec_functions): Add it.
7994         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
7995         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
7996         header files.
7997
7998 2007-02-22  Michael Matz  <matz@suse.de
7999
8000         PR c++/29433
8001         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
8002         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
8003
8004 2007-02-22  Ian Lance Taylor  <iant@google.com>
8005
8006         PR debug/30898
8007         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
8008         (mem_loc_descriptor): Call it.
8009
8010 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
8011             Ira Rosen  <irar@il.ibm.com>
8012
8013         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
8014
8015 2007-02-22  Ira Rosen  <irar@il.ibm.com>
8016
8017         PR tree-optimization/30843
8018         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
8019         stores only after all the group is vectorized.
8020
8021 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
8022
8023         PR tree-optimization/30858
8024         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
8025         in the reduction cycle have a single use in the loop.
8026         * tree-vectorizer.h (relevant): Add documentation.
8027
8028 2007-02-20  Mike Stump  <mrs@apple.com>
8029
8030         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
8031         * configure: Regenerate.
8032
8033 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
8034
8035         Change the defaults of some parameters and options.
8036         * config/spu/spu-protos.h (spu_optimization_options): Declare.
8037         * config/spu/spu.c (spu_optimization_options): Add.
8038         (spu_override_options): Change params in spu_optimization_options.
8039         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
8040
8041         Register 127 is only 16 byte aligned when used as a frame pointer.
8042         * config/spu/spu-protos.h (spu_init_expanders): Declare.
8043         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
8044         HARD_FRAME_POINTER_REGNUM.
8045         (spu_legitimate_address):  Use regno_aligned_for_reload.
8046         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
8047         aligned when frame_pointer_needed is true.
8048         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
8049         to 8 bits.
8050         * config/spu/spu.h (INIT_EXPANDERS): Define.
8051
8052         Make sure shift and rotate instructions have valid immediate operands.
8053         * config/spu/predicates.md (spu_shift_operand): Remove.
8054         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
8055         * config/spu/constraints.md (W, O): Extend range.
8056         * config/spu/spu.md (umask, nmask): Define.
8057         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
8058         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
8059         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
8060         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
8061         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
8062         (lshr<mode>3_reg):  Fix rtl description.
8063
8064         Make sure mulhisi immediate operands are valid.
8065         * config/spu/predicates.md (imm_K_operand): Add.
8066         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
8067
8068         Generate constants using fsmbi and andi.
8069         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
8070         (print_operand, spu_split_immediate, classify_immediate,
8071         fsmbi_const_p): Handle IC_FSMBI2.
8072
8073         Correctly handle a CONST_VECTOR containing symbols.
8074         * config/spu/spu.c (print_operand): Handle HIGH correctly.
8075         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
8076         (immediate_load_p): Allow symbols that use 2 instructions to create.
8077         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
8078         with symbols when flag_pic is set.
8079         (const_vector_immediate_p): New.
8080         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
8081         accept a CONST_VECTOR with symbols.
8082         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
8083         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
8084         correctly.
8085         * config/spu/spu.md (high, low): Delete.
8086         (low_<mode>): Define.
8087
8088         Remove INTRmode and INTR_REGNUM, which didn't work.
8089         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
8090         of INTR_REGNUM.
8091         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
8092         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
8093         peephole2 pattern): Don't use INTR or 131.
8094         (movintrcc): Delete.
8095         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
8096         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
8097         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
8098         (UNSPEC_SET_INTR): Add.
8099         * config/spu/spu-modes.def (INTR): Remove.
8100
8101         More accurate warnings about run-time relocations.
8102         * config/spu/spu.c (reloc_diagnostic): Test in_section.
8103
8104         Correctly warn about immediate arguments to specific intrinsics.
8105         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
8106         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
8107         the instruction predicate.
8108
8109         Fix tree check errors with latest update.
8110         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
8111         CALL_EXPR_ARG.
8112         (spu_expand_builtin): Use CALL_EXPR_FN.
8113
8114         Add missing specific intrinsics.
8115         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
8116         si_bislede.
8117         * config/spu/spu_internals.h: Ditto.
8118
8119         Fix incorrect operand modifiers.
8120         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
8121         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
8122
8123         Optimize one case of zero_extend of a vec_select.
8124         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
8125
8126         Accept any immediate for hbr.
8127         * config/spu/spu.md (hbr):  Change s constraints to i.
8128
8129 2007-02-21  Paul Brook  <paul@codesourcery.com>
8130
8131         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
8132         condexec_count when skipping USE and CLOBBER.
8133
8134 2007-02-21  Nick Clifton  <nickc@redhat.com>
8135
8136         * common.opt (Warray-bounds): Add Warning attribute.
8137         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
8138         Likewise.
8139         (fsized-zeroes): Add Optimization attribute.
8140         (fsplit-wide-types, ftree-scev-cprop): Likewise.
8141         * c.opt (Wc++0x-compat): Add Warning attribute.
8142
8143 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
8144
8145         PR middle-end/30761
8146         * reload1.c (eliminate_regs_in_insn): In the single_set special
8147         case, attempt to re-recognize the insn before falling back to
8148         having reload fix it up.
8149
8150 2007-02-20  Eric Christopher  <echristo@gmail.com>
8151
8152         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
8153         Rewrite accordingly.
8154         (frv_read_iacc_argument): Ditto.
8155         (frv_expand_set_builtin): Take a call instead of arglist, update for
8156         above changes.
8157         (frv_expand_unop_builtin): Ditto.
8158         (frv_expand_binop_builtin): Ditto.
8159         (frv_expand_cut_builtin): Ditto.
8160         (frv_expand_binopimm_builtin): Ditto.
8161         (frv_expand_voidbinop_builtin): Ditto.
8162         (frv_expand_int_void2arg): Ditto.
8163         (frv_expand_prefetches): Ditto.
8164         (frv_expand_voidtriop_builtin): Ditto.
8165         (frv_expand_voidaccop_builtin): Ditto.
8166         (frv_expand_load_builtin): Ditto.
8167         (frv_expand_store_builtin): Ditto.
8168         (frv_expand_mdpackh_builtin): Ditto.
8169         (frv_expand_mclracc_builtin): Ditto.
8170         (frv_expand_mrdacc_builtin): Ditto.
8171         (frv_expand_mwtacc_builtin): Ditto.
8172         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
8173         calls for above.
8174
8175 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
8176
8177         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
8178         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
8179         cmpb instruction.
8180         (HAVE_GAS_DFP): Check for assembler support of decimal floating
8181         point instructions.
8182         * configure: Regenerate.
8183         * config.in: Regenerate.
8184         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
8185         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
8186         masks to power6 and power6x and to POWERPC_MASKS.
8187         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
8188         _ARCH_PWR6.
8189         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
8190         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
8191         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
8192         Access PROTOTYPE as variable, not mask.
8193
8194 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
8195
8196         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
8197         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
8198         * combine.c (adjust_for_new_dest): Use it.
8199         * postreload.c (reload_combine): Likewise.
8200
8201 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
8202
8203         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
8204         notes on an insn with multiple sets, even if single_set returns
8205         non-NULL for that insn.
8206
8207 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8208
8209         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
8210         scalbn and scalbln.
8211
8212 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
8213
8214         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
8215         if user didn't pass it.
8216         * config/i386/darwin.h (CC1_SPEC): Likewise.
8217         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
8218         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
8219         -mmacosx-version-min.
8220
8221 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8222             Uros Bizjak  <ubizjak@gmail.com>
8223
8224         * optabs.h (enum optab_index): Add new OTI_scalb.
8225         (scalb_optab): Define corresponding macro.
8226         * optabs.c (init_optabs): Initialize scalb_optab.
8227         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
8228         patterns.
8229         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
8230         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
8231         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
8232         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
8233         flag_unsafe_math_optimizations is set.
8234
8235         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
8236         to implement scalbf, scalb and scalbl built-ins as inline x87
8237         intrinsics.
8238
8239 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8240             DJ Delorie <dj@redhat.com>
8241
8242         PR other/30824
8243         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
8244         (diagnostic_report_diagnostic): ... here, and turn them into real
8245         errors. If warnings are inhibited, no need to do anything.
8246
8247 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
8248
8249         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
8250         better code generation.
8251
8252 2007-02-20  Ben Elliston  <bje@au.ibm.com>
8253
8254         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
8255
8256 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
8257
8258         * config/alpha/alpha.c, config/alpha/alpha.md,
8259         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
8260         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
8261         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
8262         config/arm/lib1funcs.asm: Follow spelling conventions.
8263
8264         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
8265         config/fr30/fr30.md, config/i386/i386.h,
8266         config/iq2000/iq2000.h, config/iq2000/predicates.md,
8267         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
8268         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
8269         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
8270         config/rs6000/altivec.md, config/rs6000/rs6000.c,
8271         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
8272         config/sparc/sparc.c, config/sparc/sparc.h,
8273         config/sparc/sparc.md, config/spu/constraints.md,
8274         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
8275         conventions.
8276
8277 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
8278
8279         PR target/29943
8280         * varasm.c (use_blocks_for_decl_p): Return false for decls with
8281         alias attribute.
8282
8283 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
8284
8285         * doc/invoke.texi (-ftree-lrs): Remove.
8286
8287 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
8288
8289         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
8290         NULL.
8291
8292 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
8293
8294         * config/ia64/ia64.c (ia64_expand_builtin): Use the
8295         new CALL_EXPR_FN macro for retrieving the function
8296         declaration of the input expression.
8297
8298 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8299
8300         * c.opt (Waddress): New.
8301         * common.opt (Walways-true): Delete.
8302         (Wstring-literal-comparison): Delete.
8303         * doc/invoke.texi (Warning Options): Delete -Walways-true and
8304         -Wstring-literal-comparison. Add -Waddress.
8305         (Waddress): New.
8306         (Walways-true): Delete.
8307         (Wstring-literal-comparison): Delete.
8308         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
8309         consistently instead of -Walways-true in example.
8310         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
8311         * c-typeck.c (parser_build_binary_op): Replace
8312         -Wstring-literal-comparison and -Walways-true with -Waddress.
8313         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
8314         with -Waddress.
8315
8316 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
8317
8318         * tree-cfg.c (dump_function_to_file): Be prepared for functions
8319         without DECL_STRUCT_FUNCTION initialized.
8320
8321 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
8322
8323         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
8324         due to calls to functions taking pointers as parameters.
8325
8326 2007-02-19  Richard Henderson  <rth@redhat.com>
8327
8328         PR debug/29558
8329         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
8330         in memory.
8331
8332 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
8333
8334         * config/s390/s390.c (s390_call_saved_register_used,
8335         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
8336         accessed to the new scheme.
8337
8338 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
8339
8340         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
8341         (cris_print_index, cris_print_operand, cris_print_operand_address)
8342         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
8343         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
8344         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
8345         GET_CODE () == xxx.
8346         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
8347         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
8348         GO_IF_LEGITIMATE_ADDRESS): Ditto.
8349         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
8350         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
8351         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
8352         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
8353         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
8354         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
8355         (uminsi3, call, call_value): Ditto.
8356         (define_split: indir_to_reg_split, unnamed): Ditto.
8357
8358 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
8359
8360         PR tree-optimization/30975
8361         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
8362         wrong assert.
8363
8364 2007-02-18  Eric Christopher  <echristo@gmail.com>
8365
8366         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
8367         Remove use of arglist.
8368         (mips_expand_builtin): Remove use of arglist, pass in expr.
8369         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
8370         (mips_expand_builtin_movtf): Ditto.
8371         (mips_expand_builtin_compare): Ditto.
8372
8373 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
8374
8375         * tree-sra.c (sra_build_assignment): Replace assertion
8376         checking with a comment explaining why it can't be done.
8377
8378 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
8379
8380         PR middle-end/30833
8381         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
8382         during CALL_EXPR representation conversion.
8383         * tree-ssa-propagate.c (set_rhs): Likewise.
8384
8385 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
8386
8387         * tree-sra.c (sra_build_assignment): Disable assertion checking
8388         for now.
8389
8390 2007-02-18  Roger Sayle  <roger@eyesopen.com>
8391
8392         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
8393         instead of calling build2 with a GIMPLE_MODIFY_STMT.
8394         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
8395         Likewise.
8396         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
8397         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
8398         gimplify_init_ctor_eval_range, gimple_push_cleanup,
8399         gimplify_omp_for, gimplify_omp_atomic_pipeline,
8400         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
8401         force_gimple_operand): Likewise.
8402         * ipa-cp.c (constant_val_insert): Likewise.
8403         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
8404         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
8405         perfect_nestify): Likewise.
8406         * langhooks.c (lhd_omp_assignment): Likewise.
8407         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
8408         lower_copyprivate_clauses, lower_send_clauses,
8409         lower_send_shared_vars, expand_parallel_call,
8410         expand_omp_for_generic, expand_omp_for_static_nochunk,
8411         expand_omp_for_static_chunk, expand_omp_sections,
8412         lower_omp_single_copy, lower_omp_for_lastprivate,
8413         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
8414         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
8415         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
8416         Likewise.
8417
8418 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
8419
8420         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
8421         config/sh/sh.md: Follow spelling conventions.
8422
8423         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
8424         config/frv/predicates.md: Follow spelling conventions.
8425
8426         * config/m68k/linux-unwind.h: Fix a comment typo.
8427         * target.h: Follow spelling conventions.
8428
8429 2007-02-18  Roger Sayle  <roger@eyesopen.com>
8430
8431         PR rtl-optimization/28173
8432         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
8433         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
8434         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
8435         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
8436         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
8437
8438 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8439
8440         * builtins.c (fold_builtin_load_exponent): New.
8441         (fold_builtin_2): Use it.
8442
8443 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
8444
8445         PR rtl-optimization/30773
8446         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
8447         if we fail to attach a REG_EQUIV note.
8448
8449 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
8450             Roger Sayle  <roger@eyesopen.com>
8451
8452         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
8453
8454 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
8455
8456         * calls.c (initialize_argument_information): Pass original EXP
8457         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
8458         code to split complex arguments here, as part of initializing the
8459         ARGS array.
8460         (expand_call): Remove code that builds a list of arguments and
8461         inserts implicit arguments into it.  Instead, just count how many
8462         implicit arguments there will be so we can determine the size of
8463         the ARGS array, and let initialize_argument_information do the work.
8464         (split_complex_values): Delete unused function.
8465
8466 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
8467
8468         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
8469
8470 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
8471
8472         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
8473         for arg pointer based indexed addressing.
8474
8475 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
8476
8477         * config/ia64/ia64.h, config/ia64/ia64.md,
8478         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
8479         spelling conventions.
8480
8481 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
8482
8483         * config/m68k/m68k.c (split_di): New.
8484         * config/m68k/m68k-protos.h: Declare split_di.
8485         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
8486           Improve predicate handling and split constant shifts.
8487
8488 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
8489
8490         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
8491         parameter for register bitfield operations, general predicates
8492         cleanup
8493
8494 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
8495
8496         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
8497         * config/m68k/linux-unwind.h: New file.
8498
8499 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
8500
8501         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
8502         config/i386/athlon.md, config/ia64/ia64.md,
8503         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
8504         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
8505         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
8506         tree-ssa-loop-niter.c, tree-vect-analyze.c,
8507         tree-vect-transform.c: Fix comment typos.
8508
8509 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
8510
8511         * sched-deps.c (find_insn_list): Remove.
8512         * sched-int.h: Remove the prototype for find_insn_list.
8513
8514 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
8515
8516         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
8517         to linker.
8518         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
8519         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
8520         darwin_rs6000_override_options.
8521         (C_COMMON_OVERRIDE_OPTIONS): Expect
8522         darwin_macosx_version_min to be non-NULL always.
8523         (TARGET_C99_FUNCTIONS): Likewise.
8524         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
8525         (DARWIN_MINVERSION_SPEC): New.
8526         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
8527         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
8528         to cc1*.
8529         (DARWIN_MINVERSION_SPEC): New.
8530         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
8531         value.
8532         * config/darwin-c.c (darwin_cpp_builtins): Expect
8533         darwin_macosx_version_min to be non-NULL always.
8534
8535         * config/rs6000/rs6000.c: Clean up trailing whitespace.
8536
8537 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
8538
8539         * config/i386/i386.h (x86_use_xchgb): New.
8540         (TARGET_USE_XCHGB): New macro.
8541         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
8542         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
8543         Split after reload into bswaphi for shifts of 8.
8544         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
8545         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
8546         or when optimizing for size.
8547
8548 2007-02-16  Richard Guenther  <rguenther@suse.de>
8549             Christian Bruel  <christian.bruel@st.com>
8550
8551         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
8552         DECLs but prefer SSA_NAMEs over DECLs.
8553
8554 2007-02-16  Richard Guenther  <rguenther@suse.de>
8555
8556         * tree-flow-inline.h (single_imm_use_p): Remove.
8557         (zero_imm_uses_p): Likewise.
8558         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
8559         instead of single_imm_use_p.
8560         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
8561         zero_imm_uses_p.
8562
8563 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8564
8565         PR other/27843
8566         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
8567         nested double- and backquotes.
8568
8569 2007-02-15  Roger Sayle  <roger@eyesopen.com>
8570
8571         PR middle-end/30391
8572         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
8573         should be unreachable.
8574         (build2_stat): Allow construction of MODIFY_EXPR at any time.
8575         For the time being redirect GIMPLE_MODIFY_STMT to the new
8576         (renamed) build_gimple_modify_stmt_stat.
8577         (build2_gimple_stat): Rename to...
8578         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
8579         Always build a GIMPLE_MODIFY_STMT node.
8580         * tree.h (build2_gimple, build2_gimple_stat): Delete.
8581         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
8582         declarations.
8583
8584         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
8585         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
8586         * tree-complex.c (set_component_ssa_name, expand_complex_move,
8587         expand_complex_div_wide): Likewise.
8588         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
8589         * tree-ssa-loop-im.c (schedule_sm): Likewise.
8590         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
8591         * tree-ssa-loop-manip.c (create_iv): Likewise.
8592         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
8593         abs_replacement): Likewise.
8594         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
8595         realify_fake_stores): Likewise.
8596
8597         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
8598         node rather than a GIMPLE_MODIFY_STMT node.
8599         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
8600         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
8601         Likewise.
8602         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
8603         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
8604         GIMPLE_MODIFY_STMT.
8605
8606 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8607
8608         PR middle-end/30433
8609         * fold-const.c (fold_comparison): Add back the
8610         folding of constant complex comparisions.
8611
8612 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8613
8614         PR middle-end/30729
8615         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
8616         effects unknown to this function, return early.
8617
8618 2007-02-15  Ian Lance Taylor  <iant@google.com>
8619
8620         * lower-subreg.c (move_eh_region_note): New static function.
8621         (resolve_simple_move): Call it.
8622         (decompose_multiword_subregs): Track blocks for which we resolve a
8623         simple move which is also a control flow insn.  Pass them to
8624         find_many_sub_basic_blocks.
8625         (pass_lower_subreg): Add TODO_verify_flow.
8626         (pass_lower_subreg2): Likewise.
8627
8628 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
8629             Brooks Moses  <brooks.moses@codesourcery.com>
8630             Lee Millward  <lee.millward@codesourcery.com>
8631
8632         * tree.h (enum tree_code_class): Add tcc_vl_exp.
8633         (VL_EXP_CLASS_P): New.
8634         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
8635         TREE_CODE_LENGTH.
8636         (TREE_OPERAND_CHECK_CODE): Likewise.
8637         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
8638         (TREE_RTL_OPERAND_CHECK): Likewise.
8639         (tree_operand_check_failed): Make second parameter the whole tree
8640         instead of its code.  Fixed callers.
8641         (VL_EXP_CHECK): New.
8642         (TREE_OPERAND_LENGTH): New.
8643         (VL_EXP_OPERAND_LENGTH): New.
8644         (CALL_EXPR_FN): New.
8645         (CALL_EXPR_STATIC_CHAIN): New.
8646         (CALL_EXPR_ARGS): New.
8647         (CALL_EXPR_ARG): New.
8648         (call_expr_nargs): New.
8649         (CALL_EXPR_ARGP): New.
8650         (build_nt_call_list): Declare.
8651         (build_vl_exp_stat): Declare.
8652         (build_vl_exp): New.
8653         (build_call_list): Declare.
8654         (build_call_nary): Declare.
8655         (build_call_valist): Declare.
8656         (build_call_array): Declare.
8657         (call_expr_arg): Declare.
8658         (call_expr_argp): Declare.
8659         (call_expr_arglist): Declare.
8660         (fold_build_call_list): Declare.
8661         (fold_build_call_list_initializer): Declare.
8662         (fold_call_expr): Declare to replace fold_builtin.
8663         (fold_builtin_fputs): Update to agree with modified definition.
8664         (fold_builtin_strcpy): Likewise.
8665         (fold_builtin_strncpy): Likewise.
8666         (fold_builtin_memory_chk): Likewise.
8667         (fold_builtin_stxcpy_chk): Likewise.
8668         (fold_builtin_strncpy_chk): Likewise.
8669         (fold_builtin_next_arg): Likewise.
8670         (fold_build_call_expr): Declare.
8671         (fold_builtin_call_list): Declare.
8672         (fold_builtin_call_valist): Declare.
8673         (build_call_expr): Declare.
8674         (validate_arglist): Update to agree with modified definition.
8675         (tree_operand_length): New.
8676         (call_expr_arg_iterator): New.
8677         (init_call_expr_arg_iterator): New.
8678         (next_call_expr_arg): New.
8679         (first_call_expr_arg): New.
8680         (more_call_expr_args_p): New.
8681         (FOR_EACH_CALL_EXPR_ARG): New.
8682
8683         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
8684         and tcc_gimple_stmt.
8685         (tree_code_size): Update documentation.  Use sizeof (tree) rather
8686         than sizeof (char *).
8687         (tree_size): Likewise.  Add case for tcc_vl_exp.
8688         (tree_node_structure): Add case for tcc_vl_exp.
8689         (contains_placeholder_p): Likewise.
8690         (substitute_in_expr): Likewise.
8691         (substitute_placeholder_in_expr): Likewise.
8692         (stabilize_reference_1): Likewise.
8693         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
8694         to diagnose breakage of this interface for constructing CALL_EXPRs.
8695         (build_nt): Add similar assertion here.
8696         (build_nt_call_list): New.
8697         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
8698         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
8699         TREE_CODE_LENGTH.
8700         (get_callee_fndecl): Use new CALL_EXPR accessors.
8701         (tree_operand_check_failed): Change parameters to pass entire node
8702         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
8703         (process_call_operands): New.
8704         (build_vl_exp_stat): New.
8705         (build_call_list): New.
8706         (build_call_nary): New.
8707         (build_call_valist): New.
8708         (build_call_array): New.
8709         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
8710         (call_expr_arglist): New.
8711
8712         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
8713         tcc_vl_exp instead of a fixed-size tcc_expression.
8714
8715         * doc/c-tree.texi (CALL_EXPR): Document new representation and
8716         accessors for CALL_EXPRs.
8717         (AGGR_INIT_EXPR): Likewise.
8718
8719 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
8720             Brooks Moses  <brooks.moses@codesourcery.com>
8721             Lee Millward  <lee.millward@codesourcery.com>
8722
8723         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
8724         (expand_builtin_nonlocal_goto): Change parameter to be entire
8725         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
8726         (expand_builtin_prefetch): Likewise.
8727         (expand_builtin_classify_type): Likewise.
8728         (mathfn_built_in): Return NULL_TREE instead of 0.
8729         (expand_errno_check): Use new CALL_EXPR accessors.
8730         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
8731         Return NULL_RTX instead of 0.
8732         (expand_builtin_mathfn_2): Likewise.
8733         (expand_builtin_mathfn_3): Likewise.
8734         (expand_builtin_interclass_mathfn): Likewise.
8735         (expand_builtin_sincos): Likewise.
8736         (expand_builtin_cexpi): Likewise.
8737         (expand_builtin_int_roundingfn): Likewise.
8738         (expand_builtin_int_roundingfn_2): Likewise.
8739         (expand_builtin_pow): Likewise.
8740         (expand_builtin_powi): Likewise.
8741         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
8742         of arglist, fixing callers appropriately.  Use new CALL_EXPR
8743         accessors and constructors.  Return NULL_RTX instead of 0.
8744         (expand_builtin_strstr): Likewise.
8745         (expand_builtin_strchr): Likewise.
8746         (expand_builtin_strrchr): Likewise.
8747         (expand_builtin_strpbrk): Likewise.
8748         (expand_builtin_memcpy): Likewise.
8749         (expand_builtin_mempcpy): Likewise.
8750         (expand_builtin_mempcpy_args): New.
8751         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
8752         (expand_builtin_memmove_args): New.
8753         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
8754         (expand_movstr): Likewise.
8755         (expand_builtin_strcpy): Likewise.
8756         (expand_builtin_strcpy_args): New.
8757         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
8758         (expand_builtin_strncpy): Likewise.
8759         (expand_builtin_memset): Likewise.
8760         (expand_builtin_memset_args): New.
8761         (expand_builtin_bzero): Similarly to expand_builtin_memset.
8762         (expand_builtin_memcmp): Likewise.
8763         (expand_builtin_strcmp): Likewise.
8764         (expand_builtin_strncmp): Likewise.
8765         (expand_builtin_strcat): Likewise.
8766         (expand_builtin_strncat): Likewise.
8767         (expand_builtin_strspn): Likewise.
8768         (expand_builtin_strcspn): Likewise.
8769         (expand_builtin_args_info): Likewise.
8770         (expand_builtin_va_start): Likewise.
8771         (gimplify_va_arg_expr): Likewise.
8772         (expand_builtin_va_end): Likewise.
8773         (expand_builtin_va_copy): Likewise.
8774         (expand_builtin_frame_address): Likewise.
8775         (expand_builtin_alloca): Likewise.
8776         (expand_builtin_bswap): Likewise.
8777         (expand_builtin_unop): Likewise.
8778         (expand_builtin_fputs): Likewise.
8779         (expand_builtin_expect): Likewise.
8780         (expand_builtin_fabs): Likewise.
8781         (expand_builtin_copysign): Likewise.
8782         (expand_builtin_printf): Likewise.
8783         (expand_builtin_fprintf): Likewise.
8784         (expand_builtin_sprintf): Likewise.
8785         (expand_builtin_init_trampoline): Likewise.
8786         (expand_builtin_signbit): Likewise.
8787         (expand_builtin_fork_or_exec): Likewise.
8788         (expand_builtin_sync_operation): Likewise.
8789         (expand_builtin_compare_and_swap): Likewise.
8790         (expand_builtin_lock_test_and_set): Likewise.
8791         (expand_builtin_lock_release): Likewise.
8792         (expand_builtin): Likewise.
8793         (builtin_mathfn_code): Likewise.
8794
8795         (fold_builtin_constant_p): Pass call arguments individually instead
8796         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
8797         accessors and constructors.  Return NULL_TREE instead of 0.
8798         (fold_builtin_expect): Likewise.
8799         (fold_builtin_classify_type): Likewise.
8800         (fold_builtin_strlen): Likewise.
8801         (fold_builtin_nan): Likewise.
8802         (integer_valued_real_p): Likewise.
8803         (fold_trunc_transparent_mathfn): Likewise.
8804         (fold_fixed_mathfn): Likewise.
8805         (fold_builtin_cabs): Likewise.
8806         (fold_builtin_sqrt): Likewise.
8807         (fold_builtin_cbrt): Likewise.
8808         (fold_builtin_cos): Likewise.
8809         (fold_builtin_cosh): Likewise.
8810         (fold_builtin_tan): Likewise.
8811         (fold_builtin_sincos): Likewise.
8812         (fold_builtin_cexp): Likewise.
8813         (fold_builtin_trunc): Likewise.
8814         (fold_builtin_floor): Likewise.
8815         (fold_builtin_ceil): Likewise.
8816         (fold_builtin_round): Likewise.
8817         (fold_builtin_int_roundingfn): Likewise.
8818         (fold_builtin_bitop): Likewise.
8819         (fold_builtin_bswap): Likewise.
8820         (fold_builtin_logarithm): Likewise.
8821         (fold_builtin_hypot): Likewise.
8822         (fold_builtin_pow): Likewise.
8823         (fold_builtin_powi): Likewise.
8824         (fold_builtin_exponent): Likewise.
8825         (fold_builtin_memset): Likewise.
8826         (fold_builtin_bzero): Likewise.
8827         (fold_builtin_memory_op): Likewise.
8828         (fold_builtin_bcopy): Deleted; call site changed to invoke
8829         fold_builtin_memory_op directly.
8830         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
8831         (fold_builtin_strncpy): Likewise.
8832         (fold_builtin_memcmp): Likewise.
8833         (fold_builtin_strcmp): Likewise.
8834         (fold_builtin_strncmp): Likewise.
8835         (fold_builtin_signbit): Likewise.
8836         (fold_builtin_copysign): Likewise.
8837         (fold_builtin_isascii): Likewise.
8838         (fold_builtin_toascii): Likewise.
8839         (fold_builtin_isdigit): Likewise.
8840         (fold_builtin_fabs): Likewise.
8841         (fold_builtin_abs): Likewise.
8842         (fold_builtin_fmin_fmax): Likewise.
8843         (fold_builtin_carg): Likewise.
8844         (fold_builtin_classify): Likewise.
8845         (fold_builtin_unordered_cmp): Likewise.
8846
8847         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
8848         New functions split out from fold_builtin_1.
8849         (fold_builtin_n): New.
8850         (fold_builtin_varargs): New.
8851         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
8852         instead.
8853         (fold_call_expr): New.
8854         (build_function_call_expr): Rewrite to use new helper function.
8855         (fold_builtin_call_list): New.
8856         (build_call_expr): New.
8857         (fold_builtin_call_valist): New.
8858         (rewrite_call_expr): New.
8859         (validate_arg): New.
8860         (validate_arglist): Change parameter to be entire CALL_EXPR instead
8861         of an arglist.  Change return type to bool.  Use new CALL_EXPR
8862         accessors.
8863
8864         (fold_builtin_strstr):  Pass call arguments individually instead
8865         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
8866         accessors and constructors.  Return NULL_TREE instead of 0.
8867         (fold_builtin_strchr): Likewise.
8868         (fold_builtin_strrchr): Likewise.
8869         (fold_builtin_strpbrk): Likewise.
8870         (fold_builtin_strcat): Likewise.
8871         (fold_builtin_strncat): Likewise.
8872         (fold_builtin_strspn): Likewise.
8873         (fold_builtin_strcspn): Likewise.
8874         (fold_builtin_fputs): Likewise.
8875         (fold_builtin_next_arg): Likewise.
8876         (fold_builtin_sprintf): Likewise.
8877
8878         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
8879         NULL_RTX instead of 0.
8880         (expand_builtin_memory_chk): Likewise.
8881         (maybe_emit_chk_warning): Likewise.
8882         (maybe_emit_sprintf_chk_warning): Likewise.
8883
8884         (fold_builtin_object_size): Pass call arguments individually instead
8885         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
8886         accessors and constructors.  Return NULL_TREE instead of 0.
8887         (fold_builtin_memory_chk): Likewise.
8888         (fold_builtin_stxcpy_chk): Likewise.
8889         (fold_builtin_strncpy_chk): Likewise.
8890         (fold_builtin_strcat_chk): Likewise.
8891         (fold_builtin_strcat_chk): Likewise.
8892         (fold_builtin_strncat_chk): Likewise.
8893         (fold_builtin_sprintf_chk): Likewise.
8894         (fold_builtin_snprintf_chk): Likewise.
8895         (fold_builtin_printf): Likewise.
8896         (fold_builtin_vprintf): Likewise.
8897
8898         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
8899         constructors.
8900         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
8901         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
8902         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
8903         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
8904         (fold_unary): Likewise.
8905         (fold_binary): Likewise.
8906         (fold_ternary): Remove CALL_EXPR case, since they are no longer
8907         ternary expressions.
8908         (fold): Add logic for tcc_vl_exp.
8909         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
8910         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
8911         (fold_build3_stat): Add assertion to flag broken interface for
8912         constructing CALL_EXPRs.
8913         (fold_build_call_list): New.
8914         (fold_build_call_list_initializer): New.
8915         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
8916         constructors.
8917         (fold_strip_sign_ops): Likewise.
8918
8919 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
8920             Brooks Moses  <brooks.moses@codesourcery.com>
8921             Lee Millward  <lee.millward@codesourcery.com>
8922
8923         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
8924         accessors and dump arguments explicitly.
8925
8926         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
8927         TREE_CODE_LENGTH.
8928         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
8929         explicitly.
8930         (print_call_name): Use new CALL_EXPR accessors.
8931
8932         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
8933         CALL_EXPR arguments explicitly instead of as a list.  Use
8934         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
8935
8936         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
8937         (vrp_visit_stmt): Likewise.
8938
8939         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
8940         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
8941         TREE_CODE_LENGTH.
8942         (force_move_till_expr): Likewise.
8943
8944         * targhooks.c (default_external_stack_protect_fail): Use
8945         build_call_expr instead of build_function_call_expr.
8946         (default_hidden_stack_protect_fail): Likewise.
8947
8948         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
8949         build the call.
8950
8951         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
8952         and walk arguments explicitly.
8953
8954         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
8955         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
8956         (expand_simple_operations): Likewise.
8957         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
8958
8959         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
8960         of TREE_CODE_LENGTH.
8961         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
8962
8963         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
8964         instead of TREE_CODE_LENGTH.
8965
8966         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
8967         (tree_ic_transform): Likewise.
8968         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
8969         parameter instead of arglist.  Fix callers.
8970         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
8971         (tree_stringops_transform): Likewise.
8972         (tree_indirect_call_to_profile): Likewise.
8973         (tree_stringops_values_to_profile): Likewise.
8974
8975         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
8976         (eliminate_tail_call): Likewise.
8977
8978         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
8979
8980         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
8981         Use TREE_OPERAND_LENGTH and generalize to handle any number of
8982         operands.
8983         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
8984
8985         * omp-low.c (build_omp_barrier): Use build_call_expr.
8986         (lower_rec_input_clauses): Likewise.
8987         (lower_reduction_clauses): Likewise.
8988         (expand_parallel_call): Likewise.
8989         (maybe_catch_exception): Likewise.
8990         (expand_omp_for_generic): Likewise.
8991         (expand_omp_for_static_nochunk): Likewise.
8992         (expand_omp_sections): Likewise.
8993         (lower_omp_single_simple): Likewise.
8994         (lower_omp_single_copy): Likewise.
8995         (lower_omp_master): Likewise.
8996         (lower_omp_ordered): Likewise.
8997         (lower_omp_critical): Likewise.
8998
8999         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
9000         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
9001
9002         * tree-gimple.c (is_gimple_call_addr): Fix doc.
9003         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
9004         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
9005
9006         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
9007         and generalize to handle any number of operands.
9008         (chrec_contains_undetermined): Likewise.
9009         (tree_contains_chrecs): Likewise.
9010         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
9011
9012         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
9013
9014         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
9015         fold_call_expr instead of fold_builtin.
9016         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
9017         match declarations there.
9018         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
9019         updates.
9020
9021         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
9022         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
9023
9024         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
9025         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
9026
9027         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
9028         accessors.
9029
9030         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
9031         (execute_cse_sincos): Use new CALL_EXPR accessors.
9032
9033         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
9034
9035         * gimple-low.c (lower_function_body): Use build_call_expr.
9036         (lower_builtin_setjmp): Likewise.
9037
9038         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
9039         (set_storage_via_libcall): Likewise.
9040         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
9041         instead of TREE_CODE_LENGTH.
9042         (expand_expr_real_1): Use new CALL_EXPR accessors.
9043
9044         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
9045         generalize to handle any number of operands.
9046         (TB_parent_eq): Likewise.
9047
9048         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
9049         (strip_builtin_expect): Likewise.
9050
9051         * function.c (gimplify_parameters): Use build_call_expr.
9052
9053         * tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
9054         instead of TREE_CODE_LENGTH.
9055
9056         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
9057         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
9058
9059         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
9060         iterators.
9061
9062         * gimplify.c (build_stack_save_restore): Use build_call_expr.
9063         (gimplify_decl_expr): Likewise.
9064         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
9065         Use new CALL_EXPR iterators.
9066         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
9067         (gimplify_modify_expr_to_memset): Likewise.
9068         (gimplify_variable_sized_compare): Likewise.
9069         (gimplify_omp_atomic_fetch_op): Likewise.
9070         (gimplify_omp_atomic_pipeline): Likewise.
9071         (gimplify_omp_atomic_mutex): Likewise.
9072         (gimplify_function_tree): Likewise.
9073
9074         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
9075         (call_expr_flags): Likewise.
9076         (expand_call): Likewise.
9077
9078         * except.c (expand_builtin_eh_return_data_regno): Pass entire
9079         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
9080         accessors.
9081
9082         * coverage.c (create_coverage): Use build_call_expr.
9083
9084         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
9085         (temp_call_expr_obstack): New.
9086         (pool_copy_list): Delete.
9087         (temp_copy_call_expr): New.
9088         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
9089         CALL_EXPR accessors.  Get rid of special goo for copying argument
9090         lists and use temp_copy_call_expr instead.
9091         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
9092         CALL_EXPR accessors.
9093         (create_expression_by_pieces): Likewise.  Use build_call_array
9094         to construct the result instead of fold_build3.
9095         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
9096         dealing with argument lists.
9097         (init_pre): Remove references to expression_node_pool and
9098         list_node_pool.  Init temp_call_expr_obstack instead.
9099         (fini_pre): Remove references to expression_node_pool and
9100         list_node_pool.
9101
9102         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
9103         and walk arguments explicitly instead of as a list.
9104
9105         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
9106         (mx_register_decls): Likewise.
9107         (mudflap_register_call): Likewise.
9108         (mudflap_finish_file): Likewise.
9109
9110         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
9111         (ipa_callsite_compute_param): Likewise.
9112
9113         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
9114         accessors and constructor.
9115
9116         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
9117         accessors and constructor.
9118         (convert_tramp_reference): Likewise.
9119         (convert_call_expr): Likewise.
9120         (finalize_nesting_tree_1): Likewise.
9121
9122         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
9123         accessors.
9124
9125         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
9126
9127         * tree-inline.c (initialize_inlined_parameters): Pass entire
9128         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
9129         accessors.
9130         (estimate_num_insns_1): Use new CALL_EXPR accessors.
9131         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
9132
9133         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
9134         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
9135         (vectorizable_reduction): Likewise.
9136         (vectorizable_call): Use new CALL_EXPR iterators.
9137         (vectorizable_conversion): Use build_call_expr.
9138         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
9139         (vect_gen_widened_results_half): Use build_call_expr.
9140         (vect_setup_realignment): Likewise.
9141         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
9142
9143         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
9144         (pass_through_call): Likewise.
9145         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
9146         fold_builtin.
9147
9148         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
9149         (tree_gen_pow2_profiler): Likewise.
9150         (tree_gen_one_value_profiler): Likewise.
9151         (tree_gen_ic_func_profiler): Likewise.
9152         (tree_gen_average_profiler): Likewise.
9153         (tree_gen_ior_profiler): Likewise.
9154
9155         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
9156         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
9157         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
9158
9159         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
9160         of TREE_CODE_LENGTH.
9161
9162         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
9163         of TREE_CODE_LENGTH.
9164
9165         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
9166         constructor.
9167         (convert_to_integer): Likewise.
9168
9169         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
9170         accessors.
9171
9172 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
9173             Brooks Moses  <brooks.moses@codesourcery.com>
9174             Lee Millward  <lee.millward@codesourcery.com>
9175
9176         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
9177         accessors.
9178         * config/frv/frv.c (frv_expand_builtin): Likewise.
9179         * config/s390/s390.c (s390_expand_builtin): Likewise.
9180
9181         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
9182         (sparc_expand_builtin): Use new CALL_EXPR accessors.
9183
9184         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
9185         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
9186         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
9187         (ix86_expand_store_builtin): Likewise.
9188         (ix86_expand_unop_builtin): Likewise.
9189         (ix86_expand_unop1_builtin): Likewise.
9190         (ix86_expand_sse_compare): Likewise.
9191         (ix86_expand_sse_comi): Likewise.
9192         (ix86_expand_vec_init_builtin): Likewise.
9193         (ix86_expand_vec_ext_builtin): Likewise.
9194         (ix86_expand_vec_set_builtin): Likewise.
9195         (ix86_expand_builtin): Use new CALL_EXPR accessors.
9196
9197         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
9198         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
9199
9200         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
9201         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
9202         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
9203
9204         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
9205         build_call_expr.
9206         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
9207         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
9208         arglist.  Use new CALL_EXPR accessors.  Fix callers.
9209         (altivec_expand_abs_builtin): Likewise.
9210         (rs6000_expand_binop_builtin): Likewise.
9211         (altivec_expand_predicate_builtin): Likewise.
9212         (altivec_expand_lv_builtin): Likewise.
9213         (spe_expand_stv_builtin): Likewise.
9214         (altivec_expand_stv_builtin): Likewise.
9215         (rs6000_expand_ternop_builtin): Likewise.
9216         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
9217         (altivec_expand_st_builtin): Likewise.
9218         (altivec_expand_dst_builtin): Likewise.
9219         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
9220         arglist.  Use new CALL_EXPR accessors.  Fix callers.
9221         (altivec_expand_vec_set_builtin): Likewise.
9222         (altivec_expand_vec_ext_builtin): Likewise.
9223         (altivec_expand_builtin): Use new CALL_EXPR accessors.
9224         (spe_expand_builtin): Likewise.
9225         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
9226         arglist.  Use new CALL_EXPR accessors.  Fix callers.
9227         (spe_expand_evsel_builtin): Likewise.
9228         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
9229         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
9230
9231         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
9232         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
9233         (arm_expand_unop_builtin): Likewise.
9234         (arm_expand_builtin): Use new CALL_EXPR accessors.
9235
9236         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
9237         accessors.
9238
9239         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
9240         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
9241         (bfin_expand_unop_builtin): Likewise.
9242         (bfin_expand_builtin): Use new CALL_EXPR accessors.
9243
9244 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
9245             Brooks Moses  <brooks.moses@codesourcery.com>
9246             Lee Millward  <lee.millward@codesourcery.com>
9247
9248         * c-semantics.c (build_stmt): Add internal diagnostic check.
9249
9250         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
9251         accessors.  Print arguments explicitly instead of as a list.
9252
9253         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
9254
9255         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
9256         (c_finish_omp_flish): Likewise.
9257
9258         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
9259         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
9260         instead of TREE_CODE_LENGTH.
9261         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
9262         (c_warn_unused_result): Likewise.
9263
9264 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9265
9266         PR c/26494
9267         * doc/invoke.texi (Warning Options): Remove
9268         -Werror-implicit-function-declaration.
9269         (Wimplicit-function-declaration): Update description.
9270         * opts.c (common_handle_option): Move handling of -Werror=* to...
9271         (enable_warning_as_error): ...here.
9272         * opts.h (enable_warning_as_error): Declare.
9273         * c-decl.c (implicit_decl_warning): Unless
9274         -Wno-implicit-function-declaration is given, emit a pedwarn if
9275         -std=c99 or emit a warning if -Wimplicit-function-declaration.
9276         * c.opt (Wimplicit-function-declaration): Replace
9277         mesg_implicit_function_declaration with
9278         warn_implicit_function_declaration.
9279         * c-opts.c (c_common_handle_option):
9280         -Werror-implicit-function-declaration is exactly equal as
9281         -Werror=implicit-function-declaration.
9282         (set_Wimplicit): Replace mesg_implicit_function_declaration with
9283         warn_implicit_function_declaration.
9284         (c_common_post_options): -Wimplict-function-declaration is enabled
9285         by default by -std=c99, otherwise is disabled by default.
9286         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
9287
9288 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
9289
9290         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
9291         DECL on the rhs to a DECL on the lhs for debug info purposes if the
9292         former is ignored but not the latter.
9293
9294 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
9295
9296         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
9297         is made and the reference doesn't use the alias set of its type,
9298         do not create the temporary using that type.
9299
9300 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
9301
9302         * jump.c: Remove prototypes for delete_computation and
9303         delete_prior_computation.
9304
9305 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
9306
9307         * jump.c (get_label_after): Delete.
9308         (get_label_before, delete_computation, delete_jump,
9309         delete_prior_computation, follow_jumps): Move...
9310         * reorg.c (delete_computation, delete_prior_computation): ... here...
9311         (get_label_before, delete_jump): ... making these static ...
9312         (follow_jumps): ... and simplifying this since it only runs after
9313         reload.
9314         * rtl.h (get_label_after, get_label_before, delete_jump,
9315         follow_jumps): Delete prototypes.
9316
9317 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
9318
9319         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
9320
9321 2007-02-15  Nick Clifton  <nickc@redhat.com>
9322
9323         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
9324         order to prevent it from being munged by the target.
9325
9326 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
9327
9328         * config/i386/i386.md: Remove misleading comment.
9329
9330 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
9331
9332         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
9333         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
9334         invalid patterns.
9335
9336 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
9337
9338         * tree-sra.c (instantiate_missing_elements): Canonicalize
9339         bit-field types.
9340         (sra_build_assignment): New.
9341         (generate_copy_inout, generate_element_copy,
9342         generate_element_zero, generate_one_element_init): Use it.
9343
9344 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
9345
9346         * tree-sra.c (instantiate_missing_elements): Canonicalize
9347         bit-field types.
9348         (sra_build_assignment): New.
9349         (generate_copy_inout, generate_element_copy,
9350         generate_element_zero, generate_one_element_init): Use it.
9351
9352 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
9353
9354         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
9355         limbo die nodes.
9356
9357 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
9358
9359         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
9360         types as aggregates not scalars.
9361         * function.c (assign_stack_temp_for_type): Likewise.
9362
9363 2007-02-14  Roger Sayle  <roger@eyesopen.com>
9364             Zdenek Dvorak  <dvorakz@suse.cz>
9365
9366         * tree-dump.c (dump_switch_p_1): Require exact match of the option
9367         name.
9368
9369 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
9370
9371         * passes.c (next_pass_1): Clear the next field of the copied
9372         pass structure.
9373
9374 2007-02-14  Richard Henderson  <rth@redhat.com>
9375
9376         * tree-sra.c (early_sra): New.
9377         (decl_can_be_decomposed_p): Deny va_list if early_sra.
9378         (tree_sra_early, pass_sra_early): New.
9379         * tree-pass.h (pass_sra_early): Declare.
9380         * passes.c (init_optimization_passes): Use it.
9381
9382 2007-02-14  Richard Guenther  <rguenther@suse.de>
9383
9384         * flags.h (issue_strict_overflow_warning): Convert to a macro.
9385
9386 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
9387
9388          PR tree-optimization/30771
9389         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
9390         also phi nodes.
9391         (vect_analyze_operations): Induction phis can now be marked as
9392         used_in_loop.
9393         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
9394         Update documentation accordingly.
9395
9396 2007-02-14  Nick Clifton  <nickc@redhat.com>
9397
9398         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
9399         most 3 arguments are supported.
9400         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
9401
9402 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
9403
9404         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
9405         Ensure dst->current is valid.
9406
9407 2007-02-13  Paul Brook  <paul@codesourcery.com>
9408
9409         * config.gcc: Add arm*-*-uclinux-*eabi.
9410         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
9411         (SUBTARGET_EXTRA_LINK_SPEC): Define.
9412         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
9413         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
9414         (LINK_SPEC): Define.
9415         (LIB_SPEC): Define.
9416         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
9417         register.
9418         * config/arm/uclinux-eabi.h: New file.
9419         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
9420         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
9421         based targets.
9422
9423 2007-02-13  Ian Lance Taylor  <iant@google.com>
9424
9425         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
9426         * flags.h (warn_strict_overflow): Declare.
9427         (enum warn_strict_overflow_code): Define.
9428         (issue_strict_overflow_warning): New static inline function.
9429         * opts.c (warn_strict_overflow): New variable.
9430         (common_handle_option): Handle OPT_Wstrict_overflow and
9431         OPT_Wstrict_overflow_.
9432         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
9433         OPT_Wall.
9434         * fold-const.c: Include intl.h.
9435         (fold_deferring_overflow_warnings): New static variable.
9436         (fold_deferred_overflow_warning): New static variable.
9437         (fold_deferred_overflow_code): New static variable.
9438         (fold_defer_overflow_warnings): New function.
9439         (fold_undefer_overflow_warnings): New function.
9440         (fold_undefer_and_ignore_overflow_warnings): New function.
9441         (fold_deferring_overflow_warnings_p): New function.
9442         (fold_overflow_warning): New static function.
9443         (make_range): Add strict_overflow_p parameter.  Change all
9444         callers.
9445         (extract_muldiv, extract_muldiv_1): Likewise.
9446         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
9447         tree_expr_nonnegative_p.
9448         (fold_negate_expr): Call fold_overflow_warning.
9449         (fold_range_test): Likewise.
9450         (fold_comparison): Likewise.
9451         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
9452         instead of tree_expr_nonnegative_p.
9453         (tree_expr_nonnegative_warnv_p): Rename from
9454         tree_expr_nonnegative_p, add strict_overflow_p parameter.
9455         (tree_expr_nonnegative_p): New function.
9456         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
9457         strict_overflow_p parameter.
9458         (tree_expr_nonzero_p): New function.
9459         * passes.c (verify_interpass_invariants): New static function.
9460         (execute_one_pass): Call it.
9461         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
9462         warnings.
9463         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
9464         (estimate_numbers_of_iterations): Likewise.
9465         (scev_probably_wraps_p): Likewise.
9466         * tree-ssa-ccp.c: Include "toplev.h".
9467         (evaluate_stmt): Defer fold overflow warnings until we know we are
9468         going to optimize.
9469         (struct fold_stmt_r_data): Add stmt field.
9470         (fold_stmt_r): Defer fold overflow warnings until we know we
9471         optimized.
9472         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
9473         (fold_stmt_inplace): Likewise.
9474         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
9475         (cleanup_control_expr_graph): Defer fold overflow warnings until
9476         we know we are going to optimize.
9477         * tree-cfg.c (fold_cond_expr_cond): Likewise.
9478         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
9479         Likewise.
9480         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
9481         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
9482         * tree-ssa-loop-manip.c (create_iv): Likewise.
9483         * c-typeck.c (build_conditional_expr): Likewise.
9484         (build_binary_op): Likewise.
9485         * tree-vrp.c (vrp_expr_computes_nonzero): Call
9486         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
9487         (extract_range_from_unary_expr): Likewise.
9488         * simplify-rtx.c (simplify_const_relational_operation): Warn when
9489         assuming that signed overflow does not occur.
9490         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
9491         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
9492         (fold_defer_overflow_warnings): Declare.
9493         (fold_undefer_overflow_warnings): Declare.
9494         (fold_undefer_and_ignore_overflow_warnings): Declare.
9495         (fold_deferring_overflow_warnings_p): Declare.
9496         (tree_expr_nonzero_warnv_p): Declare.
9497         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
9498         of warning options.
9499         (Warning Options): Document -Wstrict-overflow.
9500         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
9501         (tree-ssa-ccp.o): Likewise.
9502         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
9503         (fold-const.o): Depend on intl.h.
9504
9505 2007-02-13  Ian Lance Taylor  <iant@google.com>
9506
9507         PR middle-end/30751
9508         * lower-subreg.c (resolve_simple_move): Decompose subregs in
9509         addresses.
9510
9511 2007-02-13  Stuart Hastings  <stuart@apple.com>
9512
9513         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
9514
9515 2007-02-13  Richard Henderson  <rth@redhat.com>
9516
9517         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
9518         handled_component_p before looking for the indirect_ref.
9519
9520 2007-02-13  Richard Henderson  <rth@redhat.com>
9521
9522         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
9523         remove flags clobber.
9524         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
9525         (bswaphi_lowpart): New.
9526         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
9527         remove TARGET_BSWAP test.  Delete expander of the same name.
9528
9529         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
9530         (expand_unop): Use them.
9531
9532 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
9533
9534         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
9535         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
9536         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
9537         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
9538         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
9539         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
9540         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
9541         assembler dialect choice from asm templates.
9542
9543 2007-02-12  Richard Henderson  <rth@redhat.com>
9544
9545         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
9546         (fixuns_trunc<SSEMODEF>si2): Use it.
9547         * config/i386/sse.md (vec_setv4sf_0): Export.
9548         * config/i386/i386.c (ix86_build_const_vector): Export.
9549         (ix86_split_convert_uns_si_sse): Rename from
9550         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
9551         * config/i386/i386-protos.h: Update.
9552
9553 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9554
9555         PR c/29521
9556         * c-typeck.c (c_finish_return): Improve warning message.
9557
9558 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9559
9560         * alias.c (find_symbolic_term): Delete unused function.
9561
9562 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
9563
9564         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
9565         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
9566         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
9567
9568 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
9569
9570         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
9571         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
9572         the function, temporarily point the debug interface to the null one.
9573
9574 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
9575
9576         * dwarf2out.c (round_up_to_align): New static function.
9577         (field_byte_offset): Use it to round the offset.
9578
9579 2007-02-12  Richard Henderson  <rth@redhat.com>
9580
9581         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
9582         (inswl_const): Export.
9583
9584 2007-02-12  Richard Henderson  <rth@redhat.com>
9585
9586         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
9587         result mode of the libcall, convert back to outmode.
9588
9589 2007-02-12  Roger Sayle  <roger@eyesopen.com>
9590
9591         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
9592         (bswapdi2): New define_expand to implement 32-bit implementation.
9593
9594 2007-02-12  Nick Clifton  <nickc@redhat.com>
9595
9596         * doc/invoke.texi (Overall Options): Document --help=.
9597         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
9598         (cc1_options): Pass --help= on to cc1.
9599         (display_help): Add description of --help=.
9600         (process_command): Add code to handle --help=.  Allow translated
9601         --help and --target-help switches to be passed on to compiler
9602         sub-process.
9603         (main): Remove unused if statement.
9604         * opts.c (columns): Remove.
9605         (LEFT_COLUMN): Define.
9606         (wrap_help): Add columns argument.
9607         (print_filtered_help): Change parameters to be an include bitmask,
9608         an exclude bitmask, an any bitmask and the column width.  Move the
9609         code to display the params list here.  Add code to display the
9610         status of options rather than their descriptions if the quiet flag
9611         is not active.
9612         (print_specific_help): Change parameters to be an include bitmask,
9613         an exclude bitmask and an any bitmask.  Move code to look up the
9614         column width here.  Decide upon the title for an options listing.
9615         (common_handle_options): Add code to handle --help=.  Adapt code
9616         for --help and --target-help to use the revised form of the
9617         print_specific_help function.
9618         (print_help): Delete.
9619         (print_param_help): Delete.
9620         (print_switch): Delete.
9621         * opts.h (cl_lang_count): Add prototype.
9622         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
9623         CL_MAX_OPTION_CLASS): New defines.
9624         * optc-gen.awk: Add construction of cl_lang_count.
9625         * c.opt: Add Warning attribute to warning options and Optimization
9626         attribute to optimization options.
9627         * common.opt: Likewise.
9628         Add --help=.
9629         Add -fhelp and -ftarget-help as aliases for the transformed --help
9630         and --target-help options.
9631         * opt-functions.awk: Add code to handle Warning and Optimization
9632         attributes.
9633
9634 2007-02-12  Richard Henderson  <rth@redhat.com>
9635
9636         * config/alpha/constraints.md: New file.
9637         * config/alpha/alpha.c: Include tm-constrs.h.
9638         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
9639         alpha_extra_constraint): Remove.
9640         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
9641         * config/alpha/alpha-protos.h: Update.
9642         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
9643         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
9644         (EXTRA_CONSTRAINT): Remove.
9645         * config/alpha/alpha.md: Include constraints.md.
9646         (adddi splitter): Use satisfies_constraint_*.
9647         * config/alpha/predicates.md (add_operand): Likewise.
9648         (sext_add_operand, addition_operation): Likewise.
9649
9650 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
9651
9652         PR tree-optimization/29145
9653         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
9654         in our handling of restrict qualified pointers.
9655
9656 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9657
9658         PR middle-end/7651
9659         * doc/invoke.texi (Wunused-value): Update description.
9660         (Wextra): Delete item.
9661         * opts.c (set_Wextra): Don't use the value of Wextra to set the
9662         value of Wunused-value.
9663         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
9664         (c_finish_stmt_expr): Don't check extra_warnings.
9665         (emit_side_effect_warnings): The caller is responsible to check
9666         warn_unused_value.
9667
9668 2007-02-11  Roger Sayle  <roger@eyesopen.com>
9669             Matt Thomas  <matt@3am-software.com>
9670
9671         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
9672
9673 2007-02-11  Roger Sayle  <roger@eyesopen.com>
9674
9675         * simplify-rtx.c (simplify_relational_operation_1): Optimize
9676         comparisons of POPCOUNT against zero.
9677         (simplify_const_relational_operation): Likewise.
9678
9679 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9680
9681         * doc/invoke.texi (Wextra): Delete outdated paragraph.
9682
9683 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9684
9685         * dwarf2out.c (root_type): Delete unused function.
9686
9687 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9688
9689         * genattrtab.c (contained_in_p): Delete unused function.
9690         (write_expr_attr_cache): Likewise.
9691
9692 2007-02-11  Jan Hubicka  <jh@suse.cz>
9693
9694         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
9695         previous patch.
9696
9697 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
9698
9699         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
9700         to add the REG_EQ* note.
9701         * see.c (see_merge_one_use_extension): Likewise.
9702         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
9703         turn REG_EQUAL notes into REG_EQUIV notes if the target
9704         register may have more than one set.
9705         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
9706         * gcse.c (try_replace_reg): Likewise.
9707         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
9708         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
9709         more than one REG_EQUIV note.
9710         * reload1.c (gen_reload): Use set_unique_reg_note.
9711
9712 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
9713
9714         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
9715         (ix86_builtin_conversion): New function.
9716
9717 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
9718
9719         PR target/29487
9720         * tree.h (DECL_REPLACEABLE_P): New macro.
9721         * except.c (set_nothrow_function_flags): Likewise.
9722
9723 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
9724             Ira Rosen  <irar@il.ibm.com>
9725             Dorit Nuzman  <dorit@il.ibm.com>
9726
9727         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
9728         * targhooks.c (default_builtin_vectorized_conversion): New.
9729         * targhooks.h (default_builtin_vectorized_function): New declaration.
9730         * target.h (struct vectorize): Add builtin_conversion field.
9731         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
9732         stmt_vec_info_type value.
9733         (vectorizable_conversion): New declaration.
9734         * tree-vect-analyze.c (vect_analyze_operations): Add
9735         vectorizable_conversion call.
9736         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
9737         * tree-vect-transform.c (vectorizable_conversion): New function.
9738         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
9739         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
9740         mode.
9741         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
9742         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
9743         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
9744         or ALTIVEC_BUILTIN_VCFSX.
9745
9746 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9747
9748         PR target/30634
9749         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
9750         CONST_DOUBLE and operand 0 is a hard register.
9751         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
9752         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
9753         is a hard floating-point register.
9754
9755 2007-02-10  Richard Henderson  <rth@redhat.com>
9756             Jakub Jelinek  <jakub@redhat.com>
9757             Alexandre Oliva  <aoliva@redhat.com>
9758
9759         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
9760         * builtin-types.def (BT_WORD): Make unsigned.
9761         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
9762         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
9763         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
9764         * c-decl.c (grokdeclarator): Don't error if !have_tls.
9765         * c-parser.c (c_parser_omp_threadprivate): Likewise.
9766         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
9767         emulated tls.
9768         * expr.c (emutls_var_address): New.
9769         (expand_expr_real_1): Expand emulated tls.
9770         (expand_expr_addr_expr_1): Likewise.
9771         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
9772         * output.h (emutls_finish): Declare.
9773         * toplev.c (compile_file): Call it.
9774         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
9775         address before wrapping in CONST.
9776         * varasm.c (emutls_htab, emutls_object_type): New.
9777         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
9778         (get_emutls_object_name, get_emutls_object_type): New.
9779         (get_emutls_init_templ_addr, emutls_decl): New.
9780         (emutls_common_1, emutls_finish): New.
9781         (assemble_variable): When emulating tls, swap decls; generate
9782         constructor for the emutls objects.
9783         (do_assemble_alias): When emulating tls, swap decl and target name.
9784         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
9785         for emulated tls.
9786         * varpool.c (decide_is_variable_needed): Look at force_output.
9787         Recurse for emulated tls.
9788         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
9789         with decide_is_variable_needed.
9790         * emutls.c: New file.
9791         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
9792         tls_object for real tls.
9793
9794 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
9795
9796         PR rtl-optimization/29599
9797         * reload1.c (eliminate_regs_in_insn): Take the destination
9798         mode into account when computing the offset.
9799
9800 2007-02-09  Stuart Hastings  <stuart@apple.com>
9801             Richard Henderson  <rth@redhat.com>
9802
9803         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
9804         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
9805         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
9806         fixuns_truncdfhi2): New.
9807         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
9808         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
9809         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
9810         (floatunssidf2): Allow nonimmediate source.
9811         * config/i386/sse.md (movdi_to_sse): New.
9812         (vec_concatv2di): Drop '*'.
9813         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
9814         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
9815         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
9816         New.
9817         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
9818         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
9819         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
9820         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
9821         (ix86_build_signbit_mask): Fix decl of v, refactor to call
9822         ix86_build_const_vector.
9823         (x86_emit_floatuns): Rewrite.
9824
9825 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9826
9827         * genautomata.c (longest_path_length): Delete unused function.
9828         (struct state): Delete unused longest_path_length.
9829         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
9830         (get_free_state): Delete unused.
9831
9832 2007-02-09  Jan Hubicka  <jh@suse.cz>
9833
9834         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
9835         * doc/invoke.texi (inline-unit-growth): Update default value.
9836
9837         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
9838         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
9839         (rebuild_cgraph_edges): Likewise.
9840         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
9841         (dump_cgraph_node): Dump frequencies.
9842         (cgraph_clone_edge): Add frequency scales.
9843         (cgraph_clone_node): Add freuqnecy.
9844         * cgraph.h (cgraph_edge): Add freuqnecy argument.
9845         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
9846         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
9847         * tree-pass.h (TODO_rebuild_frequencies): New constant.
9848         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
9849         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
9850         (save_inline_function_body): Likewise.
9851         * ipa-inline.c: inluce rtl.h
9852         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
9853         (cgraph_edge_badness): Use frequencies.
9854         (cgraph_decide_recursive_inlining): Update clonning.
9855         (cgraph_decide_inlining_of_small_function): Dump frequency.
9856         * predict.c (estimate_bb_frequencies): Export.
9857         * predict.h (estimate_bb_frequencies): Declare.
9858         * tree-inline.c (copy_bb): Watch overflows.
9859         (expand_call_inline): Update call of cgraph_create_edge.
9860         (optimize_inline_calls): Use TODO flags to update frequnecies.
9861         * passes.h: Include predict.h
9862         (init_optimization_passes): Move profile ahead.
9863         (execute_function_todo): Handle TODO_rebuild_frequencies.
9864
9865 2007-02-09  Roger Sayle  <roger@eyesopen.com>
9866
9867         * config/alpha/alpha.c (emit_insxl): Force the first operand of
9868         the insbl or inswl pattern into a register.
9869
9870 2007-02-09  Roger Sayle  <roger@eyesopen.com>
9871
9872         * config/ia64/ia64.md (bswapdi2): New define_insn.
9873
9874 2007-02-09  Richard Henderson  <rth@redhat.com>
9875
9876         * config/i386/constraints.md (Ym): New constraint.
9877         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
9878         (movdi_1_rex64): Split sse and xmm general register moves from
9879         memory move alternatives.  Use conditional register constraints.
9880         (movsf_1, movdf_integer): Likewise.
9881         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
9882         (movdf_integer_rex64): New.
9883         (pushsf_rex64): Fix output constraints.
9884         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
9885         (sse2_stored): Likewise.
9886         (sse2_storeq_rex64): New.
9887         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
9888         amd and not generic.
9889         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
9890         for optimize_size.  Remove SF/DFmode hack.
9891
9892 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
9893
9894         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
9895         (bit_SSE4a): New.
9896
9897 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
9898             Richard Sandiford  <richard@codesourcery.com>
9899
9900         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
9901         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
9902         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
9903         m68k/t-mlib to tmake_file.
9904         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
9905         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
9906         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
9907         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
9908         variable is not empty, add t-$m68k_arch_family to tmake_file.
9909         Add t-mlibs to tmake_file.
9910         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
9911         * config/m68k/t-cf: New file.
9912         * config/m68k/t-m68k: Likewise.
9913         * config/m68k/t-mlibs: Likewise.
9914         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
9915         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
9916         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
9917         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
9918         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
9919         Delete.
9920         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
9921         (INSTALL_LIBGCC): Delete.
9922         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
9923         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
9924         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
9925         (M68K_MLIB_CPU): Define.
9926         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
9927         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
9928         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
9929
9930 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
9931             Richard Guenther  <rguenther@suse.de>
9932
9933         PR middle-end/23361
9934         * fold-const.c (fold_comparison): Handle obfuscated comparisons
9935         against INT_MIN/INT_MAX.
9936         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
9937         file if a loop is removed.
9938
9939 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
9940
9941         * calls.c (store_one_arg): Pass correct alignment to
9942         emit_push_insn for non-BLKmode values.
9943         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
9944         unaligned stack slot via a suitably aligned slot.
9945
9946 2007-02-08  DJ Delorie  <dj@redhat.com>
9947
9948         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
9949         warnings.
9950         (legal_subregs): Use unsigned char, make const.
9951         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
9952
9953 2007-02-08  Paul Brook  <paul@codesourcery.com>
9954
9955         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
9956         special interworking needed.
9957
9958 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
9959
9960         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
9961         conditional to __SSE2__.
9962         (Entries below should have been added to first ChangeLog
9963         entry for amdfam10 dated 2007-02-05)
9964         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
9965         defined.
9966         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
9967         defined.
9968         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
9969         defined.
9970
9971 2007-02-08  DJ Delorie  <dj@redhat.com>
9972
9973         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
9974         * config/m32c/m32c.c (legal_subregs): New.
9975         (m32c_illegal_subreg_p): New.
9976         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
9977         unsupported subregs of hard regs.
9978
9979 2007-02-08  Jan Hubicka  <jh@suse.cz>
9980
9981         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
9982         the same one; always update histograms.
9983
9984 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
9985
9986         * passes.c (init_optimization_passes): Tidy comment.
9987
9988 2007-02-08  Roger Sayle  <roger@eyesopen.com>
9989
9990         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
9991         strip zero_extend, bswap and rotates from POCOUNT's argument.
9992         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
9993         zero_extend and rotates from PARITY's argument.
9994         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
9995         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
9996         of an integer constant at compile-time.
9997
9998 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
9999
10000         PR 30562
10001         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
10002         Update all users.
10003         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
10004         users.
10005         (init_alias_info):
10006         * tree-ssa-live.c (remove_unused_locals): Do not remove
10007         TREE_ADDRESSABLE variables.
10008         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
10009         * tree-ssa-operands.c (add_virtual_operand): Remove argument
10010         FOR_CLOBBER.  Update all users.
10011         If VAR has an associated alias set, add a virtual operand for
10012         it if no alias is found to conflict with the memory reference.
10013
10014 2007-02-07  Jan Hubicka  <jh@suse.cz>
10015             Robert Kidd <rkidd@crhc.uiuc.edu>
10016
10017         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
10018
10019 2007-02-07  Ian Lance Taylor  <iant@google.com>
10020
10021         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
10022
10023 2007-02-07  Roger Sayle  <roger@eyesopen.com>
10024
10025         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
10026         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
10027         tablejumpdi, movsi_to_cr_one): Remove constraints from
10028         define_expand's match_operands.
10029
10030 2007-02-07  Roger Sayle  <roger@eyesopen.com>
10031
10032         * global.c (compute_regsets): Move declatation of "i" inside of
10033         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
10034
10035 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
10036
10037         PR c++/30703
10038         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
10039         of INDIRECT_REF <RESULT_DECL>.
10040
10041         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
10042
10043 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
10044             Kaz Kojima  <kkojima@gcc.gnu.org>
10045
10046         PR target/29746
10047         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
10048         properly.
10049         (sh_initialize_trampoline): Add parentheses to avoid a warning.
10050
10051 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
10052
10053         * doc/loop.texi: Document possibility not to perform disambiguation
10054         of loops with multiple latches.
10055         * cfgloopmanip.c (alp_enum_p): Removed.
10056         (add_loop): Handle subloops.  Use get_loop_body_with_size.
10057         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
10058         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
10059         the new forwarder block.
10060         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
10061         Handle the case latch is NULL.
10062         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg modifications
10063         when marking loop exits.
10064         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
10065         be modified.
10066         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
10067         disambiguate_loops_with_multiple_latches.
10068         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
10069         before fix_loop_structure.
10070         * cfgloop.c: Include pointer-set.h and output.h.
10071         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
10072         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
10073         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
10074         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
10075         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
10076         disambiguate_multiple_latches, get_loop_body_with_size,
10077         disambiguate_loops_with_multiple_latches): New functions.
10078         (flow_loop_dump): Dump multiple latch edges.
10079         (flow_loop_nodes_find): Handle loops with multiple latches.
10080         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
10081         (glb_enum_p): Modified.
10082         (get_loop_body): Use get_loop_body_with_size.
10083         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
10084         (AVOID_CFG_MODIFICATIONS): New constant.
10085         (disambiguate_loops_with_multiple_latches, add_loop,
10086         get_loop_body_with_size): Declare.
10087         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
10088
10089 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
10090
10091         PR inline-asm/28686
10092         * global.c (compute_regsets): New function.
10093         (global_alloc): Refactored ELIMINABLE_REGSET
10094         and NO_GLOBAL_ALLOC_REGS computation out.
10095         (rest_of_handle_global_alloc): Call compute_regsets()
10096         for non-optimizing case.
10097
10098 2007-02-06  Richard Henderson  <rth@redhat.com>
10099
10100         * config/i386/constraints.md (Y2): Rename from Y.
10101         (Yi): New constraint.
10102         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
10103         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
10104         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
10105         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
10106         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
10107         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
10108         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
10109         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
10110         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
10111         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
10112         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
10113         vec_extractv2si_1): Change Y constraints to Y2.
10114         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
10115         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
10116         Change Y constraints to Y2.
10117         (sse2_loadld): Change Y constraints to x.
10118
10119 2007-02-06  Roger Sayle  <roger@eyesopen.com>
10120
10121         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
10122         (parity<mode>2): New define_expand using rs6000_emit_parity.
10123         * config/rs6000/rs6000.c (rs6000_emit_popcount,
10124         rs6000_emit_parity): New functions.
10125         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
10126         rs6000_emit_parity): Prototype here.
10127
10128 2007-02-06  Ian Lance Taylor  <iant@google.com>
10129
10130         * lower-subreg.c (simple_move_operand): Reject CONST.
10131         (resolve_clobber): Call validate_change rather than directly
10132         assigning to XEXP (pat, 0).
10133
10134 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
10135
10136         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
10137         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
10138         (tree-cfg.o): Remove hashtab.h dependency.
10139
10140         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
10141         (struct ivopts_data): Change niters to pointer_map_t.
10142         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
10143         (niter_for_exit): Create pointer_map on demand.  Change for
10144         pointer_map API.
10145         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
10146         (free_loop_data): Destroy data->niters if created and reset field.
10147         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
10148         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
10149
10150         * tree-ssa-reassoc.c: Include pointer-set.h.
10151         (bb_rank): Change to long *.
10152         (operand_rank): Change to pointer_map_t.
10153         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
10154         (insert_operand_rank): Accept long.
10155         (operand_entry_hash, operand_entry_eq): Remove.
10156         (get_rank): Return long.  Adjust for changes above.
10157         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
10158         and operand_rank.
10159         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
10160
10161         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
10162         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
10163         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
10164         is not NULL.
10165         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
10166         directly since it cannot be NULL.
10167         (get_vi_for_tree): Rewrite for pointer_map API.
10168         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
10169         (init_alias_vars): Create vi_for_tree as pointer_map.
10170         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
10171
10172         * tree-cfg.c: Don't include hashtab.h.
10173         (edge_to_cases): Declare as pointer_map.
10174         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
10175         Delete.
10176         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
10177         (start_recording_case_labels): Create edge_to_cases as pointer_map.
10178         (end_recoding_case_labels): Cleanup edge_to_cases manually before
10179         destroying it.
10180         (record_switch_edge): Delete.
10181         (get_cases_for_edge): Adjust for pointer_map API, inline
10182         record_switch_edge (rewritten for new API), remove goto.
10183
10184 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
10185
10186         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
10187         * tree-nested.c: Include pointer-set.h.
10188         (var_map_elt, var_map_eq, var_map_hash): Delete.
10189         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
10190         to pointer_map_t's.
10191         (nesting_info_bitmap_obstack): New.
10192         (lookup_field_for_decl): Adjust for pointer_map API.
10193         (lookup_tramp_for_decl): Adjust for pointer_map API.
10194         (get_nonlocal_debug_decl): Adjust for pointer_map API.
10195         (get_local_debug_decl): Adjust for pointer_map API.
10196         (convert_nl_goto_reference): Adjust for pointer_map API.
10197         (convert_nl_goto_receiver): Adjust for pointer_map API.
10198         (create_nesting_tree): Create outside GGC space.  Create bitmap on
10199         the new obstack.  Create field_map and var_map as pointer_maps.
10200         (free_nesting_tree): Adjust for changes to create_nesting_tree.
10201         (root): Delete.
10202         (lower_nested_functions): Move root here, no need to NULL it.
10203         Initialize and release the obstack.
10204
10205 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
10206
10207         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
10208         Remove prototypes and make them non-static.
10209         (struct tree_int_map): Remove.
10210         * tree.h (struct tree_int_map): Move here, turning TO into an
10211         unsigned int.
10212         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
10213
10214         * tree.h (TREE_COMPLEXITY): Remove.
10215         (struct tree_exp): Remove complexity field.
10216         * tree.c (build1_stat): Don't set it.
10217
10218 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
10219             Victor Kaplansky  <victork@il.ibm.com>
10220
10221         * tree-vectorizer.c (vect_is_simple_use): Support induction.
10222         (vect_is_simple_reduction): Support reduction with induction as
10223         one of the operands.
10224         (vect_is_simple_iv_evolution): Fix formatting.
10225         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
10226         formatting.  Don't mark induction phis for vectorization.
10227         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
10228         * tree-vect-transform.c (get_initial_def_for_induction): New function.
10229         (vect_get_vec_def_for_operand): Support induction.
10230         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
10231         induction case.
10232         (vectorizable_reduction): Support reduction with induction as one of
10233         the operands.
10234         (vectorizable_type_demotion): Use def-type of stmt argument rather
10235         than dummy def-type.
10236
10237         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
10238         flag_tree_scev_cprop.
10239         * common.opt (tree-scev-cprop): New flag.
10240
10241         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
10242         call to vect_get_new_vect_var.
10243
10244 2007-02-06  Ira Rosen  <irar@il.ibm.com>
10245
10246         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
10247         vectype is not NULL.
10248         (vect_pattern_recog_1): Likewise.
10249
10250 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10251
10252         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
10253         (fold_negate_expr): Likewise.
10254
10255 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
10256
10257         PR debug/30189
10258         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
10259         even if cv-qualification is the same.
10260
10261 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
10262
10263         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
10264         __enable_execute_stack on completion.
10265
10266 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
10267
10268         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
10269         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
10270         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
10271         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
10272         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
10273         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
10274         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
10275         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
10276
10277 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
10278
10279         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
10280         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
10281         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
10282         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
10283         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
10284         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
10285         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
10286         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
10287         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
10288         umuldi3_highpart_rex64, umulsi3_highpart_insn,
10289         umulsi3_highpart_zext, smuldi3_highpart_rex64,
10290         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
10291         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
10292         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
10293         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
10294         sqrtextenddfxf2_i387): Added amdfam10_decode.
10295
10296         * config/i386/athlon.md (athlon_idirect_amdfam10,
10297         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
10298         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
10299         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
10300         athlon_ivector_store_amdfam10): New define_insn_reservation.
10301         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
10302         amdfam10.
10303
10304 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
10305
10306         * config/i386/athlon.md (athlon_call_amdfam10,
10307         athlon_pop_amdfam10, athlon_lea_amdfam10): New
10308         define_insn_reservation.
10309         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
10310         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
10311         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
10312
10313 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
10314
10315         * config/i386/athlon.md (athlon_sseld_amdfam10,
10316         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
10317         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
10318
10319 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
10320
10321         * config/i386/athlon.md (athlon_sseins_amdfam10): New
10322         define_insn_reservation.
10323         * config/i386/i386.md (sseins): Added sseins to define_attr type
10324         and define_attr unit.
10325         * config/i386/sse.md: Set type attribute to sseins for insertq
10326         and insertqi.
10327
10328 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
10329
10330         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
10331         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
10332         ssecomi_load_amdfam10, ssecomi_amdfam10,
10333         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
10334         define_insn_reservation.
10335         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
10336
10337 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
10338
10339         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
10340         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
10341         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
10342         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
10343         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
10344         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
10345         define_insn_reservation.
10346
10347         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
10348         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
10349         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
10350         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
10351         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
10352
10353 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
10354
10355         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
10356         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
10357         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
10358         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
10359         athlon_ssemul_load_k8): Added amdfam10.
10360
10361 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
10362
10363         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
10364         (x86_sse_unaligned_move_optimal): New variable.
10365
10366         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
10367         m_AMDFAM10.
10368         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
10369         for unaligned vector SSE double/single precision loads for AMDFAM10.
10370
10371 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
10372
10373         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
10374         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
10375         Define TARGET_CPU_DEFAULT_amdfam10.
10376         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
10377         (processor_type): Add PROCESSOR_AMDFAM10.
10378
10379         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
10380         processor_type in config/i386/i386.h.
10381         Enable imul peepholes for TARGET_AMDFAM10.
10382
10383         * config.gcc: Add support for --with-cpu option for amdfam10.
10384
10385         * config/i386/i386.c (amdfam10_cost): New variable.
10386         (m_AMDFAM10): New macro.
10387         (m_ATHLON_K8_AMDFAM10): New macro.
10388         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
10389         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
10390         x86_promote_QImode, x86_integer_DFmode_moves,
10391         x86_partial_reg_dependency, x86_memory_mismatch_stall,
10392         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
10393         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
10394         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
10395         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
10396         Enable/disable for amdfam10.
10397         (override_options): Add amdfam10_cost to processor_target_table.
10398         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
10399         processor_alias_table.
10400         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
10401         (ix86_adjust_cost): Add code for amdfam10.
10402
10403 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
10404
10405         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
10406         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
10407         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
10408         * config/i386/i386.h: Add builtin definition for SSE4A.
10409         * config/i386/i386.md: Add support for ABM instructions
10410         (popcnt and lzcnt).
10411         * config/i386/sse.md: Add support for SSE4A instructions
10412         (movntss, movntsd, extrq, insertq).
10413         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
10414         Add -march=amdfam10 flag.
10415         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
10416         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
10417         and amdfam10.
10418         * doc/extend.texi: Add documentation for SSE4A builtins.
10419
10420 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
10421
10422         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
10423
10424 2007-02-05  Richard Guenther  <rguenther@suse.de>
10425
10426         * tree-vectorizer.h (vectorizable_function): Add argument type
10427         argument, change return type.
10428         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
10429         * tree-vect-transform.c (vectorizable_function): Handle extra
10430         argument, return vectorized function decl.
10431         (build_vectorized_function_call): Remove.
10432         (vectorizable_call): Handle calls with result and argument types
10433         differing.  Handle loop vectorization factor correctly.
10434         * targhooks.c (default_builtin_vectorized_function): Adjust for
10435         extra argument.
10436         * targhooks.h (default_builtin_vectorized_function): Likewise.
10437         * target.h (builtin_vectorized_function): Add argument type
10438         argument.
10439         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
10440         extra argument, allow vectorizing of lrintf.
10441         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
10442         documentation of target hook.
10443
10444 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
10445
10446         PR target/30665
10447         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
10448         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
10449         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
10450
10451 2007-02-05  Roger Sayle  <roger@eyesopen.com>
10452
10453         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
10454         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
10455         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
10456         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
10457         before canonicalizing sincos to cexpi.
10458         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
10459
10460 2007-02-05  Roger Sayle  <roger@eyesopen.com>
10461
10462         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
10463         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
10464         (alpha_init_builtins): Use alpha_add_builtins to process tables.
10465
10466 2007-02-05  Roger Sayle  <roger@eyesopen.com>
10467
10468         * mips-tfile.c (initialize_init_file): Correct endianness test.
10469
10470 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
10471
10472         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
10473         the 'y' constraint.
10474
10475 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
10476
10477         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
10478         saves in a PARALLEL before the register assignments.
10479
10480 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
10481
10482         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
10483         DWARF_FRAME_RETURN_COLUMN to be a general register.
10484         * dwarf2out.c (init_return_column_size): New function, split from...
10485         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
10486         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
10487         to be nongeneral registers.
10488         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
10489         integer registers.
10490         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
10491         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
10492
10493 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
10494
10495         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
10496
10497 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
10498
10499         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
10500         (remove_path): Use can_remove_branch_p and remove_branch instead
10501         of loop_delete_branch_edge.
10502         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
10503         (tree_transform_and_unroll_loop): Remove dead branches immediately.
10504         Update profile using scale_dominated_blocks_in_loop.
10505         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
10506         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
10507         (can_remove_branch_p, remove_branch): Declare.
10508         * tree-cfg.c (tree_can_remove_branch_p): New function.
10509         (tree_cfg_hooks): Add tree_can_remove_branch_p.
10510         * cfgrtl.c (rtl_can_remove_branch_p): New function.
10511         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
10512
10513 2007-02-05  Jan Hubicka  <jh@suse.cz>
10514
10515         PR middle-end/30696
10516         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
10517         nodes in cgraph, don't remove offline copy of the function.
10518
10519 2007-02-04  Jan Hubicka  <jh@suse.cz>
10520
10521         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
10522         vectors might cause maybe_lookup_element_for_expr to be called
10523         on non-sra-candidate.
10524
10525 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
10526
10527         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
10528         config/bfin/bfin.md, config/bfin/predicates.md: Follow
10529         spelling conventions.
10530
10531 2007-02-04  Richard Guenther  <rguenther@suse.de>
10532
10533         PR middle-end/30636
10534         * fold-const.c (try_move_mult_to_index): Make sure to not
10535         overflow one dimension of a multi-dimensional array access.
10536
10537 2007-02-04  Jan Hubicka  <jh@suse.cz>
10538
10539         * passes.c (init_optimization_passes): Reindent.
10540
10541 2007-02-04  Jan Hubicka  <jh@suse.cz>
10542             Eric Botcazou  <ebotcazou@adacore.com>
10543
10544         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
10545         (execute_fixup_cfg): Break out the abnormal goto code.
10546         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
10547         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
10548         (optimize_inline_calls): Call make_nonlocal_label_edges.
10549
10550 2007-02-04  Jan Hubicka  <jh@suse.cz>
10551
10552         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
10553         true when something was changed.
10554         (rename_ssa_copies): When something was changed, do
10555         TODO_remove_unused_locals.
10556         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
10557         add TODO_remove_unused_locals when instruction was removed.
10558
10559 2007-02-04  Jan Hubicka  <jh@suse.cz>
10560
10561         * ipa-inline.c (try_inline): Improve debug output; work on already
10562         inline edges too.
10563         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
10564         call try_inline for already inlined edges too when flattening;
10565         inline also functions that make callee growth but overall unit size
10566         reduce.
10567
10568 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
10569
10570         * config/m32c/bitops.md, config/m32c/jump.md,
10571         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
10572         config/m32r/m32r.h, config/m32r/m32r.md,
10573         config/m32r/predicates.md, config/m68hc11/larith.asm,
10574         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
10575         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
10576         config/mips/mips-protos.h, config/mips/mips.c,
10577         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
10578         config/mn10300/mn10300.h, config/mn10300/predicates.md,
10579         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
10580         spelling conventions.
10581
10582         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
10583         Follow spelling conventions.
10584
10585 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
10586
10587         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
10588         warn about C++0x compatibility.
10589
10590 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
10591
10592         * config/h8300/h8300.c, config/h8300/h8300.h,
10593         config/h8300/h8300.md: Follow spelling conventions.
10594
10595 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
10596
10597         PR middle-end/30667
10598         * combine.c (try_combine): Do not substitute source operand
10599         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
10600
10601 2007-02-03  Jan Hubicka  <jh@suse.cz>
10602
10603         PR gcov-profile/30650
10604         * value-prof.c (stringop_block_profile): Fix handling of size counter;
10605         do not divide by zero for never executed counters.
10606         (tree_find_values_to_profile): Fix counters.
10607         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
10608
10609 2007-02-03  Ian Lance Taylor  <iant@google.com>
10610
10611         * lower-subreg.c (simple_move_operand): New static function,
10612         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
10613         operands.
10614         (simple_move): Call simple_move_operand.
10615         (find_decomposable_subregs): Add special handling of MEMs.
10616         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
10617         meaning of return value.  If we see a hard register, test whether
10618         it can store a word_mode value.  Change all callers.
10619
10620 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10621
10622         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
10623         ftrapv insns and expanders.
10624         (subdi3): Change define_expand operand 1 to arith11_operand, and
10625         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
10626         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
10627         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
10628         respectively.
10629
10630         PR middle-end/30174
10631         * varasm.c (notice_global_symbol): Treat global objects as weak when
10632         flag_shlib is true.
10633
10634 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10635
10636         * emit-rtl.c (dconstpi): Delete.
10637         (dconstsqrt2): New.
10638         (init_emit_once): Delete dconstpi and init dconstsqrt2.
10639         * real.h (dconstpi): Delete.
10640         (dconstsqrt2): New.
10641         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
10642         (fold_builtin_hypot): Likewise.
10643
10644 2007-02-03  Tom Tromey  <tromey@redhat.com>
10645
10646         PR driver/30246
10647         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
10648         -gcoff3, -gxcoff3, -gvms3 implies -dD.
10649
10650 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
10651
10652         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
10653         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
10654         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
10655         config/rs6000/cell.md, config/rs6000/darwin.h,
10656         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
10657         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
10658         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
10659         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
10660         typos.  Follow spelling conventions.
10661         * doc/invoke.texi: Follow spelling conventions.
10662
10663 2007-02-03  Roger Sayle  <roger@eyesopen.com>
10664
10665         * simplify-rtx.c (simplify_relational_operation_1): Implement some
10666         canonicalization transformations that attempt to simplify integer
10667         constant comparisons to become comparisons against zero.
10668
10669 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10670
10671         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
10672         fabs(x)*sqrt(2).
10673         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
10674         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
10675
10676 2007-02-02  Mike Stump  <mrs@apple.com>
10677
10678         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
10679         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
10680         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
10681         generate a branch island.
10682
10683 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
10684
10685         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
10686         (xtensa_legitimate_address_p): New.
10687         (xtensa_legitimize_address): New.
10688         (xtensa_output_addr_const_extra): New.
10689         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
10690         (BASE_REG_P): New.
10691         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
10692         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
10693         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
10694         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
10695         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
10696         (xtensa_legitimize_address): New.
10697         (xtensa_output_addr_const_extra): New.
10698
10699 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
10700
10701         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
10702
10703 2007-02-02  Ian Lance Taylor  <iant@google.com>
10704
10705         * expmed.c (expand_divmod): Add comment.
10706
10707 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
10708
10709         * emit-rtl.c (renumber_insns): Remove.
10710         * flags.h: Remove the extern for flag_renumber_insns.
10711         * rtl.h: Remove the prototype for renumber_insns.
10712         * toplev.c (flag_renumber_insns): Remove.
10713
10714 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
10715
10716         Revert for x86 darwin:
10717         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
10718
10719         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
10720         code before the following patch under TARGET_MACHO.
10721         (ix86_function_value_regno_p): Likewise.
10722
10723 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10724
10725         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
10726         COMPLEX_EXPR.
10727
10728 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
10729
10730         PR target/29682
10731         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory loads to
10732         general or fp registers.  Add comments.
10733         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
10734
10735 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
10736
10737         * pointer-set.c (insert_aux): Only return insertion slot.
10738         (pointer_set_insert): Adjust.
10739         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
10740         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
10741         pointer_map_traverse): New.
10742         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
10743         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
10744         pointer_map_contains, pointer_map_traverse): Declare.
10745
10746 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
10747
10748         PR middle-end/30473
10749         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
10750         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
10751
10752 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
10753
10754         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
10755
10756         (struct _dep): New type.
10757         (dep_t): New typedef.
10758         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
10759         (DEP_STATUS): New access macro.  The macro with the same name was
10760         renamed to DEP_LINK_STATUS.
10761         (dep_init): Declare function
10762
10763         (struct _dep_link): New type.
10764         (dep_link_t): New typedef.
10765         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
10766         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
10767         (DEP_LINK_STATUS): New macro.
10768         (debug_dep_links): New debug function.
10769
10770         (struct _deps_list): New type.
10771         (deps_list_t): New typedef.
10772         (DEPS_LIST_FIRST): New access macro.
10773         (FOR_EACH_DEP_LINK): New cycle macro.
10774         (create_deps_list, free_deps_list, delete_deps_list): Declare
10775         functions.
10776         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
10777         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
10778         (copy_deps_list_change_con): Ditto.
10779
10780         (move_dep_link): Declare function.
10781
10782         (struct _dep_node): New type.
10783         (dep_node_t): New typedef.
10784         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
10785
10786         (struct haifa_insn_data.back_deps): New field to hold backward
10787         dependencies of the insn.
10788         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
10789         to deps_list_t.
10790         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
10791         Change its type to deps_list_t.
10792         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
10793         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
10794         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
10795
10796         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
10797
10798         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
10799
10800         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration and
10801         all callers.
10802         (dep_cost): Declare.
10803
10804         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
10805         (ds_to_dk, dk_to_ds): New functions.
10806
10807         (init_dep_1): New static function.
10808         (init_dep): New function.
10809         (copy_dep): New static function.
10810
10811         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
10812         functions.
10813         (detach_dep_link): New static function.
10814         (move_dep_link): New function.
10815
10816         (dep_links_consistent_p, dump_dep_links): New static functions.
10817         (debug_dep_links): New debugging function.
10818
10819         (deps_obstack, dl_obstack, dn_obstack): New static variables.
10820
10821         (alloc_deps_list, init_deps_list): New static functions.
10822         (create_deps_list): New function.
10823         (clear_deps_list): New static function.
10824         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
10825         (deps_list_consistent_p, dump_deps_list): New static functions.
10826         (debug_deps_list): New function.
10827         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
10828         functions.
10829         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
10830
10831         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
10832         use new scheduler dependencies lists.
10833         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
10834         (sched_analyze): Ditto.  Initialize dependencies lists.
10835         (add_forw_dep, compute_forward_dependences): Update to use new
10836         scheduler dependencies lists.
10837
10838         (init_dependency_caches): Init deps_obstack.
10839         (free_dependency_caches): Free deps_obstack.
10840
10841         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
10842         new scheduler dependencies lists.
10843         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
10844         (add_back_forw_dep, delete_back_forw_dep): Ditto.
10845
10846         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
10847         Update to use new scheduler dependencies lists.
10848         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
10849         (debug_dependencies): Ditto.
10850         (schedule_region): Update comments.
10851
10852         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
10853         scheduler dependencies lists.
10854         (schedule_ebb): Update comments.
10855
10856         * rtl.def (DEPS_LIST): Remove.
10857
10858         * lists.c (unused_deps_list): Remove.
10859         (free_list): Update assertions.
10860
10861         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
10862         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
10863
10864         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
10865         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
10866
10867         * haifa-sched.c (comments): Update.
10868         (insn_cost1): Remove.  Inline the code into insn_cost ().
10869         (insn_cost): Update to use new scheduler dependencies lists.  Move
10870         processing of the dependency cost to dep_cost ().
10871         (dep_cost): New function.  Use it instead of insn_cost () when
10872         evaluating cost of the dependency.  Use compatible interface to
10873         interact with the target.
10874         (priority): Update to use new scheduler dependencies lists.
10875         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
10876         with greater number of insns that depend on the insn.
10877         (schedule_insn): Update to use new scheduler dependencies lists.  Add
10878         code to free backward dependencies lists.  Inline and optimize code
10879         from resolve_dep () - see PR28071.
10880         (ok_for_early_queue_removal): Update to use new scheduler dependencies
10881         lists.  Update call to targetm.sched.is_costly_dependence hook.
10882
10883         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
10884         scheduler dependencies lists.
10885
10886         (resolve_dep): Remove.  Move the logic to schedule_insn ().
10887         (init_h_i_d): Initialize dependencies lists.
10888
10889         (process_insn_depend_be_in_spec): Rename to
10890         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
10891         dependencies lists.
10892         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
10893         Update to use new scheduler dependencies lists.
10894         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
10895
10896         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
10897         new scheduler dependencies lists.
10898         (build_intra_loop_deps): Ditto.
10899
10900         * target.h (struct _dep): Declare to use in
10901         gcc_target.sched.is_costly_dependence.
10902         (struct gcc_target.sched.adjust_cost): Fix typo.
10903         (struct gcc_target.sched.is_costly_dependence): Change signature to use
10904         single dep_t parameter instead of an equivalent triad.
10905         (struct gcc_target.sched.adjust_cost_2): Remove.
10906
10907         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
10908
10909         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
10910
10911         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
10912         documentation.
10913         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
10914
10915         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
10916         (REG_DEP_TRUE): Document.
10917
10918         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
10919         Change signature to correspond to the targetm.sched.adjust_cost hook.
10920         Update use in TARGET_SCHED_ADJUST_COST_2.
10921         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
10922         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
10923         new scheduler dependencies lists.
10924         (ia64_gen_check): Ditto.
10925
10926         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new scheduler
10927         dependencies lists.
10928
10929         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
10930         signature to correspond to the targetm.sched.is_costly_dependence hook.
10931         (is_costly_group): Update to use new scheduler dependencies lists.
10932
10933         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
10934         instead of INSN_COST () macro.
10935
10936 2007-02-01  Ian Lance Taylor  <iant@google.com>
10937
10938         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
10939
10940 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
10941
10942         * pa.md (tp_load): Correct mfctl instruction syntax.
10943
10944 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
10945
10946         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
10947         altivec_padding_size calculation on AIX.  Improve comment, add
10948         assert to verify that it's right.
10949
10950         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
10951         64-bit.
10952
10953 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
10954
10955         PR inline-asm/28686
10956         * global.c (global_alloc): Add mising initialization of
10957         ELIMINABLE_REGSET.
10958
10959 2007-02-01  Roger Sayle  <roger@eyesopen.com>
10960
10961         * alias.c (init_alias_analysis): Correct whitespace.
10962         * bb-reorder.c (fix_edges_for_rarely_executed_code,
10963         partition_hot_cold_basic_blocks): Likewise.
10964         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
10965         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
10966         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
10967         fold_builtin_snprintf_chk, fold_builtin_printf,
10968         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
10969         do_mpfr_arg3, do_mpfr_sincos): Likewise.
10970         * cfgcleanup.c (cleanup_cfg): Likewise.
10971         * cfgexpand.c (tree_expand_cfg): Likewise.
10972         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
10973         * function.c (get_next_funcdef_no): Likewise.
10974         * gengtype.c (main): Likewise.
10975         * genmodes.c (main): Likewise.
10976         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
10977         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
10978         * ifcvt.c (noce_emit_move_insn): Likewise.
10979         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
10980         Likewise.
10981         * stor-layout.c (get_best_mode): Likewise.
10982         * tree-ssa-loop-niter.c (get_val_for): Likewise.
10983         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
10984         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
10985         perform_var_substitution, solve_graph): Likewise.
10986         * tree-vrp.c (vrp_finalize): Likewise.
10987
10988 2007-02-01  Ian Lance Taylor  <iant@google.com>
10989
10990         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
10991         high part of a paradoxical subreg, return a constant zero.
10992
10993 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
10994
10995         * toplev.c (lang_dependent_init): Call init_set_costs.
10996         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
10997
10998 2007-02-01  Richard Guenther  <rguenther@suse.de>
10999
11000         PR middle-end/30656
11001         * fold-const.c (fold_negate_expr): Allow negating a
11002         constant if overflow does not change.
11003
11004 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11005
11006         * doc/c-tree.texi (Expression trees): Improve markup.
11007         * doc/tm.texi (Register Classes, Addressing Modes)
11008         (Floating Point): Fix spacing after abbreviations.  Fix some
11009         typos.
11010
11011 2007-02-01  Ben Elliston  <bje@au.ibm.com>
11012
11013         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
11014         * doc/contrib.texi: Likewise.
11015         * doc/install.texi: Likewise.
11016
11017 2007-01-31  Richard Henderson  <rth@redhat.com>
11018             Ian Lance Taylor  <iant@google.com>
11019
11020         * lower-subreg.c: New file.
11021         * rtl.def (CONCATN): Define.
11022         * passes.c (init_optimization_passes): Add pass_lower_subreg and
11023         pass_lower_subreg2.
11024         * emit-rtl.c (update_reg_offset): New static function, broken out
11025         of gen_rtx_REG_offset.
11026         (gen_rtx_REG_offset): Call update_reg_offset.
11027         (gen_reg_rtx_offset): New function.
11028         * regclass.c: Revert patch of 2006-03-05, restoring
11029         reg_scan_update.
11030         (clear_reg_info_regno): New function.
11031         * dwarf2out.c (concatn_loc_descriptor): New static function.
11032         (loc_descriptor): Handle CONCATN.
11033         * common.opt (fsplit_wide_types): New option.
11034         * opts.c (decode_options): Set flag_split_wide_types when
11035         optimizing.
11036         * timevar.def (TV_LOWER_SUBREG): Define.
11037         * rtl.h (gen_reg_rtx_offset): Declare.
11038         (reg_scan_update): Declare.
11039         * regs.h (clear_reg_info_regno): Declare.
11040         * tree-pass.h (pass_lower_subreg): Declare.
11041         (pass_lower_subreg2): Declare.
11042         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
11043         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
11044         -fsplit-wide-types.
11045         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
11046         * Makefile.in (OBJS-common): Add lower-subreg.o.
11047         (lower-subreg.o): New target.
11048
11049 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
11050
11051         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
11052
11053 2007-01-31  Anatoly Sokolov <aesok@post.ru>
11054
11055         PR target/19087
11056         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
11057
11058 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11059
11060         PR middle-end/29335
11061         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
11062
11063 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
11064
11065         * cfgloop.h: Include vec-prim.h.
11066         (enum li_flags): Remove LI_ONLY_OLD.
11067         (loop_iterator): Changed.
11068         (fel_next, fel_init): Iterate over loop tree.
11069         (FOR_EACH_LOOP_BREAK): New macro.
11070         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
11071         FOR_EACH_LOOP.
11072         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
11073         * modulo-sched.c (sms_schedule): Ditto.
11074         * tree-vectorizer.c (vectorize_loops): Ditto.
11075         * doc/loop.texi: Update information on loop numbering and behavior of
11076         FOR_EACH_LOOP wrto new loops.
11077         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
11078         add_to_evolution_1): Test nestedness of loops instead of comparing
11079         their numbers.
11080         * tree-chrec.c (chrec_fold_plus_poly_poly,
11081         chrec_fold_multiply_poly_poly, chrec_evaluate,
11082         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
11083         reset_evolution_in_loop): Ditto.
11084         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
11085
11086 2007-01-31  Dirk Mueller  <dmueller@suse.de>
11087
11088         * c-common.c (warn_about_parentheses): Separate warning about
11089         un-parenthized sequence of comparison operators from the one
11090         which is supposed to warn about x <= y <= z.
11091
11092 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
11093
11094         * optabs.h (enum optab_index): Add new OTI_isinf.
11095         (isinf_optab): Define corresponding macro.
11096         * optabs.c (init_optabs): Initialize isinf_optab.
11097         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
11098         patterns.
11099         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
11100         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
11101         using isinf_optab.
11102         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
11103         expand_builtin_interclass_mathfn.
11104         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
11105         * config/i386/i386.md (UNSPEC_FXAM): New constant.
11106         (fxam<mode>2_i387): New insn pattern.
11107         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
11108         built-in functions as x87 inline asm.
11109
11110 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
11111
11112         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
11113
11114 2007-01-30  Eric Christopher  <echristo@apple.com>
11115
11116         * config.gcc: Add geode.
11117
11118 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
11119
11120         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
11121         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
11122         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
11123         value-prof.c: Fix comment typos.
11124
11125 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11126
11127         PR c++/24745
11128         * doc/invoke.texi (Wpointer-arith): Document warning.
11129
11130 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
11131
11132         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
11133         the list of discrepancies from the draft TR.
11134
11135 2007-01-30  Dirk Mueller  <dmueller@suse.de>
11136
11137         PR c++/30601
11138         * doc/invoke.texi (-Wreturn-type): Update description to
11139         match new behavior.
11140
11141 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
11142
11143         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
11144
11145 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
11146
11147         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
11148         to handle optabs that operate on floating point input argument and
11149         output to integer output.
11150         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
11151         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
11152         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
11153         expand_builtin_interclass_mathfn ().
11154         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
11155         (ilogbsi2): Remove.
11156         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
11157         ilogbl built-in functions as x87 intrinsics.
11158
11159 2007-01-30  Richard Guenther  <rguenther@suse.de>
11160
11161         PR middle-end/27657
11162         * dwarf2out.c (reference_to_unused): Query varpool if the
11163         variable was output.
11164
11165 2007-01-30  Richard Guenther  <rguenther@suse.de>
11166
11167         PR middle-end/30313
11168         * passes.c (execute_one_pass): Reset in_gimple_form to not
11169         confuse non-unit-at-a-time mode.
11170
11171 2007-01-29  Roger Sayle  <roger@eyesopen.com>
11172             Richard Guenther  <rguenther@suse.de>
11173
11174         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
11175         avoid undefined behaviour on overflow.  Use force_fit_type_double
11176         to construct the constant with the specified TREE_OVERFLOW.
11177
11178 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
11179
11180         * config/dfp-bit.c: Add parameterized support for fp exceptions.
11181         * config/dfp-bit.h: Ditto.
11182
11183 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11184
11185         * c-decl.c (pop_scope): Replace warnings with call to
11186         warn_for_unused_label.
11187         * c-common.h (warn_for_unused_label): Declare.
11188         * c-common.c (warn_for_unused_label): Define.
11189
11190 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11191
11192         * tree-optimize.c (update_inlined_to_pointers): Delete unused
11193         function.
11194
11195 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
11196
11197         * Makefile.in (USER_H): Remove decfloat.h.
11198         * ginclude/decfloat.h: Delete, moving contents to ...
11199         * ginclude/float.h: Add support for decimal floating point,
11200         guarded by __STDC_WANT_DEC_FP__.
11201
11202 2007-01-29  Mike Stump  <mrs@apple.com>
11203
11204         * doc/gccint.texi (Top): Rename Loop Representation to Loop
11205         Analysis and Representation to resolve case insensitive conflict.
11206         * doc/loop.texi (Loop Analysis and Representation): Likewise.
11207
11208 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
11209
11210         * tree.h (struct tree_memory_tag): Add aliases member.
11211         (MTAG_ALIASES): New macro.
11212         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
11213         (add_may_alias): Remove pointer-set. Update for may_aliases being
11214         a bitmap.
11215         (mark_aliases_call_clobbered): Update for may_aliases being a
11216         bitmap.
11217         (compute_tag_properties): Ditto.
11218         (create_partition_for): Ditto.
11219         (compute_memory_partitions): Ditto.
11220         (dump_may_aliases_for): Ditto.
11221         (is_aliased_with): Ditto.
11222         (add_may_alias_for_new_tag): Ditto.
11223         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
11224         (compute_is_aliased): New function.
11225         (compute_may_aliases): Call compute_is_aliased).
11226         (init_alias_info): Initialize alias_bitmap_obstack.
11227         (union_alias_set_into): New function.
11228         (compute_flow_sensitive_aliasing): Use union_aliases_into.
11229         (have_common_aliases_p): Rewrite to take two bitmaps and use
11230         intersection.
11231         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
11232         Update for bitmaps.
11233         (finalize_ref_all_pointers): Update for add_may_alias changes.
11234         (new_type_alias): Ditto.
11235         * tree-flow-inline.h (may_aliases): Return a bitmap.
11236         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
11237         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
11238         may_aliases being a bitmap.
11239         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
11240         may_aliases now returns a bitmap.
11241         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
11242         being a bitmap.
11243         * tree-ssa-operands.c (add_virtual_operand): Update for
11244         may_aliases being a bitmap.
11245
11246 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
11247
11248         PR tree-optimization/30630
11249         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
11250         variable as changed.
11251
11252 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
11253
11254         PR c++/28266
11255         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
11256         expanded only once even if an error occurs.
11257
11258 2007-01-29  Ben Elliston  <bje@au.ibm.com>
11259
11260         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
11261         (__gcov_average_profiler): Likewise.
11262         (__gcov_ior_profiler): Likewise.
11263         (__gcov_merge_ior): Likewise.
11264
11265 2007-01-28  Jan Hubicka  <jh@suse.cz>
11266
11267         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
11268         * value-prof.c (stringop_block_profile): Likewise.
11269
11270 2007-01-28  Jan Hubicka  <jh@suse.cz>
11271
11272         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall): Add
11273         variant handling histograms; add wrapper.
11274         (clear_storage_via_libcall): Export.
11275         (emit_block_move_hints): Break out from ...; add histograms.
11276         (emit_block_move): ... this one.
11277         (clear_storage_hints): Break out from ...; add histograms.
11278         (clear_storage): ... this one.
11279         (set_storage_via_memset): Handle histogram.
11280         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
11281         (clear_storage_hints, clear_storage_via_libcall): Declare.
11282         (set_storage_via_setmem): Update prototype.
11283         * doc/md.texi (movmem, setmem): Document new arguments.
11284
11285         * value-prof.c (dump_histogram_value, tree_find_values_to_profile): Add
11286         new histograms.
11287         (stringop_block_profile): New global function.
11288         (tree_stringops_values_to_profile): Profile block size and alignment.
11289         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
11290         HIST_TYPE_IOR.
11291         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
11292         (stringop_block_profile): Declare.
11293         * builtins.c: Include value-prof.h.
11294         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
11295         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
11296         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
11297         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
11298         * profile.c (instrument_values): Add new counters.
11299         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
11300         calls.
11301         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
11302         (tree_init_edge_profiler): Build new profilers.
11303         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
11304         (pass_tree_profile): Add dump.
11305         (tree_profile_hooks): Update.
11306         * Makefile.in (LIBGCOV): Add new constants.
11307         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
11308         __gcov_ior_profiler): New.
11309         * i386.md (movmem/setmem expanders): Add new optional arguments.
11310
11311 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
11312
11313         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
11314
11315 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
11316
11317         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
11318         (tree_unswitch_single_loop): Pass eni_size_weights to
11319         tree_num_loop_insns.
11320         * tree-ssa-loop-manip.c: Include tree-inline.h.
11321         (can_unroll_loop_p): Pass eni_size_weights to
11322         tree_num_loop_insns.
11323         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
11324         Pass eni_size_weights to estimate_num_insns.
11325         * tree.h (init_inline_once): Export.
11326         * toplev.c (backend_init): Call init_inline_once.
11327         * cgraphunit.c (cgraph_process_new_functions,
11328         cgraph_analyze_function): Pass eni_inlining_weights to
11329         estimate_num_insns.
11330         * ipa-inline.c (compute_inline_parameters): Ditto.
11331         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
11332         to estimate_num_insns.
11333         (try_unroll_loop_completely): Pass eni_size_weights to
11334         tree_num_loop_insns.
11335         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
11336         ot estimate_num_insns.
11337         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
11338         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
11339         * tree-inline.c (eni_inlining_weights, eni_size_weights,
11340         eni_time_weights): New variables.
11341         (init_inline_once): Initialize them.
11342         (struct eni_data): Mew.
11343         (estimate_num_insns_1, estimate_num_insns): Use weights.
11344         * tree-inline.h (struct eni_weights_d): New.
11345         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
11346         (estimate_num_insns): Declaration changed.
11347         * cfgloop.h (tree_num_loop_insns): Declaration changed.
11348         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
11349         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
11350
11351 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
11352
11353         * tree-data-ref.c (conflict_fn): Assert that the number of affine
11354         relations in the conflict function is valid.
11355
11356 2007-01-27  Ian Lance Taylor  <iant@google.com>
11357
11358         * common.opt: Add fstrict-overflow.
11359         * opts.c (decode_options): Set flag_strict_overflow if -O2.
11360         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
11361         (TYPE_OVERFLOW_UNDEFINED): Define.
11362         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
11363         Replace all uses.
11364         * tree.h (TYPE_TRAP_SIGNED): Don't define.
11365         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
11366         (fold_negate_expr): Likewise.
11367         (make_range): Likewise.
11368         (extract_muldiv_1): Likewise.
11369         (maybe_canonicalize_comparison): Likewise.
11370         (fold_comparison): Likewise.
11371         (fold_binary): Likewise.
11372         (tree_expr_nonnegative_p): Likewise.
11373         (tree_expr_nonzero_p): Likewise.
11374         * tree-vrp.c (compare_values): Likewise.
11375         (extract_range_from_binary_expr): Likewise.
11376         (extract_range_from_unary_expr): Likewise.
11377         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
11378         Likewise.
11379         (nowrap_type_p): Likewise.
11380         * tree-scalar-evolution.c (simple_iv): Likewise.
11381         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
11382         (build_range_check): Likewise.
11383         (extract_muldiv_1): Likewise.
11384         (fold_comparison): Likewise.
11385         * tree-vrp.c (vrp_int_const_binop): Likewise.
11386         (extract_range_from_unary_expr): Likewise.
11387         * convert.c (convert_to_integer): Likewise.
11388         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
11389         (fold_comparison): Likewise.
11390         (fold_binary): Likewise.
11391         * optabs.c (optab_for_tree_code): Likewise.
11392         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
11393         * simplify-rtx.c (simplify_const_relational_operation): Check
11394         flag_strict_overflow and flag_trapv.
11395         (simplify_const_relational_operation): Likewise.
11396         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
11397         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
11398         -fstrict-overflow.
11399
11400 2007-01-27  Roger Sayle  <roger@eyesopen.com>
11401
11402         * tree.c (tree_fold_gcd): Delete.
11403         * tree.h (tree_fold_gcd): Remove prototype.
11404         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
11405         test whether one constant integer is a multiple of another.  Instead
11406         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
11407         * fold-const.c (multiple_of_p):  We've determined both TOP and
11408         BOTTOM are integer constants so we can call int_const_binop directly
11409         instead of the more generic const_binop.
11410
11411 2007-01-27  Roger Sayle  <roger@eyesopen.com>
11412
11413         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
11414         1*X check that the constant hasn't overflowed, to preserve the
11415         TREE_OVERFLOW bit.
11416         (round_up): Provide an efficient implementation when rouding-up an
11417         INTEGER_CST to a power-of-two.
11418
11419 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11420
11421         * doc/sourcebuild.texi: Add comma for clarity.
11422         * doc/extend.texi: Fix some typos.
11423         * doc/passes.texi: Likewise.
11424         * doc/cppinternals.texi: Likewise.
11425         * doc/c-tree.texi: Likewise.
11426         * doc/tree-ssa.texi: Likewise.
11427         * doc/install.texi: Likewise.
11428
11429 2007-01-27  Jan Hubicka  <jh@suse.cz>
11430
11431         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
11432         (pass_sra): Do not require alias information.
11433         * passes.c (init_optimization_passes): Add SRA
11434
11435 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
11436
11437         * tracer.c (rest_of_handle_tracer): We already cleaned
11438         up the CFG in tracer() so don't do it here again.
11439         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
11440         cleanup_cfg here, either.  And don't call renumber_insns.
11441
11442         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
11443         and BB_HEAD are in the insn stream here.  Instead make sure
11444         that BB_INSN is valid on all insns.  Also, do check here that
11445         there are no pending branch predictions...
11446         (rtl_verify_flow_info): ...instead of doing it here.  Checks
11447         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
11448         here.
11449
11450 2007-01-26  Roger Sayle  <roger@eyesopen.com>
11451
11452         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
11453         function to simplify/factorize operand order canonicalization.
11454         (ix86_fixup_binary_operands): Reorganize using the above function.
11455         (ix86_binary_operator_ok): Likewise.
11456
11457 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
11458
11459         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
11460         file scope from optimize_attrs.
11461         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
11462         up search.
11463         (optimize_attrs): Clear insn_code_values after freeing it.
11464
11465 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
11466
11467         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
11468         a parts.base assignment.
11469
11470 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
11471
11472         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
11473         (compute_subscript_distance, initialize_data_dependence_relation,
11474         finalize_ddr_dependent, analyze_ziv_subscript,
11475         analyze_siv_subscript_cst_affine,
11476         compute_overlap_steps_for_affine_univar,
11477         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
11478         analyze_siv_subscript, analyze_miv_subscript,
11479         analyze_overlapping_iterations, subscript_dependence_tester_1,
11480         compute_self_dependence, free_dependence_relation): Work
11481         with affine_fn instead of chrecs.
11482         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
11483         common_affine_function, affine_function_base,
11484         affine_function_constant_p, affine_fn_op, affine_fn_plus,
11485         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
11486         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
11487         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
11488         (all_chrecs_equal_p): Removed.
11489         * tree-data-ref.h (affine_fn, conflict_function): New types.
11490         (struct subscript): Change type of conflicting_iterations_in_a
11491         and conflicting_iterations_in_b.
11492
11493 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
11494
11495         PR other/30182
11496         * config/pa/pa.h (TARGET_HPUX_11): New.
11497         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
11498         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
11499
11500 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
11501         Richard Guenther  <rguenther@suse.de>
11502
11503         * tree-ssa-structalias.c (solve_graph): Handle case
11504         we merged the variable to another.
11505
11506 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11507
11508         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
11509         functions.
11510
11511         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
11512         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
11513
11514 2007-01-25  DJ Delorie  <dj@redhat.com>
11515
11516         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
11517         allow changes to modes which don't fit in those registers.
11518
11519         * reload1.c (choose_reload_regs): Check for invalid subregs before
11520         computing their locations, not after.
11521
11522 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
11523
11524         PR 25127
11525         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
11526         save Altivec registers in an eh_return function.
11527         (compute_vrsave_mask): Likewise.
11528         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
11529         for saving Altivec registers.
11530         (rs6000_emit_prologue): Don't allocate stack twice in
11531         eh_return function.  Correct expected value of altivec_save_offset
11532         when using save_world.  Describe save of R0 to stack when using
11533         save_world.  Describe stack pointer adjustment when using
11534         save_world.  Remove duplicated eh_return parameter register saving.
11535         Update sp_offset variable after save_world.
11536         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
11537         darwin-world.asm.
11538         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
11539         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
11540         implies Altivec.
11541
11542 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
11543
11544         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
11545
11546 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
11547
11548         PR other/30182
11549         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
11550         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
11551
11552 2007-01-25  Richard Guenther  <rguenther@suse.de>
11553
11554         * doc/invoke.texi (-Wcoverage-mismatch): Document.
11555         * common.opt (-Wcoverage-mismatch): New warning option.
11556         * coverage.c (get_coverage_counts): Ignore coverage mismatch
11557         if -Wcoverage-mismatch is given.
11558
11559 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
11560
11561         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
11562         (ipcp_driver): Change to static definition.
11563         Add dumping of the ifunctions.
11564         (constant_val_insert): Remove unused parameter. Support for SSA.
11565         (ipcp_propagate_const): Support for SSA.
11566         (ipcp_profile_bb_print): Print only analyzed nodes.
11567         (ipcp_replace_map_create): Remove support for Fortran constant
11568         for now.
11569         * ipa-prop.c (ipa_method_modify_stmt,
11570         ipa_callsite_compute_param): Support for SSA.
11571         * ipa-prop.h (ipcp_driver): Remove declaration.
11572         (IS_VALID_TREE_MAP_INDEX): Add define.
11573
11574 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
11575
11576         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
11577
11578 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11579
11580         PR middle-end/30447
11581         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
11582         constant argument to cabs and do it without checking for
11583         -funsafe-math-optimizations.
11584
11585 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
11586
11587         * c-common.h (RID_FIRST_CXX0X): New.
11588         (RID_LAST_CXX0X): New.
11589         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
11590         by -Wall.
11591         * c.opt (Wc++0x-compat): New.
11592         * doc/invoke.texi (-Wc++0x-compat): Document.
11593
11594 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11595
11596         * builtins.c (fold_builtin_carg): New.
11597         (fold_builtin_1): Use it.
11598
11599 2007-01-24  Jan Hubicka  <jh@suse.cz>
11600
11601         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
11602
11603         * ipa-inline.c (initial_insns, max_insns): Delete.
11604         (compute_max_insns): New function.
11605         (cgraph_decide_inlining_of_small_function): Use it; take minimal amount
11606         of insns as base for code growth.
11607         (cgraph_decide_inlining): Make initial_insns local; do not compute
11608         max_insns.
11609         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
11610         * doc/invoke.texi (inline-unit-growth): Update docs.
11611
11612 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
11613
11614         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
11615         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
11616         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
11617         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
11618         for CPUs that have PTA_CX16 set.
11619
11620         PR middle-end/27416
11621         * gimplify.c (omp_check_private): New function.
11622         (gimplify_scan_omp_clauses): Use it for
11623         firstprivate/lastprivate/reduction.
11624
11625         PR middle-end/30494
11626         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
11627         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
11628
11629         PR middle-end/30421
11630         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
11631         If lower_lastprivate_clauses emits some statements, append them
11632         to dlist rather than body_p and to body_p append an initializer.
11633         (lower_omp_for): Adjust caller.
11634
11635 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
11636
11637         * target.h (globalize_decl_name): New.
11638         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
11639         * output.h (default_globalize_decl_name): New.
11640         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
11641         globalize_label.
11642         (globalize_decl): Ditto.
11643         (default_globalize_decl_name): New.
11644         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
11645         (ia64_handle_version_id_attribute): New.
11646         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
11647         (ia64_asm_output_external): Use globalize_decl_name instead
11648         of globalize_label.
11649         * doc/extend.texi (version_id): New pragma.
11650         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
11651
11652 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
11653
11654         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
11655         _uleb128_t and _Unwind_SWord with _sleb128_t.
11656         * unwind-dw2.c (extract_cie_info, execute_stack_op, execute_cfa_program,
11657         uw_frame_state_for, uw_update_context_1): Likewise.
11658         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
11659         * unwind-pe.h (read_uleb128, read_sleb128,
11660         read_encoded_value_with_base): Likewise.
11661         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
11662
11663 2007-01-24  Richard Guenther  <rguenther@suse.de>
11664
11665         * builtins.c (expand_builtin_cexpi): Get the fndecl
11666         for cexp in the correct way.
11667
11668 2007-01-24  Jan Hubicka  <jh@suse.cz>
11669
11670         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS of calls.
11671
11672 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
11673
11674         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
11675         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
11676         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
11677         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
11678         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
11679         __SIZEOF_PTRDIFF_T__.
11680         * doc/cpp.texi: Documentation for the new builtin macros added.
11681
11682 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
11683
11684         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
11685         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
11686         instead of operands[2] to avoid access past the end of array.
11687
11688 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
11689
11690         * reload1.c (emit_reload_insns): Pass the reload register
11691         for a non-spill output reload through forget_old_reloads_1.
11692
11693 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
11694
11695         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
11696         _SOFT_DOUBLE if doubles use software floating-point.
11697         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
11698         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
11699         * config/rs6000/darwin-ldouble.c: Also compile functions for
11700         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
11701         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
11702         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
11703         commented-out long double override.
11704         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
11705         * config/rs6000/eabispe.h: Likewise.
11706         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
11707         long double for non-SPE.
11708         (rs6000_handle_option): Likewise.
11709         (invalid_e500_subreg): Disallow more subregs involding DImode,
11710         DFmode, TImode or TFmode.
11711         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
11712         E500 double.
11713         (legitimate_lo_sum_address_p): Also check for TFmode for E500
11714         double.
11715         (rs6000_legitimize_address): Also handle TFmode for E500 double.
11716         (rs6000_legitimize_reload_address): Also handle TFmode for E500
11717         double.
11718         (rs6000_legitimate_address): Also check for TFmode for E500
11719         double.
11720         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
11721         (spe_build_register_parallel): Handle TFmode and TCmode.
11722         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
11723         double.
11724         (function_arg): Handle TFmode and TCmode for E500 double.
11725         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
11726         in general.
11727         (print_operand): Handle TFmode and TImode for %y.
11728         (rs6000_generate_compare): Handle TFmode comparisons for E500
11729         double.
11730         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
11731         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
11732         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
11733         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
11734         TFmode for E500 double.
11735         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
11736         (floatsidf2): Enable for E500 double.
11737         (movtf_softfloat): Use rs6000_nonimmediate_operand.
11738         (extenddftf2): Change to extenddftf2_fprs.
11739         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
11740         depending on TARGET_E500_DOUBLE.
11741         (extendsftf2): Enable for E500 double.
11742         (trunctfdf2): Enable for E500 double.
11743         (trunctfsf2): Change to trunctfsf2_fprs.
11744         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
11745         depending on TARGET_E500_DOUBLE.
11746         (floatsitf2): Enable for E500 double.
11747         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
11748         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
11749         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
11750         (negtf2): Change to negtf2_internal.
11751         (negtf2): New expander.
11752         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
11753         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
11754         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
11755         (movdi_internal32): Use rs6000_nonimmediate_operand.
11756         (unnamed splitter): Likewise.
11757         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
11758         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
11759         (SPE64TF, DITI): New mode macros.
11760         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
11761         modes.
11762         (frob_tf_ti): New.
11763         (frob_<mode>_di_2): New.
11764         (frob_tf_di_8_2): New.
11765         (frob_di_df): Change to frob_di_<mode>; allow more modes.
11766         (frob_ti_tf): New.
11767         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
11768         more modes.
11769         (frob_ti_<mode>_8_2): New.
11770         (frob_ti_tf_2): New.
11771         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
11772         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
11773         TFmode.
11774         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
11775         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
11776         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
11777         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
11778         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
11779         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
11780         tsttflt_gp): New.
11781
11782 2007-01-23  Ian Lance Taylor  <iant@google.com>
11783
11784         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
11785         insn-*.o first.
11786         (OBJS-archive): Reformat, alphabetize.
11787         (OBJS): Change out_object_file to OBJS-md.
11788
11789 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
11790
11791         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
11792         JUMP_P and CALL_P predicates where applicable.
11793         * config/i386/i386.c: Ditto.
11794         * config/i386/i386.md: Ditto.
11795         * config/i386/mmx.md: Ditto.
11796         * config/i386/predicates.md: Ditto.
11797
11798 2007-01-22  Andreas Schwab  <schwab@suse.de>
11799
11800         * config/m68k/m68k.h: Fix comment.
11801
11802 2007-01-22  Jan Hubicka  <jh@suse.cz>
11803
11804         * passes.c (init_optimization_passes): Do not rerun
11805         pass_early_warn_uninitialized.
11806
11807 2007-01-22  Richard Guenther  <rguenther@suse.de>
11808
11809         PR tree-optimization/30038
11810         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
11811         function.
11812         (execute_cse_sincos_1): Likewise.
11813         (execute_cse_sincos): Likewise.
11814         (gate_cse_sincos): Likewise.
11815         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
11816         the cexpi() canonicalization of sincos().
11817         * tree-pass.h (pass_cse_sincos): Declare.
11818         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
11819
11820 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
11821
11822         PR rtl-optimization/29329
11823         * combine.c (replaced_rhs_insn): Rename to i2mod.
11824         (replaced_rhs_value): Rename to i2mod_new_rhs.
11825         (i2mod_old_rhs): New global variable.
11826         (combine_instructions): Adjust for above change.  Save a copy of
11827         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
11828         note are substituted in the second instruction.
11829         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
11830         ditch the note if it pertains to the second eliminated register
11831         and this register is mentioned in i2mod_old_rhs.
11832
11833         Revert:
11834         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
11835
11836         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
11837         the insn to which the note was originally attached.
11838
11839 2007-01-21  Jan Hubicka  <jh@suse.cz>
11840
11841         * ipa-inline.c (inlining_mode): Comment, move up.
11842         (cgraph_decide_inlining_incrementally): Do not perform inlining
11843         itself; fix handling of flattening of self recursive functions.
11844         (cgraph_find_cycles): Remove.
11845         (cgraph_flatten_node): Remove.
11846         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
11847         (try_inline): New function.
11848         (cgraph_early_inlining): Update call of
11849         cgraph_decide_inlining_incrementally.  Apply inlining here.
11850         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
11851
11852 2007-01-21  Dirk Mueller  <dmueller@suse.de>
11853
11854         PR bootstrap/30511
11855         * tree-vrp.c (check_array_bounds): do not warn
11856         about ADDR_EXPR's of ARRAY_REF's which are immediately
11857         used in binary expressions.
11858
11859 2007-01-21  Ira Rosen  <irar@il.ibm.com>
11860
11861         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
11862         read_write_dep and macros for its access.
11863         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
11864         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
11865         argument, call vect_check_interleaving for every independent pair of
11866         data-refs. Mark loads that access the same memory location as a store
11867         in the loop.
11868         (vect_check_dependences): Remove.
11869         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
11870         call, fix the call to vect_analyze_data_ref_dependence.
11871         (vect_analyze_data_ref_access): For statements that access the same
11872         data-ref, check that they are not stores; for loads, check that there
11873         is no store that access the same location.
11874
11875 2007-01-20  Roger Sayle  <roger@eyesopen.com>
11876             Joseph Myers  <joseph@codesourcery.com>
11877
11878         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
11879         (-fdump-rtl-stack): Likewise.
11880         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
11881         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
11882         (-mpt-fixed): Use @minus{} for minus sign.
11883         (Using Precompiled Headers): Fix under/overfull hbox.
11884
11885 2007-01-20  Jan Hubicka  <jh@suse.cz>
11886
11887         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
11888         place within annotation.
11889
11890 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11891
11892         * pa.c (output_move_double): Change array size of xoperands to 4.
11893
11894 2007-01-20  Jan Hubicka  <jh@suse.cz>
11895
11896         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
11897         as temporary.
11898
11899 2007-01-19  Ian Lance Taylor  <iant@google.com>
11900
11901         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
11902         constant to unsigned HOST_WIDE_INT before negating.
11903
11904 2007-01-19  Ian Lance Taylor  <iant@google.com>
11905
11906         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
11907         to unsigned.
11908         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
11909         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
11910         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
11911         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
11912         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
11913         (realloc_vdef, realloc_vuse): Change second parameter to
11914         unsigned.
11915         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
11916         fields to unsigned.
11917         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
11918         unsigned. Change x and lim locals to unsigned.
11919         (realloc_vdef, realloc_vuse): Change num_elem parameter to
11920         unsigned.
11921         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
11922         (copy_virtual_operands): Change i and n locals to unsigned.
11923
11924 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11925
11926         PR middle-end/29335
11927         * builtins.c (fold_builtin_1): Handle builtin fdim.
11928
11929 2007-01-20  Jan Hubicka  <jh@suse.cz>
11930
11931         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
11932         * tree-ssa-structalias.c (compute_points_to_sets): Do call
11933         init_alias_heapvars.
11934         (init_alias_heapvars): Initialize only when not already initialized.
11935         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
11936
11937 2007-01-19  Roger Sayle  <roger@eyesopen.com>
11938
11939         * common.opt (fsigned-zeros): New command line option.
11940         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
11941         of flag_unsafe_math_optimizations.
11942         * opts.c (set_fast_math_flags): The -ffast-math command line option
11943         implies -fno-signed-zeros.
11944         (fast_math_flags_set_p): Likewise.
11945
11946         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
11947         the documentation of -ffast-math appropriately.  Wrap long lines.
11948
11949 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
11950
11951         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
11952         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
11953
11954 2007-01-19  Tomas Bily  <tbily@suse.cz>
11955
11956         * cgraphunit.c (cgraph_finalize_function): Updating of pid
11957         * tree-profile.c:
11958         (tree_init_ic_make_global_vars): New function
11959         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
11960         (tree_gen_ic_profiler): New function
11961         (tree_gen_ic_func_profiler): New function
11962         (tree_profiling): Added calling of tree_gen_ic_func_profiler
11963         (tree_profile_hooks): Added hook for indirec/virtual calls
11964         * value-prof.c (tree_find_values_to_profile): New case for
11965         indirect calls
11966         (tree_values_to_profile): Call for determining indirect/virtual
11967         counters
11968         (tree_indirect_call_to_profile): New function
11969         (tree_ic_transform): New function
11970         (tree_ic): New function
11971         (find_func_by_pid): New function
11972         (init_pid_map): New function
11973         (tree_value_profile_transformations): Added check for
11974         indirect/virtual call transformation
11975         * value-prof.h (enum hist_type): New counter type for
11976         indirect/virtual calls
11977         (profile_hooks): Added new hook for profiling indirect/virtual
11978         calls
11979         * profile.c (instrument_values): New case for indirect/virtual
11980         call added
11981         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
11982         (GCOV_COUNTER_V_INDIR): New counter type
11983         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
11984         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
11985         call added
11986         * cgraph.c: Definition of cgraph_max_pid
11987         (cgraph_create_node): Default init of pid attribute
11988         * cgraph.h: Declaration of cgraph_max_pid
11989         (struct cgraph_node): Added pid attribute
11990         * libgcov.c (__gcov_indirect_call_profiler): New function
11991         (__gcov_one_value_profiler_body): New function
11992         (__gcov_one_value_profiler): Body was moved to
11993         __gcov_one_value_profiler_body and calls it
11994
11995 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
11996
11997         * doc/gty.texi (Options): Document the mark_hook option to GTY.
11998         * gengtype.c (write_types_data, write_func_for_structure,
11999         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
12000         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
12001         (walk_type, write_func_for_structure): Generate the mark_hook if
12002         needed.
12003
12004 2007-01-19  Jan Hubicka  <jh@suse.cz>
12005
12006         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
12007         'early' argument take inlining mode argument specifying whether to
12008         inline for size/speeed or all functions; add support for flattening;
12009         improve dumpting.
12010         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
12011
12012 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12013
12014         PR c++/17947
12015         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
12016         the name of the declared identifier.
12017
12018 2007-01-19  Dirk Mueller  <dmueller@suse.de>
12019
12020         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
12021         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
12022         duplicate evaluation.
12023
12024 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
12025
12026         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
12027         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
12028         to XFMode, use acosxf2 and truncate result to requested mode.
12029         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
12030         (asin<mode>2): Similarly, with asin expanders.
12031         (*fscalexf4_i387): Rename from *fscalexf4.
12032         (expNcorexf3): New expander.
12033         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
12034         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
12035         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
12036         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
12037         patterns for SSE math.
12038         (exp10<mode>2): Similarly, with exp10 expanders.
12039         (exp2<mode>2): Similarly, with exp2 expanders.
12040         (expm1<mode>2): Similarly, with expm1 expanders.
12041         (ldexp<mode>3): Similarly, with ldexp expanders.
12042         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
12043         Use gen_truncxf<mode>2_i387_noop to truncate result.
12044
12045 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
12046
12047         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
12048         for ColdFire targets.
12049
12050 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
12051             Richard Sandiford  <richard@codesourcery.com>
12052
12053         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
12054         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
12055         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
12056         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
12057         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
12058         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
12059
12060 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
12061
12062         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
12063         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
12064         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
12065         (*adddi_dilshr32_cf): New pattern.
12066         (adddi3, subdi3): Remove first alternatives.
12067
12068 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
12069
12070         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
12071         implemented using move.l, do not use its cc result for floating-point
12072         comparisons.
12073
12074 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
12075
12076         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
12077         from accepting 's' constraints if flag_pic.
12078
12079 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
12080
12081         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
12082         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
12083         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
12084         condition from TARGET_68881 to TARGET_HARD_FLOAT.
12085
12086 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
12087
12088         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
12089         ColdFire alternatives.
12090         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
12091         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
12092         architectures that support ff1 instruction.
12093
12094 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
12095             Julian Brown  <julian@codesourcery.com>
12096
12097         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
12098         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
12099         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
12100         Add commentary.
12101
12102 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
12103
12104         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
12105         and return a bool.
12106         (output_move_const_into_data_reg, output_move_simode_const): Delete.
12107         * config/m68k/m68k.c (const_method, const_int_cost): Take a
12108         HOST_WIDE_INT instead of an rtx.
12109         (m68k_rtx_costs): Update call accordingly.
12110         (output_move_const_into_data_reg): Likewise.  Fix formatting.
12111         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
12112         Return a bool.
12113         (output_move_simode_const): Update calls after above changes.
12114         Rework to use automatic variables and predicates like MEM_P.
12115         * config/m68k/m68k.md (pushexthisi_const): Update call to
12116         valid_mov3q_const.
12117
12118 2007-01-19  Dirk Mueller  <dmueller@suse.de>
12119
12120         * tree-ssa-alias.c (perform_var_substitution): Fix typo
12121         in dump_flags test.
12122
12123 2007-01-19  Richard Guenther  <rguenther@suse.de>
12124
12125         * builtins.c (expand_builtin_cexpi): Fall back to expanding
12126         via cexp in case sincos is not available.
12127
12128 2007-01-19  Richard Guenther  <rguenther@suse.de>
12129
12130         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
12131         * defaults.h (TARGET_HAS_SINCOS): Default to off.
12132         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
12133         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
12134         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
12135         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
12136         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
12137         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
12138
12139 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
12140
12141         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
12142         New insn patterns.
12143         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
12144         (atan2xf3): Directly generate RTL pattern.
12145         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
12146         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
12147         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
12148         disable patterns for SSE math.
12149         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
12150         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
12151         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
12152         disable patterns for SSE math.
12153
12154 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
12155
12156         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
12157
12158 2007-01-18  Roger Sayle  <roger@eyesopen.com>
12159
12160         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
12161         VIEW_CONVERT_EXPR to the same type as it's operand.
12162
12163 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
12164
12165         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
12166         configured for long double 128.
12167
12168 2007-01-18  Mike Stump  <mrs@apple.com>
12169
12170         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
12171         error.
12172
12173 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
12174
12175         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
12176         type correct.
12177
12178 2007-01-18  Jan Hubicka  <jh@suse.cz>
12179
12180         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
12181         greater than NUM_VOP_FREE_BUCKETS.
12182
12183 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
12184
12185         * tree-ssa-structalias.c: Update comments.
12186         (ptabitmap_obstack): Removed.
12187         (pta_obstack): New.
12188         (oldpta_obstack): Ditto.
12189         (stats): Add a few members.
12190         (struct variable_info): Remove node, complex, address_taken, and
12191         indirect_target members. Add oldsolution member.
12192         (new_var_info): Do not initialize removed members.
12193         (constraint_expr_type): Remove INCLUDES.
12194         (constraint_graph): Add size, implicit_preds, rep,
12195         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
12196         (FIRST_REF_NODE): New macro.
12197         (LAST_REF_NODE): Ditto.
12198         (FIRST_ADDR_NODE): Ditto.
12199         (find): New function.
12200         (unite): Ditto.
12201         (dump_constraint): Do not handle INCLUDES.
12202         (insert_into_complex): Do not insert duplicate constraints.
12203         (condense_varmap_nodes): Renamed and rewritten into ...
12204         (merge_node_constraints): This. Also fix bug in handling of
12205         offseted copy constraints.
12206         (clear_edges_for_node): No longer need to deal with preds at all,
12207         or removing associated preds/succs.
12208         (merge_graph_nodes): Deal with indirect_cycles.
12209         Don't deal with predecessors.
12210         (add_implicit_graph_edge): New function.
12211         (add_pred_graph_edge): Ditto.
12212         (add_graph_edge): Don't deal with predecessors.
12213         (build_constraint_graph): Removed.
12214         (build_pred_graph): New function.
12215         (build_succ_graph): Ditto.
12216         (struct scc_info): Removed in_component. Added roots, dfs, and
12217         node_mapping. Remove visited_index, unification_queue.
12218         (scc_visit): Deal with union-find we do now.
12219         Deal with cycles with REF nodes.
12220         (collapse_nodes): Renamed and rewritten to ...
12221         (unify_nodes): This.
12222         (process_unification_queue): Removed.
12223         (topo_visit): Cleanup
12224         (do_da_constraint): Use find.
12225         (do_sd_constraint): Ditto.
12226         (do_ds_constraint): Ditto.
12227         (do_complex_constraint): Ditto.
12228         (init_scc_info): Update for removed and added members.
12229         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
12230         (find_indirect_cycles): This.
12231         (equivalence_class): New variable.
12232         (label_visit): New function.
12233         (perform_variable_substitution): Rewritten.
12234         (free_var_substitution_info): New function.
12235         (find_equivalent_node): Ditto.
12236         (move_complex_constraints): Ditto.
12237         (eliminate_indirect_cycles): Ditto.
12238         (solve_graph): Only propagate changed bits.
12239         Use indirect cycle elimination.
12240         Use find.
12241         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
12242         (tree_id_eq): Renamed to ...
12243         (tree_vi_eq): This. Update for member change
12244         (insert_id_for_tree): Renamed and rewritten to ...
12245         (insert_vi_for_tree): This.
12246         (lookup_id_for_tree): Renamed and rewritten to ...
12247         (lookup_vi_for_tree): This.
12248         (get_id_for_tree): Renamed and rewritten to ...
12249         (get_vi_for_tree): Ditto.
12250         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
12251         (process_constraint): Don't handle INCLUDES.
12252         Remove special ADDRESSOF case.
12253         (find_func_aliases): Rewrite to use vi functions instead of id
12254         ones.
12255         (create_function_info_for): Ditto.
12256         (create_variable_info_for): Ditto.
12257         (intra_create_variable_infos): Ditto.
12258         (merge_smts_into): Ditto.
12259         (find_what_p_points_to): Ditto.
12260         (init_base_vars): Ditto.
12261         (init_alias_vars): Ditto.
12262         (remove_preds_and_fake_succs): New function.
12263         (dump_sa_points_to_info): Dump new stats.
12264         (dump_solution_for_var): Use find.
12265         (set_used_smts): Fix formatting.
12266         (compute_points_to_sets): Updated for new functions.
12267         (ipa_pta_execute): Ditto.
12268
12269 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
12270             Richard Sandiford  <richard@codesourcery.com>
12271
12272         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
12273         parallels.
12274         * calls.c (expand_call): If the return value is a PARALLEL,
12275         extract its first member.
12276         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
12277         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
12278         use FUNCTION_EXTRA_EPILOGUE.
12279         (m68k_function_value): Return a PARALLEL if the return value
12280         is of a pointer type.
12281         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
12282         (FUNCTION_EXTRA_EPILOGUE): Remove.
12283         * config/m68k/m68k.md (D0_REG): New constant.
12284
12285 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
12286
12287         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
12288         output a NOP for empty epilogues.
12289
12290 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
12291
12292         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
12293         before function.  Extend register save check to include all
12294         registers, not just integer ones.
12295
12296 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
12297
12298         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
12299         (m68k_use_return_insn): ...this.
12300         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
12301         * config/m68k/m68k.c (use_return_insn): Rename to...
12302         (m68k_use_return_insn): ...this.
12303         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
12304         of USE_RETURN_INSN.
12305
12306 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
12307
12308         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
12309         nearest even, fix denormal rounding overflow.
12310
12311 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
12312
12313         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
12314         f%$smove and f%$move.
12315         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
12316         (extendsfdf2_cf): Use fdmove instead of f%&move.
12317         (truncdfsf2_cf): Use fsmove instead of f%$smove.
12318         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
12319
12320 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
12321
12322         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
12323         GPR<-GPR moves.
12324
12325 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
12326
12327         * real.h (real_format): Add a canonical_nan_lsbs_set field.
12328         (coldfire_single_format): Declare.
12329         (coldfire_double_format): Likewise.
12330         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
12331         of qnan_msb_set to determine the lower bits of a canonical
12332         NaN significand.
12333         (encode_ieee_double): Likewise.
12334         (encode_ieee_quad): Likewise.
12335         (ieee_single_format): Initialize canonical_nan_lsbs_set.
12336         (mips_single_format): Likewise.
12337         (ieee_double_format): Likewise.
12338         (mips_double_format): Likewise.
12339         (ieee_extended_motorola_format): Likewise.
12340         (ieee_extended_intel_96_format): Likewise.
12341         (ieee_extended_intel_128_format): Likewise.
12342         (ieee_extended_intel_96_round_53_format): Likewise.
12343         (ibm_extended_format): Likewise.
12344         (mips_extended_format): Likewise.
12345         (ieee_quad_format): Likewise.
12346         (mips_quad_format): Likewise.
12347         (vax_f_format): Likewise.
12348         (vax_d_format): Likewise.
12349         (vax_g_format): Likewise.
12350         (i370_single_format): Likewise.
12351         (i370_double_format): Likewise.
12352         (decimal_single_format): Likewise.
12353         (decimal_double_format): Likewise.
12354         (decimal_quad_format): Likewise.
12355         (c4x_single_format): Likewise.
12356         (c4x_extended_format): Likewise.
12357         (real_internal_format): Likewise.
12358         (coldfire_single_format): New real_format.
12359         (coldfire_double_format): Likewise.
12360         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
12361         canonical_nan_lsbs_set.
12362         (pdp11_d_format): Likewise.
12363         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
12364         if TARGET_COLDFIRE_CPU.
12365
12366 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
12367
12368         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
12369         (output_call, m68k_legitimize_call_address): Declare.
12370         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
12371         parenthesees.  Add support for a 'W' constraint.
12372         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
12373         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
12374         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
12375         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
12376         variables.
12377         (override_options): Initialize them.  Do not set flag_no_function_cse
12378         for TARGET_ID_SHARED_LIBRARY.
12379         (m68k_output_pic_call): Delete.
12380         (m68k_legitimize_call_address): New function.
12381         (print_operand): Remove the %o prefix.  Handle the %p prefix.
12382         (output_call): New function.
12383         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
12384         target address from the GOT if symbolic jumps are not allowed.
12385         * config/m68k/m68k.md (call, general_operand): Do not set
12386         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
12387         Merge separate flag_pic and !flag_pic define_insns into...
12388         (*call, *call_value): ...these new patterns.  Match the address
12389         rather than the containing MEM and require it to be a call_operand.
12390         Use output_call to generate the asm template.
12391         * config/m68k/predicates.md (const_call_operand): New predicate.
12392         (call_operand): Likewise.
12393
12394 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
12395
12396         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
12397         (STACK_GROWS_DOWNWARD): Define to 1.
12398         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
12399         comments, emphasizing that these values are only defaults.
12400         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
12401         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
12402
12403 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
12404
12405         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
12406
12407 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
12408             Richard Sandiford  <richard@codesourcery.com>
12409
12410         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
12411         (FP_REGNO_P): New macros.
12412         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
12413         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
12414         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
12415         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
12416
12417 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
12418
12419         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
12420         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
12421         to $tmake_file.
12422         * config/m68k/t-floatlib: New file, extracting common code from...
12423         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
12424         * config/m68k/t-uclinux: Here.
12425         * config/m68k/fpgnulib.c: Do not compile extendeed precision
12426         routines on ColdFire targets.
12427
12428 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
12429
12430         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
12431         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
12432         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
12433         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
12434         explicitly set MOTOROLA to 1.
12435         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
12436
12437 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
12438             Nathan Sidwell  <nathan@codesourcery.com>
12439
12440         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
12441         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
12442         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
12443         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
12444         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
12445         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
12446         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
12447         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
12448         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
12449         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
12450         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
12451         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
12452         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
12453         (DBX_REGISTER_NUMBER): Delete.
12454         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
12455         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
12456         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
12457
12458 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
12459
12460         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
12461         * config/flat.h: New file.
12462         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
12463         OBJECT_FORMAT_FLAT.
12464         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
12465         indirect references for -msep-data or -mid-shared-library.
12466         Do not use PC-relative code addresses either.
12467         * config/m68k/m68k.c (override_options): Restrict -fPIC error
12468         to -mpcrel.
12469         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
12470         for shared libraries and crt1.o for executables.  Use crti.o and
12471         crtbegin.o.
12472         (ENDFILE_SPEC): Use crtend.o and crtn.o.
12473         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
12474         Do not add -elf2flt or -shared-lib-id options here.
12475         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
12476         Pass -shared-lib-id if -mid-shared-library, taking the library
12477         identifier from -mshared-library-id if given, otherwise
12478         defaulting to 0.
12479         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
12480         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
12481         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
12482         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
12483         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
12484         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
12485         and crtend.o.
12486         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
12487         jump sequence for ISA A and ISA A+.
12488         (PICJUMP): Likewise.
12489
12490 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
12491
12492         * config.gcc (m68k-*-uclinux*): Base the port on the common
12493         and m68k GNU/Linux files rather than on the generic ELF ones.
12494         * config/m68k/uclinux.h (TARGET_VERSION): Override.
12495         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
12496
12497 2007-01-18  Julian Brown  <julian@codesourcery.com>
12498             Richard Sandiford  <richard@codesourcery.com>
12499
12500         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
12501         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
12502         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
12503         before redefining.
12504         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
12505         80 unconditionally.
12506         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
12507
12508 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
12509
12510         * doc/install.texi: Document m68k-uclinuxoldabi.
12511         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
12512         * config/m68k/uclinux-oldabi.h: New file, copied from
12513         config/m68k/uclinux.h.
12514
12515 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
12516
12517         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
12518         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
12519         (m32r_compute_frame_size): Use unsigned for regno.
12520         (m32r_reload_lr): Use gen_frame_mem.
12521         (pop): New.
12522         (m32r_output_function_epilogue): Don't output the function epilogue
12523         textually here.
12524         (m32r_expand_epilogue): New.
12525         (direct_return): Return false if the function has the interrupt
12526         attribute.
12527         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
12528         * config/m32r/m32r.md (epilogue): New expander.
12529         (return_lr, return_rte): New insns.
12530         (return): Make it expander.
12531         (return_normal): New expander.
12532
12533 2007-01-18  Josh Conner  <jconner@apple.com>
12534
12535         PR target/30485
12536         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
12537         support for UNLE, UNLT, UNGE, and UNGT.
12538
12539 2007-01-18  Jan Hubicka  <jh@suse.cz>
12540
12541         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
12542         * tree-tailcall (add_virtual_phis): Likewise.
12543         (optimize_tail_call): Return TODOs.
12544         (execute_tail_calls): Return TODOs.
12545         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
12546         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
12547         changed.
12548         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
12549         Cleanup cfg using TODO.
12550         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
12551         * passes.c (execute_function_todo): When cleanup did something, remove
12552         unused locals.
12553         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
12554         (make_edges): Don't cleanup_cfg.
12555
12556 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
12557
12558         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
12559         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
12560         operate on the top of stack.
12561         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
12562         register handling of instructions that output to the second
12563         stack slot.
12564         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
12565         (move_for_stack_reg): Special-case check for dead destination
12566         stack slot for constant load of 1.0 inside UNSPEC_TAN.
12567
12568         * config/i386/i386.md (UNSPEC_TAN): New constant.
12569         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
12570         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
12571         to correctly model move of constant 1.0 to top stack slot.
12572         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
12573         (unnamed peephole2 pattern): Remove corresponding peephole2
12574         pattern that optimizes tan insn and loading of constant 1.0.
12575         (tanxf2): Use fptanxf4_i387.
12576         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
12577         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
12578         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
12579         disable patterns for SSE math.
12580         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
12581         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
12582
12583 2007-01-18  Dirk Mueller  <dmueller@suse.de>
12584             Richard Guenther <rguenther@suse.de>
12585
12586         PR diagnostic/8268
12587         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
12588         * common.opt (Warray-bounds): Add new warning option.
12589         * c-opts.c (c_common_handle_option): Define -Warray-bounds
12590         if -Wall is given.
12591         * Makefile.in: make tree-vrp.o depend on toplev.h
12592         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
12593         is enabled.
12594         (check_array_refs, check_array_bounds, check_array_ref): New.
12595
12596 2007-01-18  Jan Hubicka  <jh@suse.cz>
12597
12598         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
12599         (execute_ssa_ccp): Return flags conditionally.
12600         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
12601         changed.
12602         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
12603
12604 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
12605
12606         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
12607         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
12608
12609         * Makefile.c (GTFILES): Add cfglayout.h.
12610         * gengtype.c (open_base_files): Likewise.
12611         * cfglayout.c (cfg_layout_function_footer,
12612         cfg_layout_function_header) Reindent to make gengtype happy.
12613         * cfglayout.h (cfg_layout_function_footer,
12614         cfg_layout_function_header): Add GTY(()) marker.
12615
12616         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
12617
12618 2007-01-18  Ben Elliston  <bje@au.ibm.com>
12619
12620         * genautomata.c (write_automata): Include xstrerror output in the
12621         error message if writing the DFA description file fails.
12622
12623 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
12624
12625         * config/mips/mips-protos.h (mips_output_external): Make it
12626         return void.
12627         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
12628         * config/mips/mips.c (irix_output_external_libcall): Likewise.
12629         (extern_list): Likewise.
12630         (extern_head): Likewise.
12631         (TARGET_ASM_FILE_END): Likewise.
12632         (mips_file_end): Likewise.
12633         (mips_output_external): Rewritten.
12634
12635 2007-01-18  Ben Elliston  <bje@au.ibm.com>
12636
12637         * genpreds.c (write_insn_preds_c): Only write out the function
12638         body for regclass_for_constraint if we have register constraints.
12639
12640 2007-01-17  Tom Tromey  <tromey@redhat.com>
12641
12642         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
12643         * doc/install.texi (Testing): Use sourceware.org.
12644         (Binaries): Likewise.
12645         (Specific): Likewise.
12646         * doc/contrib.texi (Contributors): Use sourceware.org.
12647
12648 2007-01-17  Anatoly Sokolov <aesok@post.ru>
12649
12650         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
12651         (AVR_ENHANCED): Rename to ...
12652         (AVR_HAVE_MUL): ... new.
12653         (avr_enhanced_p): Rename to ...
12654         (avr_have_mul_p): ... new.
12655         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
12656         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
12657         * config/avr/avr.c (avr_enhanced_p): Rename to ...
12658         (avr_have_mul_p): ... new.
12659         (base_arch_s): Rename 'enhanced' to 'have_mul'.
12660         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
12661         'avr_enhanced_p' and 'enhanced'.
12662         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
12663         AVR_HAVE_MUL instead of AVR_ENHANCED.
12664         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
12665         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
12666         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
12667         instead of AVR_ENHANCED.
12668         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
12669         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
12670         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
12671
12672 2007-01-17  Ian Lance Taylor  <iant@google.com>
12673
12674         * vec.h (VEC_reserve_exact): Define.
12675         (vec_gc_p_reserve_exact): Declare.
12676         (vec_gc_o_reserve_exact): Declare.
12677         (vec_heap_p_reserve_exact): Declare.
12678         (vec_heap_o_reserve_exact): Declare.
12679         (VEC_OP (T,A,reserve_exact)): New static inline function, three
12680         versions.
12681         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
12682         negative parameter.
12683         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
12684         (VEC_OP (T,A,copy)) [all versions]: Likewise.
12685         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
12686         * vec.c (calculate_allocation): Add exact parameter.  Change all
12687         callers.
12688         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
12689         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
12690         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
12691         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
12692         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
12693         (vec_heap_p_reserve_exact): New function.
12694         (vec_heap_o_reserve_exact): New function.
12695
12696 2007-01-17  Jan Hubicka  <jh@suse.cz>
12697
12698         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
12699
12700 2007-01-17  Eric Christopher  <echristo@apple.com>
12701
12702         * config.gcc: Support core2 processor.
12703
12704 2007-01-16  Jan Hubicka  <jh@suse.cz>
12705
12706         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
12707         the names, just unlink the chain so we don't crash on dangling pointers
12708         to dead SSA names.
12709
12710 2007-01-16  Jan Hubicka  <jh@suse.cz>
12711
12712         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
12713         * tree-pass.h: Reorder to make IPA passes appear toegher.
12714         (pass_early_inline, pass_inline_parameters, pass_apply_inline): Declare.
12715         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
12716         parameters, do not call early inliner.
12717         * ipa-inline.c: Update comments.  Include tree-flow.h
12718         (cgraph_decide_inlining): Do not compute inlining parameters.
12719         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
12720         be called with function context set up.
12721         (pass_ipa_inline): Remove unreachable functions before pass.
12722         (cgraph_early_inlining): Simplify assuming to be called from the
12723         PM as local pass.
12724         (pass_early_inline): New pass.
12725         (cgraph_gate_ipa_early_inlining): New gate.
12726         (pass_ipa_early_inline): Turn into simple wrapper.
12727         (compute_inline_parameters): New function.
12728         (gate_inline_passes): New gate.
12729         (pass_inline_parameters): New pass.
12730         (apply_inline): Move here from tree-optimize.c
12731         (pass_apply_inline): New pass.
12732         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
12733         transforming.
12734         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
12735         doing them by hand.
12736         (tree_function_versioning): Do not allocate dummy struct function.
12737         * tree-inline.h (optimize_inline_calls): Update prototype.
12738         * tree-optimize.c (execute_fixup_cfg): Export.
12739         (pass_fixup_cfg): Remove
12740         (tree_rest_of_compilation): Do not apply inlines.
12741         * tree-flow.h (execute_fixup_cfg): Declare.
12742         * Makefile.in (gt-passes.c): New.
12743         * passes.c: Include gt-passes.h
12744         (init_optimization_passes): New passes.
12745         (nnodes, order): New static vars.
12746         (do_per_function_toporder): New function.
12747         (execute_one_pass): Dump current pass here.
12748         (execute_ipa_pass_list): Don't dump current pass here.
12749
12750 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
12751
12752         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
12753         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
12754
12755 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
12756
12757         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
12758         (strong_alias): Define.
12759         (__gcc_qmul): Provide non-FMA for soft-float.
12760         (__gcc_qdiv): Same.
12761         (__gcc_qneg): New.
12762         (__gcc_qeq): New.
12763         (__gcc_qle): New.
12764         (__gcc_qge): New.
12765         (__gcc_qunord): New.
12766         (__gcc_stoq): New.
12767         (__gcc_dtoq): New.
12768         (__gcc_qtos): New.
12769         (__gcc_qtod): New.
12770         (__gcc_qtoi): New.
12771         (__gcc_qtou): New.
12772         (__gcc_itoq): New.
12773         (__gcc_utoq): New.
12774         (fmsub): New.
12775         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
12776         soft-float functions.
12777         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
12778         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
12779         about long double soft float.
12780
12781 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
12782             Tehila Meyzels  <tehila@il.ibm.com>
12783
12784         * tree-vectorizer.h (is_pattern_stmt_p): New.
12785         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
12786         formatting (tabs instead of spaces). Cleanup and clarify setting
12787         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
12788         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
12789         (vectorizable_type_demotion): Check that types are integral.
12790         (vectorizable_type_promotion): Likewise.
12791         (vectorizable_store): Fix typo.  Eliminate new-line at end of
12792         comments.
12793
12794 2007-01-16  Jan Hubicka  <jh@suse.cz>
12795
12796         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
12797         cgraph edges too.
12798
12799 2007-01-15  Eric Christopher  <echristo@apple.com>
12800
12801         * ifcvt.c: Include vec.h, vecprim.h.
12802         (check_cond_move_block): New argument regs.
12803         Reorganize. Add registers used to regs.
12804         (cond_move_process_if_block): Use regs set above as
12805         loop bounds.
12806
12807 2007-01-15  Eric Christopher  <echristo@apple.com>
12808
12809         * config/darwin.h: Update copyright.
12810         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
12811         (LINK_COMMAND_SPEC): Add -u.
12812         (LINK_SPEC): Fix umbrella for above.
12813
12814 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
12815
12816         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
12817         glibc CVS.
12818
12819 2007-01-15  Tom Tromey  <tromey@redhat.com>
12820
12821         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
12822         * doc/install.texi (Testing): Don't mention jacks.
12823         (Configuration): Document --enable-java-maintainer-mode.  Move
12824         --with-java-home to libgcj-specific section.  Document
12825         --with-ecj-jar.
12826         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
12827
12828 2007-01-15  Jan Hubicka  <jh@suse.cz>
12829
12830         * tree-ssa-dce.c (DCE_TODOs): New.
12831         (propagate_necessity): Return if something changed.
12832         (eliminate_unnecessary_stmts): Likewise.
12833         (perform_tree_ssa_dce): Return TODO flags when needed.
12834         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
12835
12836 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
12837
12838         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
12839         (fyl2x_extend<mode>xf3_i387): New insn pattern.
12840         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
12841         patterns using X87MODEF12 mode macro.  Extend operand 1
12842         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
12843         (log10<mode>2): Ditto.
12844         (log2<mode>2): Ditto.
12845         (log1p<mode>2): Ditto.
12846         (logb<mode>2): Ditto.
12847         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
12848         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
12849         (*fxtractxf3_i387): Rename from *fxtractxf3.
12850         (fxtract_extend<mode>xf3_i387): New insn pattern.
12851         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
12852         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
12853         and gen_fyl2xxf3_i387().
12854
12855 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
12856
12857         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
12858         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
12859         get_loop_exit_edges.  Changed return type to bool.
12860         * cfgloop.h (fix_loop_placement): Declaration removed.
12861
12862 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
12863
12864         * param.h (MIN_VECT_LOOP_BOUND): New.
12865         * params.def (MIN_VECT_LOOP_BOUND): New.
12866         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
12867         argument - minimum threshold for number of iterations.
12868         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
12869         argument to declaration.
12870         * tree-vect-analyze.c (vect_analyze_operations): Check value of
12871         MIN_VECT_LOOP_BOUND.
12872         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
12873         slpeel_tree_peel_loop_to_edge with additional argument.
12874         (vect_do_peeling_for_alignment): Likewise.
12875         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
12876
12877 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
12878
12879         PR target/30413
12880         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
12881         operands of size 1.
12882
12883 2007-01-14  Jan Hubicka  <jh@suse.cz>
12884
12885         * tree-dfa.c (remove_referenced_var): New function.
12886         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
12887         prune referenced vars list too.
12888         * tree-flow.h (remove_referenced_var): Declare.
12889
12890 2007-01-14  Jan Hubicka  <jh@suse.cz>
12891
12892         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
12893         separately.
12894         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
12895         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
12896         * except.h (verify_eh_throw_table_statements): Kill prototype.
12897         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
12898         into call exrepssions.
12899         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
12900         eh trhow verifier.
12901         * tree-cfg.c: Include pointer-set.h.
12902         (verify_node_sharing): Work on pointer set.
12903         (verify_eh_throw_stmt_node): New.
12904         (verify_stmts): Use pointers sets, verify throw_stmt.
12905
12906 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
12907
12908         * ipa-reference.c (analyze_function): Consider also addresses taken
12909         in phi nodes.
12910
12911 2007-01-12  Roger Sayle  <roger@eyesopen.com>
12912
12913         * c-typeck.c (null_pointer_constant_p): Replace use of
12914         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
12915         (build_c_cast): Likewise.
12916
12917 2007-01-12  Roger Sayle  <roger@eyesopen.com>
12918
12919         * tree.h (force_fit_type_double): Remove unused final argument.
12920         * c-common.c (constant_expression_warning): Replace use of
12921         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
12922         (convert_and_check): Likewise.
12923         (shorten_compare): Update call to force_fit_type_double.
12924         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
12925         * convert.c (convert_to_pointer): Update call to
12926         force_fit_type_double.
12927         * fold-const.c (force_fit_type_double): Remove overflowed_const
12928         argument.
12929         (int_const_binop, fold_convert_const_int_from_int,
12930         fold_convert_const_int_from_real, fold_div_compare,
12931         fold_sign_changed_comparison, fold_unary, fold_negate_const,
12932         fold_abs_const, fold_not_const): Remove the final argument from
12933         calls to force_fit_type_double.
12934
12935 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12936
12937         * configure.ac: Set insn to "nop" for spu-*-* also.
12938         * configure: Regenerate.
12939
12940 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
12941
12942         * builtins.def : Add BUILT_IN_FREE.
12943
12944 2007-01-12  Jan Hubicka  <jh@suse.cz>
12945
12946         PR tree-optimization/30443
12947         * tree-inline.c (tree_function_versioning): Do not optimize when
12948         cloning for inlining.
12949
12950 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
12951
12952         * doc/loop.texi: Document recording of loop exits.
12953         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
12954         (update_single_exits_after_duplication,
12955         update_single_exit_for_duplicated_loop,
12956         update_single_exit_for_duplicated_loops): Removed.
12957         (duplicate_loop_to_header_edge): Do not call
12958         update_single_exits_after_duplication and
12959         update_single_exit_for_duplicated_loops.
12960         (loop_version): Do not update single_exit information.
12961         (fix_loop_structure): Use record_loop_exits instead of
12962         mark_single_exit_loops.
12963         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
12964         the lists of loop exits.
12965         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
12966         split_edge, merge_blocks): Update the lists of loop exits.
12967         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
12968         loop_optimizer_init.
12969         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
12970         of mark_single_exit_loops.
12971         (loop_optimizer_finalize): Call release_recorded_exits.
12972         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
12973         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
12974         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
12975         update single exit information.
12976         * lambda-code.c (perfect_nestify): Ditto.
12977         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
12978         (mark_single_exit_loops): Removed.
12979         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
12980         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
12981         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
12982         functions.
12983         (get_loop_exit_edges, single_exit): Use recorded exit lists.
12984         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
12985         (verify_loop_structure): Verify consistency of the exit lists.
12986         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
12987         (set_single_exit): Removed.
12988         * cfgloop.h (struct loop_exit): New function.
12989         (struct loop): single_exit_ field replaced by exits field.
12990         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by LOOPS_HAVE_RECORDED_EXITS.
12991         (struct loops): Added exits hash.
12992         (mark_single_exit_loops, set_single_exit): Declaration removed.
12993         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
12994
12995 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
12996
12997         * doc/invoke.texi: Avoid use of @headitem.
12998
12999 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
13000
13001         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
13002
13003 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
13004
13005         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
13006         list of targets.
13007
13008 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
13009             Richard Sandiford  <richard@codesourcery.com>
13010
13011         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
13012         * config/m68k/m68k.opt: Resort options.
13013         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
13014
13015 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
13016             Richard Sandiford  <richard@codesourcery.com>
13017
13018         * doc/invoke.texi: Document the macros that are defined by
13019         m68k's -mtune and -mhard-float options.
13020         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
13021         (m68k_cpp_cpu_family): Likewise.
13022         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
13023         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
13024         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
13025         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
13026         (m68k_cpp_cpu_family): Likewise.
13027
13028 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
13029
13030         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
13031         macros besides mc68000 as tuning macros.  Use a switch statement
13032         to set them and mcpu32.
13033
13034 2007-01-12  Julian Brown  <julian@codesourcery.com>
13035
13036         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
13037         (TARGET_68040_ONLY): Rename to...
13038         (TARGET_68040): ...this.
13039         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
13040         * config/m68k/m68k.md: Likewise.
13041
13042 2007-01-12  Julian Brown  <julian@codesourcery.com>
13043             Nathan Sidwell  <nathan@codesourcery.com>
13044             Richard Sandiford  <richard@codesourcery.com>
13045
13046         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
13047         the -mcpu= argument associated with the --with-cpu setting.
13048         Define M68K_DEFAULT_TUNE to the default -mtune= option,
13049         if different from the one implied by the -mcpu setting.
13050         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
13051         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
13052         * doc/invoke.texi: Mention ColdFire in the introduction to the
13053         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
13054         -mno-div and -mhard-float options.  Make -m68881 a synonym for
13055         -mhard-float.  Document the previously-undocumented -m5206e,
13056         -m528x, -m5307 and -m5407 options.  Tweak the existing option
13057         documentation for consistency.
13058         * doc/install.texi: Mention new --with-cpu arguments.
13059         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
13060         default CPU if neither -mcpu nor -march are specified.
13061         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
13062         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
13063         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
13064         using m68k_tune to decide between families that implement the
13065         same ISA.  Use m68k_tune to set __mcfv4e__.
13066         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
13067         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
13068         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
13069         (FL_ISA_C, FL_ISA_MMU): New macros.
13070         (MASK_COLDFIRE): Delete.
13071         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
13072         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
13073         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
13074         (TARGET_HARD_FLOAT): Do not define here.
13075         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
13076         (TUNE_68000): New macro.
13077         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
13078         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
13079         (TUNE_CFV2): Redefine in terms of m68k_tune.
13080         (uarch_type, target_device, fpu_type): New enums.
13081         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
13082         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
13083         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
13084         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
13085         (FL_FOR_isa_c): New macros.
13086         (m68k_isa): New enum.
13087         (m68k_target_selection): New structure.
13088         (all_devices, all_isas, all_microarchs): New tables.
13089         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
13090         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
13091         (MASK_ALL_CPU_BITS): Delete.
13092         (m68k_find_selection): New function.
13093         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
13094         Map the legacy target options to a combination of the new ones.
13095         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
13096         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
13097         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
13098         settings.
13099         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
13100         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
13101         properties.
13102         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
13103         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
13104         * config/m68k/m68k-devices.def: New file.
13105
13106 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
13107             Nathan Sidwell  <nathan@codesourcery.com>
13108
13109         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
13110         (SUBTARGET_EXTRA_SPECS): New macros.
13111         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
13112         use %(asm_cpu_spec) instead.
13113         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
13114         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
13115         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
13116         (EXTRA_SPECS): Rename to...
13117         (SUBTARGET_EXTRA_SPECS): ...this.
13118
13119 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
13120             Richard Sandiford  <richard@codesourcery.com>
13121             Julian Brown  <julian@codesourcery.com>
13122
13123         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
13124         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
13125         to the configuration's default CPU.
13126         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
13127         Remove default masks.
13128         (m680[012]0-*-*): Set the default with_cpu to the first part of
13129         the target name.
13130         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
13131         (m68k*-*-linux): Extend the --with-cpu handling to...
13132         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
13133         and m68010.  Don't set target_cpu_default2.
13134         * doc/install.texi: Document --with-cpu for m68k.
13135         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
13136         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
13137         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
13138         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
13139         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
13140         (ASM_SPEC): Remove use of %(asm_cpu_default).
13141         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
13142         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
13143         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
13144         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
13145         __HAVE_FPU__ if TARGET_HARD_FLOAT.
13146         (TARGET_DEFAULT): Delete.
13147         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
13148         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
13149         (CPP_CPU_SPEC): Delete.
13150         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
13151         the appropriate string.
13152         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
13153         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
13154         (ASM_SPEC): Don't use %(asm_default_spec).
13155         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
13156         TARGET_DEFAULT and add MASK_68881.
13157         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
13158
13159 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
13160
13161         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
13162         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
13163         MASK_68010 alongside MASK_68020.
13164         * doc/invoke.texi: Document -m68010.
13165         * config/m68k/m68k.opt (m68010): New.
13166         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
13167         if TUNE_68010.
13168         (TUNE_68010): New macro.
13169         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
13170         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
13171         (M68K_CPU_m68332): Add MASK_68010.
13172         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
13173         fallback definition.
13174         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
13175         defines.
13176         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
13177         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
13178         to all entries that use MASK_68020.
13179         (output_move_simode_const, output_move_himode, output_move_qimode)
13180         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
13181         instead of TARGET_68020 to select clr behavior.  Remove comment
13182         about there being no TARGET_68010.
13183         * config/m68k/m68k.md: Likewise throughout.
13184
13185 2007-01-12  Julian Brown  <julian@codesourcery.com>
13186
13187         * config/m68k/m68k.h (TARGET_ISAB): New macro.
13188         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
13189         * config/m68k/m68k.md: Likewise.
13190
13191 2007-01-12  Julian Brown  <julian@codesourcery.com>
13192
13193         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
13194         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
13195
13196 2007-01-12  Julian Brown  <julian@codesourcery.com>
13197
13198         * config/m68k/m68k.h (TUNE_68040_60): New macro.
13199         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
13200         * config/m68k/m68k.md: Likewise.
13201
13202 2007-01-12  Julian Brown  <julian@codesourcery.com>
13203             Richard Sandiford  <richard@codesourcery.com>
13204
13205         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
13206         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
13207         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
13208         TARGET_CPU32.
13209         (TARGET_CPU32): Rename to...
13210         (TUNE_CPU32): ...this.
13211         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
13212         (TUNE_CFV2): New macros.
13213         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
13214         remove conditions that are implied by TARGET_68020.
13215         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
13216         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
13217         (m68k_output_function_epilogue): Likewise.
13218         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
13219         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
13220         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
13221         non-68000 timings.  Refactor multiplication and division costs.
13222         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
13223         TUNE_CPU32 instead of TARGET_CPU32.
13224         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
13225         and TUNE_68060 instead of TARGET_68060.
13226         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
13227         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
13228         TARGET_CPU32.
13229         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
13230         && !TARGET_COLDFIRE" to choose between moveq and clr.
13231         Likewise in the unnamed movsf pattern.
13232         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
13233         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
13234         ashiftrt pattern.
13235
13236 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
13237
13238         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
13239         of tabbing before backslashes.
13240
13241 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13242
13243         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
13244         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
13245         (ASM_OUTPUT_INTERNAL_LABEL): Define.
13246
13247 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
13248
13249         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
13250         find_interesting_uses_cond.
13251         (find_interesting_uses_cond): Use extract_cond_operands.
13252         (rewrite_use_compare): Use extract_cond_operands and
13253         force_gimple_operand_bsi.  Do not call update_stmt.
13254         (determine_use_iv_cost_condition): Use extract_cond_operands.
13255         Return cheaper of using original bound and changing the exit bound.
13256
13257 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
13258
13259         PR tree-optimization/29516
13260         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
13261         most_expensive_mult_to_index, addr_to_parts,
13262         create_mem_ref, maybe_fold_tmr): Make the type of
13263         fields of TARGET_MEM_REF sizetype.
13264         (move_fixed_address_to_symbol, move_pointer_to_base):
13265         New functions.
13266         * tree.def (TARGET_MEM_REF): Add comment on types of
13267         the operands.
13268
13269 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
13270
13271         * c-common.c (vector_types_convertible_p): Treat opaque types as
13272         always convertible if they have the same size, but not otherwise.
13273
13274 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
13275
13276         * ifcvt.c (struct noce_if_info): Add comments to the fields.
13277         Remove the b_unconditional field.
13278         (noce_try_sign_mask): Do not look at b_unconditional.
13279         (noce_process_if_block): Do not use merge_if_blocks.  Update
13280         the CFG here.  Do not set b_unconditional.
13281         (cond_move_process_if_block): Likewise.
13282         (find_cond_trap): Likewise.
13283         (check_cond_move_block): Require simple jump insns at the end
13284         of the basic block.
13285
13286 2007-01-11  Jan Hubicka  <jh@suse.cz>
13287
13288         PR tree-optimization/1046
13289         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
13290         when alias info is not ready.
13291         (pass_tail_recursion): Do not require aliasing.
13292         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
13293         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
13294         * tree-ssa-copy.c (pass_copy_prop): Likewise.
13295         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
13296         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
13297         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
13298         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
13299         before inlining.
13300         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
13301         When aliasing is not build, mark statement as volatile.
13302
13303 2007-01-11  Tom Tromey  <tromey@redhat.com>
13304
13305         PR preprocessor/15185, PR preprocessor/20989:
13306         * doc/cppopts.texi <-MT>: Update description of algorithm for
13307         computing default target.
13308         <-M, -MD>: Reword "basename" text.
13309
13310 2007-01-11  Roger Sayle  <roger@eyesopen.com>
13311
13312         * builtins.c (expand_builtin_pow, expand_builtin_powi,
13313         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
13314         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
13315         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
13316         fold_builtin_bswap, real_constp, fold_builtin_pow,
13317         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
13318         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
13319         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
13320         * convert.c (convert_to_pointer): Likewise.
13321         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
13322         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
13323         const_binop, fold_convert_const_int_from_int,
13324         fold_convert_const_int_from_real,
13325         fold_convert_const_real_from_real, sign_bit_p,
13326         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
13327         fold_sign_changed_comparison, fold_unary, fold_comparison,
13328         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
13329         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
13330         * print-tree.c (print_node_brief, print_node): Likewise.
13331         * stor-layout.c (place_field, layout_type): Likewise.
13332         * tree-chrec.c (keep_cast): Likewise.
13333         * tree.c (build_vector, build_real, build_real_from_int_cst,
13334         build_complex): Likewise.
13335
13336 2007-01-11  Roger Sayle  <roger@eyesopen.com>
13337
13338         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
13339         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
13340
13341 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
13342
13343         * configure.ac (strict1_warn): Rename to strict_warn.
13344         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
13345         cc_set_by_configure, quoted_cc_set_by_configure,
13346         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
13347         all_boot_languages, all_stagestuff): Remove.
13348         (target_list): Remove bootstrap targets.
13349         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
13350         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
13351         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
13352         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
13353         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
13354         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
13355         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
13356         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
13357         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
13358         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
13359         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
13360         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
13361         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
13362         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
13363         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
13364         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
13365         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
13366         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
13367         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
13368         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
13369         (mostlyclean): Adjust.
13370         (clean, distclean): Don't mention bootstrap stuff.
13371         * configure: Regenerate.
13372         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
13373         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
13374         treelang/config-lang.in (stagestuff): Remove.
13375         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
13376         stageprofile, stagefeedback, stagestuff): Remove mention.
13377
13378 2007-01-11  Nick Clifton  <nickc@redhat.com>
13379
13380         * config/mcore/predicates.md (mcore_general_movesrc_operand):
13381         Accept CONSTs.
13382         (mcore_general_movdst_operand): Do not accept CONST_INTs.
13383         (mcore_arith_K_S_operand): Run the test for the S constraint not
13384         the test for the M constraint.
13385         (mcore_addsub_operand): Do not accept integer values that are
13386         larger than 32 bits.
13387         * config/mcore/mcore.md: Remove unused constraints from split.
13388         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
13389         (addsi3): Likewise.
13390         (allocate_stack): Likewise.
13391         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
13392         operands to 32 bits.
13393         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
13394         INTVAL.
13395         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
13396         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
13397         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
13398         mcore_output_bclri, mcore_output_andn, output_inline_const,
13399         mcore_output_move, mcore_output_movedouble): Likewise.
13400         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
13401         (output_inline_const): Likewise.
13402         (output_inline_const): Fix format strings used in sprintf
13403         statements.
13404         * config/mcore/mcore-protos.h: Update prototypes for changed
13405         functions in mcore.c.
13406         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
13407         HOST_WIDE_INT and not int.
13408         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
13409         CONST_OK_FOR_N): Likewise.
13410         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
13411         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
13412         an INTVAL.
13413
13414 2007-01-10  Jan Hubicka  <jh@suse.cz>
13415
13416         * tree-vrp.c (remove_range_assertions): Release defs.
13417         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
13418         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
13419
13420 2007-01-10  Paul Brook  <paul@codesourcery.com>
13421
13422         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
13423         * config/arm/arm.md (mulsi3subsi): New insn.
13424
13425 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
13426
13427         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
13428         (tree_transform_and_unroll_loop): New.
13429         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
13430         Declare.
13431
13432 2007-01-10  Robert Kennedy <jimbob@google.com>
13433
13434         * fold-const.c (fold_comparison): Fold comparisons like (x *
13435         1000 < 0) to (x < 0).
13436
13437 2007-01-10  Ian Lance Taylor  <iant@google.com>
13438
13439         * tree-pretty-print.c (dump_generic_node): Print parentheses when
13440         operands have the same priority.
13441
13442 2007-01-10  Tom Tromey  <tromey@redhat.com>
13443
13444         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
13445         (fold_binary): Likewise.
13446         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
13447         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
13448         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
13449         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
13450         * langhooks.h (struct lang_hooks): Removed field
13451         'can_use_bit_fields_p'.
13452
13453 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
13454
13455         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
13456
13457 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
13458
13459         * function.c (get_last_funcdef_no): New function.
13460         * function.h (get_last_funcdef_no): Declare.
13461         * tree-inline.c (initialize_cfun): Add initialization.
13462         (tree_function_versioning): Cleanup.
13463
13464 2007-01-10  Jan Hubicka  <jh@suse.cz>
13465
13466         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
13467         PHIs.
13468
13469 2007-01-10  Sa Liu  <saliu@de.ibm.com>
13470             Ben Elliston  <bje@au.ibm.com>
13471
13472         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
13473         for SAVE_NONLOCAL and Pmode for any other save level.
13474         * spu-protos.h (spu_restore_stack_block): Declare.
13475         * spu.md (save_stack_block): Remove.
13476         (restore_stack_block): Call spu_restore_stack_block.
13477         * spu.c (spu_restore_stack_block): New function.
13478         (spu_expand_epilogue): Remove old comment.
13479
13480 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
13481
13482         PR tree-optimization/30322
13483         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
13484         (cand_value_at): Return the value as aff_tree.
13485         (may_eliminate_iv): Convert the bound from aff_tree to tree.
13486         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
13487         aff_combination_mult): New functions.
13488         (aff_combination_add): Use aff_combination_add_cst.
13489         (aff_combination_convert): Allow conversions to a wider type.
13490         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
13491         * tree-affine.h (aff_combination_mult): Declare.
13492
13493 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
13494
13495         * doc/tm.texi: Update documentation to reflect reality of exec
13496         and start file search behaviours. Update copyright year.
13497         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
13498         header file directories.
13499
13500 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
13501
13502         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
13503         (*cosxf2): Rename to cosxf2_i387.
13504         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
13505         using X87MODEF12 mode macro. Rename patterns to
13506         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
13507         for SSE math.
13508         (*cosdf2, *cossf2): Ditto.
13509         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
13510         to match extended input operands.
13511         (sincos<mode>3): New expander.
13512         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
13513         insn patterns and corresponding splitters.
13514
13515 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
13516
13517         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
13518         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
13519
13520 2007-01-09  Nicolas Pitre  <nico@cam.org>
13521
13522         PR target/30173
13523         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
13524
13525 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
13526
13527         * target.h (struct gcc_target): New field library_rtti_comdat.
13528         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
13529         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
13530         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
13531         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
13532
13533 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
13534
13535         * doc/invoke.texi (Optimize Options): Correct description of -O0.
13536
13537 2007-01-08  Richard Guenther  <rguenther@suse.de>
13538
13539         * tree.h (force_fit_type_double): Export.
13540         (force_fit_type): Remove.
13541         * fold-const.c (force_fit_type_double): New function.
13542         (force_fit_type): Remove.
13543         (int_const_binop): Use it.
13544         (fold_convert_const_int_from_int): Likewise.
13545         (fold_convert_const_int_from_real): Likewise.
13546         (fold_div_compare): Likewise.
13547         (fold_sign_changed_comparison): Likewise.
13548         (fold_unary): Likewise.
13549         (fold_negate_const): Likewise.
13550         (fold_abs_const): Likewise.
13551         (fold_not_const): Likewise.
13552         * c-common.c (shorten_compare): Use force_fit_type_double.
13553         * convert.c (convert_to_pointer): Likewise.
13554
13555 2007-01-08  Richard Guenther  <rguenther@suse.de>
13556
13557         * tree.h (build_int_cst_wide_type): Export.
13558         * tree.c (build_int_cst_wide_type): New function.
13559         (build_int_cst_wide): Fix comment.
13560         * builtins.c (fold_builtin_object_size): Use build_int_cst
13561         to build -1 or 0 of the correct type.  Use fit_double_type
13562         to check for overflow.
13563         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
13564         to build the mask.
13565         (decode_field_reference): Likewise.
13566         (all_ones_mask_p): Likewise.
13567         (native_interpret_int): Use build_int_cst_wide_type.
13568         (fold_binary): Use build_int_cst_type to build an all-ones
13569         value.
13570         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
13571
13572 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
13573
13574         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
13575
13576 2007-01-09  Ben Elliston  <bje@au.ibm.com>
13577
13578         * genautomata.c (STATS_OPTION): New option.
13579         (stats_flag): New flag.
13580         (gen_automata_option): Handle it.
13581         (initiate_automaton_gen): Ditto.
13582         (write_automata): Output statistics only if stats_flag is
13583         set. Likewise, output time statistics only if time_flag is set.
13584         * doc/md.texi (Processor pipeline description): Document new flag.
13585
13586 2007-01-08  Richard Guenther  <rguenther@suse.de>
13587
13588         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
13589         * tree.c (build_int_cst_type): Likewise.
13590         (size_in_bytes): Don't call force_fit_type on the result.
13591         (int_fits_type_p): Use fit_double_type.
13592         * fold-const.c (fit_double_type): New function.
13593         (force_fit_type): Use it.
13594         * tree.h (fit_double_type): Export.
13595
13596 2007-01-08  Jan Hubicka  <jh@suse.cz>
13597
13598         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
13599         * ipa.c (function_and_variable_visibility): Fix return type.
13600
13601 2007-01-08  Richard Guenther  <rguenther@suse.de>
13602
13603         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
13604         of offset to build the index.
13605         * tree-pretty-print.c (dump_generic_node): Don't build negated
13606         const just for printing.
13607         * c-pretty-print.c (pp_c_integer_constant): Likewise.
13608         * builtins.c (fold_builtin_int_roundingfn): Check if result
13609         fits the type by using force_fit_type and comparing the result.
13610         * predict.c (predict_loops): Use compare_tree_int for comparison.
13611         * tree.c (build_int_cst): Fall back to integer_type_node for
13612         NULL_TREE type.
13613         (build_int_cst_wide): Assert type is non-null.
13614
13615 2007-01-08  Roberto Costa  <roberto.costa@st.com>
13616
13617         * tree-vrp.c (extract_range_from_cond_expr): New.
13618         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
13619         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
13620         as expressions.
13621         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
13622         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
13623         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
13624         used as expressions.
13625         * tree-object-size.c (cond_expr_object_size): New.
13626         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
13627
13628 2007-01-08  Jan Hubicka  <jh@suse.cz>
13629
13630         * tree-ssa-forwprop.c (forward_propagate_into_cond,
13631         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
13632         statement.
13633
13634 2007-01-08  Richard Guenther  <rguenther@suse.de>
13635
13636         PR tree-optimization/23603
13637         * tree-vrp.c (set_value_range_to_truthvalue): New function.
13638         (extract_range_from_binary): Fall back to truthvalue instead of
13639         varying for TRUTH_*_EXPR.
13640         (extract_range_from_comparison): Fall back to truthvalue instead of
13641         varying.
13642         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
13643         if all visited PHI values were constant.
13644
13645 2007-01-08  Jan Hubicka  <jh@suse.cz>
13646
13647         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
13648         (cgraph_analyze_function): break out from ...
13649         (cgraph_finalize_compilation_unit): ... here.
13650         (cgraph_expand_function): Remove forgoten commented out line.
13651         (cgraph_optimize): Analyze functions.
13652
13653 2007-01-08  Jan Hubicka  <jh@suse.cz>
13654
13655         * tree-pas.h (TODO_remove_function): New flag.
13656         (TODO_update*): Renumber.
13657         (pass_ipa_increase_alignment,
13658         pass_ipa_function_and_variable_visibility): New passes.
13659         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
13660         (cgraph_function_and_variable_visibility): Move to ipa.c
13661         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
13662         cgraph_increase_alignment.
13663         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
13664         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
13665         calling tree-inline.
13666         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
13667         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
13668         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
13669         (gate_increase_alignment): New function.
13670         (pass_ipa_increase_alignment): New pass.
13671         * ipa.c: Inline tree-pass.h and timevar.h
13672         (function_and_variable_visibility): Move here from cgraphunit.c
13673         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
13674         * passes.c (init_optimization_passes): Add the two new passes.
13675         (execute_todo): Handle cgraph_remove_functions.
13676
13677 2007-01-08  Nick Clifton  <nickc@redhat.com>
13678
13679         * config/frv/predicates.md (reg_or_0_operand): Accept
13680         CONST_DOUBLEs.
13681
13682 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
13683
13684         * config/bfin/rtems.h, config/bfin/t-rtems: New.
13685         * config.gcc: Add bfin*-rtems*.
13686
13687 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
13688
13689         * c.opt: Add -flax-vector-conversions.
13690         * c-typeck.c (convert_for_assignment): Pass flag to
13691         vector_types_convertible_p to allow emission of note.
13692         (digest_init): Likewise.
13693         * c-opts.c: Handle -flax-vector-conversions.
13694         * c-common.c (flag_lax_vector_conversions): New.
13695         (vector_types_convertible_p): Unless -flax-vector conversions
13696         has been passed, disallow conversions between vectors with
13697         differing numbers of subparts and/or element types.  If such
13698         a conversion is disallowed, possibly emit a note on the first
13699         occasion only to inform the user of -flax-vector-conversions.
13700         The new last argument specifies this.
13701         * c-common.h (flag_lax_vector_conversions): New.
13702         (vector_types_convertible_p): Add extra argument.
13703         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
13704         char_type_node for V*QI type vectors.
13705         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
13706         Update to satisfy new typechecking rules.
13707         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
13708         C and C++ variants.
13709         * doc/invoke.texi (C Dialect Options): Document
13710         -flax-vector-conversions.
13711
13712 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
13713
13714         PR tree-optimization/29877
13715         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
13716         a register variable on the RHS to not be replaceable.
13717
13718 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
13719         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
13720         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
13721         const_simm15, const_pow2, const_npow2): Added.
13722         * config/score/misc.md (insv, extv, extzv, movmemsi,
13723         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
13724         * config/score/score.c (score_address_cost, score_select_cc_mode):
13725         Added.
13726         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
13727         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
13728         Update score_print_operand.
13729         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
13730         Adjust register allocate order and update some macro define.
13731         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
13732         mdx_block_move_straight, mdx_block_move_loop_head,
13733         mdx_block_move_loop_body, mdx_block_move_loop_foot, mdx_block_move_loop,
13734         mdx_block_move): Added.
13735         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
13736         mdp_limm): Updated and fix some bug and typo.
13737         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
13738         (movsf, movdf, doloop_end): Added.
13739
13740 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
13741
13742         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
13743         config/arm/thumb2.md: Fix comment typos.
13744         * doc/extend.texi: Fix a typo.
13745
13746 2007-01-07  Eric Christopher  <echristo@apple.com>
13747
13748         * configure.ac: Check for __stack_chk_fail for darwin.
13749         * configure: Regenerate.
13750
13751 2007-01-07  Richard Guenther  <rguenther@suse.de>
13752
13753         * tree-vrp.c (extract_range_from_assert): CSE calls to
13754         compare_values where possible.
13755         (extract_range_from_unary_expr): Likewise.
13756
13757 2007-01-07  Anatoly Sokolov <aesok@post.ru>
13758
13759         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
13760         * config/avr/avr.c (call_insn_operand): Delete function.
13761         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
13762         instead of register number. Use predicates.
13763         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
13764         call_insn_operand): Add.
13765
13766 2007-01-06  Jan Hubicka  <jh@suse.cz>
13767
13768         * tree-pass.h (pass_build_cgraph_edges): Declare.
13769         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
13770         (visited_nodes): Remove.
13771         (cgraph_create_edges): Move to cgraphbuild.c; rename to
13772         build_cgrpah_edges; make visited_nodes local.
13773         (cgraph_process_new_functions): DO not call initialize_inline_failed.
13774         (record_references_in_initializer): Move to cgraphbuild.c
13775         (initialize_inline_failed, rebuild_cgraph_edges,
13776         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
13777         (verify_cgraph_node): Make visited_nodes local.
13778         (cgraph_analyze_function): Do not call cgraph_create_edges and
13779         initialize_inline_failed.
13780         (cgraph_expand_function): Do not call cgraph_lower_function;
13781         assert that function is already lowered.
13782         * Makefile.in (cgraphbuild.o): New.
13783         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
13784         at the end of lowering passes.
13785
13786 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
13787
13788         * ifcvt.c (cond_move_convert_if_block): New function, code
13789         factored out from...
13790         (cond_move_process_if_block): ...here.  Call the new function
13791         on the THEN and ELSE blocks.
13792         (merge_if_block): Do not copy global_live_at_end, merge_blocks
13793         already takes care of this.
13794
13795 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13796
13797         PR c/19978
13798         * tree.h (TREE_OVERFLOW_P): New.
13799         * c-typeck.c (parser_build_unary_op): Warn only if result
13800         overflowed and operands did not.
13801         (parser_build_binary_op): Likewise.
13802         (convert_for_assignment): Remove redundant overflow_warning.
13803         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
13804
13805 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13806
13807         * c-typeck.c (store_init_value): Split over two lines to follow
13808         the GNU coding style.
13809
13810 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
13811
13812         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
13813         __GXX_EXPERIMENTAL_CXX0X__.
13814         * doc/cpp.texi: Same.
13815
13816 2007-01-05  Richard Guenther  <rguenther@suse.de>
13817
13818         PR middle-end/27826
13819         * tree.c (get_narrower): Do not construct COMPONENT_REFs
13820         with mismatched types.  Instead explicitly build a
13821         conversion NOP_EXPR.
13822
13823 2007-01-05  Ian Lance Taylor  <iant@google.com>
13824
13825         * c-common.c (decl_with_nonnull_addr_p): New function.
13826         (c_common_truthvalue_conversion): Call it.
13827         * c-typeck.c (build_binary_op): Likewise.
13828         * c-common.h (decl_with_nonnull_addr_p): Declare.
13829
13830 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
13831
13832         PR c/30360
13833         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
13834         denom against 0.0.
13835
13836 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
13837
13838         * doc/install.texi (Final install): Document the fact that
13839         the GNAT runtime should not be stripped.
13840
13841 2007-01-04  Jan Hubicka  <jh@suse.cz>
13842
13843         * tree-inline.c (fold_marked_statements): Update operand caches
13844         and EH after folding
13845
13846 2007-01-04  Ian Lance Taylor  <iant@google.com>
13847
13848         * c-common.c (check_function_nonnull): Whitespace fix.
13849
13850 2007-01-04  Jan Hubicka  <jh@suse.cz>
13851
13852         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
13853         comitted older version of patch.
13854         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
13855         function, celanup cfg and collect garbage.
13856
13857 2007-01-04  Mike Stump  <mrs@apple.com>
13858
13859         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
13860         (clean): Likewise.
13861
13862 2007-01-04  Eric Christopher  <echristo@apple.com>
13863
13864         * libgcc2.c (__bswapsi2): Use SItype.
13865         (__bswapdi2): Use DItype.
13866         * libgcc2.h: Update for above.
13867
13868 2007-01-04  Paul Brook  <paul@codesourcery.com>
13869
13870         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
13871         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
13872         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
13873         umulsidi3, umulsidi3adddi, smulsi3_highpart,
13874         umulsi3_highpart): Make conditional on !arm_arch6.
13875         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
13876         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
13877         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
13878         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
13879         umulsi3_highpart_v6): New insns.
13880
13881 2007-01-04  Roger Sayle  <roger@eyesopen.com>
13882
13883         * fold-const.c (fold_convert): When casting an expression to void,
13884         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
13885         have a type.  Instead of attempting to build a NOP_EXPR, return
13886         these "special" trees directly.
13887
13888 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
13889
13890         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
13891         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
13892         rs6000_cost->fp not 0 as adjustment for outer NEG.
13893
13894 2007-01-04  Jan Hubicka  <jh@suse.cz>
13895
13896         * cgraph.c (cgraph_release_function_body): New function.
13897         (cgraph_remove_node): Use it.
13898         * cgraph.h (cgraph_release_function_body): Declare.
13899         * cgraphunit.c (cgraph_expand_function): Use it.
13900         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
13901         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
13902         is initialized and while compilation of other function is running.
13903         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
13904         statement CFG annotations from here to ...
13905         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
13906
13907 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
13908
13909         * cfgloop.h (enum li_flags): Make the constants powers of two.
13910
13911 2007-01-04  Jan Hubicka  <jh@suse.cz>
13912
13913         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
13914         set.
13915         (fold_marked_statements): New function.
13916         (optimize_inline_calls, tree_function_versioning): Fold new statements.
13917         * tree-inline.h (copy_body_data): Add statements_to_fold.
13918
13919 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
13920
13921         * config.gcc: Mention libgcc/config.host.
13922         * Makefile.in: Update comments mentioning libgcc.
13923         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
13924         (all.cross, start.encap, rest.encap, rest.cross): Update
13925         dependencies for libgcc move.
13926         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
13927         (clean-target, clean-target-libgcc): Delete.
13928         (srcdirify, GCC_EXTRA_PARTS): New macros.
13929         (libgcc-support, libgcc.mvars): New rules.
13930         (distclean): Remove mention of mklibgcc.
13931         (install): Don't reference INSTALL_LIBGCC.
13932         (install-common): Don't reference EXTRA_PARTS.
13933         (install-libgcc, install-multilib): Delete rules.
13934         * mklibgcc.in: Delete file.
13935         * doc/configfiles.texi: Don't mention mklibgcc.
13936
13937         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
13938         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
13939         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
13940         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
13941         (mklibgcc, ldblspecs): Likewise.
13942
13943         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
13944         (posixpre.def): Use $(T).
13945         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
13946         (SHLIB_SRC, SHLIB_INSTALL): Delete.
13947         (SHLIB_LINK): Make dummy.
13948         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
13949
13950         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
13951
13952         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
13953         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
13954         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
13955         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
13956
13957         * configure.ac (all_outputs): Remove mklibgcc.
13958         * configure: Regenerated.
13959
13960 2007-01-03  Josh Conner  <jconner@apple.com>
13961
13962         PR middle-end/29683
13963         * calls.c (compute_argument_addresses): Set stack and stack_slot
13964         for partial args, too.
13965         (store_one_arg): Use locate.size.constant for the size when
13966         generating a save_area.
13967
13968 2007-01-03  Robert Kennedy <jimbob@google.com>
13969
13970         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
13971         whose definitions are deleted due to basic block merging.
13972
13973 2007-01-03  Paul Brook  <paul@codesourcery.com>
13974
13975         PR target/16634
13976         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
13977         functions.
13978         (use_return_insn): Return 0 for Thumb interrupt functions.
13979         (print_multi_reg): Add rfe argument for IRQ returns.
13980         (arm_output_epilogue): Pop interrupt return address directly into PC.
13981         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
13982
13983 2007-01-03  Paul Brook  <paul@codesourcery.com>
13984
13985         Merge from sourcerygxx-4_1.
13986         * config/arm/thumb2.md: New file.
13987         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
13988         Thumb-2.
13989         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
13990         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
13991         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
13992         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
13993         tables.
13994         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
13995         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
13996         comptibility.
13997         * config/arm/ieee754-sf.S: Ditto.
13998         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
13999         (thumb1_base_register_rtx_p): ... to this.
14000         (thumb_index_register_rtx_p): Rename...
14001         (thumb1_index_register_rtx_p): ... to this.
14002         (thumb_output_function_prologue): Rename...
14003         (thumb1_output_function_prologue): ... to this.
14004         (thumb_legitimate_address_p): Rename...
14005         (thumb1_legitimate_address_p): ... to this.
14006         (thumb_rtx_costs): Rename...
14007         (thumb1_rtx_costs): ... to this.
14008         (thumb_compute_save_reg_mask): Rename...
14009         (thumb1_compute_save_reg_mask): ... to this.
14010         (thumb_final_prescan_insn): Rename...
14011         (thumb1_final_prescan_insn): ... to this.
14012         (thumb_expand_epilogue): Rename...
14013         (thumb1_expand_epilogue): ... to this.
14014         (arm_unwind_emit_stm): Rename...
14015         (arm_unwind_emit_sequence): ... to this.
14016         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
14017         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
14018         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
14019         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
14020         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
14021         thumb2_output_casesi): New functions.
14022         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
14023         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
14024         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
14025         THUMB2_WORK_REGS): Define.
14026         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
14027         arm_condexec_mask, arm_condexec_masklen)): New variables.
14028         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
14029         (arm_override_options): Check new CPU capabilities.
14030         Set new architecture flag variables.
14031         (arm_isr_value): Handle v7m interrupt functions.
14032         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
14033         Thumb-2.
14034         (const_ok_for_arm): Handle Thumb-2 constants.
14035         (arm_gen_constant): Ditto.  Use movw when available.
14036         (arm_function_ok_for_sibcall): Return false for v7m interrupt
14037         functions.
14038         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
14039         (thumb_find_work_register, arm_load_pic_register,
14040         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
14041         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
14042         print_multi_reg, output_mov_long_double_fpa_from_arm,
14043         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
14044         output_mov_double_fpa_from_arm, output_move_double,
14045         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
14046         output_return_instruction, arm_output_function_prologue,
14047         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
14048         arm_output_mi_thunk, thumb_set_return_address): Ditto.
14049         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
14050         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
14051         (arithmetic_instr, shift_op): Use arm_shift_nmem.
14052         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
14053         '!' and 'L'.
14054         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
14055         (thumb_expand_prologue): Use thumb_set_frame_pointer.
14056         (arm_file_start): Output directive for unified syntax.
14057         (arm_unwind_emit_set): Handle stack alignment instruction.
14058         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
14059         Add v6t2, v7, v7a, v7r and v7m.
14060         (RETLDM): Add Thumb-2 code.
14061         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
14062         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
14063         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
14064         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
14065         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
14066         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
14067         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
14068         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
14069         ADJUST_INSN_LENGTH): Define.
14070         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
14071         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
14072         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
14073         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
14074         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
14075         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
14076         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
14077         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
14078         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
14079         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
14080         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
14081         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
14082         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
14083         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
14084         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
14085         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
14086         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
14087         cortex-m3.
14088         * config/arm/arm-tune.md: Regenerate.
14089         * config/arm/arm-protos.h: Update prototypes.
14090         * config/arm/vfp.md: Enable patterns for Thumb-2.
14091         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
14092         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
14093         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
14094         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
14095         * config/arm/libunwind.S: Add Thumb-2 code.
14096         * config/arm/constraints.md: Update include Thumb-2.
14097         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
14098         * config/arm/ieee754-df.S: Ditto.
14099         * config/arm/bpabi.S: Ditto.
14100         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
14101         * config/arm/predicates.md (low_register_operand,
14102         low_reg_or_int_operand, thumb_16bit_operator): New.
14103         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
14104         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
14105         * config/arm/t-arm-elf: Add armv7 multilib.
14106         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
14107         Include thumb2.md.
14108         (UNSPEC_STACK_ALIGN, ce_count): New.
14109         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
14110         arm_zero_extendsidi2, arm_zero_extendqidi2): New
14111         insns/expanders.
14112         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
14113         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
14114         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
14115         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
14116         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
14117         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
14118         insns.
14119         * doc/extend.texi: Document ARMv7-M interrupt functions.
14120         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
14121
14122 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
14123
14124         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
14125         (struct _Unwind_Context): Rename args_size to flags, remove
14126         signal_frame field, add a new args_size field and version field.
14127         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
14128         _Unwind_IsExtendedContext): New inline functions.
14129         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
14130         Assume by_value array is only present if _Unwind_IsExtendedContext.
14131         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
14132         _Unwind_IsSignalFrame.
14133         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
14134         (uw_update_context_1): Use _Unwind_SetSignalFrame.
14135         (uw_init_context_1): Initialize context->flags to
14136         EXTENDED_CONTEXT_BIT.
14137         * config/rs6000/linux-unwind.h (frob_update_context): Use
14138         _Unwind_SetSignalFrame.
14139
14140 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14141
14142         PR middle-end/30353
14143         * gimplify.c (gimplify_modify_expr_complex_part): Move below
14144         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
14145         the value.
14146
14147 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
14148
14149         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
14150         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
14151         RET, AT_SP): Remove.
14152         * config/i386/i386.md (*sse_prologue_save_insn): Use return
14153         instead of RET.
14154
14155         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
14156         * cfgbuild.c (find_basic_blocks): Likewise.
14157         * cfgrtl.c (rtl_create_basic_block): Likewise.
14158         * function.c (temp_slots_at_level): Likewise.
14159         * reg-stack.c (stack_regs_mentioned): Likewise.
14160         * regclass.c (allocate_reg_info): Likewise.
14161         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
14162         set_bb_for_stmt, move_block_to_fn): Likewise.
14163         * tree-complex.c (tree_lower_complex): Likewise.
14164         * vec.h (VEC_safe_grow_cleared): New.
14165
14166         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
14167
14168 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
14169
14170         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
14171         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
14172         to loop_version.
14173         * cfgloopmanip.c (scale_loop_frequencies): Export.
14174         (loopify): Scale the frequencies by prescribed coefficients.
14175         (set_zero_probability): New function.
14176         (duplicate_loop_to_header_edge): Improve updating of frequencies.
14177         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
14178         and frequencies according to arguments.
14179         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
14180         correctly.
14181         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
14182         * modulo-sched.c (sms_schedule): Set probabilities for entering
14183         versioned loop correctly.
14184         * tree-vect-transform.c (vect_transform_loop): Ditto.
14185         * cfgloop.h (loopify, loop_version): Declaration changed.
14186         (scale_loop_frequencies): Declared.
14187
14188 2007-01-02  Jan Hubicka  <jh@suse.cz>
14189
14190         * cgraph.c: Include tree-flow.h
14191         (cgraph_add_new-function): Handle IPA_SSA mode; execute
14192         early_local_passes.
14193         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
14194         * tree-pass.h (pass_all_early_optimizations): Declare.
14195         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
14196         early_local_passes.
14197         (cgraph_analyze_function): Do early_local_passes.
14198         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
14199         Do not add referenced vars.
14200         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
14201         SSA form.
14202         (gate_all_early_local_passes): New gate.
14203         (pass_early_local_passes): Use new gate.
14204         (execute_early_local_optimizations): New functions.
14205         (gate_all_early_optimizations): New gate.
14206         (pass_all_early_optimizations): New pass.
14207         (execute_free_datastructures): Free SSA only when initialized.
14208         (gate_init_datastructures): Init only when optimizing.
14209         (tree_lowering_passes): Do early local passes when called late.
14210         * tree-profile.c (do_tree_profiling): Don't profile functions added
14211         late.
14212         (do_early_tree_profiling, pass_early_tree_profile): Kill.
14213         * tree-cfg.c (update_modified_stmts): Do not update when operands are
14214         not active.
14215         * passes.c (init_optimizations_passes): Reorder so we go into SSA
14216         during early_local_passes.
14217         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
14218
14219
14220 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
14221
14222         * Makefile.in: Update copyright year.
14223
14224 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
14225
14226         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
14227         in $(lang_checks) and check-consistency targets.
14228
14229 2007-01-02  Jan Hubicka  <jh@suse.cz>
14230
14231         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
14232         Do not add referenced vars.
14233         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
14234         are not active.
14235         * passes.c (init_optimization_passes): Put mudflap_2 after
14236         free_datastructures.
14237
14238 2007-01-02  Jan Hubicka  <jh@suse.cz>
14239
14240         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
14241         Set NOTHROW flag on call statements proved to be nothrow.
14242         Update statement of local calls so new pure/const functions are
14243         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
14244         goto receivers.
14245         (tree_rest_of_compilation): Register hooks and initialize bitmap
14246         early. Do not set after_inlining flag.
14247
14248 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
14249
14250         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
14251         HOST_BITS_PER_LONGLONG
14252
14253 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
14254
14255         PR c/19977
14256         * c-typeck.c (store_init_value): Don't emit pedantic overflow
14257         warning for non-static initializers.
14258
14259 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
14260
14261         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
14262         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
14263         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
14264         Always use set_unique_reg_note to add REG_EQUAL notes.
14265
14266 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
14267
14268         Revert:
14269         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
14270
14271         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
14272         * cfgbuild.c (find_basic_blocks): Likewise.
14273         * cfgrtl.c (rtl_create_basic_block): Likewise.
14274         * function.c (temp_slots_at_level): Likewise.
14275         * reg-stack.c (stack_regs_mentioned): Likewise.
14276         * regclass.c (allocate_reg_info): Likewise.
14277         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
14278         set_bb_for_stmt, move_block_to_fn): Likewise.
14279         * tree-complex.c (tree_lower_complex): Likewise.
14280         * vec.h (VEC_safe_grow_cleared): New.
14281
14282 2007-01-02  Ian Lance Taylor  <iant@google.com>
14283
14284         * c-common.c (c_common_truthvalue_conversion): When warning about
14285         using an assignment as a truth value, set TREE_NO_WARNING.
14286
14287 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14288
14289         PR middle-end/7651
14290         * c.opt (Wold-style-declaration): New.
14291         * doc/invoke.texi (C-only Warning Options): New.
14292         (Wold-style-declaration): Document it.
14293         (Wextra): Enabled by -Wextra.
14294         * c-opts.c (c_common_post_options): Enabled by -Wextra.
14295         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
14296         -Wold-style-declaration.
14297
14298 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
14299
14300         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
14301         * cfgbuild.c (find_basic_blocks): Likewise.
14302         * cfgrtl.c (rtl_create_basic_block): Likewise.
14303         * function.c (temp_slots_at_level): Likewise.
14304         * reg-stack.c (stack_regs_mentioned): Likewise.
14305         * regclass.c (allocate_reg_info): Likewise.
14306         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
14307         set_bb_for_stmt, move_block_to_fn): Likewise.
14308         * tree-complex.c (tree_lower_complex): Likewise.
14309         * vec.h (VEC_safe_grow_cleared): New.
14310
14311 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
14312
14313         * c-common.c (c_common_nodes_and_builtins): Since variants of
14314         void_type_node get built before it is given a name, we need to
14315         give those variants the name, too.
14316         (complete_array_type): We need to work with the canonical main
14317         type of the array, from which we will build the qualified version.
14318         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
14319         * print-tree.c (print_node): Display canonical type information
14320         for each type.
14321         * stor-layout.c (layout_type): When we don't know the
14322         alignment of a type for which we're building an array, we end up
14323         guessing wrong, so make the type require structural equality.
14324         * tree.c (make_node_stat): When we build a new type, it is its
14325         own canonical type.
14326         (build_type_attribute_qual_variant): When building an attribute
14327         variant, its canonical type is the non-attribute variant. However,
14328         if the attributes are target-dependent and they differ, we need to
14329         use structural equality checks for this type.
14330         (build_qualified_type): A qualified type is not equivalent to its
14331         unqualified variant; set the canonical type appropriately.
14332         (build_distinct_type_copy): When building a distinct type from
14333         another type, the new type is its own canonical type.
14334         (build_variant_type_copy): When building a new type variant, we
14335         assume that it is equivalent to the original type.
14336         (build_pointer_type_for_mode): When building a pointer type, also
14337         build a canonical type pointer.
14338         (build_reference_type_for_mode): When building a reference type,
14339         also build a canonical type reference.
14340         (build_index_type): When we can't hash an index type (e.g.,
14341         because its maximum value is negative), the index type requires
14342         structural equality tests.
14343         (build_array_type): Build the canonical form of an array type.
14344         (build_function_type): Function types require structural equality,
14345         because they contain default arguments, attributes, etc.
14346         (build_method_type_directly): Ditto for method types.
14347         (build_offset_type): Build the canonical offset type.
14348         (build_complex_type): Build the canonical vector type.
14349         (make_vector_type): Build the canonical vector type.
14350         * tree.h (TYPE_CANONICAL): New.
14351         (TYPE_STRUCTURAL_EQUALITY_P): New.
14352         (SET_TYPE_STRUCTURAL_EQUALITY): New.
14353         (struct tree_type): Added "canonical" field.
14354         * params.h (VERIFY_CANONICAL_TYPES): New.
14355         * doc/c-tree.texi (TYPE_CANONICAL): Document.
14356         (TYPE_STRUCTURAL_EQUALITY_P): Document.
14357         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
14358         * doc/invoke.texi (verify-canonical-types): Document --param
14359         parameter for verifying canonical types.
14360
14361 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
14362
14363         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
14364         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
14365         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
14366         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
14367         tm_file.
14368         * config/rs6000/e500.h: New.
14369         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
14370         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
14371         Remove.
14372         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
14373         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
14374         TARGET_E500_DOUBLE): Remove.
14375         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
14376         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
14377         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
14378         * config/rs6000/rs6000.c (rs6000_override_options): Use
14379         CHECK_E500_OPTIONS.
14380
14381 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
14382
14383         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
14384         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
14385         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
14386         rs6000_emit_cmove): Don't check TARGET_E500.
14387         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
14388         sordered): Don't check TARGET_E500.
14389
14390 2007-01-01  Eric Christopher  <echristo@apple.com>
14391
14392         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
14393         HARD_REGISTER_NUM_P.
14394
14395 2007-01-01  Roger Sayle  <roger@eyesopen.com>
14396
14397         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
14398         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
14399         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
14400         eq/ne Y".
14401
14402 2007-01-01  Mike Stump  <mrs@apple.com>
14403
14404         * configure.ac: Remove support for building with Apple's gcc-3.1.
14405
14406 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
14407
14408         PR middle-end/30311
14409         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
14410         REG is a hard register.  Do not modify REG before calling
14411         subreg_nregs.
14412         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
14413         multiple of the size of YMODE for certain lowpart cases.
14414
14415 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
14416
14417         PR middle-end/30253
14418         * gimplify (voidify_wrapper_expr): Update for
14419         GIMPLE_MODIFY_STMT.
14420
14421 2007-01-01  Andreas Schwab  <schwab@suse.de>
14422
14423         PR target/29166
14424         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
14425         save of BR0 in extra_spill_size instead of spill_size.
14426         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
14427         area.
14428         (ia64_expand_epilogue): Restore BR0 from its new location.
14429
14430 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
14431
14432         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
14433         Use a temporary variable if the left hand side is not a gimple
14434         register.
14435
14436 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
14437
14438         * gimplify.c (gimplify_return_expr): Make the temporary variable
14439         for the return expression, a gimple register variable.
14440
14441 2007-01-01  Jan Hubicka  <jh@suse.cz>
14442
14443         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
14444         INSN_LIST.
14445
14446 2007-01-01  Mike Stump  <mrs@apple.com>
14447
14448         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
14449         .literal16.
14450         * config/darwin.c (machopic_select_rtx_section): Use
14451         HAVE_GAS_LITERAL16.
14452         (darwin_mergeable_constant_section): Likewise.
14453         * configure: Regenerate.
14454         * config.in: Regenerate.
14455
14456 2007-01-01  Jan Hubicka  <jh@suse.cz>
14457             Andrew Pinski  <pinskia@gmail.com>
14458
14459         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
14460         before starting IPA passes.