OSDN Git Service

PR middle-end/22156
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
2
3         PR middle-end/22156
4         Temporarily revert:
5         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
6         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
7         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
8         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
9         initialize align to silence bogus warning.
10         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
11         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
12         all_no_warning.
13         (struct sra_walk_fns): Remove use_all parameter from use.
14         (sra_hash_tree): Handle BIT_FIELD_REFs.
15         (sra_elt_hash): Don't hash bitfld blocks.
16         (sra_elt_eq): Skip them in parent compares as well.  Handle
17         BIT_FIELD_REFs.
18         (sra_walk_expr): Don't maintain or pass down use_all_p.
19         (scan_use): Remove use_all parameter.
20         (scalarize_use): Likewise.  Re-expand assignment to
21         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
22         output, and re-scalarize after output.  Don't mark anything
23         for no warning.
24         (scalarize_ldst): Adjust.
25         (scalarize_walk_gimple_modify_statement): Likewise.
26         (build_element_name_1): Handle BIT_FIELD_REFs.
27         (instantiate_element): Don't warn for any element whose parent
28         is used as a whole.
29         (instantiate_missing_elements_1): Return the sra_elt.
30         (canon_type_for_field): New.
31         (try_instantiate_multiple_fields): New.
32         (instantiate_missing_elemnts): Use them.
33         (mark_no_warning): Removed.
34         (generate_one_element_ref): Handle BIT_FIELD_REFs.
35         (REPLDUP, sra_build_elt_assignment): New.
36         (generate_copy_inout): Use them.
37         (generate_element_copy): Likewise.  Handle bitfld differences.
38         (generate_element_zero): Don't recurse for blocks.  Use
39         sra_build_elt_assignment.
40         (generate_one_element_int): Take elt instead of var.  Use
41         sra_build_elt_assignment.
42         (generate_element_init_1): Adjust.
43         (scalarize_use, scalarize_copy): Use REPLDUP.
44         (scalarize_ldst): Move assert before dereference.
45         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
46
47 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
48
49         PR C++/31721
50         * tree.c (reconstruct_complex_type): Reconstruct a reference
51         correctly.
52         Also use the same mode for the pointer as the old pointer type.
53
54 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
55
56         * doc/trouble.texi (Interoperation): Remove note about Ultrix
57         Fortran compiler.
58
59 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
60
61         PR rtl-optimization/31676
62         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
63         (df_refs_record): Call it.
64
65 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
66
67         * rtl.def (SS_ABS): New code.
68         * config/bfin/bfin.c (print_operand): New modifier 'v'.
69         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
70         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
71         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
72         (bfin_init_builtins): Define them.
73         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
74         (bfin_expand_builtin): ... and handle the others here.
75         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
76         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
77         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
78         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
79         operand is only HImode.
80
81 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
82
83         * regclass.c (scan_one_insn): Remove splitting of
84         two address insns.
85
86 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
87             Nigel Stephens  <nigel@mips.com>
88
89         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
90
91 2007-04-28  Jan Hubicka  <jh@suse.cz>
92
93         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
94         insn_locators_alloc instead of insn_locators_initialize;
95         call reset_block_changes.
96         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
97         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
98         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
99         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
100         * config/score/score.c (th_output_mi_thunk): Likewise.
101         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
102         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
103         tolerate uninitialized locator info.
104
105         Re-apply:
106         * function.c (init_function_start): Don't init line number info.
107         (expand_function_end): Update.
108         (reset_block_changes, record_block_change, finalize_block_changes,
109         check_block_change, free_block_changes): Kill.
110         * function.h (reset_block_changes, record_block_change,
111         finalize_block_changes, check_block_change, free_block_changes): Remove
112         prototypes.
113         (struct function): Remove ib_boundaries_block.
114         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
115         Use curr_insn_locator to initialize locator.
116         (emit_line_note): Remove.
117         * cfgexpand.c (expand_gimple_cond_expr): Update.
118         (construct_exit_block): Likewise.
119         (tree_expand_cfg): Initialize/finalize locators.
120         * expr.c (expand_expr_real): Update.
121         * cfglayout.c (line_locators_locs, line_locators_lines,
122         file_locators_locs, file_locators_files): Remove.
123         (set_block_levels): Move to cfgexpand.c.
124         (insn_locators_initialize): Remove.
125         (pass_insn_locators_initialize): Remove.
126         (locations_locators_locs, locations_locators_vals): New static vars.
127         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
128         Likewise.
129         (insn_locators_alloc, insn_locators_finalize,
130         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
131         New functions.
132         (locator_location): New.
133         (locator_line, locator_file): Rewrite.
134         * rtl.h (emit_line_note): Kill.
135         (insn_locators_alloc, insn_locators_finalize,
136         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
137         Declare.
138         * tree-inline.c (initialize_cfun): Do not initialize
139         ib_boundaries_block.
140         * passes.c (pass_insn_locators_initialize): Remove.
141
142 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
143
144         * tree-cfg.c (move_block_to_fn): Release bb from dominance
145         info.  Update last_basic_block correctly.
146
147 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
148
149         PR target/31701
150         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
151         register itself to hold the offset constant.  Tell flow the use
152         of r4 and r5 when they are used.
153
154 2007-04-27  Richard Guenther  <rguenther@suse.de>
155
156         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
157         if we simplified anything.
158         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
159         warnings until we did a simplification and the stmt was not
160         marked as TREE_NO_WARNING.
161
162 2007-04-27  Mike Stump  <mrs@apple.com>
163
164         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
165
166 2007-04-27  Ian Lance Taylor  <iant@google.com>
167
168         PR middle-end/31710
169         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
170         TYPE_MAX_VALUE exist, convert them to the new type.
171
172 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
173
174         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
175         if it claims to be available.
176         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
177         edge is redirected.
178         (perform_tree_ssa_dce): Always free postdominators.
179
180 2007-04-27  Richard Henderson  <rth@redhat.com>
181
182         * config/alpha/predicates.md (aligned_memory_operand): Mark
183         as define_special_predicate.
184         (unaligned_memory_operand, normal_memory_operand): Likewise.
185         (reg_or_unaligned_mem_operand): Remove.
186         (any_memory_operand): Match the documentation and check for
187         non-renumbered pseudos during reload.
188         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
189         alpha_secondary_reload_class, update to new interface, make static.
190         Handle CQImode like HImode.  Remove FP subreg check.
191         (alpha_expand_mov): Use replace_equiv_address.
192         (alpha_expand_mov_nobwx): Use any_memory_operand.
193         (TARGET_SECONDARY_RELOAD): New.
194         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
195         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
196         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
197         * config/alpha/alpha.md: ... here.
198         (RELOAD12, reloadmode): New.
199         (movcqi): New.
200         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
201         Don't handle the aligned case here.
202         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
203         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
204         reload_inhi_help.  Don't expect a scratch register.
205         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
206         reload_outhi_help.
207         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
208
209 2007-04-27  Richard Guenther  <rguenther@suse.de>
210
211         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
212
213 2007-04-27  Richard Guenther  <rguenther@suse.de>
214
215         PR tree-optimization/30965
216         PR tree-optimization/30978
217         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
218         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
219         (find_equivalent_equality_comparison): Likewise.
220         (simplify_cond): Likewise.
221         (get_prop_source_stmt): New helper.
222         (get_prop_dest_stmt): Likewise.
223         (can_propagate_from): Likewise.
224         (remove_prop_source_from_use): Likewise.
225         (combine_cond_expr_cond): Likewise.
226         (forward_propagate_comparison): New function.
227         (forward_propagate_into_cond): Rewrite to use fold for
228         tree combining.
229         (tree_ssa_forward_propagate_single_use_vars): Call
230         forward_propagate_comparison to propagate comparisons.
231
232 2007-04-27  Richard Guenther  <rguenther@suse.de>
233
234         PR tree-optimization/31715
235         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
236         sure to do computation on the offset in an appropriate
237         signed type.
238
239 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
240
241         * reload.h (elimination_target_reg_p): Declare.
242         * reload.c (find_reloads): Don't apply the reg_rtx move
243         optimization if the SET_DEST satisfies elimination_target_reg_p.
244         * reload1.c (elimination_target_reg_p): New function.
245         (gen_reload): In the move/add2 fallback, make sure that op0
246         does not overlap the destination register.
247
248 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
249
250         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
251         transform only GIMPLE_MODIFY_STMTs.
252         * tree-complex.c (expand_complex_operations_1): Ditto.
253         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
254         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
255         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
256         branches.
257         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
258         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
259         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
260         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
261         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
262         slpeel_add_loop_guard): Ditto.
263         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
264         * lambda-code.c (perfect_nestify): Ditto.
265         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
266         before the first statement.
267         * tree-optimize.c (execute_free_datastructures): Fix comments.
268         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
269         * tree-flow.h (disband_implicit_edges): Declaration removed.
270         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
271         branches.
272         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle COND_EXPRs
273         without gotos.
274         (disband_implicit_edges, has_label_p): Removed.
275         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
276         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
277         branches.
278         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
279         side effects.
280         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
281         also for COND_EXPRs.
282         * cfgexpand.c (label_rtx_for_bb): New function.
283         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
284         Use label_rtx_for_bb to find the labels.
285         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
286         last block.  Detect fallthru edges.
287
288 2007-04-26  Ian Lance Taylor  <iant@google.com>
289
290         PR target/28675
291         * reload.c (find_reloads_subreg_address): If the address was valid
292         in the original mode but not in the new mode, reload the whole
293         address.
294
295 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
296
297         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
298         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
299         (cleanup_control_expr_graph): Do not invalidate dominance info.
300         Record altered blocks.
301         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
302         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
303         cleanup_tree_cfg_bb): New functions.
304         (remove_forwarder_block): Do not maintain the worklist of blocks.
305         Record altered blocks.
306         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
307         not over whole cfg.
308         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
309         delete_unreachable_blocks if dominators are not available.
310         * tree-inline.c (optimize_inline_calls): Free dominance information
311         earlier.
312         * tree-flow.h (remove_edge_and_dominated_blocks,
313         cfgcleanup_altered_bbs): Altered.
314         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
315         blocks.
316         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
317         functions.
318         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
319         do not invalidate dominators.
320
321 2007-04-26  Anatoly Sokolov <aesok@post.ru>
322
323         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and 
324         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
325         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
326         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
327
328 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
329
330         * config/ia64/ia64.md (ip_value):  Fix itanium_class attribute.
331
332 2007-04-26  Richard Guenther  <rguenther@suse.de>
333
334         PR tree-optimization/31703
335         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
336         the right type for the target of the bittest.
337
338 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
339
340         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
341         ix86_sol10_return_in_memory.
342
343 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
344
345         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
346         variables.
347
348 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
349
350         PR c++/31598
351         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
352
353         PR tree-optimization/30558
354         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
355         clear this_state.prev_try.
356
357 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
358             Mark Mitchell  <mark@codesourcery.com>
359
360         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
361         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
362         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
363
364 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
365
366         PR driver/31107
367         * doc/invoke.texi (%:print-asm-header): Document.
368         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
369         and -ftarget-help.
370         (static_spec_functions): Add print-asm-header.
371         (main): Print a banner before the --target-help linker options.
372         (print_asm_header_spec_function): New function.
373
374 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
375
376         PR target/31403
377         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
378         (movsf_ie): Likewise.
379
380 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
381
382         * doc/extend.texi ([Type Traits]): Adjust per N2255.
383
384 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
385
386         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an exception
387         for divide-by-zero.
388         (__umodsi3, __modsi3): Likewise.
389
390 2007-04-25  Dirk Mueller  <dmueller@suse.de>
391
392         * c-typeck.c (build_compound_expr): Annotate warning()
393         call with OPT_Wunused_value.
394         * tree-ssa.c (warn_uninit): Annotate warning with
395         OPT_Wunintialized.
396         * c-common.c (handle_sentinel_attribute): Annotate warning
397         call with OPT_Wattributes.
398
399 2007-04-25  Thiemo Seufer  <ths@mips.com>
400
401         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
402         (mips16): Fix typo.
403         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
404         on to the assembler.  Improve handling of -mno-mips16.  Add handling
405         of -mno-mips3d, -mno-dsp, -mno-dspr2.
406         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
407         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
408         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
409
410 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
411
412         PR target/31680
413         * config/i386/winnt.c (i386_pe_file_end): Strip only
414         USER_LABEL_PREFIX when writing export name.
415
416 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
417
418         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
419         sh/elf.h, vx-common.h and vxworks.h.
420         * config/sh/sh.h: Include config/vxworks-dummy.h.
421         (SUBTARGET_OVERRIDE_OPTIONS): Define.
422         (OVERRIDE_OPTIONS): Use it.
423         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
424         (vxworks_picreg): New pattern.
425         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
426         VXWORKS_OS_CPP_BUILTINS.
427         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
428         to their VXWORKS_* equivalents.
429         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
430         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
431         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
432         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
433         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
434         -mrtp/-fPIC multilibs.
435         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
436         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
437         (MULTILIB_OSDIRNAMES): Delete.
438
439 2007-04-25  Anatoly Sokolov <aesok@post.ru>
440
441         PR target/18989
442         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
443
444 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
445
446         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
447         rounding mode to be specified by the caller.
448         (real_to_mpfr) Likewise.
449         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
450         include new arguments.
451         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
452
453 2007-04-24  Ian Lance Taylor  <iant@google.com>
454
455         PR tree-optimization/31605
456         * tree-vrp.c (set_value_range): Check that min and max are not
457         both overflow infinities.
458         (set_value_range_to_value): New static function.
459         (extract_range_from_binary_expr): Call set_value_range_to_value.
460         (extract_range_from_cond_expr): Likewise.
461         (extract_range_from_expr): Likewise.
462         (extract_range_from_unary_expr): Likewise.  Don't create a range
463         which overflows on both sides.
464         (vrp_meet): Check for a useless range.
465         (vrp_visit_phi_node): If we see a constant which looks like an
466         overflow infinity, turn off the TREE_OVERFLOW flag.
467
468 2007-04-24  Ian Lance Taylor  <iant@google.com>
469
470         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
471
472 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
473
474         PR diagnostic/25923
475         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
476         diagnostic message is being built.
477         * tree-pretty-print.c (dump_generic_node): Only write the
478         formatted text into BUFFER's stream if we are not building a
479         diagnostic message.
480         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
481         dump_generic_node.
482         * Makefile.in (toplev.o): Depend on tree-pass.h.
483
484 2007-04-24  Ian Lance Taylor  <iant@google.com>
485
486         PR tree-optimization/31602
487         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
488         conditionals in the copied loop header.
489         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
490         warnings if TREE_NO_WARNING is set.
491         * doc/invoke.texi (Warning Options): Clarify that
492         -Wstrict-overflow does not warn about loops.
493
494 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
495
496         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
497         expand on the comment about _Decimal128 arguments and check the
498         integer result of the modulus operation; for 64-bit ELF ABI, ensure
499         that _Decimal128 argument uses even/odd register pair.
500         (function_arg): Ditto.
501
502 2007-04-24  Hui-May Chang <hm.chang@apple.com>
503
504         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
505         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
506
507 2007-04-24  Richard Guenther  <rguenther@suse.de>
508             Olga Golovanevsky  <olga@il.ibm.com>
509
510         * fold-const.c (multiple_of_p): Check for bottom 
511         to be zero. 
512
513 2007-04-24  Richard Henderson  <rth@redhat.com>
514
515         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from 
516         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
517         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
518         looking for non-zero bits shifted out.  Avoid a recursive call
519         when constructing the scalar.
520         (__floatundisf): Likewise.
521
522 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
523
524         * dwarf2out.c (field_byte_offset): Move the existing logic
525         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
526         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
527
528 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
529
530         PR target/31641
531         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant length
532         argument of 0 for memset.
533         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
534         unsigned shift instead of the signed variant.
535
536 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
537
538         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
539         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
540         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
541         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
542         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
543         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
544         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
545         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
546         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
547         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
548         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
549         "mul<mode>3", "div<mode>3"): Insn definitions added.
550         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
551         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
552         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
553         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
554         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
555         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
556         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
557         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
558         TARGET_FLOAT_FORMAT): Macro definitions removed.
559         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
560         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
561         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
562         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
563         (s390_gen_rtx_const_DI): Function removed.
564         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
565
566 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
567
568         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
569         over an external ffs function.
570
571 2007-04-24  Chao-ying Fu  <fu@mips.com>
572             Richard Sandiford  <richard@nildram.co.uk>
573
574         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
575         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
576         (smadd_widen_optab, umadd_widen_optab): Define.
577         * optabs.c (init_optabs): Initialize smadd_widen_optab and
578         umadd_widen_optab.
579         * genopinit.c (optabs): Fill in smadd_widen_optab and
580         umadd_widen_optab.
581         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
582         and umadd_widen_optab to implement multiply-add sequences.
583         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
584         (<u>maddsidi4): ...this.  Extend condition to include
585         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
586         of operand 0 to "ka" and use the three-operand form of madd<u>
587         for TARGET_DSPR2.
588         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
589         to define_expands.
590         * config/mips/constraints.md (ka): New register constraint.
591
592 2007-04-24  Jan Hubicka  <j@suse.cz>
593
594         Revert:
595
596         2007-04-23  Jan Hubicka  <jh@suse.cz>
597         * function.c (init_function_start): Don't init line number info.
598         (expand_function_end): Update.
599         (reset_block_changes, record_block_change, finalize_block_changes,
600         check_block_change, free_block_changes): Kill.
601         * function.h (reset_block_changes, record_block_change,
602         finalize_block_changes, check_block_change, free_block_changes): Remove
603         prototypes.
604         (struct function): Remove ib_boundaries_block.
605         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
606         Use curr_insn_locator to initialize locator.
607         (emit_line_note): Remove.
608         * cfgexpand.c (expand_gimple_cond_expr): Update.
609         (construct_exit_block): Likewise.
610         (tree_expand_cfg): Initialize/finalize locators.
611         * expr.c (expand_expr_real): Update.
612         * cfglayout.c (line_locators_locs, line_locators_lines,
613         file_locators_locs, file_locators_files): Remove.
614         (set_block_levels): Move to cfgexpand.c.
615         (insn_locators_initialize): Remove.
616         (pass_insn_locators_initialize): Remove.
617         (locations_locators_locs, locations_locators_vals): New static vars.
618         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
619         Likewise.
620         (insn_locators_alloc, insn_locators_finalize,
621         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
622         New functions.
623         (locator_location): New.
624         (locator_line, locator_file): Rewrite.
625         * rtl.h (emit_line_note): Kill.
626         (insn_locators_alloc, insn_locators_finalize,
627         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
628         Declare.
629         * tree-inline.c (initialize_cfun): Do not initialize
630         ib_boundaries_block.
631         * passes.c (pass_insn_locators_initialize): Remove.
632
633 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
634
635         * doc/invoke.texi: Removed leading '-' from option index entries.
636
637 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
638
639         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
640         Use phi_nodes_ptr.
641         (create_phi_node): Use set_phi_nodes.
642         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
643         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
644         (combine_blocks):  Use bb_stmt_list and set_bb_stmt_list.
645         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
646         (bsi_start, bsi_last): Use bb_stmt_list.
647         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
648         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
649         Traverse the statements using tsi iterator.
650         * basic-block.h (struct basic_block_def): Fields stmt_list
651         and phi_nodes moved to ...
652         (struct tree_bb_info): ... new structure.
653         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
654         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
655         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
656         (tree_verify_flow_info): Verify that il.tree is not set for
657         entry and exit block.
658         (tree_split_block): Use set_bb_stmt_list.
659
660 2007-04-23  Mike Stump  <mrs@apple.com>
661
662         * config/i386/i386.c (ix86_tune_features
663         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
664         nocona and core2.
665
666 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
667
668         * config/i386/i386.md (prefix_extra): New attribute.
669         (length): Add prefix_extra.
670
671         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
672         (sse2_movntv2di): Likewise.
673         (sse2_cvtps2dq): Likewise.
674         (sse2_cvtpd2pi): Likewise.
675         (sse2_cvttpd2pi): Likewise.
676         (*sse2_cvtpd2ps): Likewise.
677         (*add<mode>3): Likewise.
678         (sse2_ssadd<mode>3): Likewise.
679         (sse2_usadd<mode>3): Likewise.
680         (*sub<mode>3): Likewise.
681         (sse2_sssub<mode>3): Likewise.
682         (sse2_ussub<mode>3): Likewise.
683         (*mulv8hi3): Likewise.
684         (*smulv8hi3_highpart): Likewise.
685         (*umulv8hi3_highpart): Likewise.
686         (sse2_umulv2siv2di3): Likewise.
687         (sse2_pmaddwd): Likewise.
688         (ashr<mode>3): Likewise.
689         (lshr<mode>3): Likewise.
690         (ashl<mode>3): Likewise.
691         (sse2_ashlti3): Likewise.
692         (sse2_lshrti3): Likewise.
693         (*umaxv16qi3): Likewise.
694         (*smaxv8hi3): Likewise.
695         (*uminv16qi3): Likewise.
696         (*sminv8hi3): Likewise.
697         (sse2_eq<mode>3): Likewise.
698         (sse2_gt<mode>3): Likewise.
699         (*and<mode>3): Likewise.
700         (sse2_nand<mode>3): Likewise.
701         (*ior<mode>3): Likewise.
702         (*xor<mode>3): Likewise.
703         (sse2_packsswb): Likewise.
704         (sse2_packssdw): Likewise.
705         (sse2_packuswb): Likewise.
706         (sse2_punpckhbw): Likewise.
707         (sse2_punpcklbw): Likewise.
708         (sse2_punpckhwd): Likewise.
709         (sse2_punpcklwd): Likewise.
710         (sse2_punpckhdq): Likewise.
711         (sse2_punpckldq): Likewise.
712         (sse2_punpckhqdq): Likewise.
713         (sse2_punpcklqdq): Likewise.
714         (*sse2_pinsrw): Likewise.
715         (*sse2_pextrw): Likewise.
716         (sse2_pshufd_1): Likewise.
717         (sse2_uavgv16qi3): Likewise.
718         (sse2_uavgv8hi3): Likewise.
719         (sse2_psadbw): Likewise.
720         (sse2_pmovmskb): Likewise.
721         (*sse2_maskmovdqu): Likewise.
722         (*sse2_maskmovdqu_rex64): Likewise.
723         (sse4a_extrqi): Likewise.
724         (sse4a_extrq): Likewise.
725         (sse3_lddqu): Set prefix_rep.
726         (sse3_addsubv4sf3): Likewise.
727         (sse3_haddv4sf3): Likewise.
728         (sse3_hsubv4sf3): Likewise.
729         (sse_cvtss2si): Likewise.
730         (sse_cvtss2si_2): Likewise.
731         (sse_cvtss2siq): Likewise.
732         (sse_cvtss2siq_2): Likewise.
733         (sse_cvttss2si): Likewise.
734         (sse_cvttss2siq): Likewise.
735         (sse2_cvttps2dq): Likewise.
736         (sse3_movshdup): Likewise.
737         (sse3_movsldup): Likewise.
738         (sse2_cvtsd2si): Likewise.
739         (sse2_cvtsd2si_2): Likewise.
740         (sse2_cvtsd2siq): Likewise.
741         (sse2_cvtsd2siq_2): Likewise.
742         (sse2_cvttsd2si): Likewise.
743         (sse2_cvttsd2siq): Likewise.
744         (*sse2_cvtpd2dq): Likewise.
745         (*sse2_cvttpd2dq): Likewise.
746         (sse2_pshuflw_1): Likewise.
747         (sse2_pshufhw_1): Likewise.
748         (sse4a_insertqi): Likewise.
749         (sse4a_insertq): Likewise.
750         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
751         (ssse3_phadddv4si3): Likewise.
752         (ssse3_phaddswv8hi3): Likewise.
753         (ssse3_phsubwv8hi3): Likewise.
754         (ssse3_phsubdv4si3): Likewise.
755         (ssse3_phsubswv8hi3): Likewise.
756         (ssse3_pmaddubswv8hi3): Likewise.
757         (ssse3_pmulhrswv8hi3): Likewise.
758         (ssse3_pshufbv16qi3): Likewise.
759         (ssse3_psign<mode>3): Likewise.
760         (ssse3_palignrti): Likewise.
761         (abs<mode>2): Likewise.
762         (ssse3_phaddwv4hi3): Set prefix_extra.
763         (ssse3_phadddv2si3): Likewise.
764         (ssse3_phaddswv4hi3): Likewise.
765         (ssse3_phsubwv4hi3): Likewise.
766         (ssse3_phsubdv2si3): Likewise.
767         (ssse3_phsubswv4hi3): Likewise.
768         (ssse3_pmaddubswv4hi3): Likewise.
769         (ssse3_pmulhrswv4hi3): Likewise.
770         (ssse3_pshufbv8qi3): Likewise.
771         (ssse3_psign<mode>3): Likewise.
772         (ssse3_palignrdi): Likewise.
773         (abs<mode>2): Likewise.
774         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
775         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
776         (sse2_pmovmskb): Set mode to SI instead of V2DF.
777
778 2007-04-23  Nick Clifton  <nickc@redhat.com>
779
780         * params.def: Fix formatting of emacs local variables.
781
782 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
783
784         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
785         move if inter-unit move isn't allowed.
786         Don't split moving the first element of V2DI to DI to inter-unit
787         move if inter-unit move isn't allowed.
788
789 2007-04-23  Richard Guenther  <rguenther@suse.de>
790
791         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
792         and CDI_POST_DOMINATORS separately.
793
794 2007-04-23  Nick Clifton  <nickc@redhat.com>
795
796         * c.opt (Wformat-contains-nul): Add warning attribute.
797
798 2007-04-23  Jan Hubicka  <jh@suse.cz>
799
800         * function.c (init_function_start): Don't init line number info.
801         (expand_function_end): Update.
802         (reset_block_changes, record_block_change, finalize_block_changes,
803         check_block_change, free_block_changes): Kill.
804         * function.h (reset_block_changes, record_block_change,
805         finalize_block_changes, check_block_change, free_block_changes): Remove
806         prototypes.
807         (struct function): Remove ib_boundaries_block.
808         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
809         Use curr_insn_locator to initialize locator.
810         (emit_line_note): Remove.
811         * cfgexpand.c (expand_gimple_cond_expr): Update.
812         (construct_exit_block): Likewise.
813         (tree_expand_cfg): Initialize/finalize locators.
814         * expr.c (expand_expr_real): Update.
815         * cfglayout.c (line_locators_locs, line_locators_lines,
816         file_locators_locs, file_locators_files): Remove.
817         (set_block_levels): Move to cfgexpand.c.
818         (insn_locators_initialize): Remove.
819         (pass_insn_locators_initialize): Remove.
820         (locations_locators_locs, locations_locators_vals): New static vars.
821         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
822         Likewise.
823         (insn_locators_alloc, insn_locators_finalize,
824         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
825         New functions.
826         (locator_location): New.
827         (locator_line, locator_file): Rewrite.
828         * rtl.h (emit_line_note): Kill.
829         (insn_locators_alloc, insn_locators_finalize,
830         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
831         Declare.
832         * tree-inline.c (initialize_cfun): Do not initialize
833         ib_boundaries_block.
834         * passes.c (pass_insn_locators_initialize): Remove.
835
836 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
837
838         PR middle-end/31448
839         * expr.c (reduce_to_bit_field_precision): Handle
840         CONST_INT rtx's.
841
842 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
843
844         PR tree-optimization/24659
845         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
846         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
847         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
848         * genopinit.c (optabs): Rename vec_pack_mod_optab
849         to vec_pack_trunc_optab.
850         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
851         early for scalar floating point operands for NOP_EXPR.
852         (vectorizable_type_promotion): Ditto.
853         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
854         vec_pack_trunc_optab.
855         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
856
857         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
858         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
859         Rename from VEC_PACK_MOD_EXPR.
860         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
861         * expr.c (expand_expr_real_1): Ditto.
862         * tree-inline.c (estimate_num_insns_1): Ditto.
863         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
864
865         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
866         (vec_unpacks_lo_v4sf): Ditto.
867         (vec_pack_trunc_v2df): Ditto.
868         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
869         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
870         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
871
872         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
873         vec_pack_mod_v8hi.
874         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
875
876         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
877         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
878         packing of floating point operands.
879         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
880         represent unpacking of floating point operands.
881         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
882         [vec_unpacks_hi]: Ditto.
883         [vec_unpacks_lo]: Ditto.
884
885 2007-04-22  Jan Hubicka  <jh@suse.cz>
886
887         * final.c (rest_of_handle_final): Call
888         targetm.asm_out.constructor/targetm.asm_out.destructor
889         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
890         proper priority via decl_*_priority_insert.
891         * c-common.c (c_expand_body): Likewise.
892
893 2007-04-22  Richard Guenther  <rguenther@suse.de>
894
895         PR tree-optimization/29789
896         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
897         (rewrite_reciprocal): New helper split out from
898         determine_invariantness_stmt.
899         (rewrite_bittest): Likewise.
900         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
901         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
902         is not.
903
904 2007-04-22  Revital Eres  <eres@il.ibm.com>
905
906         * loop-unroll.c (var_to_expand): New field to support also
907         insns of the form x = something + x.
908         (analyze_insn_to_expand_var): Use it.
909         (expand_var_during_unrolling): Likewise.
910
911 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
912
913         * predict.c: Include pointer-set.h.
914         (bb_predictions): New variable.
915         (tree_predicted_by_p, tree_predict_edge,
916         remove_predictions_associated_with_edge): Use bb_predictions map
917         instead of bb->predictions.
918         (clear_bb_predictions, assert_is_empty): New functions.
919         (combine_predictions_for_bb): Use bb_predictions map.  Call
920         clear_bb_predictions.
921         (tree_estimate_probability): Create and free bb_predictions map.
922         * Makefile.in (predict.o): Add pointer-set.h dependency.
923         * basic-block.h (struct basic_block_def): Remove predictions
924         field.
925         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
926
927 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
928
929         PR target/31480
930         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
931         is null.
932
933 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
934
935         * timevar.c (timevar_print): Change reference of --disable-checking to
936         --enable-checking=release.  Also warn if assert checking is disabled.
937
938 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
939
940         PR C/30265
941         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
942         decl as addressable if the compound literal was marked as
943         addressable.
944         Mark the decl as a gimple register if it is a complex or
945         vector decl and does not live in memory.
946
947 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
948
949         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
950         (GENERIC_NEXT): New function macro.
951         (PHI_CHAIN): Use phi_node's new chain variable.
952         (tree_phi_node): Change tree_common to tree_base
953         and add the chain field.
954         * tree-phinodes.c (make_phi_node): Don't set
955         TREE_TYPE on the new node.
956         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
957         instead of checking GIMPLE_TUPLE_P in chain_next.
958         * tree-vect-transform.c
959         (get_initial_def_for_induction): Look at
960         PHI_RESULT_TREE for the type of the phi node.
961         (update_vuses_to_preheader): Use PHI_CHAIN
962         instead of TREE_CHAIN on the phi node.
963         * tree-ssa-structalias.c (compute_points_to_sets):
964         Likewise.
965         (ipa_pta_execute): Likewise.
966
967 2007-04-21  Richard Guenther  <rguenther@suse.de>
968
969         PR middle-end/31136
970         * fold-const.c (fold_unary): Call fold_convert_const on the
971         original tree.
972
973 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
974
975         * gcse.c (store_killed_in_insn): Handle PARALLELs.
976         (store_killed_in_pat): New.
977
978 2007-04-20  Richard Henderson  <rth@redhat.com>
979
980         PR target/31628
981         * config/i386/i386.c (type_has_variadic_args_p): Look for any
982         TREE_LIST with a void_type_node value, not void_list_node exactly.
983
984 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
985
986         * doc/standards.texi: Re-arrange into language-specific
987         subsections. Add a C++ section, documenting which standards we
988         support.
989
990 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
991
992         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
993         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
994
995 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
996
997         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
998         ecrti.o and crtbegin.o.
999         (LIB_DEFAULT_SPEC): Include -lc.
1000         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
1001
1002 2007-04-20  Richard Henderson  <rth@redhat.com>
1003
1004         PR target/28623
1005         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
1006         argument; update all callers.
1007         (get_unaligned_offset): New.
1008         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
1009         get_unaligned_address, just pass on the address directly.
1010         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
1011         the subreg in the helper patterns.
1012         (unaligned_extendqidi_le): Use get_unaligned_offset.
1013         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
1014         (unaligned_extendhidi_be): Likewise.
1015         (unaligned_extendhidi): Tidy.
1016         * config/alpha/alpha-protos.h: Update.
1017
1018 2007-04-20  Richard Henderson  <rth@redhat.com>
1019
1020         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
1021         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
1022         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
1023         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
1024         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
1025         (CPP_SPEC): Don't include %(cpp_subtarget).
1026         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
1027         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
1028         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
1029
1030 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
1031
1032         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
1033         for __builtin_ia32_cmpordss.
1034
1035         PR tree-optimization/31632
1036         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
1037         and arg1 for optimizations of comparison against min/max values.
1038         Fold arg0 to arg1's type for optimizations of comparison against
1039         min+1 and max-1 values.
1040
1041 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
1042
1043         * reload.c (combine_reloads): When trying to use a dying register,
1044         check whether it's uninitialized and don't use if so.
1045
1046 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
1047
1048         * fold-const.c: Remove prototypes for native_encode_expr and
1049         native_interpret_expr.
1050         (native_encode_expr): Make non-static.
1051         (native_interpret_expr): Likewise.
1052         * tree.h: Add prototypes for the above.
1053
1054 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
1055
1056         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
1057         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
1058         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
1059         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
1060         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
1061         Add length attributes.
1062
1063 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
1064
1065         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
1066         not that it is 1.
1067
1068         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
1069         __STDC_WANT_DEC_FP__.
1070
1071 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
1072
1073         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
1074         for long double compatibility.
1075         * configure: Regenerate.
1076
1077 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
1078
1079         PR rtl-optimization/29841
1080         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
1081         trap instructions.
1082         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
1083         that may cause control flow transfer from being moved.
1084
1085 2007-04-18  Jan Hubicka  <jh@suse.cz>
1086
1087         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
1088         types.
1089
1090 2007-04-18  Eric Christopher  <echristo@apple.com>
1091
1092         * config/rs6000/darwin.md (load_macho_picbase): Use link register
1093         only. Update operands.
1094         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
1095         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
1096         link register to pic register.
1097
1098 2007-04-18  Dirk Mueller  <dmueller@suse.de>
1099
1100         PR diagnostic/31227
1101         * tree-vrp.c (search_for_addr_array): New.
1102         (check_array_bounds): Suppress warning about
1103         address taken of array refs if its not de-referenced.
1104
1105 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
1106
1107         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
1108         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
1109
1110         * tree-vectorizer.h (NITERS_KNOWN_P): New.
1111         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
1112         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
1113
1114         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
1115         dump print.
1116         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
1117         print message.
1118         (vect_analyze_scalar_cycles): Fix indentation.
1119         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
1120         (vect_mark_relevant): Include phis in relevance analysis.
1121
1122         * tree-vect-transform.c (vect_transform_loop): Add an assert.
1123
1124 2007-04-18  Anatoly Sokolov <aesok@post.ru>
1125
1126         * config/avr/avr.c (ptrreg_to_str): Replace error() with
1127         output_operand_lossage().
1128
1129 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
1130
1131         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
1132         the unused code for reduction without adjust-in-epilog to simplify the
1133         function.
1134
1135 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
1136
1137         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
1138         (S390_TDC_NEGATIVE_ZERO): New constant.
1139         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
1140         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
1141         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
1142         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
1143         (S390_TDC_POSITIVE_INFINITY): New constant.
1144         (S390_TDC_NEGATIVE_INFINITY): New constant.
1145         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
1146         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
1147         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
1148         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
1149         (S390_TDC_INFINITY): New constant.
1150         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
1151         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
1152         optimization for UNSPEC_CCZ_TO_INT.
1153         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
1154         ("*ccz_to_int"): New insn.
1155         ("isinf<mode>2"): New insn.
1156         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
1157         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
1158         (UNSPEC_CCZ_TO_INT): New constant.
1159
1160 2007-04-18  Richard Guenther  <rguenther@suse.de>
1161
1162         PR tree-optimization/19431
1163         PR tree-optimization/21463
1164         * tree-pass.h (pass_phiprop): Declare.
1165         * passes.c (init_optimization_passes): New phiprop pass.
1166         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
1167         (phivn_valid_p): New helper function.
1168         (phiprop_insert_phi): Likewise.
1169         (propagate_with_phi): Likewise.
1170         (tree_ssa_phiprop): New propagator propagating loads
1171         through phi nodes if profitable.
1172
1173 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
1174
1175         * tree-vect-analyze.c (process_use): New function.
1176         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
1177         Check phis in all bbs.
1178         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
1179         assert.
1180
1181 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
1182
1183         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
1184         we use REG_EQUAL.
1185
1186 2007-04-17  Anatoly Sokolov <aesok@post.ru>
1187
1188         PR target/30483
1189         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
1190         error().
1191
1192 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
1193
1194         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
1195         on "0".
1196         (sse_vmmulv4sf3): Likewise.
1197         (sse2_vmaddv2df3): Likewise.
1198         (sse2_vmmulv2df3): Likewise.
1199
1200 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
1201
1202         PR rtl-optimization/31360
1203         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
1204         (target_reg_cost): New.
1205         (init_set_costs): Initialize target_reg_cost.  Add comments
1206         regarding the rationale of the costs.
1207         (global_cost_for_size): Renamed to...
1208         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
1209         of register pressure.
1210         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
1211         estimate_reg_pressure_cost.  Add number of ivs.
1212         (determine_set_costs): Dump target_reg_cost.
1213         * loop-invariant.c (gain_for_invariant):  Use
1214         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
1215         (best_gain_for_invariant, find_invariants_to_move): Remove
1216         n_inv_uses.
1217         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
1218         (target_reg_cost): Declare.
1219         (global_cost_for_size): Declaration removed.
1220         (estimate_reg_pressure_cost): Declare.
1221
1222 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
1223
1224         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
1225         regnos into even/odd register pairs.
1226         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
1227         TDmode similar to the other floating point modes.
1228         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
1229         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
1230         define_expand's.
1231         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
1232         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
1233         (movdd_hardfloat64): Use TARGET_MFPGPR.
1234
1235 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
1236
1237         * reload1.c (delete_output_reload): Don't count output in n_inherited.
1238
1239         Revert
1240         2005-01-05  Richard Henderson  <rth@redhat.com>
1241         PR rtl-opt/10692
1242         * reload1.c (do_input_reload): Restrict the optimization deleteing
1243         a previous output reload to RELOAD_FOR_INPUT.
1244
1245 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
1246
1247         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
1248         induc_vec_info_type.
1249         (vectorizable_induction): New function declaration.
1250         * tree-vect-transform.c (get_initial_def_for_induction): No need to
1251         check if already vectorized.  Find first place in BB where new stmts
1252         can be inserted.  Takes only one argument.
1253         (vectorizable_induction): New function.
1254         (vect_transform_stmt): Add case for induc_vec_info_type to call
1255         vectorizable_induction.
1256         (vect_transform_loop): Consider phis for vectorization.
1257         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
1258         condition.
1259         (analyze_operations): Call vectorizable_induction when analyzing phis.
1260         Fix comment.
1261         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
1262         (vect_mark_relevant): Include phis in relevance analysis.
1263         (vect_mark_stmts_to_be_vectorize): Likewise.
1264         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
1265
1266 2007-04-16  Lawrence Crowl  <crowl@google.com>
1267
1268         * doc/invoke.texi (Debugging Options): Add documentation for the
1269         -femit-struct-debug options -femit-struct-debug-baseonly,
1270         -femit-struct-debug-reduced, and
1271         -femit-struct-debug-detailed[=...].
1272
1273         * c-opts.c (c_common_handle_option): Add
1274         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
1275         and OPT_femit_struct_debug_detailed_.
1276         * c.opt: Add specifications for
1277         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
1278         and -femit-struct-debug-detailed[=...].
1279         * opts.c (set_struct_debug_option): Parse the
1280         -femit-struct-debug-... options.
1281         * opts.c (matches_main_base, main_input_basename,
1282         main_input_baselength, base_of_path, matches_main_base): Add
1283         variables and functions to compare header base name to compilation
1284         unit base name.
1285         * opts.c (should_emit_struct_debug): Add to determine to emit a
1286         structure based on the option.
1287         (dump_struct_debug) Also disabled function to debug this
1288         function.
1289         * opts.c (handle_options): Save the base name of the
1290         compilation unit.
1291
1292         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
1293         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
1294         This hook indicates if a type is generic.  Set it by default
1295         to "never generic".
1296         * langhooks.h (struct lang_hooks_for_types): Add a new hook
1297         to determine if a struct type is generic or not.
1298         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
1299         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
1300         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
1301         with live C++ hook.
1302
1303         * flags.h (enum debug_info_usage): Add an enumeration to describe
1304         a program's use of a structure type.
1305         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
1306         to indicate the program's usage of the type.  Filter structs based
1307         on the -femit-struct-debug-... specification.
1308         (gen_type_die): Split into two routines, gen_type_die and
1309         gen_type_die_with_usage.  gen_type_die is now a wrapper
1310         that assumes direct usage.
1311         (gen_type_die_with_usage): Replace calls to gen_type_die
1312         with gen_type_die_with_usage adding the program usage of
1313         the referenced type.
1314         (dwarf2out_imported_module_or_decl): Suppress struct debug
1315         information using should_emit_struct_debug when appropriate.
1316
1317 2007-04-16  Ian Lance Taylor  <iant@google.com>
1318
1319         PR tree-optimization/31522
1320         * tree-vrp.c (vr_phi_edge_counts): New static variable.
1321         (vrp_initialize): Allocate vr_phi_edge_counts.
1322         (vrp_visit_phi_node): Don't push to infinity if we saw a new
1323         executable edge.  Drop test for all constants.
1324         (vrp_finalize): Free vrp_phi_edge_counts.
1325
1326         * doc/cpp.texi (Common Predefined Macros): Clarify description of
1327         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
1328
1329         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
1330         predecessors at head rather than tail.
1331
1332 2007-04-16  Matthias Klose  <doko@debian.org>
1333
1334         * config/alpha/linux.h (CPP_SPEC): Define.
1335         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
1336
1337 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
1338
1339         * function.h: Remove sequence_stack extern declaration.
1340
1341 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
1342
1343         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
1344         TARGET_FIDOA.
1345         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
1346         defined.
1347
1348 2007-04-16  Anatoly Sokolov <aesok@post.ru>
1349
1350         * config/avr/avr.c (avr_arch_types): Rearranging  array.
1351         (enum avr_arch): Add.
1352         (avr_mcu_types): Use avr_arch enumeration constants instead of
1353         numbers.
1354         * config/avr/avr.h (LINK_SPEC): Simplify.
1355
1356 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
1357
1358         * config/m68k/m68k.c (m68k_libcall_value,
1359         m68k_function_value): Use macros for register names more.
1360
1361         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
1362         instead.
1363         (M68K_REGNAME): Use A6_REG.
1364         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
1365
1366 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
1367
1368         PR middle-end/28071
1369         * sched-int.h (struct deps): Split field 'pending_lists_length' into
1370         'pending_read_list_length' and 'pending_write_list_length'.  Update
1371         comment.
1372         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
1373         to handle two length counters instead of one.  Update all uses.
1374         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
1375         two length counters instead of one.
1376         * sched-rgn.c (propagate_deps): Update to handle two length counters
1377         instead of one.
1378
1379 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
1380
1381         PR target/31582
1382         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
1383         copy of source, pass it to ix86_expand_vector_set and return
1384         it as target.
1385
1386 2007-04-16  David Ung  <davidu@mips.com>
1387             Joseph Myers  <joseph@codesourcery.com>
1388
1389         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
1390         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
1391         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
1392         Add 74K processor information.
1393         * config/mips/mips.md: Include 74k.md.
1394         (cpu): Add 74kc,74kf,74kx.
1395         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
1396         * config/mips/74k.md: New.
1397         * doc/invoke.texi (MIPS Options): Document 74K support.
1398
1399 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
1400
1401         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
1402         vectorizable_* functions.
1403         * tree-vect-transform.c (vectorizable_call): Add check for
1404         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
1405         (vectorizable_store): likewise.
1406         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
1407         Add comments.
1408         (vectorizable_operation, vectorizable_type_demotion): Likewise.
1409         (vectorizable_type_promotion, vectorizable_load): Likewise.
1410         (vectorizable_live_operation, vectorizable_condition): Likewise.
1411         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
1412         STMT_VINFO_LIVE_P.
1413         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
1414
1415 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
1416
1417         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
1418         register numbers more.
1419         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
1420         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
1421         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
1422         FUNCTION_VALUE_REGNO_P): Likewise.
1423         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
1424         STATIC_CHAIN_REGNUM): Likewise.
1425         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
1426         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
1427         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
1428         * config/m68k/m68k.md (FP_REG): New.
1429
1430 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
1431
1432         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
1433         alignment on fido.
1434
1435 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
1436
1437         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
1438         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
1439         comment typos.
1440
1441 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
1442
1443         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
1444         cold loops.
1445
1446 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1447
1448         PR c/31520
1449         * c-decl.c (finish_decl): Grab the type of the decl after the call
1450         to store_init_value.
1451
1452 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
1453
1454         * common.opt (fforward-propagate): Fix "Optimization" annotation.
1455
1456 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
1457
1458         PR c++/25874
1459         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free dominators,
1460         post dominators and cleanup cfg before returning.
1461
1462 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
1463
1464         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
1465         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
1466
1467 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
1468
1469         * config.gcc: Recognize fido.
1470         * config/m68k/m68k-devices.def (fidoa): New.
1471         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
1472         __mfido__.
1473         (FL_FIDOA, TARGET_FIDOA): New.
1474         * config/m68k/m68k.opt (mfidoa): New.
1475
1476 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1477
1478         PR middle-end/31322
1479         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
1480         when a personality function is used.
1481
1482 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
1483
1484         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
1485
1486 2007-04-13  Mike Stump  <mrs@apple.com>
1487
1488         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
1489         we can...
1490         * config/darwin.opt (fapple-kext): Make C++ only.
1491         * config/darwin.c (darwin_override_options): Remove code to ensure
1492         -fapple-kext is given for C++ only.
1493
1494 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
1495
1496         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
1497         * config/mips/mips.c (override_options): Call
1498         SUBTARGET_OVERRIDE_OPTIONS, if defined.
1499
1500 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
1501
1502         * config/i386/i386.opt (msvr3-shlib): Removed.
1503
1504         * doc/invoke.texi: Remove -msvr3-shlib.
1505
1506 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
1507
1508         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
1509         with "popcnt" instruction.
1510
1511 2007-04-13  Richard Guenther  <rguenther@suse.de>
1512
1513         PR tree-optimization/21258
1514         * tree-vrp.c (compare_case_labels): New helper.
1515         (find_switch_asserts): New function.
1516         (find_assert_locations): Call it for SWITCH_EXPRs.
1517
1518 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
1519
1520         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
1521         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
1522         check is now implied in X87_FLOAT_MODE_P.
1523         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
1524         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
1525         (fix_trunc<mode>_i386_fisttp): Ditto.
1526         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
1527         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
1528         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
1529         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
1530         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
1531         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
1532         (unnamed_splitters): Ditto.
1533         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
1534         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
1535         FIRST_SSE_REG for local functions when SSE math is enabled or
1536         for functions with sseregparm attribute.
1537         (standard_80387_constant_p): Return -1 if mode is not
1538         X87_FLOAT_MODE_P.
1539         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
1540         (ix86_expand_compare): Ditto.
1541         (ix86_expand_carry_flag_compare): Ditto.
1542         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
1543         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
1544         DECIMAL_FLOAT_MODE_P.
1545         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
1546         of SCALAR_FLOAT_MODE_P.
1547         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
1548         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
1549         checks before FLOAT_MODE_P.
1550         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
1551         before FLOAT_MODE_P.
1552         [DIV]: Ditto.
1553         [NEG]: Ditto.
1554         [ABS]: Ditto.
1555         [SQRT]: Ditto.
1556         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
1557
1558 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
1559             Charles Wilson  <libtool@cwilson.fastmail.fm>
1560
1561         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
1562         (libgcc.mvars): Don't depend on them.
1563         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
1564         * exec-tool.in: New.
1565
1566 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
1567
1568         * doc/invoke.text (--help): Document --help=common.
1569
1570 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
1571
1572         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
1573
1574 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
1575
1576         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
1577         * genemit.c (main): Emit #include "integrate.h".
1578         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
1579         (LOADGP_RTP): New mips_loadgp_style.
1580         * config/mips/mips.h: Include config/vxworks-dummy.h.
1581         (TARGET_RTP_PIC): New macro.
1582         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
1583         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
1584         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
1585         for TARGET_RTP_PIC.
1586         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
1587         -mvxworks-pic when using -mrtp and a PIC option.
1588         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
1589         for RTP PIC.
1590         (mips_symbolic_constant_p, mips_symbolic_address_p)
1591         (mips_symbol_insns): Handle SYMBOL_HALF.
1592         (override_options): Warn about -G and -mrtp being used together.
1593         Initialize mips_lo_relocs[SYMBOL_HALF].
1594         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
1595         (mips_emit_loadgp): Handle LOADGP_RTP.
1596         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
1597         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
1598         (tablejump): Handle function-relative case table entries if
1599         TARGET_RTP_PIC.
1600         * config/mips/predicates.md (symbol_ref_operand): New predicate.
1601
1602 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
1603
1604         * config/mips/mips.md (load_call<mode>): Allow any general register.
1605         destination.
1606         (sibcall_value_internal, sibcall_value_multiple_internal)
1607         (call_value_internal, call_value_split, call_value_multiple_internal)
1608         (call_value_multiple_split): Remove constraints from operand 0.
1609
1610 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
1611
1612         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
1613         rather than loadgp_noshared.
1614         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
1615         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
1616         gen_loadgp.
1617         * config/mips/mips.md (loadgp): Rename to...
1618         (loadgp_newabi): ...this.
1619         (loadgp_noshared): Rename to...
1620         (loadgp_absolute): ...this.
1621
1622 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
1623
1624         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
1625         false for locally-binding symbols.
1626         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
1627
1628 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
1629
1630         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
1631         (SYMBOL_GOT_PAGE_OFST): ...this.
1632         (SYMBOL_GOT_GLOBAL): Rename to...
1633         (SYMBOL_GOT_DISP): ...this.
1634         (SYMBOL_GOTOFF_GLOBAL): Rename to...
1635         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
1636         * config/mips/mips.c (mips_global_symbol_p): New function.
1637         (mips_symbol_binds_local_p): Likewise.
1638         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
1639         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use mips_global_symbol_p
1640         and mips_symbol_binds_local_p.
1641         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
1642         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
1643         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
1644         SYMBOL_GOTOFF_DISP.
1645         (mips_ok_for_lazy_binding_p): New function.
1646         (mips_load_call_address, mips_expand_call): Use it.
1647         (mips_dangerous_for_la25_p): Likewise.
1648         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
1649         (*got_disp<mode>): Use got_disp_operand instead of
1650         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
1651         SYMBOL_GOTOFF_GLOBAL.
1652         (*got_page<mode>): Use got_page_ofst_operand instead of
1653         local_got_operand.
1654         * config/mips/predicates.md (const_call_insn_operand): Use
1655         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
1656         (global_got_operand): Rename to...
1657         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
1658         SYMBOL_GOT_GLOBAL.
1659         (local_got_operand): Rename to...
1660         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
1661         of SYMBOL_GOT_LOCAL.
1662
1663 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
1664
1665         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
1666         TARGET_CALL_CLOBBERED_GP.
1667         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
1668         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
1669         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
1670         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
1671         of TARGET_ABICALLS && !TARGET_NEWABI.
1672         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
1673         * config/mips/mips.c (mips_load_call_address): Check
1674         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
1675         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
1676         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
1677         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
1678         TARGET_ABICALLS && TARGET_NEWABI.
1679         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
1680         TARGET_ABICALLS.
1681         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
1682         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
1683         TARGET_ABICALLS && TARGET_NEWABI.
1684         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
1685         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
1686         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
1687         whether indirect calls must use $25.
1688         (mips_extra_live_on_entry): Check TARGET_GOT instead of
1689         TARGET_ABICALLS.
1690         * config/mips/mips.md (jal_macro): Check flag_pic and
1691         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
1692         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
1693         instead of TARGET_ABICALLS.
1694         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
1695         TARGET_ABICALLS && TARGET_OLDABI.
1696         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
1697         (sibcall): In the comment above the define_insn, mention
1698         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
1699         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
1700         instead of TARGET_ABICALLS.
1701
1702 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
1703
1704         * doc/md.texi (Blackfin family constraints): Document PA and PB.
1705         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
1706         (MACFLAGS_MATCH_P): New macro.
1707         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
1708         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
1709         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
1710         the other MACFLAG constants.
1711         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
1712         (flag_machi): Tighten constraints.  Renumber some of the operands.
1713         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
1714         output template.
1715         (flag_machi_parts_acconly): New pattern.
1716         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
1717         used.
1718         (flag_macinit1hi): Tighten constraints.
1719         (flag_mul_macv2hi_parts_acconly): New pattern.
1720
1721         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
1722         Use a more efficient implementation.
1723         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
1724         inline sequences when not optimizing for size.
1725
1726         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
1727         movhi_high2low): Delete, merge functionality into...
1728         (packv2hi): ... this pattern.
1729
1730         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
1731         * config/bfin/bfin.opt (msim): New option.
1732         (mcpu=): New option.
1733         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
1734         (bfin_cpu_t): Typedef of enum bfin_cpu.
1735         (bfin_cpu_type): New declaration.
1736         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
1737         -msim and -mcpu= options.
1738         (LIB_SPEC): Likewise.
1739         * config/bfin/bfin.c (bfin_cpu_type): Define.
1740         (bfin_handle_option): Handle -mcpu= option.
1741         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
1742         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
1743         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
1744
1745 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
1746
1747         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
1748         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
1749         (powerpc-wrs-vxworksae): Use ${tm_file}.
1750         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
1751         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
1752         * config/i386/vx-common.h: New file.
1753
1754 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
1755
1756         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
1757         of crt0.o%s.
1758
1759 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
1760
1761         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
1762         ldxtr.
1763
1764 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
1765
1766         PR c++/31078
1767         PR c++/31103
1768         * c-common.c (c_build_qualified_type): Set canonical type
1769         appropriately.
1770
1771 2007-04-12  Richard Guenther  <rguenther@suse.de>
1772
1773         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
1774         lower bound and element size if lower bound is not zero
1775         or either of the ARRAY_REF operands is set.
1776
1777 2007-04-12  Richard Guenther  <rguenther@suse.de>
1778
1779         PR tree-optimization/24689
1780         PR tree-optimization/31307
1781         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
1782         indices by value.
1783         * gimplify.c (canonicalize_addr_expr): To be consistent with
1784         gimplify_compound_lval only set operands two and three of
1785         ARRAY_REFs if they are not gimple_min_invariant.  This makes
1786         it never at this place.
1787         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
1788
1789 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1790
1791         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
1792         null before emitting a .nsubspa directive.
1793
1794 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
1795
1796         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
1797         need_to_partition_p if there are no memory statements in the
1798         function.
1799
1800 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
1801
1802         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
1803         (gcd_of_steps_may_divide_p): New function.
1804         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
1805
1806 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
1807
1808         * reload.c (find_reloads_toplev, find_reloads_address,
1809         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
1810         not a pointer equality test, to decide if we need to call
1811         push_reg_equiv_alt_mem.
1812
1813 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
1814
1815         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
1816         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps): New.
1817         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
1818
1819 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
1820
1821         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
1822         vector to be positive.
1823
1824 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
1825
1826         PR 30735
1827         PR 31090
1828         * doc/invoke.texi: Document --params max-aliased-vops and
1829         avg-aliased-vops.
1830         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
1831         debug_memory_partitions): Move to tree-flow.h
1832         * params.h (AVG_ALIASED_VOPS): Define.
1833         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
1834         users.
1835         (mp_info_t): Likewise.
1836         (get_mem_sym_stats_for): New.
1837         (set_memory_partition): Move from tree-flow-inline.h.
1838         (mark_non_addressable): Only clear the set of symbols for the
1839         partition if it exists.
1840         (dump_memory_partitions): Move from tree-ssa-operands.c
1841         (debug_memory_partitions): Likewise.
1842         (need_to_partition_p): New.
1843         (dump_mem_ref_stats): New.
1844         (debug_mem_ref_stats): New.
1845         (dump_mem_sym_stats): New.
1846         (debug_mem_sym_stats): New.
1847         (update_mem_sym_stats_from_stmt): New.
1848         (compare_mp_info_entries): New.
1849         (mp_info_cmp): Call it.
1850         (sort_mp_info): Change argument to a list of mem_sym_stats_t
1851         objects.
1852         (get_mpt_for): Move from tree-ssa-operands.c.
1853         (find_partition_for): New.
1854         (create_partition_for): Remove.
1855         (estimate_vop_reduction): New.
1856         (update_reference_counts): New.
1857         (build_mp_info): New.
1858         (compute_memory_partitions): Refactor.
1859         Document new heuristic.
1860         Call build_mp_info, update_reference_counts,
1861         find_partition_for and estimate_vop_reduction.
1862         (compute_may_aliases): Populate virtual operands before
1863         calling debugging dumps.
1864         (delete_mem_sym_stats): New.
1865         (delete_mem_ref_stats): New.
1866         (init_mem_ref_stats): New.
1867         (init_alias_info): Call it.
1868         (maybe_create_global_var): Remove alias_info argument.
1869         Get number of call sites and number of pure/const call sites
1870         from gimple_mem_ref_stats().
1871         (dump_alias_info): Call dump_memory_partitions first.
1872         (dump_points_to_info_for): Show how many times a pointer has
1873         been dereferenced.
1874         * opts.c (decode_options): For -O2 set --param
1875         max-aliased-vops to 500.
1876         For -O3 set --param max-aliased-vops to 1000 and --param
1877         avg-aliased-vops to 3.
1878         * fortran/options.c (gfc_init_options): Remove assignment to
1879         MAX_ALIASED_VOPS.
1880         * tree-flow-inline.h (gimple_mem_ref_stats): New.
1881         * tree-dfa.c (dump_variable): Dump memory reference
1882         statistics.
1883         Dump NO_ALIAS* settings.
1884         (referenced_var_lookup): Tidy.
1885         (mem_sym_stats): New.
1886         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
1887         and ORIG are different SSA names for a memory partition.
1888         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
1889         * tree-flow.h (struct mem_sym_stats_d): Define.
1890         (mem_sym_stats_t): Define.
1891         (struct mem_ref_stats_d): Define.
1892         (struct gimple_df): Add field mem_ref_stats.
1893         (enum noalias_state): Define.
1894         (struct var_ann_d): Add bitfield noalias_state.
1895         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
1896         debug_mem_ref_stats, debug_memory_partitions,
1897         debug_mem_sym_stats): Declare.
1898         * tree-ssa-structalias.c (update_alias_info): Update call
1899         sites, pure/const call sites and asm sites in structure
1900         returned by gimple_mem_ref_stats.
1901         Remove local variable IS_POTENTIAL_DEREF.
1902         Increase NUM_DEREFS if the memory expression is a potential
1903         dereference.
1904         Call update_mem_sym_stats_from_stmt.
1905         If the memory references memory, call
1906         update_mem_sym_stats_from_stmt for all the direct memory
1907         symbol references found.
1908         (intra_create_variable_infos): Set noalias_state field for
1909         pointer arguments according to the value of
1910         flag_argument_noalias.
1911         * tree-ssa-structalias.h (struct alias_info): Remove fields
1912         num_calls_found and num_pure_const_calls_found.
1913         (update_mem_sym_stats_from_stmt): Declare.
1914         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
1915         Set default value to 100.
1916         (PARAM_AVG_ALIASED_VOPS): Define.
1917
1918 2007-04-11  Richard Guenther  <rguenther@suse.de>
1919
1920         PR middle-end/31530
1921         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
1922         a * -b + c as c - a * b if we honor sign dependent rounding.
1923
1924 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
1925
1926         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
1927         bfin_expand_strmov.
1928         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
1929         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
1930         variables.
1931         (initialize_trampoline): Don't use old-style function definition.
1932         (bfin_secondary_reload): Mark IN_P argument as unused.
1933
1934 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
1935
1936         PR tree-optimization/31343
1937         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
1938         (build_polynomial_chrec): Return a scalar when the evolution is zero.
1939         * testsuite/gcc.dg/vect/pr31343.c: New.
1940
1941 2007-04-10  Eric Christopher  <echristo@apple.com>
1942
1943         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
1944         * config/i386/i386.md (*cmpfp0): Use.
1945         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
1946         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
1947         (fix_trunc<mode>_i386_fisttp): Ditto.
1948         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
1949         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
1950         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
1951         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
1952         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
1953         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
1954         (unnamed_splitters): Ditto.
1955         * config/i386/i386.c (output_fix_trunc): Assert that
1956         we're not being passed a TFmode operand.
1957
1958 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
1959
1960         PR tree-optimization/31526
1961         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
1962         n_basic_blocks to find newly added blocks.
1963
1964 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
1965
1966         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
1967         alternative.
1968         (fix_trunc<mode>si_sse): Ditto.
1969         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
1970         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
1971         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
1972         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
1973         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
1974         expander using SSEMODEF mode macro.
1975         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
1976         expander using SSEMODEF mode macro.
1977         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
1978         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
1979         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
1980         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
1981         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
1982         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
1983         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
1984         Macroize insn using X87MODEF mode macro.
1985
1986 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
1987
1988         * config/i386/sse.md (sse2_pinsrw): Removed.
1989         (sse2_pextrw): Renamed to ...
1990         (*sse2_pextrw): This.
1991
1992 2007-04-09  Jan Hubicka  <jh@suse.cz>
1993
1994         PR target/27869
1995         * config/i386/sse.md
1996         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
1997         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
1998         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
1999         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
2000
2001 2007-04-09  Jan Hubicka  <jh@suse.cz>
2002
2003         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
2004         multiple fields of union.
2005
2006 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
2007
2008         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
2009         (create_preheaders): Check that loops are available.
2010         (fix_loop_structure): Clean up, improve comments.
2011         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
2012         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
2013         state flags.
2014         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
2015         * predict.c (tree_estimate_probability): Do not call
2016         calculate_dominance_info.  Call create_preheaders.
2017         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
2018         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
2019         flags.
2020         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
2021         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
2022         * tree-cfg.c (tree_split_edge): Make an assert more precise.
2023         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
2024         arguments.
2025
2026 2007-04-08  Jan Hubicka  <jh@suse.cz>
2027
2028         * tree.h (maybe_fold_offset_to_component_ref): Declare.
2029         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
2030         * fold-const.c (fold_unary): Use it.
2031
2032 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2033
2034         * varasm.c (assemble_variable): Remove call to
2035         lang_hooks.decls.prepare_assemble_variable.
2036         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
2037         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
2038         * langhooks.h (lang_hooks_for_decls): Remove
2039         prepare_assemble_variable.
2040
2041 2007-04-08  Mike Stump  <mrs@apple.com>
2042
2043         * config/i386/i386.c: Use inc/dec on Core2.
2044
2045 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
2046
2047         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
2048         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
2049         lhd_tree_inlining_end_inlining): Remove.
2050         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
2051         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
2052         end_inlining hooks.
2053         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
2054         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
2055         lhd_tree_inlining_end_inlining): Remove prototypes.
2056         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
2057         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
2058         LANG_HOOKS_TREE_INLINING_START_INLINING,
2059         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
2060
2061         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
2062         not set it.
2063
2064 2007-04-08  Anatoly Sokolov <aesok@post.ru>
2065
2066         PR target/29932
2067         * config/avr/predicates.md (io_address_operand): Delete predicate.
2068         (low_io_address_operand): Don't use 'mode' argument.
2069         (higth_io_address_operand): Rename ...
2070         (high_io_address_operand): ... to this. Don't use 'mode' argument.
2071         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
2072         for above change.
2073
2074 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
2075
2076         Revert change removing staticp.
2077
2078 2007-04-07  Anatoly Sokolov <aesok@post.ru>
2079
2080         PR target/30289
2081         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
2082         earlyclobber.
2083
2084 2007-04-07  Bruce Korb  <bkorb@gnu.org>
2085
2086         * c.opt: Add -Wformat-contains-nul.
2087         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
2088           -Wformat setting.
2089         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
2090         the NUL byte warning.
2091
2092 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
2093
2094         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
2095
2096 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
2097
2098         * tree.c (staticp): No longer use staticp langhook.
2099         * langhooks.c (lhd_staticp): Removed.
2100         * langhooks.h (struct lang_hooks): Remove staticp.
2101         * c-common.c (c_staticp): Remove.
2102         * c-common.h (c_staticp): Ditto.
2103         * langhooks-defs.h (lhd_staticp): Ditto.
2104         (LHD_HOOKS_STATICP): Ditto
2105         * tree.h (gcc_assert_lowered): New macro.
2106
2107 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
2108
2109         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
2110         argument "reliable".
2111         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
2112         Add argument "reliable".  Propagate it through calls.
2113         (infer_loop_bounds_from_undefined):  Derive number of iterations
2114         estimates from references in blocks that do not dominate loop latch.
2115         (gcov_type_to_double_int): New function.
2116         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
2117         and expected_loop_iterations_unbounded.
2118         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
2119         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
2120         * tree-data-ref.c (estimated_loop_iterations): Export.
2121         (get_references_in_stmt): Fix -- do not return addresses of local
2122         objects.
2123         * cfgloop.h (expected_loop_iterations_unbounded,
2124         estimated_loop_iterations): Declare.
2125
2126 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
2127
2128         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
2129
2130 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
2131
2132         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
2133         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
2134         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
2135         Use output_387_reg_move().
2136         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
2137         expander using X87MODEF12 mode macro.
2138         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
2139         choosing register preferences.  Use output_387_reg_move().
2140         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
2141         instead of "x".  Use output_387_reg_move().
2142         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
2143         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
2144         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
2145         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
2146         Use output_387_reg_move().
2147         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
2148         mode macro.
2149         (*truncxf?f_i387 splitter): Ditto.
2150
2151 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
2152
2153         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
2154         LANG_HOOKS_SAFE_FROM_P.
2155         * expr.c (safe_from_p): Remove langhook call.
2156         * langhooks.h (lang_hooks): Remove safe_from_p.
2157         (lhd_safe_from_p): Remove prototype.
2158         * langhooks.c (lhd_safe_from_p): Remove.
2159
2160 2007-04-06  Jan Hubicka  <jh@suse.cz>
2161
2162         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
2163         functions.
2164
2165 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
2166
2167         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
2168         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
2169         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
2170         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
2171         alternative.
2172         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
2173         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
2174
2175 2007-04-05  Richard Henderson  <rth@redhat.com>
2176
2177         * config/alpha/alpha.c (print_operand) [+]: Remove.
2178         (alpha_end_function): Print nop if call at end of function.
2179         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
2180         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
2181         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
2182         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
2183         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
2184         the call pattern. Update peepholes to match.
2185
2186 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
2187
2188         * doc/extend.texi (Other Builtins): Add decimal float variants
2189         of signbit.
2190         * builtins.def: Ditto.
2191         * builtins.c (expand_builtin): Ditto.
2192
2193 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
2194             H.J. Lu  <hongjiu.lu@intel.com>
2195
2196         PR target/31478
2197         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
2198         of V8HImode when calling ix86_binary_operator_ok.
2199         (sse2_pmaddwd): Call ix86_binary_operator_ok.
2200         (sdot_prodv8hi): Operands 1 and 2 must be register.
2201
2202 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
2203
2204         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
2205         initialize align to silence bogus warning.
2206
2207 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
2208
2209         PR middle-end/22156
2210         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
2211         all_no_warning.
2212         (struct sra_walk_fns): Remove use_all parameter from use.
2213         (sra_hash_tree): Handle BIT_FIELD_REFs.
2214         (sra_elt_hash): Don't hash bitfld blocks.
2215         (sra_elt_eq): Skip them in parent compares as well.  Handle
2216         BIT_FIELD_REFs.
2217         (sra_walk_expr): Don't maintain or pass down use_all_p.
2218         (scan_use): Remove use_all parameter.
2219         (scalarize_use): Likewise.  Re-expand assignment to
2220         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
2221         output, and re-scalarize after output.  Don't mark anything
2222         for no warning.
2223         (scalarize_ldst): Adjust.
2224         (scalarize_walk_gimple_modify_statement): Likewise.
2225         (build_element_name_1): Handle BIT_FIELD_REFs.
2226         (instantiate_element): Don't warn for any element whose parent
2227         is used as a whole.
2228         (instantiate_missing_elements_1): Return the sra_elt.
2229         (canon_type_for_field): New.
2230         (try_instantiate_multiple_fields): New.
2231         (instantiate_missing_elemnts): Use them.
2232         (mark_no_warning): Removed.
2233         (generate_one_element_ref): Handle BIT_FIELD_REFs.
2234         (REPLDUP, sra_build_elt_assignment): New.
2235         (generate_copy_inout): Use them.
2236         (generate_element_copy): Likewise.  Handle bitfld differences.
2237         (generate_element_zero): Don't recurse for blocks.  Use
2238         sra_build_elt_assignment.
2239         (generate_one_element_int): Take elt instead of var.  Use
2240         sra_build_elt_assignment.
2241         (generate_element_init_1): Adjust.
2242         (scalarize_use, scalarize_copy): Use REPLDUP.
2243         (scalarize_ldst): Move assert before dereference.
2244         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
2245
2246 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
2247
2248         * regmove.c: Fix unused variable warnings due to previous commit.
2249
2250 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
2251
2252         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
2253         (regmove_bb_head): Remove.
2254         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
2255         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
2256         problems with fixup_match_1.
2257         Don't initialize/free regmove_bb_head.
2258
2259         (reg_is_remote_constant_p): If an insn is in the same basic block
2260         but not before INSN, consider it remote, too.
2261
2262 2007-04-05  Anatoly Sokolov <aesok@post.ru>
2263
2264         PR target/25448
2265         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
2266         DECL_ASSEMBLER_NAME, not the DECL_NAME.
2267
2268 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
2269
2270         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
2271         (CONDITIONAL_REGISTER_USAGE): Likewise.
2272
2273 2007-04-04  Richard Henderson  <rth@redhat.com>
2274
2275         * config/alpha/lib1funcs.asm: Remove unused file.
2276
2277 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
2278
2279         PR other/31356
2280         * opts.c (print_specific_help): Fix --help=<language>
2281         header line.
2282         (common_handle_option): Support --help=common.
2283
2284 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
2285
2286         PR other/31353
2287         * gcc.c (main): Do not run the linker if
2288         print_subprocess_help indicates that it shouldn't be
2289         run.
2290
2291 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
2292
2293         PR doc/31355
2294         * doc/invoke.texi (--help=): Document <languages> value, fix
2295         formatting in tables of values.
2296
2297 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
2298
2299         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
2300         dllimport attribute of virtual methods.
2301
2302 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
2303
2304         * config/score/crti.asm: Change _bss_start to __bss_start.
2305         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
2306         (OUTGOING_REG_PARM_STACK_SPACE) update.
2307         * config/score/score.opt: add options to make backend support
2308         score5, score5u, score7 and score7d.
2309         * config/score/score.md: Likewise.
2310         * config/score/misc.md: Likewise.
2311         * config/score/mac.md: Likewise.
2312         * doc/invoke.texi: Likewise.
2313         * doc/md.texi: update constraints define.
2314
2315 2007-04-03  Richard Henderson  <rth@redhat.com>
2316
2317         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
2318         an appropriate type, use the mode instead.
2319
2320 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
2321
2322         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
2323         Set the default --with-arch setting to mips2.
2324         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
2325         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
2326         (MULTILIB_OSDIRNAMES): Delete.
2327         (MULTILIB_DIRNAMES): Define.
2328         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
2329         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
2330         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
2331         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
2332         VXWORKS_OS_CPP_BUILTINS.
2333         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
2334         (MIPS_DEBUGGING_INFO): Undefine.
2335         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
2336
2337 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
2338
2339         PR middle-end/30704
2340         * fold-const.c (native_encode_real): Encode real.c provided longs
2341         as a series of 32-bit native integers.
2342         (native_interpret_real): Interpret buffer as a series of 32-bit
2343         native integers.
2344
2345 2007-04-03  Richard Guenther  <rguenther@suse.de>
2346
2347         * genpreds.c (write_insn_constraint_len): Write function
2348         optimized for CONSTRAINT_LEN implementation.
2349         (write_tm_preds_h): Output insn_constraint_len inline and
2350         use it for CONSTRAINT_LEN.
2351         (write_insn_preds_c): Don't output insn_constraint_len.
2352         * doc/md.texi (define_register_constraint): Document multi-letter
2353         constraints shall have the same length if they start with the same
2354         letter.
2355
2356 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
2357
2358         PR target/31175
2359         * config/i386/i386.md (isinf<mode>2): Expand only when
2360         TARGET_C99_FUNCTIONS is set.
2361
2362 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
2363
2364         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
2365         (x86_64-*-linux*): Ditto.
2366         * config/i386/i386.opt (mpc): New option.
2367         * config/i386/i386.c (overrride_options): Handle
2368         ix87_precision_string.
2369         * config/i386/crtprec.c: New file.
2370         * config/i386/t-crtpc: Ditto.
2371         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
2372         and -mpc80 options.
2373         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
2374         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
2375         crtprec32.o, crtprec64.o and crtprec80.o.
2376
2377         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
2378         and -mpc80 options.
2379         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
2380
2381 2007-04-02  Eric Christopher  <echristo@apple.com>
2382
2383         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
2384         limitations on darwin.
2385
2386 2007-04-02  Anatoly Sokolov <aesok@post.ru>
2387
2388         PR target/31137
2389         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
2390
2391 2007-04-02  Dave Korn  <dave.korn@artimi.com>
2392
2393         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
2394
2395 2007-04-02  Dave Korn  <dave.korn@artimi.com>
2396
2397         * libgcc2.h (exception_descriptor): Don't forward-declare.
2398         (__get_eh_table_language, __get_eh_table_version): Delete
2399         prototypes of long-dead functions.
2400
2401 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
2402
2403         * ebitmap.h: New file
2404         * ebitmap.c: New file
2405         * Makefile.in (ebitmap.o): New target.
2406
2407 2007-04-01  Jan Hubicka  <jh@suse.cz>
2408
2409         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
2410         before very first instruction.
2411
2412 2007-04-01  Jan Hubicka  <jh@suse.cz>
2413
2414         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
2415         waring on 64bit hosts.
2416         * bitmap.h: Fix typo in bitmap_head_def.
2417
2418 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
2419
2420         PR rtl-optimization/31391
2421         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
2422         into a DELETED_LABEL note, and the label is in an empty basic
2423         block, update BB_END as well as BB_HEAD.
2424
2425 2007-04-01  Richard Henderson  <rth@redhat.com>
2426
2427         PR tree-optimization/31169
2428         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
2429         to varying if the range is outside [0,  prec-1].
2430
2431 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
2432
2433         PR target/31388
2434         * config/mips/mips.md (load_const_gp): New insn.
2435         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
2436         the MIPS16 GP pseudo register if no_new_pseudos.
2437         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
2438
2439 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2440
2441         PR target/31364
2442         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
2443         secureplt.
2444         (call_value): Likewise.
2445
2446 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
2447             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2448
2449         PR 14737
2450         * doc/invoke.texi: (optimization options): Reword description
2451         of -ffast-math. Document its primary purpose.
2452
2453 2007-03-31  Richard Guenther  <rguenther@suse.de>
2454
2455         * omp-low.c (splay-tree.h): Include.
2456         (lookup_decl): Replace splay-tree usage by pointer-map.
2457         (maybe_lookup_decl): Likewise.
2458         (new_omp_context): Likewise.
2459         (delete_omp_context): Likewise.
2460         * gimplify.c (splay-tree.h): Include.
2461         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
2462         pointer-map.
2463         (remap_ssa_name): Likewise.
2464         (remap_decl): Likewise.
2465         (remap_type_1): Likewise.
2466         (remap_type): Likewise.
2467         (copy_body_r): Likewise.
2468         (expand_call_inline): Likewise.
2469         (clone_body): Likewise.
2470         (copy_tree_r): Likewise.
2471         (remap_save_expr): Likewise.
2472         (unsave_r): Likewise.
2473         (unsave_expr_now): Likewise.
2474         (tree_function_versioning): Likewise.
2475         (build_duplicate_type): Likewise.
2476         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
2477         (struct copy_body_data): Replace splay-tree by pointer-map.
2478         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
2479         not $(SPLAY_TREE_H).
2480         (gimplify.o): Depend on $(SPLAY_TREE_H).
2481         (omp-low.p): Likewise.
2482
2483 2007-03-31  Anatoly Sokolov <aesok@post.ru>
2484
2485         * config/avr/predicates.md (even_register_operand,
2486         odd_register_operand): New predicates.
2487         * config/avr/avr.md (movw peephole2): New.
2488         (movw_r peephole2): New.
2489
2490 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
2491
2492         * tree.h (get_signed_or_unsigned_type): New.
2493         * fold-const.c (operand_equal_for_comparison_p): Use
2494         get_signed_or_unsigned_type instead of
2495         lang_hooks.types.signed_or_unsigned_type.
2496         * expr.c (store_expr): Ditto.
2497         * langhooks.c (get_signed_or_unsigned_type): New.
2498         (lhd_signed_or_unsigned_type): New.
2499         * langhooks.h (lhd_signed_or_unsigned_type): New.
2500         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
2501
2502 2007-03-30  Richard Henderson  <rth@redhat.com>
2503
2504         * tree-ssa-loop-ivopts.c: Include target.h.
2505         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
2506         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
2507         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
2508         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
2509
2510 2007-03-30  Richard Henderson  <rth@redhat.com>
2511             Kai Tietz  <kai.tietz@onevision.com>
2512
2513         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
2514         default for 64-bit.
2515         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
2516         (TARGET_64BIT_MS_ABI): New.
2517         (DBX_REGISTER_NUMBER): Handle 64-bit.
2518         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
2519         (LONG_TYPE_SIZE): Force to 32.
2520         (REG_PARM_STACK_SPACE): New.
2521         (OUTGOING_REG_PARM_STACK_SPACE): New.
2522         (REGPARM_MAX, SSE_REGPARM_MAX): New.
2523         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
2524         (STACK_BOUNDARY): Use 128 for 64-bit.
2525         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
2526         Add 64-bit implementation.
2527         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
2528         argument unused.
2529         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
2530         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
2531         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
2532         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
2533         (ix86_handle_cconv_attribute): Don't warn when ignoring if
2534         TARGET_64BIT_MS_ABI.
2535         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
2536         (ix86_pass_by_reference): Likewise.
2537         (ix86_function_value_regno_p): Likewise.
2538         (ix86_build_builtin_va_list): Likewise.
2539         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
2540         (function_arg_advance_ms_64): New.
2541         (function_arg_advance): Call it.
2542         (function_arg_ms_64): New.
2543         (function_arg): Call it.
2544         (function_value_ms_64): New.
2545         (ix86_function_value_1): Call it.
2546         (return_in_memory_ms_64): New.
2547         (ix86_return_in_memory): Call it.
2548         (setup_incoming_varargs_ms_64): New.
2549         (ix86_setup_incoming_varargs): Call it.
2550         (ix86_expand_prologue): Handle 64-bit stack probing.
2551         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
2552         (output_pic_addr_const): Likewise.
2553         (x86_this_parameter): Likewise.
2554         (x86_output_mi_thunk): Likewise.
2555         (x86_function_profiler): Likewise.
2556         (TARGET_STRICT_ARGUMENT_NAMING): New.
2557         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
2558         (TARGET_64BIT_MS_ABI): New.
2559         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
2560         * config/i386/i386.md (allocate_stack_worker): Remove.
2561         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
2562         describe the clobber of eax without a match_scratch.
2563         (allocate_stack_worker_postreload): Remove.
2564         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
2565         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
2566         (allocate_stack_worker_rex64_postreload): Remove.
2567         (allocate_stack): Handle 64-bit.
2568         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
2569         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
2570         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
2571         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
2572         (STANDARD_STARTFILE_PREFIX_1): Likewise.
2573         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
2574         * config.build (x86_64-*-mingw*): New host.
2575         * config.host (x86_64-*-mingw*): New host.
2576         * config.gcc (x86_64-*-mingw*): New target.
2577         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
2578
2579 2007-03-30  Richard Henderson  <rth@redhat.com>
2580             Kai Tietz  <kai.tietz@onevision.com>
2581
2582         * c-pragma.c (struct def_pragma_macro_value): New.
2583         (struct def_pragma_macro): New.
2584         (pushed_macro_table): New.
2585         (dpm_hash, dpm_eq): New.
2586         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
2587         (init_pragma): Install them.
2588         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
2589
2590 2007-03-30  Anatoly Sokolov <aesok@post.ru>
2591
2592         * config/avr/avr.c (avr_override_options): Clear
2593         'flag_delete_null_pointer_checks'.
2594
2595 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
2596
2597         PR c++/26099
2598         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
2599         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
2600         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
2601         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
2602         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
2603         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
2604         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
2605         C++ extensions.
2606         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
2607
2608 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
2609
2610         * regmove.c: Move all of pass_stack_adjustments from here...
2611         * combine-stack-adj.c: ...to this new file.
2612         * Makefile.in: Add rules for combine-stack-adj.o.
2613
2614 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
2615
2616         PR tree-optimization/31383
2617         * tree-data-ref.c (affine_function_equal_p): Do not require the vectors
2618         to have the same length.
2619
2620 2007-03-30  Jan Hubicka  <jh@suse.cz>
2621
2622         PR middle-end/30700
2623         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
2624         availablility; add more sanity checking; ask varpool only about
2625         VAR_DECL.
2626
2627 2007-03-29  Richard Henderson  <rth@redhat.com>
2628
2629         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
2630         to decide, but __SIZEOF_LONG_LONG__.
2631
2632 2007-03-29  Richard Henderson  <rth@redhat.com>
2633
2634         * emutls.c (struct __emutls_array): New.
2635         (emutls_destroy): Use it instead of casting element 0 from void*.
2636         (__emutls_get_address): Likewise.
2637
2638 2007-03-29  Richard Henderson  <rth@redhat.com>
2639
2640         * varasm.c (initializer_constant_valid_p): Don't deny
2641         DECL_DLLIMPORT_P on functions.
2642
2643         * config/i386/cygming.h: Remove function declarations.
2644         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
2645         (ASM_OUTPUT_LABELREF): Remove.
2646         (COMMON_ASM_OP): Remove.
2647         (ASM_OUTPUT_COMMON): Remove.
2648         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
2649         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
2650         (ASM_DECLARE_FUNCTION_NAME): Likewise.
2651         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
2652         Rename from TARGET_ENCODE_SECTION_INFO.
2653         * config/i386/netware.h: Likewise.
2654         * config/i386/i386-protos.h: Update.
2655         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
2656         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
2657         (legitimate_constant_p): Reject dllimports.
2658         (dllimport_map, get_dllimport_decl): New.
2659         (legitimize_dllimport_symbol): New.
2660         (legitimize_address, ix86_expand_move): Use it.
2661         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
2662         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
2663         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
2664         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
2665         * config/i386/predicates.md (constant_call_address_operand): Only
2666         accept symbols; reject dllimport_p symbols.
2667         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
2668         i386_pe_maybe_record_exported_symbol.
2669         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
2670         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
2671         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
2672         trust the setting of DECL_DLLIMPORT_P.
2673         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
2674         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
2675         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
2676         tidy the argument scanning loop.
2677         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
2678         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
2679         (i386_pe_strip_name_encoding): Remove.
2680         (i386_pe_binds_local_p): New.
2681         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
2682         (i386_pe_output_labelref): Remove.
2683         (i386_pe_asm_output_aligned_decl_common): New.
2684         (i386_pe_maybe_record_exported_symbol): Rename from
2685         i386_pe_record_exported_symbol; check for dllexported symbols.
2686
2687 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
2688
2689         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
2690         add comment explaining why vsnprintf cannot be used.
2691
2692 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
2693
2694         PR tree-optimization/30666
2695         * tree.c (build_complex_type): When creating type names for DWARF2
2696         debug info, create TYPE_DECLs for TYPE_NAME instead of
2697         IDENTIFIER_NODEs.
2698         (build_common_tree_nodes_2): Use build_complex_type when building
2699         predefined complex types, to preserve canonical types.
2700
2701 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
2702
2703         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
2704         (noce_get_alt_condition): Look at it to determine whether to
2705         reverse the condition or not.
2706         (noce_get_condition): Substitute the truth for lies.
2707         (noce_find_if_block): Set the then_else_reversed field.
2708
2709 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
2710
2711         * config/fr30/fr30.md (movdi): Do not accept immediates as the
2712         destination of this insn.
2713         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
2714         than calling gen_rtx_SET directly.  Use r0 to hold the value of
2715         'address + 4' rather than a stack based temporary which can be
2716         mis-optimized away.
2717
2718 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
2719
2720         * config/s390/s390.c (s390_secondary_input_reload_class,
2721         s390_secondary_output_reload_class): Functions removed.
2722         (s390_secondary_reload): New function.
2723         (TARGET_SECONDARY_RELOAD): Target macro defined.
2724         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
2725         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
2726         * config/s390/s390.md ("reload_outti", "reload_outdi",
2727         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
2728         "reload_out<mode>"): Expanders removed.
2729         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
2730         "reload<mode>_nonoffmem_out"): Expanders added.
2731
2732 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
2733
2734         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
2735         SRC->DEST replacement failed anyway.
2736
2737 2007-03-28  Mike Stump  <mrs@apple.com>
2738
2739         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
2740         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
2741         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
2742
2743 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
2744
2745         * config.gcc: Accept barcelona as a variant of amdfam10.
2746         * config/i386/i386.c (override_options): Likewise.
2747         * doc/invoke.texi: Likewise.
2748
2749 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
2750
2751         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
2752         offsets for BIT_FIELD_REF and COMPONENT_REF.
2753
2754 2007-03-28  Richard Guenther  <rguenther@suse.de>
2755
2756         * tree.c (is_global_var): Move ...
2757         * tree-flow-inline.h (is_global_var): ... here.
2758         * tree.h (is_global_var): Remove declaration.
2759
2760 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
2761
2762         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
2763         option.
2764         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
2765         * config/i386/i386.c (ix86_tune_features): Initialize new
2766         tuning option.
2767         * config/i386/predicates.md (promotable_binary_operator): Use
2768         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
2769
2770 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
2771
2772         PR target/31380
2773         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
2774
2775 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
2776
2777         * config/fr30/fr30.md (movsi_internal): Change destination
2778         constraint from m to V and add m to the end.
2779
2780 2007-03-28  Christian Bruel  <christian.bruel@st.com>
2781
2782         * config/sh/sh.md (movsi_i): Fix type attribute.
2783
2784 2007-03-28  Christian Bruel  <christian.bruel@st.com>
2785
2786         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
2787         (movsf_ie): Likewise.
2788
2789 2007-03-28  Christian Bruel  <christian.bruel@st.com>
2790
2791         * config.gcc: Add sh4-300 to multilib.
2792         * config/sh/t-mlib-sh4-300: New file.
2793
2794 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
2795
2796         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
2797         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
2798         fix_trunc<mode>di2.
2799         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
2800         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
2801         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
2802         "fixuns_trunctddi2"): Whitespace fix.
2803
2804 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
2805
2806         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
2807         the definition of struct sh_args.
2808         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
2809         CALL_COOKIE_INT_REG_GET): Likewise.
2810
2811 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
2812
2813         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
2814         transformations are applied successfully.
2815
2816 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
2817
2818         * tree.c (tree_contains_struct): Permit 512 tree codes.
2819         * tree.h (tree_contains_struct): Ditto.
2820         (MAX_TREE_CODES): Ditto.
2821         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
2822         SPARE member to store remaining padding bits.
2823
2824 2007-03-27  Anatoly Sokolov <aesok@post.ru>
2825
2826         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
2827         architecture.
2828
2829 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
2830
2831         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
2832         * configure: Regenerate.
2833
2834         * configure: Regenerate using the correct version of autoconf.
2835
2836 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
2837
2838         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
2839         pointer regs.
2840         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
2841         regs to "__SP_L__" and "__SP_H__".
2842
2843 2007-03-27  Richard Guenther  <rguenther@suse.de>
2844
2845         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
2846         computations with it with a HOST_WIDE_INT variable.
2847
2848 2007-03-26  Mike Stump  <mrs@apple.com>
2849
2850         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
2851         objective-c-header, objective-c++-header and objc++-cpp-output
2852         support.
2853         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
2854
2855 2007-03-26  Richard Henderson  <rth@redhat.com>
2856
2857         PR target/31361
2858         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
2859         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
2860         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
2861         IX86_BUILTIN_PSRLQ128): New.
2862         (ix86_init_mmx_sse_builtins): Add them.
2863         (ix86_expand_builtin): Expand them.
2864         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
2865         operand 2 be TImode.
2866         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
2867         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
2868         _mm_srli_epi64): Mark __B const.
2869         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
2870         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
2871         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
2872         new two-vector shift builtins.
2873
2874 2007-03-26  Ian Lance Taylor  <iant@google.com>
2875
2876         PR tree-optimization/31345
2877         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
2878         [+INF, +INF(OVF)] into VARYING.
2879
2880 2007-03-26  Zack Weinberg  <zackw@panix.com>
2881
2882         * gengtype-parse.c: New file.
2883         * gengtype-yacc.y: Delete.
2884         * gengtype-lex.l: Don't include gengtype-yacc.h.
2885         Define YY_DECL and yyterminate appropriately for recursive
2886         descent parser.  yylval is now a string out-parameter to yylex.
2887         (HWS, EOID): New shorthand.
2888         (IWORD): Add a couple more types.
2889         (yylex): Add a setup stanza.  Remove the complex rules for
2890         detecting GTY'ed types and typedefs; replace with simple
2891         keyword detectors.  Adjust everything for the changed
2892         definition of yylval.  Ignore all pp-directives, not just #define.
2893         (yyerror): Delete.
2894         (parse_file): Rename yybegin; do not call yyparse.
2895         (yyend): New.
2896         * gengtype.c (xasprintf): Export again.
2897         (this_file): New.  Use everywhere __FILE__ was being used.
2898         (get_lang_bitmap): Special case types defined in gengtype.c.
2899         (do_typedef, new_structure): Suppress definition of certain types.
2900         (new_structure): Improve diagnostics of duplicate definitions.
2901         Make sure location_s is associated with input.h.
2902         (nreverse_pairs, define_location_structures): New functions.
2903         (main): Improve tagging of kludge types.  Remove old kludges
2904         for input.h types; use define_location_structures.
2905         * gengtype.h: Update prototypes.  Define token codes here.
2906         * Makefile.in: Remove all references to gengtype-yacc.
2907         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
2908         and gengtype.
2909         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
2910         add GTY((skip)) to the field that's only conditionally there.
2911         * doc/install.texi: Document that Bison is no longer required
2912         unless building treelang.
2913
2914         * gengtype.c: Don't include gtyp-gen.h.
2915         (srcdir): Declare here.
2916         (base_files, lang_dir_names): Allocate dynamically.
2917         (gt_files, num_gt_files, num_lang_dirs): New globals.
2918         (measure_input_list, read_input_line, read_input_list)
2919         (set_lang_bitmap): New functions.
2920         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
2921         simplify, relying on read_input_list to set up the bitmaps.
2922         (main): Arguments are no longer unused.  Check for correct number
2923         of command line arguments, set srcdir and srcdir_len, then call
2924         read_input_list, before doing anything else.  No need to worry
2925         about duplicates in main loop.
2926         * configure.ac: Simplify the calculation of all_gtfiles.
2927         Put language tags in there.  Don't set or substitute
2928         all_gtfiles_files_langs or all_gtfiles_files_frags.
2929         * Makefile.in: Revamp the way gengtype is invoked, now that it
2930         takes a file on its command line with a much simpler format.
2931         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
2932         (GTFILES): Remove duplicates and C source files.
2933         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
2934         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
2935         * configure: Regenerate.
2936
2937         * gengtype.h: Remove all type definitions to gengtype.c; leave
2938         only definitions of options_p, type_p, and pair_p as opaque
2939         pointers.  Update prototypes.
2940         * gengtype.c: Many type definitions moved here from gengtype.h.
2941         Consolidate type definitions at the top of the file.
2942         (xvasprintf): Delete.
2943         (xasprintf): Make static.
2944         (create_nested_pointer_option): Add 'next' parameter.
2945         (create_field_all, create_field_at): New functions.
2946         (create_field): Now a thin wrapper around create_field_all.
2947         (create_optional_field): Rename create_optional_field_ and add
2948         line argument.  Original name is now a macro which supplies
2949         __LINE__.
2950         (oprintf): Use vsnprintf directly.
2951         (close_output_files): Use fatal rather than perror/exit.
2952         (note_def_vec, note_def_vec_alloc): Use create_field_at.
2953         (main): Set progname.  Don't use exit.
2954         * gengtype-yacc.y (struct_fields): Use create_field_at.
2955         (option, optionseqopt): Delete.
2956         (optionseq): Consolidate productions from option here so we
2957         can use the first argument to create_option.
2958
2959         * gengtype-lex.l: Distinguish unions from structures in the
2960         token type.  Don't call find_structure; return the tag as a string.
2961         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and ENT_UNION.
2962         Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is string.
2963         Reorganize typedef_struct production accordingly.
2964         Use create_nested_ptr_option.
2965         * gengtype.c (create_nested_ptr_option): New function.
2966         * gengtype.h: Declare it.
2967
2968         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
2969         (string_type): Don't declare.
2970         (do_scalar_typedef): Declare.
2971         (create_scalar_type): Update prototype.
2972         * gengtype.c (string_type): Make static.
2973         (scalar_nonchar, scalar_char): New.
2974         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
2975         (resolve_typedef): Use scalar_nonchar for error recovery.
2976         (create_scalar_type): Remove name_len field.  Return scalar_char
2977         or scalar_nonchar as appropriate.
2978         (adjust_field_type): Look at scalar_is_char boolean to decide whether
2979         to use string_type.
2980         (throughout): Use scalar_nonchar instead of calling create_scalar_type,
2981         whenever possible.
2982         (main): Initialize scalar_char and scalar_nonchar before calling
2983         gen_rtx_next.
2984         * gengtype-lex.l: Adjust for removal of second argument to
2985         create_scalar_type.  Use yylval.s instead of yylval.t when
2986         returning SCALAR.
2987         * gengtype-yacc.y: Type of SCALAR is string.  Call
2988         create_scalar_type from type:SCALAR rule.  Adjust for removal of
2989         second argument to create_scalar_type.
2990
2991         * vec.h: Remove all #if IN_GENGTYPE blocks.
2992         Add comment saying that changes may require adjustments to gengtype.
2993         * gengtype.c: Don't include coretypes.h or tm.h.
2994         Add comment to inclusion of errors.h.
2995         (note_def_vec, note_def_vec_alloc): New functions.
2996         * gengtype.h: Declare new functions.
2997         * gengtype-lex.l: Don't include coretypes.h.
2998         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
2999         Delete.
3000         (update_lineno): Remove unnecessary prototype.
3001         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
3002         (VEC rule): Just return VEC_TOKEN.
3003         * gengtype-yacc.y (VEC_TOKEN): New token type.
3004         (type): Add a production for VEC(a,b).
3005         * Makefile.in: Update dependencies.
3006
3007         * gengtype-lex.l: Remove rules for parsing pointer-to-function
3008         typedefs that use the old PARAMS macro.
3009
3010         * gengtype-lex.l: Remove all rules and states relating to yacc
3011         input files.
3012         * gengtype-yacc.y: Similarly.
3013         * gengtype.c (note_yacc_type): Delete function.
3014         * gengtype.h: Update prototypes.
3015
3016 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
3017
3018         * tree-pretty-print.c (dump_generic_node): Report precision of
3019         unnamed integer types.
3020
3021 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
3022
3023         * ifcvt.c (noce_try_store_flag_constants): Don't check
3024         no_new_pseudos here.
3025         (noce_try_store_flag_constants): Don't check no_new_pseudos.
3026         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
3027         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
3028         noce_try_sign_mask): Likewise.
3029         (if_convert): Check no_new_pseudos here.
3030
3031         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
3032         Remove prototypes.
3033         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
3034         (noce_get_condition): Handle new then_else_reversed argument.
3035         (noce_init_if_info): Remove, fold into noce_find_if_block.
3036         (noce_process_if_block): Take a struct noce_if_info as the
3037         argument.  Don't set up one based on ce_if_info.  Update pointer
3038         references accordingly.
3039         (cond_move_process_if_block): Likewise.
3040         (process_if_block): Removed.
3041         (find_if_block): Removed.  Move functionality two new functions,
3042         noce_find_if_block and cond_exec_find_if_block.
3043         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
3044         blocks and the symmetric IF-ELSE-JOIN case.
3045         (cond_exec_find_if_block): Also new function mostly based on old
3046         find_if_block and process_if_block.
3047         (find_if_header): Replace find_if_block call with separately
3048         guarded calls to noce_find_if_block and cond_exec_find_if_block.
3049         (find_cond_trap): Update noce_get_condition call.
3050         (dead_or_predicable): Likewise.
3051
3052 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
3053
3054         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
3055         Remove.
3056         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
3057         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
3058         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
3059         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
3060         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
3061         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
3062         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
3063         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
3064         __builtin_ia32_psrad128 builtins.
3065
3066 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
3067
3068         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
3069         * config/i386/constraints.md
3070         (define_constraint "I"): Use IN_RANGE macro.
3071         (define_constraint "J"): Ditto.
3072         (define_constraint "K"): Ditto.
3073         (define_constraint "M"): Ditto.
3074         (define_constraint "N"): Ditto.
3075         (define_constraint "O"): Ditto.
3076         * config/i386/predicates.md
3077         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
3078         (define_predicate "const_0_to_3_operand"): Ditto.
3079         (define_predicate "const_0_to_7_operand"): Ditto.
3080         (define_predicate "const_0_to_15_operand"): Ditto.
3081         (define_predicate "const_0_to_63_operand"): Ditto.
3082         (define_predicate "const_0_to_255_operand"): Ditto.
3083         (define_predicate "const_1_to_31_operand"): Ditto.
3084         (define_predicate "const_2_to_3_operand"): Ditto.
3085         (define_predicate "const_4_to_7_operand"): Ditto.
3086
3087 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
3088
3089         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
3090         in SImode for save_world.
3091         * config/rs6000/altivec.md (save_world, restore_world): Convert to
3092         LR hard reg.
3093
3094 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
3095
3096         PR tree-optimization/30784
3097         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
3098         BIT_FIELD_REF.
3099
3100 2007-03-25  Revital Eres  <eres@il.ibm.com>
3101
3102         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
3103           Fold movement_possibility function into it.
3104
3105 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
3106
3107         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
3108         (load_macho_picbase_{si,di}): Convert to LR hard reg.
3109         (call_indirect_nonlocal_darwin64): Same.
3110         (call_nonlocal_darwin64): Same.
3111         (call_value_indirect_nonlocal_darwin64): Same.
3112         (call_value_nonlocal_darwin64): Same.
3113         (sibcall_nonlocal_darwin64): Same.
3114         (sibcall_value_nonlocal_darwin64): Same.
3115         (sibcall_symbolic_64): Same.
3116         (sibcall_value_symbolic_64): Same.
3117         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
3118         LR pseudo.
3119         (rs6000_emit_load_toc_table): Same.
3120         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
3121         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
3122         (mull_call): Same.
3123         (divss_call): Same.
3124         (divus_call): Same.
3125         (quoss_call): Same.
3126         (quous_call): Same.
3127         (load_toc_v4_pic_si): Same
3128         (load_toc_v4_PIC_1): Same.
3129         (load_toc_v4_PIC_1b): Same.
3130         (call_indirect_aix{32,64}): Same.
3131         (call_value_indirect_aix{32,64}): Same.
3132         (call): Same.
3133         (call_value): Same.
3134         (call_local{32,64}): Same.
3135         (call_value_local{32,64}): Same.
3136         (call_indirect_nonlocal_aix{32,64}): Same.
3137         (call_nonlocal_aix{32,64}): Same.
3138         (call_value_indirect_nonlocal_aix{32,64}): Same.
3139         (call_value_nonlocal_aix{32,64}): Same.
3140         (call_indirect_nonlocal_sysv<mode>): Same.
3141         (call_nonlocal_sysv<mode>): Same.
3142         (call_value_indirect_nonlocal_sysv<mode>): Same.
3143         (call_value_nonlocal_sysv<mode>): Same.
3144         (sibcall): Same.
3145         (sibcall_local{32,64}): Same.
3146         (sibcall_value_local{32,64}): Same.
3147         (sibcall_nonlocal_aix{32,64}): Same.
3148         (sibcall_value_nonlocal_aix{32,64}): Same.
3149         (sibcall_nonlocal_sysv<mode>): Same.
3150         (sibcall_value): Same.
3151         (sibcall_value_nonlocal_sysv<mode>): Same.
3152
3153 2007-03-24  Paul Brook  <paul@codesourcery.com>
3154
3155         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
3156         * config/arm/linux-eabi.h: Remove legacy syscall hack.
3157
3158 2007-03-24  Richard Henderson  <rth@redhat.com>
3159
3160         * config/ia64/constraints.md: New file.
3161         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
3162         satisfies_constraint_?.
3163         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
3164         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
3165         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
3166         ia64_output_mi_thunk): Likewise.
3167         (ia64_const_ok_for_letter_p): Remove.
3168         (ia64_const_double_ok_for_letter_p): Remove.
3169         (ia64_extra_constraint): Remove.
3170         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
3171         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
3172         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
3173         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
3174         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
3175         EXTRA_MEMORY_CONSTRAINT): Remove.
3176         * config/ia64/ia64.md: Include constriants.md.  Replace
3177         CONST_OK_FOR_? with satisfies_constraint_?.
3178
3179 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
3180             H.J. Lu  <hongjiu.lu@intel.com>
3181
3182         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
3183         DPD or BID name.
3184         (name macros): Use DPD_BID_NAME to convert names properly.
3185
3186         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
3187         decimal floating point format.
3188         (init_floating_libfuncs): Change decimal functions so that they
3189         have a "bid_" prefix if the decimal system uses the BID format,
3190         and "dpd_" prefix if the decimal system uses the DPD format.
3191         (init_interclass_conv_libfuncs): Ditto.
3192         (init_intraclass_conv_libfuncs): Ditto.
3193
3194         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
3195         using the BID format.
3196
3197         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
3198         whether we are using the BID decimal format.
3199         * configure: Regenerate.
3200
3201         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
3202         the compiler has decimal floating point enabled.  Define
3203         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
3204         instead of DPD.
3205
3206         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
3207         using the BID format.
3208
3209         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
3210         whether we are using the BID decimal format.
3211         * configure: Regenerate.
3212
3213         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
3214         the compiler has decimal floating point enabled.  Define
3215         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
3216         instead of DPD.
3217
3218         * doc/install.texi (--enable-decimal-float): Document BID and DPD
3219         options, and that it is enabled for i386/x86_64 systems.
3220
3221         * Makefile.in (enable_decimal_float): New.
3222         (DECNUMFMT): New.
3223         (DECNUMINC): Add  -I$(DECNUMFMT).
3224         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
3225         to $(DECNUMFMT) from $(DECNUM).
3226
3227         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
3228         Substitute enable_decimal_float.
3229         * configure: Regenerated.
3230
3231         PR other/30529
3232         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
3233         unsigned long.
3234
3235         * configure.ac: Enable decimal float for x86_64-*-linux*.
3236         * configure: Regenerated.
3237
3238         PR other/30530
3239         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
3240         decimal128ClearSign to flip and clear the sign bit in decimal128.
3241         (decimal_real_maxval): Set decimal128SetSign to set the sign
3242         bit in decimal128.
3243
3244 2007-03-23  Ian Lance Taylor  <iant@google.com>
3245
3246         * fold-const.c (fold_binary): Correct warning for X - c >= X.
3247
3248 2007-03-23  Ian Lance Taylor  <iant@google.com>
3249
3250         * tree-dump.c (dump_files): Correct comment.
3251
3252 2007-03-23  Ian Lance Taylor  <iant@google.com>
3253
3254         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
3255
3256 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
3257
3258         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
3259         in cfglayout mode.  Don't go into and out of cfglayout mode.
3260         Link the blocks in the order of the constructed traces.
3261         (rest_of_handle_tracer): Adjust call to tracer.
3262         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
3263         Don't go into cfglayout mode.
3264         (rtl_loop_done): Don't go out of cfglayout mode.
3265         * cfglayout.c (relink_block_chain): New function, split out from...
3266         (fixup_reorder_chain): ...here.  Remove redundant checking.
3267         (cfg_layout_finalize): Don't clear the header, footer, and aux
3268         fields here, move the code to do so to relink_block_chain.  Likewise
3269         for free_original_copy_tables.
3270         * rtl.h (tracer): Update prototype.
3271         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
3272         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
3273         mode.  Use relink_block_chain to serialize the CFG according to the
3274         new basic block order.  Move targetm.cannot_modify_jumps_p check from
3275         here...
3276         (gate_handle_reorder_blocks): ...to here.
3277         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
3278         from here...
3279         (gate_duplicate_computed_gotos): ...to here.
3280         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
3281         something always changes when going into and out of cfglayout mode.
3282         Perform an expensive cfg cleanup while going into cfglayout mode.
3283         Always update liveness information on HAVE_conditional_execution
3284         targets.  Reserialize the basic blocks and go out of cfglayout mode.
3285         * reg-stack.c: Include cfglayout.h.
3286         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
3287         the call to reorder_basic_blocks.
3288         * basic-block.h (reorder_basic_blocks): Update prototype.
3289         (relink_block_chain): New prototype.
3290         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
3291
3292 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
3293
3294         * config/mips/mips.md (type, hazard, *movdi_32bit,
3295         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
3296         *movhi_internal, *movqi_internal, *movsf_hardfloat,
3297         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
3298         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
3299         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
3300         applicable.
3301         (movcc): Change first xfer to multi.
3302         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
3303         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
3304         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
3305         config/mips/generic.md: Change reservations using "xfer" to use
3306         "mfc,mtc".
3307         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
3308         using match_operand.
3309         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
3310         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
3311         examining mode.
3312         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
3313
3314 2007-03-22  Richard Henderson  <rth@redhat.com>
3315
3316         * config/i386/i386.c: Remove unnecessary function declarations.
3317         Move targetm definition, and all related macros, to the end of
3318         the file.  Resort some functions to put definitions before uses.
3319         (ix86_attribute_table): Make static.  Move to end of file.
3320         (ix86_gimplify_va_arg): Make static.
3321
3322 2007-03-22  Richard Henderson  <rth@redhat.com>
3323
3324         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
3325         don't increase local_regparm with force_align_arg_pointer check.
3326         (ix86_function_sseregparm): Assert 32-bit.
3327         (type_has_variadic_args_p): New.
3328         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
3329         type_has_variadic_args_p.
3330         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
3331         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
3332         use memset instead.  Do maybe_vaarg check first; skip attribute
3333         tests if true; skip attribute tests for 64-bit.
3334         (construct_container): Remove TARGET_DEBUG_ARG.
3335         (function_arg_advance_32, function_arg_advance_64): Split out ...
3336         (function_arg_advance): ... from here.
3337         (function_arg_32, function_arg_64): Split out ...
3338         (function_arg): ... from here.
3339         (ix86_pass_by_reference): Tidy.
3340         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
3341         (function_value_32): New, from parts of ix86_function_value
3342         and ix86_value_regno.
3343         (function_value_64): New, from parts of ix86_function_value
3344         and ix86_libcall_value.
3345         (ix86_function_value_1): New.
3346         (ix86_function_value, ix86_libcall_value): Use it.
3347         (return_in_memory_32, return_in_memory_64): Split out ...
3348         (ix86_return_in_memory): ... from here.
3349         (ix86_struct_value_rtx): Skip for 64-bit.
3350         (ix86_libcall_value, ix86_value_regno): Remove.
3351         (setup_incoming_varargs_64): Split out ...
3352         (ix86_setup_incoming_varargs): ... from here.
3353         (ix86_va_start): Remove TARGET_DEBUG_ARG.
3354         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
3355         * config/i386/i386-protos.h (ix86_function_value): Remove.
3356         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
3357
3358 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3359
3360         PR other/23572
3361         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
3362         infinities not supported, otherwise emit warning if -Woverflow. On
3363         underflow, emit warning if -Woverflow.
3364         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
3365         and 0 otherwise.
3366         * real.h (real_from_string): Update declaration
3367
3368 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
3369             Richard Henderson  <rth@redhat.com>
3370
3371         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
3372         * calls.c (compute_argument_block_size, expand_call,
3373         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
3374         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
3375         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
3376         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
3377         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
3378         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
3379         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
3380         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
3381         Set to 1.
3382
3383 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
3384
3385         * c-incpath.c (add_sysroot_to_chain): New.
3386         (merge_include_chains): Add sysroot argument.  Call
3387         add_sysroot_to_chain if sysrooted.
3388         (register_include_chains): Update call to merge_include_chains.
3389         * doc/cppopts.texi: Document use of '=' in include directory
3390         arguments.
3391
3392 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
3393
3394         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
3395         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
3396         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
3397         insn pattern using X87MODEF12 mode macro.
3398
3399 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
3400