OSDN Git Service

d889d1955b62d44d0150f744a733aee4bd467bd3
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-02-15  Nick Clifton  <nickc@redhat.com>
2
3         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
4         order to prevent it from being munged by the target.
5
6 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
7
8         * config/i386/i386.md: Remove misleading comment.
9
10 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
11
12         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
13         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
14         invalid patterns.
15
16 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
17
18         * tree-sra.c (instantiate_missing_elements): Canonicalize
19         bit-field types.
20         (sra_build_assignment): New.
21         (generate_copy_inout, generate_element_copy,
22         generate_element_zero, generate_one_element_init): Use it.
23
24 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
25
26         * tree-sra.c (instantiate_missing_elements): Canonicalize
27         bit-field types.
28         (sra_build_assignment): New.
29         (generate_copy_inout, generate_element_copy,
30         generate_element_zero, generate_one_element_init): Use it.
31
32 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
33
34         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
35         limbo die nodes.
36
37 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
38
39         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
40         types as aggregates not scalars.
41         * function.c (assign_stack_temp_for_type): Likewise.
42
43 2007-02-14  Roger Sayle  <roger@eyesopen.com>
44             Zdenek Dvorak  <dvorakz@suse.cz>
45
46         * tree-dump.c (dump_switch_p_1): Require exact match of the option
47         name.
48
49 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
50
51         * passes.c (next_pass_1): Clear the next field of the copied
52         pass structure.
53
54 2007-02-14  Richard Henderson  <rth@redhat.com>
55
56         * tree-sra.c (early_sra): New.
57         (decl_can_be_decomposed_p): Deny va_list if early_sra.
58         (tree_sra_early, pass_sra_early): New.
59         * tree-pass.h (pass_sra_early): Declare.
60         * passes.c (init_optimization_passes): Use it.
61
62 2007-02-14  Richard Guenther  <rguenther@suse.de>
63
64         * flags.h (issue_strict_overflow_warning): Convert to a macro.
65
66 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
67
68          PR tree-optimization/30771
69         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
70         also phi nodes.
71         (vect_analyze_operations): Induction phis can now be marked as
72         used_in_loop.
73         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
74         Update documentation accordingly.
75
76 2007-02-14  Nick Clifton  <nickc@redhat.com>
77
78         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
79         most 3 arguments are supported.
80         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
81
82 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
83
84         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
85         Ensure dst->current is valid.
86
87 2007-02-13  Paul Brook  <paul@codesourcery.com>
88
89         * config.gcc: Add arm*-*-uclinux-*eabi.
90         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
91         (SUBTARGET_EXTRA_LINK_SPEC): Define.
92         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
93         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
94         (LINK_SPEC): Define.
95         (LIB_SPEC): Define.
96         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
97         register.
98         * config/arm/uclinux-eabi.h: New file.
99         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
100         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
101         based targets.
102
103 2007-02-13  Ian Lance Taylor  <iant@google.com>
104
105         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
106         * flags.h (warn_strict_overflow): Declare.
107         (enum warn_strict_overflow_code): Define.
108         (issue_strict_overflow_warning): New static inline function.
109         * opts.c (warn_strict_overflow): New variable.
110         (common_handle_option): Handle OPT_Wstrict_overflow and
111         OPT_Wstrict_overflow_.
112         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
113         OPT_Wall.
114         * fold-const.c: Include intl.h.
115         (fold_deferring_overflow_warnings): New static variable.
116         (fold_deferred_overflow_warning): New static variable.
117         (fold_deferred_overflow_code): New static variable.
118         (fold_defer_overflow_warnings): New function.
119         (fold_undefer_overflow_warnings): New function.
120         (fold_undefer_and_ignore_overflow_warnings): New function.
121         (fold_deferring_overflow_warnings_p): New function.
122         (fold_overflow_warning): New static function.
123         (make_range): Add strict_overflow_p parameter.  Change all
124         callers.
125         (extract_muldiv, extract_muldiv_1): Likewise.
126         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
127         tree_expr_nonnegative_p.
128         (fold_negate_expr): Call fold_overflow_warning.
129         (fold_range_test): Likewise.
130         (fold_comparison): Likewise.
131         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
132         instead of tree_expr_nonnegative_p.
133         (tree_expr_nonnegative_warnv_p): Rename from
134         tree_expr_nonnegative_p, add strict_overflow_p parameter.
135         (tree_expr_nonnegative_p): New function.
136         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
137         strict_overflow_p parameter.
138         (tree_expr_nonzero_p): New function.
139         * passes.c (verify_interpass_invariants): New static function.
140         (execute_one_pass): Call it.
141         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
142         warnings.
143         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
144         (estimate_numbers_of_iterations): Likewise.
145         (scev_probably_wraps_p): Likewise.
146         * tree-ssa-ccp.c: Include "toplev.h".
147         (evaluate_stmt): Defer fold overflow warnings until we know we are
148         going to optimize.
149         (struct fold_stmt_r_data): Add stmt field.
150         (fold_stmt_r): Defer fold overflow warnings until we know we
151         optimized.
152         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
153         (fold_stmt_inplace): Likewise.
154         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
155         (cleanup_control_expr_graph): Defer fold overflow warnings until
156         we know we are going to optimize.
157         * tree-cfg.c (fold_cond_expr_cond): Likewise.
158         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
159         Likewise.
160         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
161         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
162         * tree-ssa-loop-manip.c (create_iv): Likewise.
163         * c-typeck.c (build_conditional_expr): Likewise.
164         (build_binary_op): Likewise.
165         * tree-vrp.c (vrp_expr_computes_nonzero): Call
166         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
167         (extract_range_from_unary_expr): Likewise.
168         * simplify-rtx.c (simplify_const_relational_operation): Warn when
169         assuming that signed overflow does not occur.
170         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
171         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
172         (fold_defer_overflow_warnings): Declare.
173         (fold_undefer_overflow_warnings): Declare.
174         (fold_undefer_and_ignore_overflow_warnings): Declare.
175         (fold_deferring_overflow_warnings_p): Declare.
176         (tree_expr_nonzero_warnv_p): Declare.
177         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
178         of warning options.
179         (Warning Options): Document -Wstrict-overflow.
180         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
181         (tree-ssa-ccp.o): Likewise.
182         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
183         (fold-const.o): Depend on intl.h.
184
185 2007-02-13  Ian Lance Taylor  <iant@google.com>
186
187         PR middle-end/30751
188         * lower-subreg.c (resolve_simple_move): Decompose subregs in
189         addresses.
190
191 2007-02-13  Stuart Hastings  <stuart@apple.com>
192
193         * gcc/config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
194
195 2007-02-13  Richard Henderson  <rth@redhat.com>
196
197         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
198         handled_component_p before looking for the indirect_ref.
199
200 2007-02-13  Richard Henderson  <rth@redhat.com>
201
202         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
203         remove flags clobber.
204         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
205         (bswaphi_lowpart): New.
206         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
207         remove TARGET_BSWAP test.  Delete expander of the same name.
208
209         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
210         (expand_unop): Use them.
211
212 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
213
214         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
215         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
216         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
217         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
218         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
219         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
220         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
221         assembler dialect choice from asm templates.
222
223 2007-02-12  Richard Henderson  <rth@redhat.com>
224
225         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
226         (fixuns_trunc<SSEMODEF>si2): Use it.
227         * config/i386/sse.md (vec_setv4sf_0): Export.
228         * config/i386/i386.c (ix86_build_const_vector): Export.
229         (ix86_split_convert_uns_si_sse): Rename from
230         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
231         * config/i386/i386-protos.h: Update.
232
233 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
234
235         PR c/29521
236         * c-typeck.c (c_finish_return): Improve warning message.
237
238 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
239
240         * alias.c (find_symbolic_term): Delete unused function.
241         
242 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
243
244         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
245         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
246         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
247
248 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
249
250         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
251         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
252         the function, temporarily point the debug interface to the null one.
253
254 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
255
256         * dwarf2out.c (round_up_to_align): New static function.
257         (field_byte_offset): Use it to round the offset.
258
259 2007-02-12  Richard Henderson  <rth@redhat.com>
260
261         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
262         (inswl_const): Export.
263
264 2007-02-12  Richard Henderson  <rth@redhat.com>
265
266         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
267         result mode of the libcall, convert back to outmode.
268
269 2007-02-12  Roger Sayle  <roger@eyesopen.com>
270
271         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
272         (bswapdi2): New define_expand to implement 32-bit implementation.
273
274 2007-02-12  Nick Clifton  <nickc@redhat.com>
275
276         * doc/invoke.texi (Overall Options): Document --help=.
277         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
278         (cc1_options): Pass --help= on to cc1.
279         (display_help): Add description of --help=.
280         (process_command): Add code to handle --help=.  Allow translated
281         --help and --target-help switches to be passed on to compiler
282         sub-process.
283         (main): Remove unused if statement.
284         * opts.c (columns): Remove.
285         (LEFT_COLUMN): Define.
286         (wrap_help): Add columns argument.
287         (print_filtered_help): Change parameters to be an include bitmask,
288         an exclude bitmask, an any bitmask and the column width.  Move the
289         code to display the params list here.  Add code to display the
290         status of options rather than their descriptions if the quiet flag
291         is not active.
292         (print_specific_help): Change parameters to be an include bitmask,
293         an exclude bitmask and an any bitmask.  Move code to look up the
294         column width here.  Decide upon the title for an options listing.
295         (common_handle_options): Add code to handle --help=.  Adapt code
296         for --help and --target-help to use the revised form of the
297         print_specific_help function.
298         (print_help): Delete.
299         (print_param_help): Delete.
300         (print_switch): Delete.
301         * opts.h (cl_lang_count): Add prototype.
302         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
303         CL_MAX_OPTION_CLASS): New defines.
304         * optc-gen.awk: Add construction of cl_lang_count.
305         * c.opt: Add Warning attribute to warning options and Optimization
306         attribute to optimization options.
307         * common.opt: Likewise.
308         Add --help=.
309         Add -fhelp and -ftarget-help as aliases for the transformed --help
310         and --target-help options.
311         * opt-functions.awk: Add code to handle Warning and Optimization
312         attributes.
313
314 2007-02-12  Richard Henderson  <rth@redhat.com>
315
316         * config/alpha/constraints.md: New file.
317         * config/alpha/alpha.c: Include tm-constrs.h.
318         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
319         alpha_extra_constraint): Remove.
320         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
321         * config/alpha/alpha-protos.h: Update.
322         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
323         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
324         (EXTRA_CONSTRAINT): Remove.
325         * config/alpha/alpha.md: Include constraints.md.
326         (adddi splitter): Use satisfies_constraint_*.
327         * config/alpha/predicates.md (add_operand): Likewise.
328         (sext_add_operand, addition_operation): Likewise.
329
330 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
331
332         PR tree-optimization/29145
333         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
334         in our handling of restrict qualified pointers.
335
336 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
337
338         PR middle-end/7651
339         * doc/invoke.texi (Wunused-value): Update description.
340         (Wextra): Delete item.
341         * opts.c (set_Wextra): Don't use the value of Wextra to set the
342         value of Wunused-value.
343         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
344         (c_finish_stmt_expr): Don't check extra_warnings.
345         (emit_side_effect_warnings): The caller is responsible to check
346         warn_unused_value.
347         
348 2007-02-11  Roger Sayle  <roger@eyesopen.com>
349             Matt Thomas  <matt@3am-software.com>
350
351         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
352
353 2007-02-11  Roger Sayle  <roger@eyesopen.com>
354
355         * simplify-rtx.c (simplify_relational_operation_1): Optimize
356         comparisons of POPCOUNT against zero.
357         (simplify_const_relational_operation): Likewise.
358
359 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
360
361         * doc/invoke.texi (Wextra): Delete outdated paragraph.
362         
363 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
364
365         * dwarf2out.c (root_type): Delete unused function.
366         
367 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
368
369         * genattrtab.c (contained_in_p): Delete unused function.
370         (write_expr_attr_cache): Likewise.
371
372 2007-02-11  Jan Hubicka  <jh@suse.cz>
373
374         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
375         previous patch.
376
377 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
378
379         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
380         to add the REG_EQ* note.
381         * see.c (see_merge_one_use_extension): Likewise.
382         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
383         turn REG_EQUAL notes into REG_EQUIV notes if the target
384         register may have more than one set.
385         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
386         * gcse.c (try_replace_reg): Likewise.
387         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
388         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
389         more than one REG_EQUIV note.
390         * reload1.c (gen_reload): Use set_unique_reg_note.
391
392 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
393
394         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
395         (ix86_builtin_conversion): New function.
396
397 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
398
399         PR target/29487
400         * tree.h (DECL_REPLACEABLE_P): New macro.
401         * except.c (set_nothrow_function_flags): Likewise.
402
403 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
404             Ira Rosen  <irar@il.ibm.com>
405             Dorit Nuzman  <dorit@il.ibm.com>
406
407         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
408         * targhooks.c (default_builtin_vectorized_conversion): New.
409         * targhooks.h (default_builtin_vectorized_function): New declaration.
410         * target.h (struct vectorize): Add builtin_conversion field.
411         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
412         stmt_vec_info_type value.
413         (vectorizable_conversion): New declaration.
414         * tree-vect-analyze.c (vect_analyze_operations): Add
415         vectorizable_conversion call.
416         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
417         * tree-vect-transform.c (vectorizable_conversion): New function.
418         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
419         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
420         mode.
421         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
422         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
423         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
424         or ALTIVEC_BUILTIN_VCFSX.
425
426 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
427
428         PR target/30634
429         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
430         CONST_DOUBLE and operand 0 is a hard register.
431         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
432         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
433         is a hard floating-point register.
434
435 2007-02-10  Richard Henderson  <rth@redhat.com>
436             Jakub Jelinek  <jakub@redhat.com>
437             Alexandre Oliva  <aoliva@redhat.com>
438
439         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
440         * builtin-types.def (BT_WORD): Make unsigned.
441         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
442         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
443         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
444         * c-decl.c (grokdeclarator): Don't error if !have_tls.
445         * c-parser.c (c_parser_omp_threadprivate): Likewise.
446         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
447         emulated tls.
448         * expr.c (emutls_var_address): New.
449         (expand_expr_real_1): Expand emulated tls.
450         (expand_expr_addr_expr_1): Likewise.
451         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
452         * output.h (emutls_finish): Declare.
453         * toplev.c (compile_file): Call it.
454         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
455         address before wrapping in CONST.
456         * varasm.c (emutls_htab, emutls_object_type): New.
457         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
458         (get_emutls_object_name, get_emutls_object_type): New.
459         (get_emutls_init_templ_addr, emutls_decl): New.
460         (emutls_common_1, emutls_finish): New.
461         (assemble_variable): When emulating tls, swap decls; generate
462         constructor for the emutls objects.
463         (do_assemble_alias): When emulating tls, swap decl and target name.
464         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
465         for emulated tls.
466         * varpool.c (decide_is_variable_needed): Look at force_output.
467         Recurse for emulated tls.
468         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
469         with decide_is_variable_needed.
470         * emutls.c: New file.
471         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
472         tls_object for real tls.
473
474 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
475
476         PR rtl-optimization/29599
477         * reload1.c (eliminate_regs_in_insn): Take the destination
478         mode into account when computing the offset.
479
480 2007-02-09  Stuart Hastings  <stuart@apple.com>
481             Richard Henderson  <rth@redhat.com>
482
483         * gcc/config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
484         * gcc/config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
485         * gcc/config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
486         fixuns_truncdfhi2): New.
487         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
488         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
489         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
490         (floatunssidf2): Allow nonimmediate source.
491         * gcc/config/i386/sse.md (movdi_to_sse): New.
492         (vec_concatv2di): Drop '*'.
493         * gcc/config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
494         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
495         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
496         New.
497         * gcc/config/i386/i386.c (ix86_expand_convert_uns_si_sse,
498         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
499         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
500         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
501         (ix86_build_signbit_mask): Fix decl of v, refactor to call
502         ix86_build_const_vector.
503         (x86_emit_floatuns): Rewrite.
504
505 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
506
507         * genautomata.c (longest_path_length): Delete unused function.
508         (struct state): Delete unused longest_path_length.
509         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
510         (get_free_state): Delete unused.
511         
512 2007-02-09  Jan Hubicka  <jh@suse.cz>
513
514         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
515         * doc/invoke.texi (inline-unit-growth): Update default value.
516
517         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
518         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
519         (rebuild_cgraph_edges): Likewise.
520         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
521         (dump_cgraph_node): Dump frequencies.
522         (cgraph_clone_edge): Add frequency scales.
523         (cgraph_clone_node): Add freuqnecy.
524         * cgraph.h (cgraph_edge): Add freuqnecy argument.
525         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
526         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
527         * tree-pass.h (TODO_rebuild_frequencies): New constant.
528         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
529         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
530         (save_inline_function_body): Likewise.
531         * ipa-inline.c: inluce rtl.h
532         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
533         (cgraph_edge_badness): Use frequencies.
534         (cgraph_decide_recursive_inlining): Update clonning.
535         (cgraph_decide_inlining_of_small_function): Dump frequency.
536         * predict.c (estimate_bb_frequencies): Export.
537         * predict.h (estimate_bb_frequencies): Declare.
538         * tree-inline.c (copy_bb): Watch overflows.
539         (expand_call_inline): Update call of cgraph_create_edge.
540         (optimize_inline_calls): Use TODO flags to update frequnecies.
541         * passes.h: Include predict.h
542         (init_optimization_passes): Move profile ahead.
543         (execute_function_todo): Handle TODO_rebuild_frequencies.
544
545 2007-02-09  Roger Sayle  <roger@eyesopen.com>
546
547         * config/alpha/alpha.c (emit_insxl): Force the first operand of
548         the insbl or inswl pattern into a register.
549
550 2007-02-09  Roger Sayle  <roger@eyesopen.com>
551
552         * config/ia64/ia64.md (bswapdi2): New define_insn.
553
554 2007-02-09  Richard Henderson  <rth@redhat.com>
555
556         * config/i386/constraints.md (Ym): New constraint.
557         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
558         (movdi_1_rex64): Split sse and xmm general register moves from
559         memory move alternatives.  Use conditional register constraints.
560         (movsf_1, movdf_integer): Likewise.
561         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
562         (movdf_integer_rex64): New.
563         (pushsf_rex64): Fix output constraints.
564         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
565         (sse2_stored): Likewise.
566         (sse2_storeq_rex64): New.
567         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
568         amd and not generic.
569         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
570         for optimize_size.  Remove SF/DFmode hack.
571
572 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
573
574         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
575         (bit_SSE4a): New.
576
577 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
578             Richard Sandiford  <richard@codesourcery.com>
579
580         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
581         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
582         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
583         m68k/t-mlib to tmake_file.
584         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
585         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
586         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
587         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
588         variable is not empty, add t-$m68k_arch_family to tmake_file.
589         Add t-mlibs to tmake_file.
590         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
591         * config/m68k/t-cf: New file.
592         * config/m68k/t-m68k: Likewise.
593         * config/m68k/t-mlibs: Likewise.
594         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
595         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
596         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
597         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
598         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
599         Delete.
600         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
601         (INSTALL_LIBGCC): Delete.
602         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
603         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
604         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
605         (M68K_MLIB_CPU): Define.
606         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
607         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
608         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
609
610 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
611             Richard Guenther  <rguenther@suse.de>
612
613         PR middle-end/23361
614         * fold-const.c (fold_comparison): Handle obfuscated comparisons
615         against INT_MIN/INT_MAX.
616         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
617         file if a loop is removed.
618
619 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
620
621         * calls.c (store_one_arg): Pass correct alignment to
622         emit_push_insn for non-BLKmode values.
623         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
624         unaligned stack slot via a suitably aligned slot.
625
626 2007-02-08  DJ Delorie  <dj@redhat.com>
627
628         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
629         warnings.
630         (legal_subregs): Use unsigned char, make const.
631         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
632
633 2007-02-08  Paul Brook  <paul@codesourcery.com>
634
635         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
636         special interworking needed.
637
638 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
639
640         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
641         conditional to __SSE2__.
642         (Entries below should have been added to first ChangeLog
643         entry for amdfam10 dated 2007-02-05)
644         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
645         defined.
646         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
647         defined.
648         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
649         defined.
650
651 2007-02-08  DJ Delorie  <dj@redhat.com>
652
653         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
654         * config/m32c/m32c.c (legal_subregs): New.
655         (m32c_illegal_subreg_p): New.
656         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
657         unsupported subregs of hard regs.
658
659 2007-02-08  Jan Hubicka  <jh@suse.cz>
660
661         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
662         the same one; always update histograms.
663
664 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
665
666         * passes.c (init_optimization_passes): Tidy comment.
667
668 2007-02-08  Roger Sayle  <roger@eyesopen.com>
669
670         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
671         strip zero_extend, bswap and rotates from POCOUNT's argument.
672         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
673         zero_extend and rotates from PARITY's argument.
674         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
675         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
676         of an integer constant at compile-time.
677
678 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
679
680         PR 30562
681         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
682         Update all users.
683         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
684         users.
685         (init_alias_info):
686         * tree-ssa-live.c (remove_unused_locals): Do not remove
687         TREE_ADDRESSABLE variables.
688         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
689         * tree-ssa-operands.c (add_virtual_operand): Remove argument
690         FOR_CLOBBER.  Update all users.
691         If VAR has an associated alias set, add a virtual operand for
692         it if no alias is found to conflict with the memory reference.
693
694 2007-02-07  Jan Hubicka  <jh@suse.cz>
695             Robert Kidd <rkidd@crhc.uiuc.edu>
696
697         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
698
699 2007-02-07  Ian Lance Taylor  <iant@google.com>
700
701         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
702
703 2007-02-07  Roger Sayle  <roger@eyesopen.com>
704
705         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
706         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
707         tablejumpdi, movsi_to_cr_one): Remove constraints from
708         define_expand's match_operands.
709
710 2007-02-07  Roger Sayle  <roger@eyesopen.com>
711
712         * global.c (compute_regsets): Move declatation of "i" inside of
713         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
714
715 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
716
717         PR c++/30703
718         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
719         of INDIRECT_REF <RESULT_DECL>.
720
721         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
722
723 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
724             Kaz Kojima  <kkojima@gcc.gnu.org>
725
726         PR target/29746
727         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
728         properly.
729         (sh_initialize_trampoline): Add parentheses to avoid a warning.
730
731 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
732
733         * doc/loop.texi: Document possibility not to perform disambiguation
734         of loops with multiple latches.
735         * cfgloopmanip.c (alp_enum_p): Removed.
736         (add_loop): Handle subloops.  Use get_loop_body_with_size.
737         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
738         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
739         the new forwarder block.
740         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
741         Handle the case latch is NULL.
742         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg modifications
743         when marking loop exits.
744         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
745         be modified.
746         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
747         disambiguate_loops_with_multiple_latches.
748         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
749         before fix_loop_structure.
750         * cfgloop.c: Include pointer-set.h and output.h.
751         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
752         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
753         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
754         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
755         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
756         disambiguate_multiple_latches, get_loop_body_with_size,
757         disambiguate_loops_with_multiple_latches): New functions.
758         (flow_loop_dump): Dump multiple latch edges.
759         (flow_loop_nodes_find): Handle loops with multiple latches.
760         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
761         (glb_enum_p): Modified.
762         (get_loop_body): Use get_loop_body_with_size.
763         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
764         (AVOID_CFG_MODIFICATIONS): New constant.
765         (disambiguate_loops_with_multiple_latches, add_loop,
766         get_loop_body_with_size): Declare.
767         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
768
769 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
770
771         PR inline-asm/28686
772         * global.c (compute_regsets): New function.
773         (global_alloc): Refactored ELIMINABLE_REGSET
774         and NO_GLOBAL_ALLOC_REGS computation out.
775         (rest_of_handle_global_alloc): Call compute_regsets()
776         for non-optimizing case.
777
778 2007-02-06  Richard Henderson  <rth@redhat.com>
779
780         * config/i386/constraints.md (Y2): Rename from Y.
781         (Yi): New constraint.
782         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
783         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
784         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
785         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
786         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
787         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
788         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed, 
789         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
790         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
791         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
792         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
793         vec_extractv2si_1): Change Y constraints to Y2.
794         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
795         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
796         Change Y constraints to Y2.
797         (sse2_loadld): Change Y constraints to x.
798
799 2007-02-06  Roger Sayle  <roger@eyesopen.com>
800
801         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
802         (parity<mode>2): New define_expand using rs6000_emit_parity.
803         * config/rs6000/rs6000.c (rs6000_emit_popcount,
804         rs6000_emit_parity): New functions.
805         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
806         rs6000_emit_parity): Prototype here.
807
808 2007-02-06  Ian Lance Taylor  <iant@google.com>
809
810         * lower-subreg.c (simple_move_operand): Reject CONST.
811         (resolve_clobber): Call validate_change rather than directly
812         assigning to XEXP (pat, 0).
813
814 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
815
816         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
817         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
818         (tree-cfg.o): Remove hashtab.h dependency.
819
820         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
821         (struct ivopts_data): Change niters to pointer_map_t.
822         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
823         (niter_for_exit): Create pointer_map on demand.  Change for
824         pointer_map API.
825         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
826         (free_loop_data): Destroy data->niters if created and reset field.
827         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
828         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
829
830         * tree-ssa-reassoc.c: Include pointer-set.h.
831         (bb_rank): Change to long *.
832         (operand_rank): Change to pointer_map_t.
833         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
834         (insert_operand_rank): Accept long.
835         (operand_entry_hash, operand_entry_eq): Remove.
836         (get_rank): Return long.  Adjust for changes above.
837         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
838         and operand_rank.
839         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
840
841         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
842         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
843         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
844         is not NULL.
845         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
846         directly since it cannot be NULL.
847         (get_vi_for_tree): Rewrite for pointer_map API.
848         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
849         (init_alias_vars): Create vi_for_tree as pointer_map.
850         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
851
852         * tree-cfg.c: Don't include hashtab.h.
853         (edge_to_cases): Declare as pointer_map.
854         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
855         Delete.
856         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
857         (start_recording_case_labels): Create edge_to_cases as pointer_map.
858         (end_recoding_case_labels): Cleanup edge_to_cases manually before
859         destroying it.
860         (record_switch_edge): Delete.
861         (get_cases_for_edge): Adjust for pointer_map API, inline
862         record_switch_edge (rewritten for new API), remove goto.
863
864 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
865
866         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
867         * tree-nested.c: Include pointer-set.h.
868         (var_map_elt, var_map_eq, var_map_hash): Delete.
869         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
870         to pointer_map_t's.
871         (nesting_info_bitmap_obstack): New.
872         (lookup_field_for_decl): Adjust for pointer_map API.
873         (lookup_tramp_for_decl): Adjust for pointer_map API.
874         (get_nonlocal_debug_decl): Adjust for pointer_map API.
875         (get_local_debug_decl): Adjust for pointer_map API.
876         (convert_nl_goto_reference): Adjust for pointer_map API.
877         (convert_nl_goto_receiver): Adjust for pointer_map API.
878         (create_nesting_tree): Create outside GGC space.  Create bitmap on
879         the new obstack.  Create field_map and var_map as pointer_maps.
880         (free_nesting_tree): Adjust for changes to create_nesting_tree.
881         (root): Delete. 
882         (lower_nested_functions): Move root here, no need to NULL it.
883         Initialize and release the obstack.
884
885 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
886
887         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
888         Remove prototypes and make them non-static.
889         (struct tree_int_map): Remove.
890         * tree.h (struct tree_int_map): Move here, turning TO into an
891         unsigned int.
892         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
893
894         * tree.h (TREE_COMPLEXITY): Remove.
895         (struct tree_exp): Remove complexity field.
896         * tree.c (build1_stat): Don't set it.
897
898 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
899             Victor Kaplansky  <victork@il.ibm.com>
900
901         * tree-vectorizer.c (vect_is_simple_use): Support induction.
902         (vect_is_simple_reduction): Support reduction with induction as
903         one of the operands.
904         (vect_is_simple_iv_evolution): Fix formatting.
905         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix 
906         formatting.  Don't mark induction phis for vectorization.
907         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
908         * tree-vect-transform.c (get_initial_def_for_induction): New function.
909         (vect_get_vec_def_for_operand): Support induction.
910         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
911         induction case.
912         (vectorizable_reduction): Support reduction with induction as one of 
913         the operands. 
914         (vectorizable_type_demotion): Use def-type of stmt argument rather
915         than dummy def-type.
916
917         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
918         flag_tree_scev_cprop.
919         * common.opt (tree-scev-cprop): New flag.
920
921         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
922         call to vect_get_new_vect_var.
923
924 2007-02-06  Ira Rosen  <irar@il.ibm.com>
925
926         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that 
927         vectype is not NULL.
928         (vect_pattern_recog_1): Likewise.
929
930 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
931
932         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
933         (fold_negate_expr): Likewise.
934
935 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
936
937         PR debug/30189
938         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
939         even if cv-qualification is the same.
940
941 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
942
943         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
944         __enable_execute_stack on completion.
945
946 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
947
948         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
949         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
950         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
951         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
952         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
953         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
954         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
955         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
956
957 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
958
959         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
960         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
961         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
962         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
963         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
964         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
965         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
966         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
967         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
968         umuldi3_highpart_rex64, umulsi3_highpart_insn,
969         umulsi3_highpart_zext, smuldi3_highpart_rex64,
970         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
971         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
972         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
973         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
974         sqrtextenddfxf2_i387): Added amdfam10_decode.
975         
976         * config/i386/athlon.md (athlon_idirect_amdfam10,
977         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
978         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
979         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
980         athlon_ivector_store_amdfam10): New define_insn_reservation.
981         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
982         amdfam10.
983
984 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
985
986         * config/i386/athlon.md (athlon_call_amdfam10,
987         athlon_pop_amdfam10, athlon_lea_amdfam10): New
988         define_insn_reservation.
989         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
990         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
991         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
992
993 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
994
995         * config/i386/athlon.md (athlon_sseld_amdfam10,
996         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
997         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
998
999 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
1000
1001         * config/i386/athlon.md (athlon_sseins_amdfam10): New
1002         define_insn_reservation.
1003         * config/i386/i386.md (sseins): Added sseins to define_attr type
1004         and define_attr unit.
1005         * config/i386/sse.md: Set type attribute to sseins for insertq
1006         and insertqi.
1007
1008 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
1009
1010         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
1011         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
1012         ssecomi_load_amdfam10, ssecomi_amdfam10,
1013         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
1014         define_insn_reservation.
1015         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
1016
1017 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
1018
1019         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
1020         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
1021         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
1022         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
1023         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
1024         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New 
1025         define_insn_reservation.
1026
1027         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
1028         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
1029         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
1030         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
1031         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
1032
1033 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
1034
1035         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
1036         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
1037         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
1038         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
1039         athlon_ssemul_load_k8): Added amdfam10.
1040
1041 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
1042
1043         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
1044         (x86_sse_unaligned_move_optimal): New variable.
1045         
1046         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for  
1047         m_AMDFAM10.
1048         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
1049         for unaligned vector SSE double/single precision loads for AMDFAM10.
1050
1051 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
1052
1053         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
1054         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
1055         Define TARGET_CPU_DEFAULT_amdfam10.
1056         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
1057         (processor_type): Add PROCESSOR_AMDFAM10.       
1058         
1059         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
1060         processor_type in config/i386/i386.h.
1061         Enable imul peepholes for TARGET_AMDFAM10.
1062         
1063         * config.gcc: Add support for --with-cpu option for amdfam10.
1064         
1065         * config/i386/i386.c (amdfam10_cost): New variable.
1066         (m_AMDFAM10): New macro.
1067         (m_ATHLON_K8_AMDFAM10): New macro.
1068         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
1069         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
1070         x86_promote_QImode, x86_integer_DFmode_moves,
1071         x86_partial_reg_dependency, x86_memory_mismatch_stall, 
1072         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
1073         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
1074         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
1075         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
1076         Enable/disable for amdfam10.
1077         (override_options): Add amdfam10_cost to processor_target_table.
1078         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in 
1079         processor_alias_table.
1080         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
1081         (ix86_adjust_cost): Add code for amdfam10.
1082
1083 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
1084         
1085         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
1086         instruction set feature flag. Add new (-mpopcnt) flag for popcnt 
1087         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
1088         * config/i386/i386.h: Add builtin definition for SSE4A.
1089         * config/i386/i386.md: Add support for ABM instructions 
1090         (popcnt and lzcnt).
1091         * config/i386/sse.md: Add support for SSE4A instructions
1092         (movntss, movntsd, extrq, insertq).
1093         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
1094         Add -march=amdfam10 flag.
1095         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
1096         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
1097         and amdfam10.
1098         * doc/extend.texi: Add documentation for SSE4A builtins.
1099
1100 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
1101
1102         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
1103
1104 2007-02-05  Richard Guenther  <rguenther@suse.de>
1105
1106         * tree-vectorizer.h (vectorizable_function): Add argument type
1107         argument, change return type.
1108         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
1109         * tree-vect-transform.c (vectorizable_function): Handle extra
1110         argument, return vectorized function decl.
1111         (build_vectorized_function_call): Remove.
1112         (vectorizable_call): Handle calls with result and argument types
1113         differing.  Handle loop vectorization factor correctly.
1114         * targhooks.c (default_builtin_vectorized_function): Adjust for
1115         extra argument.
1116         * targhooks.h (default_builtin_vectorized_function): Likewise.
1117         * target.h (builtin_vectorized_function): Add argument type
1118         argument.
1119         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
1120         extra argument, allow vectorizing of lrintf.
1121         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
1122         documentation of target hook.
1123
1124 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
1125
1126         PR target/30665
1127         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
1128         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
1129         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
1130
1131 2007-02-05  Roger Sayle  <roger@eyesopen.com>
1132
1133         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
1134         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
1135         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
1136         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
1137         before canonicalizing sincos to cexpi.
1138         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
1139
1140 2007-02-05  Roger Sayle  <roger@eyesopen.com>
1141
1142         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
1143         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
1144         (alpha_init_builtins): Use alpha_add_builtins to process tables.
1145
1146 2007-02-05  Roger Sayle  <roger@eyesopen.com>
1147
1148         * mips-tfile.c (initialize_init_file): Correct endianness test.
1149
1150 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
1151
1152         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
1153         the 'y' constraint.
1154
1155 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
1156
1157         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
1158         saves in a PARALLEL before the register assignments.
1159
1160 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
1161
1162         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
1163         DWARF_FRAME_RETURN_COLUMN to be a general register.
1164         * dwarf2out.c (init_return_column_size): New function, split from...
1165         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
1166         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
1167         to be nongeneral registers.
1168         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
1169         integer registers.
1170         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
1171         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
1172
1173 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
1174
1175         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
1176
1177 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
1178
1179         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
1180         (remove_path): Use can_remove_branch_p and remove_branch instead
1181         of loop_delete_branch_edge.
1182         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
1183         (tree_transform_and_unroll_loop): Remove dead branches immediately.
1184         Update profile using scale_dominated_blocks_in_loop.
1185         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
1186         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
1187         (can_remove_branch_p, remove_branch): Declare.
1188         * tree-cfg.c (tree_can_remove_branch_p): New function.
1189         (tree_cfg_hooks): Add tree_can_remove_branch_p.
1190         * cfgrtl.c (rtl_can_remove_branch_p): New function.
1191         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
1192
1193 2007-02-05  Jan Hubicka  <jh@suse.cz>
1194
1195         PR middle-end/30696
1196         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
1197         nodes in cgraph, don't remove offline copy of the function.
1198
1199 2007-02-04  Jan Hubicka  <jh@suse.cz>
1200
1201         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
1202         vectors might cause maybe_lookup_element_for_expr to be called
1203         on non-sra-candidate.
1204
1205 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
1206
1207         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
1208         config/bfin/bfin.md, config/bfin/predicates.md: Follow
1209         spelling conventions.
1210
1211 2007-02-04  Richard Guenther  <rguenther@suse.de>
1212
1213         PR middle-end/30636
1214         * fold-const.c (try_move_mult_to_index): Make sure to not
1215         overflow one dimension of a multi-dimensional array access.
1216
1217 2007-02-04  Jan Hubicka  <jh@suse.cz>
1218
1219         * passes.c (init_optimization_passes): Reindent.
1220
1221 2007-02-04  Jan Hubicka  <jh@suse.cz>
1222             Eric Botcazou  <ebotcazou@adacore.com>
1223
1224         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
1225         (execute_fixup_cfg): Break out the abnormal goto code.
1226         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
1227         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
1228         (optimize_inline_calls): Call make_nonlocal_label_edges.
1229
1230 2007-02-04  Jan Hubicka  <jh@suse.cz>
1231
1232         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
1233         true when something was changed.
1234         (rename_ssa_copies): When something was changed, do
1235         TODO_remove_unused_locals.
1236         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
1237         add TODO_remove_unused_locals when instruction was removed.
1238
1239 2007-02-04  Jan Hubicka  <jh@suse.cz>
1240
1241         * ipa-inline.c (try_inline): Improve debug output; work on already
1242         inline edges too.
1243         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
1244         call try_inline for already inlined edges too when flattening; 
1245         inline also functions that make callee growth but overall unit size
1246         reduce.
1247
1248 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
1249
1250         * config/m32c/bitops.md, config/m32c/jump.md,
1251         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
1252         config/m32r/m32r.h, config/m32r/m32r.md,
1253         config/m32r/predicates.md, config/m68hc11/larith.asm,
1254         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
1255         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
1256         config/mips/mips-protos.h, config/mips/mips.c,
1257         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
1258         config/mn10300/mn10300.h, config/mn10300/predicates.md,
1259         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
1260         spelling conventions.
1261
1262         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
1263         Follow spelling conventions.
1264
1265 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
1266
1267        * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
1268        warn about C++0x compatibility.
1269         
1270 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
1271
1272         * config/h8300/h8300.c, config/h8300/h8300.h,
1273         config/h8300/h8300.md: Follow spelling conventions.
1274
1275 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
1276
1277         PR middle-end/30667
1278         * combine.c (try_combine): Do not substitute source operand
1279         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
1280
1281 2007-02-03  Jan Hubicka  <jh@suse.cz>
1282
1283         PR gcov-profile/30650
1284         * value-prof.c (stringop_block_profile): Fix handling of size counter;
1285         do not divide by zero for never executed counters.
1286         (tree_find_values_to_profile): Fix counters.
1287         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
1288
1289 2007-02-03  Ian Lance Taylor  <iant@google.com>
1290
1291         * lower-subreg.c (simple_move_operand): New static function,
1292         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
1293         operands.
1294         (simple_move): Call simple_move_operand.
1295         (find_decomposable_subregs): Add special handling of MEMs.
1296         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
1297         meaning of return value.  If we see a hard register, test whether
1298         it can store a word_mode value.  Change all callers.
1299
1300 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1301
1302         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
1303         ftrapv insns and expanders.
1304         (subdi3): Change define_expand operand 1 to arith11_operand, and
1305         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
1306         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
1307         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
1308         respectively.
1309
1310         PR middle-end/30174
1311         * varasm.c (notice_global_symbol): Treat global objects as weak when
1312         flag_shlib is true.
1313
1314 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1315
1316         * emit-rtl.c (dconstpi): Delete.
1317         (dconstsqrt2): New.
1318         (init_emit_once): Delete dconstpi and init dconstsqrt2.
1319         * real.h (dconstpi): Delete.
1320         (dconstsqrt2): New.
1321         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
1322         (fold_builtin_hypot): Likewise.
1323
1324 2007-02-03  Tom Tromey  <tromey@redhat.com>
1325
1326         PR driver/30246
1327         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
1328         -gcoff3, -gxcoff3, -gvms3 implies -dD.
1329
1330 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
1331
1332         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
1333         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
1334         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
1335         config/rs6000/cell.md, config/rs6000/darwin.h,
1336         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
1337         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
1338         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
1339         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
1340         typos.  Follow spelling conventions.
1341         * doc/invoke.texi: Follow spelling conventions.
1342
1343 2007-02-03  Roger Sayle  <roger@eyesopen.com>
1344
1345         * simplify-rtx.c (simplify_relational_operation_1): Implement some
1346         canonicalization transformations that attempt to simplify integer
1347         constant comparisons to become comparisons against zero.
1348
1349 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1350
1351         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
1352         fabs(x)*sqrt(2).
1353         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
1354         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
1355
1356 2007-02-02  Mike Stump  <mrs@apple.com>
1357
1358         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
1359         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
1360         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
1361         generate a branch island.
1362
1363 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
1364
1365         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
1366         (xtensa_legitimate_address_p): New.
1367         (xtensa_legitimize_address): New.
1368         (xtensa_output_addr_const_extra): New.
1369         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
1370         (BASE_REG_P): New.
1371         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
1372         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
1373         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
1374         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
1375         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
1376         (xtensa_legitimize_address): New.
1377         (xtensa_output_addr_const_extra): New.
1378
1379 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
1380
1381         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
1382
1383 2007-02-02  Ian Lance Taylor  <iant@google.com>
1384
1385         * expmed.c (expand_divmod): Add comment.
1386
1387 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
1388
1389         * emit-rtl.c (renumber_insns): Remove.
1390         * flags.h: Remove the extern for flag_renumber_insns.
1391         * rtl.h: Remove the prototype for renumber_insns.
1392         * toplev.c (flag_renumber_insns): Remove.
1393
1394 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
1395
1396         Revert for x86 darwin:
1397         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
1398         
1399         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
1400         code before the following patch under TARGET_MACHO.
1401         (ix86_function_value_regno_p): Likewise.
1402
1403 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1404
1405         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
1406         COMPLEX_EXPR.
1407
1408 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
1409
1410         PR target/29682
1411         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory loads to
1412         general or fp registers.  Add comments.
1413         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
1414
1415 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
1416
1417         * pointer-set.c (insert_aux): Only return insertion slot.
1418         (pointer_set_insert): Adjust.
1419         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
1420         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
1421         pointer_map_traverse): New.
1422         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
1423         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
1424         pointer_map_contains, pointer_map_traverse): Declare.
1425
1426 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
1427
1428         PR middle-end/30473
1429         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
1430         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
1431
1432 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
1433
1434         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
1435         
1436         (struct _dep): New type.
1437         (dep_t): New typedef.
1438         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
1439         (DEP_STATUS): New access macro.  The macro with the same name was
1440         renamed to DEP_LINK_STATUS.
1441         (dep_init): Declare function
1442
1443         (struct _dep_link): New type.
1444         (dep_link_t): New typedef.
1445         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
1446         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
1447         (DEP_LINK_STATUS): New macro.
1448         (debug_dep_links): New debug function.
1449
1450         (struct _deps_list): New type.
1451         (deps_list_t): New typedef.
1452         (DEPS_LIST_FIRST): New access macro.
1453         (FOR_EACH_DEP_LINK): New cycle macro.
1454         (create_deps_list, free_deps_list, delete_deps_list): Declare
1455         functions.
1456         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
1457         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
1458         (copy_deps_list_change_con): Ditto.
1459
1460         (move_dep_link): Declare function.
1461
1462         (struct _dep_node): New type.
1463         (dep_node_t): New typedef.
1464         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
1465
1466         (struct haifa_insn_data.back_deps): New field to hold backward
1467         dependencies of the insn.
1468         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
1469         to deps_list_t.
1470         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
1471         Change its type to deps_list_t.
1472         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
1473         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
1474         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
1475
1476         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
1477         
1478         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
1479
1480         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration and
1481         all callers.
1482         (dep_cost): Declare.
1483         
1484         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
1485         (ds_to_dk, dk_to_ds): New functions.
1486         
1487         (init_dep_1): New static function.
1488         (init_dep): New function.
1489         (copy_dep): New static function.
1490         
1491         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
1492         functions.
1493         (detach_dep_link): New static function.
1494         (move_dep_link): New function.
1495         
1496         (dep_links_consistent_p, dump_dep_links): New static functions.
1497         (debug_dep_links): New debugging function.
1498         
1499         (deps_obstack, dl_obstack, dn_obstack): New static variables.
1500         
1501         (alloc_deps_list, init_deps_list): New static functions.
1502         (create_deps_list): New function.
1503         (clear_deps_list): New static function.
1504         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
1505         (deps_list_consistent_p, dump_deps_list): New static functions.
1506         (debug_deps_list): New function.
1507         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
1508         functions.
1509         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
1510
1511         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
1512         use new scheduler dependencies lists.
1513         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
1514         (sched_analyze): Ditto.  Initialize dependencies lists.
1515         (add_forw_dep, compute_forward_dependences): Update to use new
1516         scheduler dependencies lists.
1517         
1518         (init_dependency_caches): Init deps_obstack.
1519         (free_dependency_caches): Free deps_obstack.
1520         
1521         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
1522         new scheduler dependencies lists.
1523         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
1524         (add_back_forw_dep, delete_back_forw_dep): Ditto.
1525
1526         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
1527         Update to use new scheduler dependencies lists.
1528         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
1529         (debug_dependencies): Ditto.
1530         (schedule_region): Update comments.
1531         
1532         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
1533         scheduler dependencies lists.
1534         (schedule_ebb): Update comments.
1535         
1536         * rtl.def (DEPS_LIST): Remove.
1537         
1538         * lists.c (unused_deps_list): Remove.
1539         (free_list): Update assertions.
1540         
1541         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
1542         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
1543
1544         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
1545         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
1546         
1547         * haifa-sched.c (comments): Update.
1548         (insn_cost1): Remove.  Inline the code into insn_cost ().
1549         (insn_cost): Update to use new scheduler dependencies lists.  Move
1550         processing of the dependency cost to dep_cost ().
1551         (dep_cost): New function.  Use it instead of insn_cost () when
1552         evaluating cost of the dependency.  Use compatible interface to
1553         interact with the target.
1554         (priority): Update to use new scheduler dependencies lists.
1555         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
1556         with greater number of insns that depend on the insn.
1557         (schedule_insn): Update to use new scheduler dependencies lists.  Add
1558         code to free backward dependencies lists.  Inline and optimize code
1559         from resolve_dep () - see PR28071.
1560         (ok_for_early_queue_removal): Update to use new scheduler dependencies
1561         lists.  Update call to targetm.sched.is_costly_dependence hook.
1562         
1563         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
1564         scheduler dependencies lists.
1565         
1566         (resolve_dep): Remove.  Move the logic to schedule_insn ().
1567         (init_h_i_d): Initialize dependencies lists.
1568         
1569         (process_insn_depend_be_in_spec): Rename to
1570         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
1571         dependencies lists.
1572         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
1573         Update to use new scheduler dependencies lists.
1574         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
1575         
1576         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
1577         new scheduler dependencies lists.
1578         (build_intra_loop_deps): Ditto.
1579         
1580         * target.h (struct _dep): Declare to use in
1581         gcc_target.sched.is_costly_dependence.
1582         (struct gcc_target.sched.adjust_cost): Fix typo.
1583         (struct gcc_target.sched.is_costly_dependence): Change signature to use
1584         single dep_t parameter instead of an equivalent triad.
1585         (struct gcc_target.sched.adjust_cost_2): Remove.
1586
1587         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
1588
1589         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
1590
1591         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
1592         documentation.
1593         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
1594
1595         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
1596         (REG_DEP_TRUE): Document.
1597         
1598         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
1599         Change signature to correspond to the targetm.sched.adjust_cost hook.  
1600         Update use in TARGET_SCHED_ADJUST_COST_2.
1601         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
1602         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
1603         new scheduler dependencies lists.
1604         (ia64_gen_check): Ditto.
1605
1606         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new scheduler
1607         dependencies lists.
1608         
1609         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
1610         signature to correspond to the targetm.sched.is_costly_dependence hook.
1611         (is_costly_group): Update to use new scheduler dependencies lists.
1612
1613         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
1614         instead of INSN_COST () macro.
1615
1616 2007-02-01  Ian Lance Taylor  <iant@google.com>
1617
1618         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
1619
1620 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
1621
1622         * pa.md (tp_load): Correct mfctl instruction syntax.
1623
1624 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
1625
1626         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
1627         altivec_padding_size calculation on AIX.  Improve comment, add
1628         assert to verify that it's right.
1629
1630         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
1631         64-bit.
1632
1633 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
1634
1635         PR inline-asm/28686
1636         * global.c (global_alloc): Add mising initialization of
1637         ELIMINABLE_REGSET.
1638
1639 2007-02-01  Roger Sayle  <roger@eyesopen.com>
1640
1641         * alias.c (init_alias_analysis): Correct whitespace.
1642         * bb-reorder.c (fix_edges_for_rarely_executed_code,
1643         partition_hot_cold_basic_blocks): Likewise.
1644         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
1645         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
1646         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
1647         fold_builtin_snprintf_chk, fold_builtin_printf,
1648         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
1649         do_mpfr_arg3, do_mpfr_sincos): Likewise.
1650         * cfgcleanup.c (cleanup_cfg): Likewise.
1651         * cfgexpand.c (tree_expand_cfg): Likewise.
1652         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
1653         * function.c (get_next_funcdef_no): Likewise.
1654         * gengtype.c (main): Likewise.
1655         * genmodes.c (main): Likewise.
1656         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
1657         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
1658         * ifcvt.c (noce_emit_move_insn): Likewise.
1659         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
1660         Likewise.
1661         * stor-layout.c (get_best_mode): Likewise.
1662         * tree-ssa-loop-niter.c (get_val_for): Likewise.
1663         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
1664         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
1665         perform_var_substitution, solve_graph): Likewise.
1666         * tree-vrp.c (vrp_finalize): Likewise.
1667
1668 2007-02-01  Ian Lance Taylor  <iant@google.com>
1669
1670         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
1671         high part of a paradoxical subreg, return a constant zero.
1672
1673 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
1674
1675         * toplev.c (lang_dependent_init): Call init_set_costs.
1676         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
1677
1678 2007-02-01  Richard Guenther  <rguenther@suse.de>
1679
1680         PR middle-end/30656
1681         * fold-const.c (fold_negate_expr): Allow negating a
1682         constant if overflow does not change.
1683
1684 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1685
1686         * doc/c-tree.texi (Expression trees): Improve markup.
1687         * doc/tm.texi (Register Classes, Addressing Modes)
1688         (Floating Point): Fix spacing after abbreviations.  Fix some
1689         typos.
1690
1691 2007-02-01  Ben Elliston  <bje@au.ibm.com>
1692
1693         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
1694         * doc/contrib.texi: Likewise.
1695         * doc/install.texi: Likewise.
1696
1697 2007-01-31  Richard Henderson  <rth@redhat.com>
1698             Ian Lance Taylor  <iant@google.com>
1699
1700         * lower-subreg.c: New file.
1701         * rtl.def (CONCATN): Define.
1702         * passes.c (init_optimization_passes): Add pass_lower_subreg and
1703         pass_lower_subreg2.
1704         * emit-rtl.c (update_reg_offset): New static function, broken out
1705         of gen_rtx_REG_offset.
1706         (gen_rtx_REG_offset): Call update_reg_offset.
1707         (gen_reg_rtx_offset): New function.
1708         * regclass.c: Revert patch of 2006-03-05, restoring
1709         reg_scan_update.
1710         (clear_reg_info_regno): New function.
1711         * dwarf2out.c (concatn_loc_descriptor): New static function.
1712         (loc_descriptor): Handle CONCATN.
1713         * common.opt (fsplit_wide_types): New option.
1714         * opts.c (decode_options): Set flag_split_wide_types when
1715         optimizing.
1716         * timevar.def (TV_LOWER_SUBREG): Define.
1717         * rtl.h (gen_reg_rtx_offset): Declare.
1718         (reg_scan_update): Declare.
1719         * regs.h (clear_reg_info_regno): Declare.
1720         * tree-pass.h (pass_lower_subreg): Declare.
1721         (pass_lower_subreg2): Declare.
1722         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
1723         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
1724         -fsplit-wide-types.
1725         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
1726         * Makefile.in (OBJS-common): Add lower-subreg.o.
1727         (lower-subreg.o): New target.
1728
1729 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
1730
1731         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
1732
1733 2007-01-31  Anatoly Sokolov <aesok@post.ru>
1734
1735         PR target/19087
1736         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
1737
1738 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1739
1740         PR middle-end/29335
1741         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
1742
1743 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
1744
1745         * cfgloop.h: Include vec-prim.h.
1746         (enum li_flags): Remove LI_ONLY_OLD.
1747         (loop_iterator): Changed.
1748         (fel_next, fel_init): Iterate over loop tree.
1749         (FOR_EACH_LOOP_BREAK): New macro.
1750         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
1751         FOR_EACH_LOOP.
1752         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
1753         * modulo-sched.c (sms_schedule): Ditto.
1754         * tree-vectorizer.c (vectorize_loops): Ditto.
1755         * doc/loop.texi: Update information on loop numbering and behavior of
1756         FOR_EACH_LOOP wrto new loops.
1757         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
1758         add_to_evolution_1): Test nestedness of loops instead of comparing
1759         their numbers.
1760         * tree-chrec.c (chrec_fold_plus_poly_poly,
1761         chrec_fold_multiply_poly_poly, chrec_evaluate,
1762         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
1763         reset_evolution_in_loop): Ditto.
1764         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
1765
1766 2007-01-31  Dirk Mueller  <dmueller@suse.de>
1767
1768         * c-common.c (warn_about_parentheses): Separate warning about
1769         un-parenthized sequence of comparison operators from the one
1770         which is supposed to warn about x <= y <= z.
1771
1772 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
1773
1774         * optabs.h (enum optab_index): Add new OTI_isinf.
1775         (isinf_optab): Define corresponding macro.
1776         * optabs.c (init_optabs): Initialize isinf_optab.
1777         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
1778         patterns.
1779         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
1780         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
1781         using isinf_optab.
1782         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
1783         expand_builtin_interclass_mathfn.
1784         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
1785         * config/i386/i386.md (UNSPEC_FXAM): New constant.
1786         (fxam<mode>2_i387): New insn pattern.
1787         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
1788         built-in functions as x87 inline asm.
1789
1790 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
1791
1792         * gcc/config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
1793
1794 2007-01-30  Eric Christopher  <echristo@apple.com>
1795
1796         * config.gcc: Add geode.
1797
1798 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
1799
1800         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
1801         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
1802         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
1803         value-prof.c: Fix comment typos.
1804
1805 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1806
1807         PR c++/24745
1808         * doc/invoke.texi (Wpointer-arith): Document warning.
1809
1810 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
1811
1812         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
1813         the list of discrepancies from the draft TR.
1814
1815 2007-01-30  Dirk Mueller  <dmueller@suse.de>
1816
1817         PR c++/30601
1818         * doc/invoke.texi (-Wreturn-type): Update description to
1819         match new behavior.
1820
1821 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
1822
1823         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
1824
1825 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
1826
1827         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
1828         to handle optabs that operate on floating point input argument and
1829         output to integer output.
1830         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
1831         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
1832         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
1833         expand_builtin_interclass_mathfn ().
1834         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
1835         (ilogbsi2): Remove.
1836         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
1837         ilogbl built-in functions as x87 intrinsics.
1838
1839 2007-01-30  Richard Guenther  <rguenther@suse.de>
1840
1841         PR middle-end/27657
1842         * dwarf2out.c (reference_to_unused): Query varpool if the
1843         variable was output.
1844
1845 2007-01-30  Richard Guenther  <rguenther@suse.de>
1846
1847         PR middle-end/30313
1848         * passes.c (execute_one_pass): Reset in_gimple_form to not
1849         confuse non-unit-at-a-time mode.
1850
1851 2007-01-29  Roger Sayle  <roger@eyesopen.com>
1852             Richard Guenther  <rguenther@suse.de>
1853
1854         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
1855         avoid undefined behaviour on overflow.  Use force_fit_type_double
1856         to construct the constant with the specified TREE_OVERFLOW.
1857
1858 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
1859
1860         * config/dfp-bit.c: Add parameterized support for fp exceptions.
1861         * config/dfp-bit.h: Ditto.
1862
1863 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1864
1865         * c-decl.c (pop_scope): Replace warnings with call to
1866         warn_for_unused_label.
1867         * c-common.h (warn_for_unused_label): Declare.
1868         * c-common.c (warn_for_unused_label): Define.
1869
1870 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1871
1872         * tree-optimize.c (update_inlined_to_pointers): Delete unused
1873         function.
1874
1875 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
1876
1877         * Makefile.in (USER_H): Remove decfloat.h.
1878         * ginclude/decfloat.h: Delete, moving contents to ...
1879         * ginclude/float.h: Add support for decimal floating point,
1880         guarded by __STDC_WANT_DEC_FP__.
1881
1882 2007-01-29  Mike Stump  <mrs@apple.com>
1883
1884         * doc/gccint.texi (Top): Rename Loop Representation to Loop
1885         Analysis and Representation to resolve case insensitive conflict.
1886         * doc/loop.texi (Loop Analysis and Representation): Likewise.
1887
1888 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
1889
1890         * tree.h (struct tree_memory_tag): Add aliases member.
1891         (MTAG_ALIASES): New macro.
1892         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
1893         (add_may_alias): Remove pointer-set. Update for may_aliases being
1894         a bitmap.
1895         (mark_aliases_call_clobbered): Update for may_aliases being a
1896         bitmap.
1897         (compute_tag_properties): Ditto.
1898         (create_partition_for): Ditto.
1899         (compute_memory_partitions): Ditto.
1900         (dump_may_aliases_for): Ditto.
1901         (is_aliased_with): Ditto.
1902         (add_may_alias_for_new_tag): Ditto.
1903         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
1904         (compute_is_aliased): New function.
1905         (compute_may_aliases): Call compute_is_aliased).
1906         (init_alias_info): Initialize alias_bitmap_obstack.
1907         (union_alias_set_into): New function.
1908         (compute_flow_sensitive_aliasing): Use union_aliases_into.
1909         (have_common_aliases_p): Rewrite to take two bitmaps and use
1910         intersection.
1911         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
1912         Update for bitmaps.
1913         (finalize_ref_all_pointers): Update for add_may_alias changes.
1914         (new_type_alias): Ditto.
1915         * tree-flow-inline.h (may_aliases): Return a bitmap.
1916         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
1917         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
1918         may_aliases being a bitmap.
1919         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
1920         may_aliases now returns a bitmap.
1921         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
1922         being a bitmap.
1923         * tree-ssa-operands.c (add_virtual_operand): Update for
1924         may_aliases being a bitmap.
1925
1926 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
1927
1928         PR tree-optimization/30630
1929         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
1930         variable as changed.
1931
1932 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
1933
1934         PR c++/28266
1935         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
1936         expanded only once even if an error occurs.
1937
1938 2007-01-29  Ben Elliston  <bje@au.ibm.com>
1939
1940         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
1941         (__gcov_average_profiler): Likewise.
1942         (__gcov_ior_profiler): Likewise.
1943         (__gcov_merge_ior): Likewise.
1944
1945 2007-01-28  Jan Hubicka  <jh@suse.cz>
1946
1947         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
1948         * value-prof.c (stringop_block_profile): Likewise.
1949
1950 2007-01-28  Jan Hubicka  <jh@suse.cz>
1951
1952         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall): Add
1953         variant handling histograms; add wrapper.
1954         (clear_storage_via_libcall): Export.
1955         (emit_block_move_hints): Break out from ...; add histograms.
1956         (emit_block_move): ... this one.
1957         (clear_storage_hints): Break out from ...; add histograms.
1958         (clear_storage): ... this one.
1959         (set_storage_via_memset): Handle histogram.
1960         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
1961         (clear_storage_hints, clear_storage_via_libcall): Declare.
1962         (set_storage_via_setmem): Update prototype.
1963         * doc/md.texi (movmem, setmem): Document new arguments.
1964
1965         * value-prof.c (dump_histogram_value, tree_find_values_to_profile): Add
1966         new histograms.
1967         (stringop_block_profile): New global function.
1968         (tree_stringops_values_to_profile): Profile block size and alignment.
1969         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
1970         HIST_TYPE_IOR.
1971         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
1972         (stringop_block_profile): Declare.
1973         * builtins.c: Include value-prof.h.
1974         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
1975         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
1976         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
1977         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
1978         * profile.c (instrument_values): Add new counters.
1979         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
1980         calls.
1981         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
1982         (tree_init_edge_profiler): Build new profilers.
1983         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
1984         (pass_tree_profile): Add dump.
1985         (tree_profile_hooks): Update.
1986         * Makefile.in (LIBGCOV): Add new constants.
1987         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
1988         __gcov_ior_profiler): New.
1989         * i386.md (movmem/setmem expanders): Add new optional arguments.
1990
1991 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
1992
1993         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
1994
1995 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
1996
1997         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
1998         (tree_unswitch_single_loop): Pass eni_size_weights to
1999         tree_num_loop_insns.
2000         * tree-ssa-loop-manip.c: Include tree-inline.h.
2001         (can_unroll_loop_p): Pass eni_size_weights to
2002         tree_num_loop_insns.
2003         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
2004         Pass eni_size_weights to estimate_num_insns.
2005         * tree.h (init_inline_once): Export.
2006         * toplev.c (backend_init): Call init_inline_once.
2007         * cgraphunit.c (cgraph_process_new_functions,
2008         cgraph_analyze_function): Pass eni_inlining_weights to
2009         estimate_num_insns.
2010         * ipa-inline.c (compute_inline_parameters): Ditto.
2011         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
2012         to estimate_num_insns.
2013         (try_unroll_loop_completely): Pass eni_size_weights to
2014         tree_num_loop_insns.
2015         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
2016         ot estimate_num_insns.
2017         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
2018         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
2019         * tree-inline.c (eni_inlining_weights, eni_size_weights,
2020         eni_time_weights): New variables.
2021         (init_inline_once): Initialize them.
2022         (struct eni_data): Mew.
2023         (estimate_num_insns_1, estimate_num_insns): Use weights.
2024         * tree-inline.h (struct eni_weights_d): New.
2025         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
2026         (estimate_num_insns): Declaration changed.
2027         * cfgloop.h (tree_num_loop_insns): Declaration changed.
2028         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
2029         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
2030
2031 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
2032
2033         * tree-data-ref.c (conflict_fn): Assert that the number of affine
2034         relations in the conflict function is valid.
2035
2036 2007-01-27  Ian Lance Taylor  <iant@google.com>
2037
2038         * common.opt: Add fstrict-overflow.
2039         * opts.c (decode_options): Set flag_strict_overflow if -O2.
2040         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
2041         (TYPE_OVERFLOW_UNDEFINED): Define.
2042         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
2043         Replace all uses.
2044         * tree.h (TYPE_TRAP_SIGNED): Don't define.
2045         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
2046         (fold_negate_expr): Likewise.
2047         (make_range): Likewise.
2048         (extract_muldiv_1): Likewise.
2049         (maybe_canonicalize_comparison): Likewise.
2050         (fold_comparison): Likewise.
2051         (fold_binary): Likewise.
2052         (tree_expr_nonnegative_p): Likewise.
2053         (tree_expr_nonzero_p): Likewise.
2054         * tree-vrp.c (compare_values): Likewise.
2055         (extract_range_from_binary_expr): Likewise.
2056         (extract_range_from_unary_expr): Likewise.
2057         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
2058         Likewise.
2059         (nowrap_type_p): Likewise.
2060         * tree-scalar-evolution.c (simple_iv): Likewise.
2061         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
2062         (build_range_check): Likewise.
2063         (extract_muldiv_1): Likewise.
2064         (fold_comparison): Likewise.
2065         * tree-vrp.c (vrp_int_const_binop): Likewise.
2066         (extract_range_from_unary_expr): Likewise.
2067         * convert.c (convert_to_integer): Likewise.
2068         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
2069         (fold_comparison): Likewise.
2070         (fold_binary): Likewise.
2071         * optabs.c (optab_for_tree_code): Likewise.
2072         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
2073         * simplify-rtx.c (simplify_const_relational_operation): Check
2074         flag_strict_overflow and flag_trapv.
2075         (simplify_const_relational_operation): Likewise.
2076         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
2077         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
2078         -fstrict-overflow.
2079
2080 2007-01-27  Roger Sayle  <roger@eyesopen.com>
2081
2082         * tree.c (tree_fold_gcd): Delete.
2083         * tree.h (tree_fold_gcd): Remove prototype.
2084         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
2085         test whether one constant integer is a multiple of another.  Instead
2086         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
2087         * fold-const.c (multiple_of_p):  We've determined both TOP and
2088         BOTTOM are integer constants so we can call int_const_binop directly
2089         instead of the more generic const_binop.
2090
2091 2007-01-27  Roger Sayle  <roger@eyesopen.com>
2092
2093         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
2094         1*X check that the constant hasn't overflowed, to preserve the
2095         TREE_OVERFLOW bit.
2096         (round_up): Provide an efficient implementation when rouding-up an
2097         INTEGER_CST to a power-of-two.
2098
2099 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2100
2101         * doc/sourcebuild.texi: Add comma for clarity.
2102         * doc/extend.texi: Fix some typos.
2103         * doc/passes.texi: Likewise.
2104         * doc/cppinternals.texi: Likewise.
2105         * doc/c-tree.texi: Likewise.
2106         * doc/tree-ssa.texi: Likewise.
2107         * doc/install.texi: Likewise.
2108
2109 2007-01-27  Jan Hubicka  <jh@suse.cz>
2110
2111         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
2112         (pass_sra): Do not require alias information.
2113         * passes.c (init_optimization_passes): Add SRA
2114
2115 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
2116
2117         * tracer.c (rest_of_handle_tracer): We already cleaned
2118         up the CFG in tracer() so don't do it here again.
2119         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
2120         cleanup_cfg here, either.  And don't call renumber_insns.
2121
2122         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
2123         and BB_HEAD are in the insn stream here.  Instead make sure
2124         that BB_INSN is valid on all insns.  Also, do check here that
2125         there are no pending branch predictions...
2126         (rtl_verify_flow_info): ...instead of doing it here.  Checks
2127         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
2128         here.
2129
2130 2007-01-26  Roger Sayle  <roger@eyesopen.com>
2131
2132         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
2133         function to simplify/factorize operand order canonicalization.
2134         (ix86_fixup_binary_operands): Reorganize using the above function.
2135         (ix86_binary_operator_ok): Likewise.
2136
2137 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
2138
2139         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
2140         file scope from optimize_attrs.
2141         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
2142         up search.
2143         (optimize_attrs): Clear insn_code_values after freeing it.
2144
2145 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
2146
2147         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
2148         a parts.base assignment.
2149
2150 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
2151
2152         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
2153         (compute_subscript_distance, initialize_data_dependence_relation,
2154         finalize_ddr_dependent, analyze_ziv_subscript,
2155         analyze_siv_subscript_cst_affine,
2156         compute_overlap_steps_for_affine_univar,
2157         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
2158         analyze_siv_subscript, analyze_miv_subscript,
2159         analyze_overlapping_iterations, subscript_dependence_tester_1,
2160         compute_self_dependence, free_dependence_relation): Work
2161         with affine_fn instead of chrecs.
2162         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
2163         common_affine_function, affine_function_base,
2164         affine_function_constant_p, affine_fn_op, affine_fn_plus,
2165         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
2166         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
2167         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
2168         (all_chrecs_equal_p): Removed.
2169         * tree-data-ref.h (affine_fn, conflict_function): New types.
2170         (struct subscript): Change type of conflicting_iterations_in_a
2171         and conflicting_iterations_in_b.
2172
2173 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
2174
2175         PR other/30182
2176         * config/pa/pa.h (TARGET_HPUX_11): New.
2177         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
2178         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
2179
2180 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
2181         Richard Guenther  <rguenther@suse.de>
2182
2183         * tree-ssa-structalias.c (solve_graph): Handle case
2184         we merged the variable to another.
2185
2186 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2187
2188         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
2189         functions.
2190
2191         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
2192         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
2193
2194 2007-01-25  DJ Delorie  <dj@redhat.com>
2195
2196         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
2197         allow changes to modes which don't fit in those registers.
2198
2199         * reload1.c (choose_reload_regs): Check for invalid subregs before
2200         computing their locations, not after.
2201
2202 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
2203
2204         PR 25127
2205         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
2206         save Altivec registers in an eh_return function.
2207         (compute_vrsave_mask): Likewise.
2208         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
2209         for saving Altivec registers.
2210         (rs6000_emit_prologue): Don't allocate stack twice in
2211         eh_return function.  Correct expected value of altivec_save_offset
2212         when using save_world.  Describe save of R0 to stack when using
2213         save_world.  Describe stack pointer adjustment when using
2214         save_world.  Remove duplicated eh_return parameter register saving.
2215         Update sp_offset variable after save_world.
2216         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
2217         darwin-world.asm.
2218         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
2219         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
2220         implies Altivec.
2221
2222 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
2223
2224         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
2225
2226 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
2227
2228         PR other/30182
2229         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
2230         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
2231
2232 2007-01-25  Richard Guenther  <rguenther@suse.de>
2233
2234         * doc/invoke.texi (-Wcoverage-mismatch): Document.
2235         * common.opt (-Wcoverage-mismatch): New warning option.
2236         * coverage.c (get_coverage_counts): Ignore coverage mismatch
2237         if -Wcoverage-mismatch is given.
2238
2239 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
2240
2241         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
2242         (ipcp_driver): Change to static definition.
2243         Add dumping of the ifunctions.
2244         (constant_val_insert): Remove unused parameter. Support for SSA.
2245         (ipcp_propagate_const): Support for SSA.
2246         (ipcp_profile_bb_print): Print only analyzed nodes.
2247         (ipcp_replace_map_create): Remove support for Fortran constant
2248         for now.
2249         * ipa-prop.c (ipa_method_modify_stmt,
2250         ipa_callsite_compute_param): Support for SSA.
2251         * ipa-prop.h (ipcp_driver): Remove declaration.
2252         (IS_VALID_TREE_MAP_INDEX): Add define.
2253
2254 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
2255
2256         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
2257
2258 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2259
2260         PR middle-end/30447
2261         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
2262         constant argument to cabs and do it without checking for
2263         -funsafe-math-optimizations.
2264
2265 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
2266
2267         * c-common.h (RID_FIRST_CXX0X): New.
2268         (RID_LAST_CXX0X): New.
2269         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
2270         by -Wall.
2271         * c.opt (Wc++0x-compat): New.
2272         * doc/invoke.texi (-Wc++0x-compat): Document.
2273
2274 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2275
2276         * builtins.c (fold_builtin_carg): New.
2277         (fold_builtin_1): Use it.
2278
2279 2007-01-24  Jan Hubicka  <jh@suse.cz>
2280
2281         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
2282
2283         * ipa-inline.c (initial_insns, max_insns): Delete.
2284         (compute_max_insns): New function.
2285         (cgraph_decide_inlining_of_small_function): Use it; take minimal amount
2286         of insns as base for code growth.
2287         (cgraph_decide_inlining): Make initial_insns local; do not compute
2288         max_insns.
2289         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
2290         * doc/invoke.texi (inline-unit-growth): Update docs.
2291
2292 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
2293
2294         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
2295         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
2296         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
2297         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
2298         for CPUs that have PTA_CX16 set.
2299
2300         PR middle-end/27416
2301         * gimplify.c (omp_check_private): New function.
2302         (gimplify_scan_omp_clauses): Use it for
2303         firstprivate/lastprivate/reduction.
2304
2305         PR middle-end/30494
2306         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
2307         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
2308
2309         PR middle-end/30421
2310         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
2311         If lower_lastprivate_clauses emits some statements, append them
2312         to dlist rather than body_p and to body_p append an initializer.
2313         (lower_omp_for): Adjust caller.
2314
2315 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
2316
2317         * target.h (globalize_decl_name): New.
2318         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
2319         * output.h (default_globalize_decl_name): New.
2320         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
2321         globalize_label.
2322         (globalize_decl): Ditto.
2323         (default_globalize_decl_name): New.
2324         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
2325         (ia64_handle_version_id_attribute): New.
2326         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
2327         (ia64_asm_output_external): Use globalize_decl_name instead
2328         of globalize_label.
2329         * doc/extend.texi (version_id): New pragma.
2330         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
2331
2332 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
2333
2334         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
2335         _uleb128_t and _Unwind_SWord with _sleb128_t.
2336         * unwind-dw2.c (extract_cie_info, execute_stack_op, execute_cfa_program,
2337         uw_frame_state_for, uw_update_context_1): Likewise.
2338         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
2339         * unwind-pe.h (read_uleb128, read_sleb128,
2340         read_encoded_value_with_base): Likewise.
2341         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
2342
2343 2007-01-24  Richard Guenther  <rguenther@suse.de>
2344
2345         * builtins.c (expand_builtin_cexpi): Get the fndecl
2346         for cexp in the correct way.
2347
2348 2007-01-24  Jan Hubicka  <jh@suse.cz>
2349
2350         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS of calls.
2351
2352 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
2353
2354         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
2355         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
2356         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
2357         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
2358         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
2359         __SIZEOF_PTRDIFF_T__.
2360         * doc/cpp.texi: Documentation for the new builtin macros added.
2361
2362 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
2363
2364         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
2365         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
2366         instead of operands[2] to avoid access past the end of array.
2367
2368 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
2369
2370         * reload1.c (emit_reload_insns): Pass the reload register
2371         for a non-spill output reload through forget_old_reloads_1.
2372
2373 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
2374
2375         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
2376         _SOFT_DOUBLE if doubles use software floating-point.
2377         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
2378         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
2379         * config/rs6000/darwin-ldouble.c: Also compile functions for
2380         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
2381         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
2382         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
2383         commented-out long double override.
2384         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
2385         * config/rs6000/eabispe.h: Likewise.
2386         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
2387         long double for non-SPE.
2388         (rs6000_handle_option): Likewise.
2389         (invalid_e500_subreg): Disallow more subregs involding DImode,
2390         DFmode, TImode or TFmode.
2391         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
2392         E500 double.
2393         (legitimate_lo_sum_address_p): Also check for TFmode for E500
2394         double.
2395         (rs6000_legitimize_address): Also handle TFmode for E500 double.
2396         (rs6000_legitimize_reload_address): Also handle TFmode for E500
2397         double.
2398         (rs6000_legitimate_address): Also check for TFmode for E500
2399         double.
2400         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
2401         (spe_build_register_parallel): Handle TFmode and TCmode.
2402         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
2403         double.
2404         (function_arg): Handle TFmode and TCmode for E500 double.
2405         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
2406         in general.
2407         (print_operand): Handle TFmode and TImode for %y.
2408         (rs6000_generate_compare): Handle TFmode comparisons for E500
2409         double.
2410         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
2411         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
2412         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
2413         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
2414         TFmode for E500 double.
2415         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
2416         (floatsidf2): Enable for E500 double.
2417         (movtf_softfloat): Use rs6000_nonimmediate_operand.
2418         (extenddftf2): Change to extenddftf2_fprs.
2419         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
2420         depending on TARGET_E500_DOUBLE.
2421         (extendsftf2): Enable for E500 double.
2422         (trunctfdf2): Enable for E500 double.
2423         (trunctfsf2): Change to trunctfsf2_fprs.
2424         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
2425         depending on TARGET_E500_DOUBLE.
2426         (floatsitf2): Enable for E500 double.
2427         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
2428         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
2429         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
2430         (negtf2): Change to negtf2_internal.
2431         (negtf2): New expander.
2432         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
2433         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
2434         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
2435         (movdi_internal32): Use rs6000_nonimmediate_operand.
2436         (unnamed splitter): Likewise.
2437         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
2438         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
2439         (SPE64TF, DITI): New mode macros.
2440         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
2441         modes.
2442         (frob_tf_ti): New.
2443         (frob_<mode>_di_2): New.
2444         (frob_tf_di_8_2): New.
2445         (frob_di_df): Change to frob_di_<mode>; allow more modes.
2446         (frob_ti_tf): New.
2447         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
2448         more modes.
2449         (frob_ti_<mode>_8_2): New.
2450         (frob_ti_tf_2): New.
2451         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
2452         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
2453         TFmode.
2454         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
2455         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
2456         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
2457         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
2458         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
2459         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
2460         tsttflt_gp): New.
2461
2462 2007-01-23  Ian Lance Taylor  <iant@google.com>
2463
2464         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
2465         insn-*.o first.
2466         (OBJS-archive): Reformat, alphabetize.
2467         (OBJS): Change out_object_file to OBJS-md.
2468
2469 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
2470
2471         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
2472         JUMP_P and CALL_P predicates where applicable.
2473         * config/i386/i386.c: Ditto.
2474         * config/i386/i386.md: Ditto.
2475         * config/i386/mmx.md: Ditto.
2476         * config/i386/predicates.md: Ditto.
2477
2478 2007-01-22  Andreas Schwab  <schwab@suse.de>
2479
2480         * config/m68k/m68k.h: Fix comment.
2481
2482 2007-01-22  Jan Hubicka  <jh@suse.cz>
2483
2484         * passes.c (init_optimization_passes): Do not rerun
2485         pass_early_warn_uninitialized.
2486
2487 2007-01-22  Richard Guenther  <rguenther@suse.de>
2488
2489         PR tree-optimization/30038
2490         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
2491         function.
2492         (execute_cse_sincos_1): Likewise.
2493         (execute_cse_sincos): Likewise.
2494         (gate_cse_sincos): Likewise.
2495         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
2496         the cexpi() canonicalization of sincos().
2497         * tree-pass.h (pass_cse_sincos): Declare.
2498         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
2499
2500 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
2501
2502         PR rtl-optimization/29329
2503         * combine.c (replaced_rhs_insn): Rename to i2mod.
2504         (replaced_rhs_value): Rename to i2mod_new_rhs.
2505         (i2mod_old_rhs): New global variable.
2506         (combine_instructions): Adjust for above change.  Save a copy of
2507         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
2508         note are substituted in the second instruction.
2509         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
2510         ditch the note if it pertains to the second eliminated register
2511         and this register is mentioned in i2mod_old_rhs.
2512
2513         Revert:
2514         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
2515
2516         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
2517         the insn to which the note was originally attached.
2518
2519 2007-01-21  Jan Hubicka  <jh@suse.cz>
2520
2521         * ipa-inline.c (inlining_mode): Comment, move up.
2522         (cgraph_decide_inlining_incrementally): Do not perform inlining
2523         itself; fix handling of flattening of self recursive functions.
2524         (cgraph_find_cycles): Remove.
2525         (cgraph_flatten_node): Remove.
2526         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
2527         (try_inline): New function.
2528         (cgraph_early_inlining): Update call of
2529         cgraph_decide_inlining_incrementally.  Apply inlining here.
2530         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
2531
2532 2007-01-21  Dirk Mueller  <dmueller@suse.de>
2533
2534         PR bootstrap/30511
2535         * tree-vrp.c (check_array_bounds): do not warn
2536         about ADDR_EXPR's of ARRAY_REF's which are immediately
2537         used in binary expressions.
2538
2539 2007-01-21  Ira Rosen  <irar@il.ibm.com>
2540
2541         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
2542         read_write_dep and macros for its access.
2543         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
2544         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
2545         argument, call vect_check_interleaving for every independent pair of
2546         data-refs. Mark loads that access the same memory location as a store
2547         in the loop.
2548         (vect_check_dependences): Remove.
2549         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
2550         call, fix the call to vect_analyze_data_ref_dependence.
2551         (vect_analyze_data_ref_access): For statements that access the same
2552         data-ref, check that they are not stores; for loads, check that there
2553         is no store that access the same location.
2554
2555 2007-01-20  Roger Sayle  <roger@eyesopen.com>
2556             Joseph Myers  <joseph@codesourcery.com>
2557
2558         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
2559         (-fdump-rtl-stack): Likewise.
2560         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
2561         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
2562         (-mpt-fixed): Use @minus{} for minus sign.
2563         (Using Precompiled Headers): Fix under/overfull hbox.
2564
2565 2007-01-20  Jan Hubicka  <jh@suse.cz>
2566
2567         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
2568         place within annotation.
2569
2570 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2571
2572         * pa.c (output_move_double): Change array size of xoperands to 4.
2573
2574 2007-01-20  Jan Hubicka  <jh@suse.cz>
2575
2576         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
2577         as temporary.
2578
2579 2007-01-19  Ian Lance Taylor  <iant@google.com>
2580
2581         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
2582         constant to unsigned HOST_WIDE_INT before negating.
2583
2584 2007-01-19  Ian Lance Taylor  <iant@google.com>
2585
2586         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
2587         to unsigned.
2588         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
2589         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
2590         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
2591         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
2592         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
2593         (realloc_vdef, realloc_vuse): Change second parameter to
2594         unsigned.
2595         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
2596         fields to unsigned.
2597         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
2598         unsigned. Change x and lim locals to unsigned.
2599         (realloc_vdef, realloc_vuse): Change num_elem parameter to
2600         unsigned.
2601         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
2602         (copy_virtual_operands): Change i and n locals to unsigned.
2603
2604 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2605
2606         PR middle-end/29335
2607         * builtins.c (fold_builtin_1): Handle builtin fdim.
2608
2609 2007-01-20  Jan Hubicka  <jh@suse.cz>
2610
2611         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
2612         * tree-ssa-structalias.c (compute_points_to_sets): Do call
2613         init_alias_heapvars.
2614         (init_alias_heapvars): Initialize only when not already initialized.
2615         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
2616
2617 2007-01-19  Roger Sayle  <roger@eyesopen.com>
2618
2619         * common.opt (fsigned-zeros): New command line option.
2620         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
2621         of flag_unsafe_math_optimizations.
2622         * opts.c (set_fast_math_flags): The -ffast-math command line option
2623         implies -fno-signed-zeros.
2624         (fast_math_flags_set_p): Likewise.
2625
2626         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
2627         the documentation of -ffast-math appropriately.  Wrap long lines.
2628
2629 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
2630
2631         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
2632         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
2633
2634 2007-01-19  Tomas Bily  <tbily@suse.cz>
2635
2636         * cgraphunit.c (cgraph_finalize_function): Updating of pid
2637         * tree-profile.c:
2638         (tree_init_ic_make_global_vars): New function
2639         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
2640         (tree_gen_ic_profiler): New function
2641         (tree_gen_ic_func_profiler): New function
2642         (tree_profiling): Added calling of tree_gen_ic_func_profiler
2643         (tree_profile_hooks): Added hook for indirec/virtual calls
2644         * value-prof.c (tree_find_values_to_profile): New case for
2645         indirect calls
2646         (tree_values_to_profile): Call for determining indirect/virtual
2647         counters
2648         (tree_indirect_call_to_profile): New function
2649         (tree_ic_transform): New function
2650         (tree_ic): New function
2651         (find_func_by_pid): New function
2652         (init_pid_map): New function
2653         (tree_value_profile_transformations): Added check for
2654         indirect/virtual call transformation
2655         * value-prof.h (enum hist_type): New counter type for
2656         indirect/virtual calls
2657         (profile_hooks): Added new hook for profiling indirect/virtual
2658         calls
2659         * profile.c (instrument_values): New case for indirect/virtual
2660         call added
2661         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
2662         (GCOV_COUNTER_V_INDIR): New counter type
2663         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
2664         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
2665         call added
2666         * cgraph.c: Definition of cgraph_max_pid
2667         (cgraph_create_node): Default init of pid attribute
2668         * cgraph.h: Declaration of cgraph_max_pid
2669         (struct cgraph_node): Added pid attribute
2670         * libgcov.c (__gcov_indirect_call_profiler): New function
2671         (__gcov_one_value_profiler_body): New function
2672         (__gcov_one_value_profiler): Body was moved to
2673         __gcov_one_value_profiler_body and calls it
2674
2675 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
2676
2677         * doc/gty.texi (Options): Document the mark_hook option to GTY.
2678         * gengtype.c (write_types_data, write_func_for_structure,
2679         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
2680         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
2681         (walk_type, write_func_for_structure): Generate the mark_hook if
2682         needed.
2683
2684 2007-01-19  Jan Hubicka  <jh@suse.cz>
2685
2686         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
2687         'early' argument take inlining mode argument specifying whether to
2688         inline for size/speeed or all functions; add support for flattening;
2689         improve dumpting.
2690         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
2691
2692 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2693
2694         PR c++/17947
2695         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
2696         the name of the declared identifier.
2697
2698 2007-01-19  Dirk Mueller  <dmueller@suse.de>
2699
2700         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
2701         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
2702         duplicate evaluation.
2703
2704 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
2705
2706         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
2707         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
2708         to XFMode, use acosxf2 and truncate result to requested mode.
2709         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
2710         (asin<mode>2): Similarly, with asin expanders.
2711         (*fscalexf4_i387): Rename from *fscalexf4.
2712         (expNcorexf3): New expander.
2713         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
2714         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
2715         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
2716         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
2717         patterns for SSE math.
2718         (exp10<mode>2): Similarly, with exp10 expanders.
2719         (exp2<mode>2): Similarly, with exp2 expanders.
2720         (expm1<mode>2): Similarly, with expm1 expanders.
2721         (ldexp<mode>3): Similarly, with ldexp expanders.
2722         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
2723         Use gen_truncxf<mode>2_i387_noop to truncate result.
2724
2725 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
2726
2727         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
2728         for ColdFire targets.
2729
2730 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
2731             Richard Sandiford  <richard@codesourcery.com>
2732
2733         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
2734         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
2735         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
2736         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
2737         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
2738         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
2739
2740 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
2741
2742         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
2743         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
2744         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
2745         (*adddi_dilshr32_cf): New pattern.
2746         (adddi3, subdi3): Remove first alternatives.
2747
2748 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
2749
2750         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
2751         implemented using move.l, do not use its cc result for floating-point
2752         comparisons.
2753
2754 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
2755
2756         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
2757         from accepting 's' constraints if flag_pic.
2758
2759 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
2760
2761         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
2762         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
2763         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
2764         condition from TARGET_68881 to TARGET_HARD_FLOAT.
2765
2766 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
2767
2768         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
2769         ColdFire alternatives.
2770         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
2771         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
2772         architectures that support ff1 instruction.
2773
2774 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
2775             Julian Brown  <julian@codesourcery.com>
2776
2777         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
2778         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
2779         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
2780         Add commentary.
2781
2782 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
2783
2784         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
2785         and return a bool.
2786         (output_move_const_into_data_reg, output_move_simode_const): Delete.
2787         * config/m68k/m68k.c (const_method, const_int_cost): Take a
2788         HOST_WIDE_INT instead of an rtx.
2789         (m68k_rtx_costs): Update call accordingly.
2790         (output_move_const_into_data_reg): Likewise.  Fix formatting.
2791         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
2792         Return a bool.
2793         (output_move_simode_const): Update calls after above changes.
2794         Rework to use automatic variables and predicates like MEM_P.
2795         * config/m68k/m68k.md (pushexthisi_const): Update call to
2796         valid_mov3q_const.
2797
2798 2007-01-19  Dirk Mueller  <dmueller@suse.de>
2799
2800         * tree-ssa-alias.c (perform_var_substitution): Fix typo
2801         in dump_flags test.
2802
2803 2007-01-19  Richard Guenther  <rguenther@suse.de>
2804
2805         * builtins.c (expand_builtin_cexpi): Fall back to expanding
2806         via cexp in case sincos is not available.
2807
2808 2007-01-19  Richard Guenther  <rguenther@suse.de>
2809
2810         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
2811         * defaults.h (TARGET_HAS_SINCOS): Default to off.
2812         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
2813         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
2814         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
2815         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
2816         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
2817         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
2818
2819 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
2820
2821         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
2822         New insn patterns.
2823         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
2824         (atan2xf3): Directly generate RTL pattern.
2825         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
2826         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
2827         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
2828         disable patterns for SSE math.
2829         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
2830         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
2831         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
2832         disable patterns for SSE math.
2833
2834 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
2835
2836         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
2837
2838 2007-01-18  Roger Sayle  <roger@eyesopen.com>
2839
2840         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
2841         VIEW_CONVERT_EXPR to the same type as it's operand.
2842
2843 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
2844
2845         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
2846         configured for long double 128.
2847
2848 2007-01-18  Mike Stump  <mrs@apple.com>
2849
2850         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
2851         error.
2852
2853 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
2854
2855         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
2856         type correct.
2857
2858 2007-01-18  Jan Hubicka  <jh@suse.cz>
2859
2860         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
2861         greater than NUM_VOP_FREE_BUCKETS.
2862
2863 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
2864
2865         * tree-ssa-structalias.c: Update comments.
2866         (ptabitmap_obstack): Removed.
2867         (pta_obstack): New.
2868         (oldpta_obstack): Ditto.
2869         (stats): Add a few members.
2870         (struct variable_info): Remove node, complex, address_taken, and
2871         indirect_target members. Add oldsolution member.
2872         (new_var_info): Do not initialize removed members.
2873         (constraint_expr_type): Remove INCLUDES.
2874         (constraint_graph): Add size, implicit_preds, rep,
2875         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
2876         (FIRST_REF_NODE): New macro.
2877         (LAST_REF_NODE): Ditto.
2878         (FIRST_ADDR_NODE): Ditto.
2879         (find): New function.
2880         (unite): Ditto.
2881         (dump_constraint): Do not handle INCLUDES.
2882         (insert_into_complex): Do not insert duplicate constraints.
2883         (condense_varmap_nodes): Renamed and rewritten into ...
2884         (merge_node_constraints): This. Also fix bug in handling of
2885         offseted copy constraints.
2886         (clear_edges_for_node): No longer need to deal with preds at all,
2887         or removing associated preds/succs.
2888         (merge_graph_nodes): Deal with indirect_cycles.
2889         Don't deal with predecessors.
2890         (add_implicit_graph_edge): New function.
2891         (add_pred_graph_edge): Ditto.
2892         (add_graph_edge): Don't deal with predecessors.
2893         (build_constraint_graph): Removed.
2894         (build_pred_graph): New function.
2895         (build_succ_graph): Ditto.
2896         (struct scc_info): Removed in_component. Added roots, dfs, and
2897         node_mapping. Remove visited_index, unification_queue.
2898         (scc_visit): Deal with union-find we do now.
2899         Deal with cycles with REF nodes.
2900         (collapse_nodes): Renamed and rewritten to ...
2901         (unify_nodes): This.
2902         (process_unification_queue): Removed.
2903         (topo_visit): Cleanup
2904         (do_da_constraint): Use find.
2905         (do_sd_constraint): Ditto.
2906         (do_ds_constraint): Ditto.
2907         (do_complex_constraint): Ditto.
2908         (init_scc_info): Update for removed and added members.
2909         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
2910         (find_indirect_cycles): This.
2911         (equivalence_class): New variable.
2912         (label_visit): New function.
2913         (perform_variable_substitution): Rewritten.
2914         (free_var_substitution_info): New function.
2915         (find_equivalent_node): Ditto.
2916         (move_complex_constraints): Ditto.
2917         (eliminate_indirect_cycles): Ditto.
2918         (solve_graph): Only propagate changed bits.
2919         Use indirect cycle elimination.
2920         Use find.
2921         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
2922         (tree_id_eq): Renamed to ...
2923         (tree_vi_eq): This. Update for member change
2924         (insert_id_for_tree): Renamed and rewritten to ...
2925         (insert_vi_for_tree): This.
2926         (lookup_id_for_tree): Renamed and rewritten to ...
2927         (lookup_vi_for_tree): This.
2928         (get_id_for_tree): Renamed and rewritten to ...
2929         (get_vi_for_tree): Ditto.
2930         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
2931         (process_constraint): Don't handle INCLUDES.
2932         Remove special ADDRESSOF case.
2933         (find_func_aliases): Rewrite to use vi functions instead of id
2934         ones.
2935         (create_function_info_for): Ditto.
2936         (create_variable_info_for): Ditto.
2937         (intra_create_variable_infos): Ditto.
2938         (merge_smts_into): Ditto.
2939         (find_what_p_points_to): Ditto.
2940         (init_base_vars): Ditto.
2941         (init_alias_vars): Ditto.
2942         (remove_preds_and_fake_succs): New function.
2943         (dump_sa_points_to_info): Dump new stats.
2944         (dump_solution_for_var): Use find.
2945         (set_used_smts): Fix formatting.
2946         (compute_points_to_sets): Updated for new functions.
2947         (ipa_pta_execute): Ditto.
2948
2949 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
2950             Richard Sandiford  <richard@codesourcery.com>
2951
2952         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
2953         parallels.
2954         * calls.c (expand_call): If the return value is a PARALLEL,
2955         extract its first member.
2956         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
2957         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
2958         use FUNCTION_EXTRA_EPILOGUE.
2959         (m68k_function_value): Return a PARALLEL if the return value
2960         is of a pointer type.
2961         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
2962         (FUNCTION_EXTRA_EPILOGUE): Remove.
2963         * config/m68k/m68k.md (D0_REG): New constant.
2964
2965 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
2966
2967         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
2968         output a NOP for empty epilogues.
2969
2970 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
2971
2972         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
2973         before function.  Extend register save check to include all
2974         registers, not just integer ones.
2975
2976 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
2977
2978         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
2979         (m68k_use_return_insn): ...this.
2980         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
2981         * config/m68k/m68k.c (use_return_insn): Rename to...
2982         (m68k_use_return_insn): ...this.
2983         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
2984         of USE_RETURN_INSN.
2985
2986 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
2987
2988         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
2989         nearest even, fix denormal rounding overflow.
2990
2991 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
2992
2993         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
2994         f%$smove and f%$move.
2995         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
2996         (extendsfdf2_cf): Use fdmove instead of f%&move.
2997         (truncdfsf2_cf): Use fsmove instead of f%$smove.
2998         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
2999
3000 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
3001
3002         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
3003         GPR<-GPR moves.
3004
3005 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
3006
3007         * real.h (real_format): Add a canonical_nan_lsbs_set field.
3008         (coldfire_single_format): Declare.
3009         (coldfire_double_format): Likewise.
3010         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
3011         of qnan_msb_set to determine the lower bits of a canonical
3012         NaN significand.
3013         (encode_ieee_double): Likewise.
3014         (encode_ieee_quad): Likewise.
3015         (ieee_single_format): Initialize canonical_nan_lsbs_set.
3016         (mips_single_format): Likewise.
3017         (ieee_double_format): Likewise.
3018         (mips_double_format): Likewise.
3019         (ieee_extended_motorola_format): Likewise.
3020         (ieee_extended_intel_96_format): Likewise.
3021         (ieee_extended_intel_128_format): Likewise.
3022         (ieee_extended_intel_96_round_53_format): Likewise.
3023         (ibm_extended_format): Likewise.
3024         (mips_extended_format): Likewise.
3025         (ieee_quad_format): Likewise.
3026         (mips_quad_format): Likewise.
3027         (vax_f_format): Likewise.
3028         (vax_d_format): Likewise.
3029         (vax_g_format): Likewise.
3030         (i370_single_format): Likewise.
3031         (i370_double_format): Likewise.
3032         (decimal_single_format): Likewise.
3033         (decimal_double_format): Likewise.
3034         (decimal_quad_format): Likewise.
3035         (c4x_single_format): Likewise.
3036         (c4x_extended_format): Likewise.
3037         (real_internal_format): Likewise.
3038         (coldfire_single_format): New real_format.
3039         (coldfire_double_format): Likewise.
3040         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
3041         canonical_nan_lsbs_set.
3042         (pdp11_d_format): Likewise.
3043         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
3044         if TARGET_COLDFIRE_CPU.
3045
3046 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
3047
3048         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
3049         (output_call, m68k_legitimize_call_address): Declare.
3050         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
3051         parenthesees.  Add support for a 'W' constraint.
3052         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
3053         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
3054         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
3055         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
3056         variables.
3057         (override_options): Initialize them.  Do not set flag_no_function_cse
3058         for TARGET_ID_SHARED_LIBRARY.
3059         (m68k_output_pic_call): Delete.
3060         (m68k_legitimize_call_address): New function.
3061         (print_operand): Remove the %o prefix.  Handle the %p prefix.
3062         (output_call): New function.
3063         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
3064         target address from the GOT if symbolic jumps are not allowed.
3065         * config/m68k/m68k.md (call, general_operand): Do not set
3066         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
3067         Merge separate flag_pic and !flag_pic define_insns into...
3068         (*call, *call_value): ...these new patterns.  Match the address
3069         rather than the containing MEM and require it to be a call_operand.
3070         Use output_call to generate the asm template.
3071         * config/m68k/predicates.md (const_call_operand): New predicate.
3072         (call_operand): Likewise.
3073
3074 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
3075
3076         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
3077         (STACK_GROWS_DOWNWARD): Define to 1.
3078         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
3079         comments, emphasizing that these values are only defaults.
3080         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
3081         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
3082
3083 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
3084
3085         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
3086
3087 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
3088             Richard Sandiford  <richard@codesourcery.com>
3089
3090         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
3091         (FP_REGNO_P): New macros.
3092         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
3093         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
3094         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
3095         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
3096
3097 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
3098
3099         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
3100         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
3101         to $tmake_file.
3102         * config/m68k/t-floatlib: New file, extracting common code from...
3103         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
3104         * config/m68k/t-uclinux: Here.
3105         * config/m68k/fpgnulib.c: Do not compile extendeed precision
3106         routines on ColdFire targets.
3107
3108 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
3109
3110         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
3111         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
3112         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
3113         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
3114         explicitly set MOTOROLA to 1.
3115         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
3116
3117 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
3118             Nathan Sidwell  <nathan@codesourcery.com>
3119
3120         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
3121         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
3122         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
3123         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
3124         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
3125         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
3126         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
3127         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
3128         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
3129         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
3130         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
3131         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
3132         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
3133         (DBX_REGISTER_NUMBER): Delete.
3134         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
3135         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
3136         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
3137
3138 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
3139
3140         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
3141         * config/flat.h: New file.
3142         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
3143         OBJECT_FORMAT_FLAT.
3144         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
3145         indirect references for -msep-data or -mid-shared-library.
3146         Do not use PC-relative code addresses either.
3147         * config/m68k/m68k.c (override_options): Restrict -fPIC error
3148         to -mpcrel.
3149         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
3150         for shared libraries and crt1.o for executables.  Use crti.o and
3151         crtbegin.o.
3152         (ENDFILE_SPEC): Use crtend.o and crtn.o.
3153         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
3154         Do not add -elf2flt or -shared-lib-id options here.
3155         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
3156         Pass -shared-lib-id if -mid-shared-library, taking the library
3157         identifier from -mshared-library-id if given, otherwise
3158         defaulting to 0.
3159         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
3160         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
3161         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
3162         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
3163         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
3164         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
3165         and crtend.o.
3166         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
3167         jump sequence for ISA A and ISA A+.
3168         (PICJUMP): Likewise.
3169
3170 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
3171
3172         * config.gcc (m68k-*-uclinux*): Base the port on the common
3173         and m68k GNU/Linux files rather than on the generic ELF ones.
3174         * config/m68k/uclinux.h (TARGET_VERSION): Override.
3175         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
3176
3177 2007-01-18  Julian Brown  <julian@codesourcery.com>
3178             Richard Sandiford  <richard@codesourcery.com>
3179
3180         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
3181         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
3182         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
3183         before redefining.
3184         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
3185         80 unconditionally.
3186         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
3187
3188 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
3189
3190         * doc/install.texi: Document m68k-uclinuxoldabi.
3191         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
3192         * config/m68k/uclinux-oldabi.h: New file, copied from
3193         config/m68k/uclinux.h.
3194
3195 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
3196
3197         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
3198         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
3199         (m32r_compute_frame_size): Use unsigned for regno.
3200         (m32r_reload_lr): Use gen_frame_mem.
3201         (pop): New.
3202         (m32r_output_function_epilogue): Don't output the function epilogue
3203         textually here.
3204         (m32r_expand_epilogue): New.
3205         (direct_return): Return false if the function has the interrupt
3206         attribute.
3207         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
3208         * config/m32r/m32r.md (epilogue): New expander.
3209         (return_lr, return_rte): New insns.
3210         (return): Make it expander.
3211         (return_normal): New expander.
3212
3213 2007-01-18  Josh Conner  <jconner@apple.com>
3214
3215         PR target/30485
3216         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
3217         support for UNLE, UNLT, UNGE, and UNGT.
3218
3219 2007-01-18  Jan Hubicka  <jh@suse.cz>
3220
3221         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
3222         * tree-tailcall (add_virtual_phis): Likewise.
3223         (optimize_tail_call): Return TODOs.
3224         (execute_tail_calls): Return TODOs.
3225         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
3226         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
3227         changed.
3228         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
3229         Cleanup cfg using TODO.
3230         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
3231         * passes.c (execute_function_todo): When cleanup did something, remove
3232         unused locals.
3233         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
3234         (make_edges): Don't cleanup_cfg.
3235
3236 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
3237
3238         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
3239         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
3240         operate on the top of stack.
3241         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
3242         register handling of instructions that output to the second
3243         stack slot.
3244         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
3245         (move_for_stack_reg): Special-case check for dead destination
3246         stack slot for constant load of 1.0 inside UNSPEC_TAN.
3247
3248         * config/i386/i386.md (UNSPEC_TAN): New constant.
3249         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
3250         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
3251         to correctly model move of constant 1.0 to top stack slot.
3252         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
3253         (unnamed peephole2 pattern): Remove corresponding peephole2
3254         pattern that optimizes tan insn and loading of constant 1.0.
3255         (tanxf2): Use fptanxf4_i387.
3256         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
3257         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
3258         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
3259         disable patterns for SSE math.
3260         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
3261         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
3262
3263 2007-01-18  Dirk Mueller  <dmueller@suse.de>
3264             Richard Guenther <rguenther@suse.de>
3265
3266         PR diagnostic/8268
3267         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
3268         * common.opt (Warray-bounds): Add new warning option.
3269         * c-opts.c (c_common_handle_option): Define -Warray-bounds
3270         if -Wall is given.
3271         * Makefile.in: make tree-vrp.o depend on toplev.h
3272         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
3273         is enabled.
3274         (check_array_refs, check_array_bounds, check_array_ref): New.
3275
3276 2007-01-18  Jan Hubicka  <jh@suse.cz>
3277
3278         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
3279         (execute_ssa_ccp): Return flags conditionally.
3280         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
3281         changed.
3282         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
3283
3284 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
3285
3286         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
3287         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
3288
3289         * Makefile.c (GTFILES): Add cfglayout.h.
3290         * gengtype.c (open_base_files): Likewise.
3291         * cfglayout.c (cfg_layout_function_footer,
3292         cfg_layout_function_header) Reindent to make gengtype happy.
3293         * cfglayout.h (cfg_layout_function_footer,
3294         cfg_layout_function_header): Add GTY(()) marker.
3295
3296         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
3297
3298 2007-01-18  Ben Elliston  <bje@au.ibm.com>
3299
3300         * genautomata.c (write_automata): Include xstrerror output in the
3301         error message if writing the DFA description file fails.
3302
3303 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
3304
3305         * config/mips/mips-protos.h (mips_output_external): Make it
3306         return void.
3307         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
3308         * config/mips/mips.c (irix_output_external_libcall): Likewise.
3309         (extern_list): Likewise.
3310         (extern_head): Likewise.
3311         (TARGET_ASM_FILE_END): Likewise.
3312         (mips_file_end): Likewise.
3313         (mips_output_external): Rewritten.
3314
3315 2007-01-18  Ben Elliston  <bje@au.ibm.com>
3316
3317         * genpreds.c (write_insn_preds_c): Only write out the function
3318         body for regclass_for_constraint if we have register constraints.
3319
3320 2007-01-17  Tom Tromey  <tromey@redhat.com>
3321
3322         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
3323         * doc/install.texi (Testing): Use sourceware.org.
3324         (Binaries): Likewise.
3325         (Specific): Likewise.
3326         * doc/contrib.texi (Contributors): Use sourceware.org.
3327
3328 2007-01-17  Anatoly Sokolov <aesok@post.ru>
3329
3330         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
3331         (AVR_ENHANCED): Rename to ...
3332         (AVR_HAVE_MUL): ... new.
3333         (avr_enhanced_p): Rename to ...
3334         (avr_have_mul_p): ... new.
3335         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
3336         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
3337         * config/avr/avr.c (avr_enhanced_p): Rename to ...
3338         (avr_have_mul_p): ... new.
3339         (base_arch_s): Rename 'enhanced' to 'have_mul'.
3340         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
3341         'avr_enhanced_p' and 'enhanced'.
3342         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
3343         AVR_HAVE_MUL instead of AVR_ENHANCED.
3344         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
3345         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
3346         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
3347         instead of AVR_ENHANCED.
3348         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
3349         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
3350         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
3351
3352 2007-01-17  Ian Lance Taylor  <iant@google.com>
3353
3354         * vec.h (VEC_reserve_exact): Define.
3355         (vec_gc_p_reserve_exact): Declare.
3356         (vec_gc_o_reserve_exact): Declare.
3357         (vec_heap_p_reserve_exact): Declare.
3358         (vec_heap_o_reserve_exact): Declare.
3359         (VEC_OP (T,A,reserve_exact)): New static inline function, three
3360         versions.
3361         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
3362         negative parameter.
3363         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
3364         (VEC_OP (T,A,copy)) [all versions]: Likewise.
3365         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
3366         * vec.c (calculate_allocation): Add exact parameter.  Change all
3367         callers.
3368         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
3369         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
3370         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
3371         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
3372         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
3373         (vec_heap_p_reserve_exact): New function.
3374         (vec_heap_o_reserve_exact): New function.
3375
3376 2007-01-17  Jan Hubicka  <jh@suse.cz>
3377
3378         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
3379
3380 2007-01-17  Eric Christopher  <echristo@apple.com>
3381
3382         * config.gcc: Support core2 processor.
3383
3384 2007-01-16  Jan Hubicka  <jh@suse.cz>
3385
3386         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
3387         the names, just unlink the chain so we don't crash on dangling pointers
3388         to dead SSA names.
3389
3390 2007-01-16  Jan Hubicka  <jh@suse.cz>
3391
3392         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
3393         * tree-pass.h: Reorder to make IPA passes appear toegher.
3394         (pass_early_inline, pass_inline_parameters, pass_apply_inline): Declare.
3395         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
3396         parameters, do not call early inliner.
3397         * ipa-inline.c: Update comments.  Include tree-flow.h
3398         (cgraph_decide_inlining): Do not compute inlining parameters.
3399         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
3400         be called with function context set up.
3401         (pass_ipa_inline): Remove unreachable functions before pass.
3402         (cgraph_early_inlining): Simplify assuming to be called from the
3403         PM as local pass.
3404         (pass_early_inline): New pass.
3405         (cgraph_gate_ipa_early_inlining): New gate.
3406         (pass_ipa_early_inline): Turn into simple wrapper.
3407         (compute_inline_parameters): New function.
3408         (gate_inline_passes): New gate.
3409         (pass_inline_parameters): New pass.
3410         (apply_inline): Move here from tree-optimize.c
3411         (pass_apply_inline): New pass.
3412         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
3413         transforming.
3414         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
3415         doing them by hand.
3416         (tree_function_versioning): Do not allocate dummy struct function.
3417         * tree-inline.h (optimize_inline_calls): Update prototype.
3418         * tree-optimize.c (execute_fixup_cfg): Export.
3419         (pass_fixup_cfg): Remove
3420         (tree_rest_of_compilation): Do not apply inlines.
3421         * tree-flow.h (execute_fixup_cfg): Declare.
3422         * Makefile.in (gt-passes.c): New.
3423         * passes.c: Include gt-passes.h
3424         (init_optimization_passes): New passes.
3425         (nnodes, order): New static vars.
3426         (do_per_function_toporder): New function.
3427         (execute_one_pass): Dump current pass here.
3428         (execute_ipa_pass_list): Don't dump current pass here.
3429
3430 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
3431
3432         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
3433         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
3434
3435 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
3436
3437         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
3438         (strong_alias): Define.
3439         (__gcc_qmul): Provide non-FMA for soft-float.
3440         (__gcc_qdiv): Same.
3441         (__gcc_qneg): New.
3442         (__gcc_qeq): New.
3443         (__gcc_qle): New.
3444         (__gcc_qge): New.
3445         (__gcc_qunord): New.
3446         (__gcc_stoq): New.
3447         (__gcc_dtoq): New.
3448         (__gcc_qtos): New.
3449         (__gcc_qtod): New.
3450         (__gcc_qtoi): New.
3451         (__gcc_qtou): New.
3452         (__gcc_itoq): New.
3453         (__gcc_utoq): New.
3454         (fmsub): New.
3455         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
3456         soft-float functions.
3457         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
3458         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
3459         about long double soft float.
3460
3461 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
3462             Tehila Meyzels  <tehila@il.ibm.com>
3463
3464         * tree-vectorizer.h (is_pattern_stmt_p): New.
3465         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
3466         formatting (tabs instead of spaces). Cleanup and clarify setting
3467         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
3468         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
3469         (vectorizable_type_demotion): Check that types are integral.
3470         (vectorizable_type_promotion): Likewise.
3471         (vectorizable_store): Fix typo.  Eliminate new-line at end of
3472         comments.
3473
3474 2007-01-16  Jan Hubicka  <jh@suse.cz>
3475
3476         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
3477         cgraph edges too.
3478
3479 2007-01-15  Eric Christopher  <echristo@apple.com>
3480
3481         * ifcvt.c: Include vec.h, vecprim.h.
3482         (check_cond_move_block): New argument regs.
3483         Reorganize. Add registers used to regs.
3484         (cond_move_process_if_block): Use regs set above as
3485         loop bounds.
3486
3487 2007-01-15  Eric Christopher  <echristo@apple.com>
3488
3489         * config/darwin.h: Update copyright.
3490         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
3491         (LINK_COMMAND_SPEC): Add -u.
3492         (LINK_SPEC): Fix umbrella for above.
3493
3494 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
3495
3496         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
3497         glibc CVS.
3498
3499 2007-01-15  Tom Tromey  <tromey@redhat.com>
3500
3501         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
3502         * doc/install.texi (Testing): Don't mention jacks.
3503         (Configuration): Document --enable-java-maintainer-mode.  Move
3504         --with-java-home to libgcj-specific section.  Document
3505         --with-ecj-jar.
3506         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
3507
3508 2007-01-15  Jan Hubicka  <jh@suse.cz>
3509
3510         * tree-ssa-dce.c (DCE_TODOs): New.
3511         (propagate_necessity): Return if something changed.
3512         (eliminate_unnecessary_stmts): Likewise.
3513         (perform_tree_ssa_dce): Return TODO flags when needed.
3514         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
3515
3516 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
3517
3518         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
3519         (fyl2x_extend<mode>xf3_i387): New insn pattern.
3520         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
3521         patterns using X87MODEF12 mode macro.  Extend operand 1
3522         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
3523         (log10<mode>2): Ditto.
3524         (log2<mode>2): Ditto.
3525         (log1p<mode>2): Ditto.
3526         (logb<mode>2): Ditto.
3527         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
3528         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
3529         (*fxtractxf3_i387): Rename from *fxtractxf3.
3530         (fxtract_extend<mode>xf3_i387): New insn pattern.
3531         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
3532         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
3533         and gen_fyl2xxf3_i387().
3534
3535 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
3536
3537         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
3538         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
3539         get_loop_exit_edges.  Changed return type to bool.
3540         * cfgloop.h (fix_loop_placement): Declaration removed.
3541
3542 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
3543
3544         * param.h (MIN_VECT_LOOP_BOUND): New.
3545         * params.def (MIN_VECT_LOOP_BOUND): New.
3546         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
3547         argument - minimum threshold for number of iterations.
3548         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
3549         argument to declaration.
3550         * tree-vect-analyze.c (vect_analyze_operations): Check value of
3551         MIN_VECT_LOOP_BOUND.
3552         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
3553         slpeel_tree_peel_loop_to_edge with additional argument.
3554         (vect_do_peeling_for_alignment): Likewise.
3555         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
3556
3557 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
3558
3559         PR target/30413
3560         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
3561         operands of size 1.
3562
3563 2007-01-14  Jan Hubicka  <jh@suse.cz>
3564
3565         * tree-dfa.c (remove_referenced_var): New function.
3566         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
3567         prune referenced vars list too.
3568         * tree-flow.h (remove_referenced_var): Declare.
3569
3570 2007-01-14  Jan Hubicka  <jh@suse.cz>
3571
3572         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
3573         separately.
3574         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
3575         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
3576         * except.h (verify_eh_throw_table_statements): Kill prototype.
3577         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
3578         into call exrepssions.
3579         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
3580         eh trhow verifier.
3581         * tree-cfg.c: Include pointer-set.h.
3582         (verify_node_sharing): Work on pointer set.
3583         (verify_eh_throw_stmt_node): New.
3584         (verify_stmts): Use pointers sets, verify throw_stmt.
3585
3586 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
3587
3588         * ipa-reference.c (analyze_function): Consider also addresses taken
3589         in phi nodes.
3590
3591 2007-01-12  Roger Sayle  <roger@eyesopen.com>
3592
3593         * c-typeck.c (null_pointer_constant_p): Replace use of
3594         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
3595         (build_c_cast): Likewise.
3596
3597 2007-01-12  Roger Sayle  <roger@eyesopen.com>
3598
3599         * tree.h (force_fit_type_double): Remove unused final argument.
3600         * c-common.c (constant_expression_warning): Replace use of
3601         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
3602         (convert_and_check): Likewise.
3603         (shorten_compare): Update call to force_fit_type_double.
3604         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
3605         * convert.c (convert_to_pointer): Update call to
3606         force_fit_type_double.
3607         * fold-const.c (force_fit_type_double): Remove overflowed_const
3608         argument.
3609         (int_const_binop, fold_convert_const_int_from_int,
3610         fold_convert_const_int_from_real, fold_div_compare,
3611         fold_sign_changed_comparison, fold_unary, fold_negate_const,
3612         fold_abs_const, fold_not_const): Remove the final argument from
3613         calls to force_fit_type_double.
3614
3615 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3616
3617         * configure.ac: Set insn to "nop" for spu-*-* also.
3618         * configure: Regenerate.
3619
3620 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
3621
3622         * builtins.def : Add BUILT_IN_FREE.
3623
3624 2007-01-12  Jan Hubicka  <jh@suse.cz>
3625
3626         PR tree-optimization/30443
3627         * tree-inline.c (tree_function_versioning): Do not optimize when
3628         cloning for inlining.
3629
3630 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
3631
3632         * doc/loop.texi: Document recording of loop exits.
3633         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
3634         (update_single_exits_after_duplication,
3635         update_single_exit_for_duplicated_loop,
3636         update_single_exit_for_duplicated_loops): Removed.
3637         (duplicate_loop_to_header_edge): Do not call
3638         update_single_exits_after_duplication and
3639         update_single_exit_for_duplicated_loops.
3640         (loop_version): Do not update single_exit information.
3641         (fix_loop_structure): Use record_loop_exits instead of
3642         mark_single_exit_loops.
3643         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
3644         the lists of loop exits.
3645         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
3646         split_edge, merge_blocks): Update the lists of loop exits.
3647         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
3648         loop_optimizer_init.
3649         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
3650         of mark_single_exit_loops.
3651         (loop_optimizer_finalize): Call release_recorded_exits.
3652         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
3653         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
3654         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
3655         update single exit information.
3656         * lambda-code.c (perfect_nestify): Ditto.
3657         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
3658         (mark_single_exit_loops): Removed.
3659         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
3660         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
3661         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
3662         functions.
3663         (get_loop_exit_edges, single_exit): Use recorded exit lists.
3664         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
3665         (verify_loop_structure): Verify consistency of the exit lists.
3666         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
3667         (set_single_exit): Removed.
3668         * cfgloop.h (struct loop_exit): New function.
3669         (struct loop): single_exit_ field replaced by exits field.
3670         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by LOOPS_HAVE_RECORDED_EXITS.
3671         (struct loops): Added exits hash.
3672         (mark_single_exit_loops, set_single_exit): Declaration removed.
3673         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
3674
3675 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
3676
3677         * doc/invoke.texi: Avoid use of @headitem.
3678
3679 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
3680
3681         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
3682
3683 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
3684
3685         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
3686         list of targets.
3687
3688 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
3689             Richard Sandiford  <richard@codesourcery.com>
3690
3691         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
3692         * config/m68k/m68k.opt: Resort options.
3693         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
3694
3695 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
3696             Richard Sandiford  <richard@codesourcery.com>
3697
3698         * doc/invoke.texi: Document the macros that are defined by
3699         m68k's -mtune and -mhard-float options.
3700         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
3701         (m68k_cpp_cpu_family): Likewise.
3702         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
3703         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
3704         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
3705         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
3706         (m68k_cpp_cpu_family): Likewise.
3707
3708 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
3709
3710         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
3711         macros besides mc68000 as tuning macros.  Use a switch statement
3712         to set them and mcpu32.
3713
3714 2007-01-12  Julian Brown  <julian@codesourcery.com>
3715
3716         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
3717         (TARGET_68040_ONLY): Rename to...
3718         (TARGET_68040): ...this.
3719         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
3720         * config/m68k/m68k.md: Likewise.
3721
3722 2007-01-12  Julian Brown  <julian@codesourcery.com>
3723             Nathan Sidwell  <nathan@codesourcery.com>
3724             Richard Sandiford  <richard@codesourcery.com>
3725
3726         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
3727         the -mcpu= argument associated with the --with-cpu setting.
3728         Define M68K_DEFAULT_TUNE to the default -mtune= option,
3729         if different from the one implied by the -mcpu setting.
3730         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
3731         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
3732         * doc/invoke.texi: Mention ColdFire in the introduction to the
3733         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
3734         -mno-div and -mhard-float options.  Make -m68881 a synonym for
3735         -mhard-float.  Document the previously-undocumented -m5206e,
3736         -m528x, -m5307 and -m5407 options.  Tweak the existing option
3737         documentation for consistency.
3738         * doc/install.texi: Mention new --with-cpu arguments.
3739         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
3740         default CPU if neither -mcpu nor -march are specified.
3741         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
3742         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
3743         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
3744         using m68k_tune to decide between families that implement the
3745         same ISA.  Use m68k_tune to set __mcfv4e__.
3746         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
3747         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
3748         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
3749         (FL_ISA_C, FL_ISA_MMU): New macros.
3750         (MASK_COLDFIRE): Delete.
3751         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
3752         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
3753         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
3754         (TARGET_HARD_FLOAT): Do not define here.
3755         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
3756         (TUNE_68000): New macro.
3757         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
3758         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
3759         (TUNE_CFV2): Redefine in terms of m68k_tune.
3760         (uarch_type, target_device, fpu_type): New enums.
3761         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
3762         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
3763         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
3764         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
3765         (FL_FOR_isa_c): New macros.
3766         (m68k_isa): New enum.
3767         (m68k_target_selection): New structure.
3768         (all_devices, all_isas, all_microarchs): New tables.
3769         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
3770         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
3771         (MASK_ALL_CPU_BITS): Delete.
3772         (m68k_find_selection): New function.
3773         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
3774         Map the legacy target options to a combination of the new ones.
3775         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
3776         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
3777         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
3778         settings.
3779         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
3780         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
3781         properties.
3782         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
3783         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
3784         * config/m68k/m68k-devices.def: New file.
3785
3786 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
3787             Nathan Sidwell  <nathan@codesourcery.com>
3788
3789         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
3790         (SUBTARGET_EXTRA_SPECS): New macros.
3791         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
3792         use %(asm_cpu_spec) instead.
3793         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
3794         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
3795         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
3796         (EXTRA_SPECS): Rename to...
3797         (SUBTARGET_EXTRA_SPECS): ...this.
3798
3799 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
3800             Richard Sandiford  <richard@codesourcery.com>
3801             Julian Brown  <julian@codesourcery.com>
3802
3803         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
3804         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
3805         to the configuration's default CPU.
3806         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
3807         Remove default masks.
3808         (m680[012]0-*-*): Set the default with_cpu to the first part of
3809         the target name.
3810         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
3811         (m68k*-*-linux): Extend the --with-cpu handling to...
3812         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
3813         and m68010.  Don't set target_cpu_default2.
3814         * doc/install.texi: Document --with-cpu for m68k.
3815         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
3816         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
3817         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
3818         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
3819         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
3820         (ASM_SPEC): Remove use of %(asm_cpu_default).
3821         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
3822         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
3823         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
3824         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
3825         __HAVE_FPU__ if TARGET_HARD_FLOAT.
3826         (TARGET_DEFAULT): Delete.
3827         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
3828         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
3829         (CPP_CPU_SPEC): Delete.
3830         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
3831         the appropriate string.
3832         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
3833         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
3834         (ASM_SPEC): Don't use %(asm_default_spec).
3835         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
3836         TARGET_DEFAULT and add MASK_68881.
3837         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
3838
3839 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
3840
3841         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
3842         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
3843         MASK_68010 alongside MASK_68020.
3844         * doc/invoke.texi: Document -m68010.
3845         * config/m68k/m68k.opt (m68010): New.
3846         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
3847         if TUNE_68010.
3848         (TUNE_68010): New macro.
3849         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
3850         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
3851         (M68K_CPU_m68332): Add MASK_68010.
3852         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
3853         fallback definition.
3854         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
3855         defines.
3856         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
3857         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
3858         to all entries that use MASK_68020.
3859         (output_move_simode_const, output_move_himode, output_move_qimode)
3860         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
3861         instead of TARGET_68020 to select clr behavior.  Remove comment
3862         about there being no TARGET_68010.
3863         * config/m68k/m68k.md: Likewise throughout.
3864
3865 2007-01-12  Julian Brown  <julian@codesourcery.com>
3866
3867         * config/m68k/m68k.h (TARGET_ISAB): New macro.
3868         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
3869         * config/m68k/m68k.md: Likewise.
3870
3871 2007-01-12  Julian Brown  <julian@codesourcery.com>
3872
3873         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
3874         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
3875
3876 2007-01-12  Julian Brown  <julian@codesourcery.com>
3877
3878         * config/m68k/m68k.h (TUNE_68040_60): New macro.
3879         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
3880         * config/m68k/m68k.md: Likewise.
3881
3882 2007-01-12  Julian Brown  <julian@codesourcery.com>
3883             Richard Sandiford  <richard@codesourcery.com>
3884
3885         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
3886         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
3887         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
3888         TARGET_CPU32.
3889         (TARGET_CPU32): Rename to...
3890         (TUNE_CPU32): ...this.
3891         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
3892         (TUNE_CFV2): New macros.
3893         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
3894         remove conditions that are implied by TARGET_68020.
3895         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
3896         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
3897         (m68k_output_function_epilogue): Likewise.
3898         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
3899         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
3900         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
3901         non-68000 timings.  Refactor multiplication and division costs.
3902         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
3903         TUNE_CPU32 instead of TARGET_CPU32.
3904         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
3905         and TUNE_68060 instead of TARGET_68060.
3906         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
3907         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
3908         TARGET_CPU32.
3909         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
3910         && !TARGET_COLDFIRE" to choose between moveq and clr.
3911         Likewise in the unnamed movsf pattern.
3912         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
3913         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
3914         ashiftrt pattern.
3915
3916 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
3917
3918         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
3919         of tabbing before backslashes.
3920
3921 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3922
3923         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
3924         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
3925         (ASM_OUTPUT_INTERNAL_LABEL): Define.
3926
3927 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
3928
3929         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
3930         find_interesting_uses_cond.
3931         (find_interesting_uses_cond): Use extract_cond_operands.
3932         (rewrite_use_compare): Use extract_cond_operands and
3933         force_gimple_operand_bsi.  Do not call update_stmt.
3934         (determine_use_iv_cost_condition): Use extract_cond_operands.
3935         Return cheaper of using original bound and changing the exit bound.
3936
3937 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
3938
3939         PR tree-optimization/29516
3940         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
3941         most_expensive_mult_to_index, addr_to_parts,
3942         create_mem_ref, maybe_fold_tmr): Make the type of
3943         fields of TARGET_MEM_REF sizetype.
3944         (move_fixed_address_to_symbol, move_pointer_to_base):
3945         New functions.
3946         * tree.def (TARGET_MEM_REF): Add comment on types of
3947         the operands.
3948
3949 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
3950
3951         * c-common.c (vector_types_convertible_p): Treat opaque types as
3952         always convertible if they have the same size, but not otherwise.
3953
3954 2007-01-11  Steven&nb